主题中讨论的其他部件: C2000WARE
您好,
我们希望通过SCI8接口将自己编写的闪存应用程序下载到TMS320F2.8384万S CPU1内核,并通过CPU1闪存中的C2000闪存API对闪存应用程序进行编程。 C2000Ware flash_kernel示例项目的基本功能。 请注意,在访问闪存时,闪存API需要一个128[位]对齐的地址,否则闪存编程会导致错误。
hex2000工具为我们创建TI启动表格式的二进制文件:
遗憾的是,该二进制文件中的长度信息只有16[位]宽,请参见此处标记为红色的内容:
我们的应用程序固件中有相当大的阵列/结构,这些阵列/结构由.const输出部分初始化:
遗憾的是,hex2000工具不能在 128[位]对齐的地址上拆分输出部分.const。 我使用自己编写的PC工具验证了这一点,该工具评估由hex2000工具生成的二进制文件中的闪存地址和长度信息,并将 数据写入文本文件。 请查看引导表二进制代码是如何根据闪存地址和长度信息构建的,特别是包含.const输出部分数据的块6和7:
您可以在映射文件中看到数组c_DriveSpecialCommands[]是与上一张图片中的块号6和7交叉的数组。 该数组声明如下:
extern const struct SpecialCMDList c_DriveSpecialCommands[] init_VAR(=DRV_SPECIAL_commands_table);
因此 ,尝试在地址0x97FFE处对数据进行编程会导致闪存API程序函数出错。
是否有方法指示hex2000工具在128位对齐的地址上拆分输出部分? 如果不是,我们还有什么其他办法来避免这类问题?
谢谢!
Inno.(注: