您好!
我编写了一个引导加载程序应用程序、该应用程序位于内部闪存的下部、通过 EtherCAT 接受文件、该文件为 S3 Motorola Record 格式。 这使我能够刷写所有3个内核。我可以使用 CM 处理器进行刷写
我遇到的问题是、当我为 C28x 处理器生成十六进制文件时、我将获得地址空间重叠的 S 记录。
下面是一个示例。
记录 长度地址 数据 校验和
S3 25 00088000 9A8500089A8300089A4400089A4600089A4800089A4A00089A4C00089A4E0008 84
S3 25 00088010 9A5000089A5200089A5400089A5600089A5800089A5A00089A5C00089A5E0008 7A
您将注意到、地址由16个字节00088000和0088010分隔、但它正在尝试写入32个字节的数据(0x20)。 因此、数据的寻址存在重叠、但数据不同。
现在、当我被告知闪存时、我会擦除 C28x 内核中的所有扇区、这允许我使用闪存 API 进行闪存。 我运行的问题是 S-Record 格式具有重叠的地址空间、这会导致 FLASH_API 失败、因为它正在尝试写入已写入的无效闪存位置
问题:
如何使 S 记录格式不包含重叠的地址间距?
我是否需要擦除 C28x 内核的字边界上的闪存?
我的链接器文件是否有问题?
我通过使 ROM 宽度32与 CM 处理器实现了这一点、但无论我尝试使用 C28x 内核、我都能获得相同的重叠地址空间。
Dorion