我已经为 G2231开发了一个与 SLAA450中包含的 BSL 类似的定制 BSL。 我的应用程序文件将 BSL 安装在信息存储器中、或者安装在信息存储器和主存储器的组合中。 该应用程序使用 JTAG 刷写到 G2231、然后在首次加电时运行并安装 BSL。 该应用程序和用于执行 BSL 闪存的 Windows 命令行程序专为 G2231编写 、同时考虑到主存储器开始的位置(0xF800)。
当对 G2231进行写入时、对于 INFOA 中只有1MHz 校准值的任何部件、这个定制 BSL 都可以正常工作、而没有其他部件(因为 BSL 使用所有其他信息存储器)。 但是、我不想重新汇编应用程序、也不想为每个部分重新编译 Windows 程序(用 C 语言表示)、而是希望安装应用程序确定 main 从何处开始闪存到哪个芯片、 并让 BSL 以其发回的初始 ACK 字节的形式向 Windows 程序报告该值(0xf8、0xFC 等)。
另外、我对最初为 G2553编写的特殊 BSL 条目代码执行了类似操作、但后来发现、我可以通过 读取芯片在0x0FF0处的器件型号将其扩展到所有 G2xx3器件、第一个字节的低半字节有效地指示闪存大小、 从而导致 main 开始。 但这似乎对在该位置读取0xF201的 G2231不起作用。
那么、应用程序是否可以通过任何方法来确定主存储器的大小或从何处开始? 或者器件型号所在的位置是否一致? 我无法找到 G2231。 如果没有、是否有人可以考虑一种好的方法、让安装程序应用程序通过检查在读取未安装闪存的闪存地址时返回的内容来确定 main 的位置?