This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的所有人:
我正在为相关的微控制器开发引导加载程序。 我对此没有太多经验。
现在、我将使用 TI 提供的示例固件 flashapi_ex2_sci_kernel 和 serial_flash_programmer。
似乎可以使用 DFU_CPU1命令从 PC 成功加载固件、但复制到闪存时出现错误。
因此、我尝试发送一个更简单的命令 ERASE_CPU1、并且在使用闪存(Fapi_Error_FAIL)时再次收到错误
我由此推导出某项配置错误。 您能给我一些关于继续调试的想法吗? 例如、在论坛上的各种请求中、我发现为链接器使用正确的文件非常重要。 您能给我详细介绍一下吗?
此致
Matteo、
您是否能够使用 CCS 闪存插件对该器件进行精细擦除/编程? 或者您是否遇到任何错误?
我会将其分配给我们的内核专家以帮助您。
谢谢、此致、
Vamsi
Matteo、
关于链接器 cmd 文件、对于要下载的应用、使用"align(8)"指令将段与128位边界对齐将确保内核能够正确地将应用写入闪存。
在执行 Erase 命令后出现错误时、返回的地址是什么?
谢谢、
Anu
我成功获得了一些订单。 我认为我有两个不同的问题:
1_
我尝试使用编译的内核加载两个不同的固件(flashapi_ex2_sci_kernel)
LED_ex1_blinky (CPU1_LAUNCHXL_FLASH、28004x_generic_flash_lnk.cmd、--boot、-sci8、-ascii)正常工作。 下载后、我能够从内核运行固件、并且在重新启动后(在闪存启动配置中使用数字输入)、同一固件在启动时运行。 地址0x80000内核返回。 一切看起来都很好。
我使我的固件每500ms 闪烁一次 LED 并发送一次 CAN 消息(28004x_generic_flash_lnk.cmd、--boot、-sci8、-ascii)。 下载后、我接收到0x8357c。 我无法运行固件。 同一固件 在调试模式下无法正常工作。 它使用 (280049C_RAM_lnk.cmd)进行调试
我认为我必须澄清命令链接器的确切工作方式以及我应该使用哪一个。
2_
编译 flashapi_ex2_sci_kernel (BANK0_NO_LDFU)的"我的版本"我注意到、当我发送 ERASE_CPU1时、在擦除闪存时出现错误、而如果我使用配置 BANK1_NO_LDFU 进行编译、则相同的命令似乎可以正常工作
您能解释一下这两种配置之间的区别是什么?
解决这两个不同的问题、我应该尽可能的接近让所有工作正常。
此致
Matteo、
有关链接器命令文件的信息、请参阅以下内容: https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html
这两种配置在内核链接到的存储库方面有所不同。 也许您可以比较这两种配置的链接器命令文件? 您是否对 BANK0_NO_LDFU 配置进行了任何更改?
谢谢、
Anu
未对链接器命令文件进行任何更改。
我修改内核以更改某种逻辑、但在存储器上运行的函数尚未被触及。
其他有关调试的建议?
Matteo、
有关使固件与 RAM 编译配置一起运行并使用闪存编译配置的帮助、请参阅以下内容: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/878674/faq-flash---how-to-modify-an-application-from-ram-configuration-to-flash-configuration
对于内核、您添加的逻辑更改了闪存 API 函数的映射位置吗? 您可以比较构建配置的两个映射文件、以查看项目中的所有内容在内存中的位置。
谢谢、
Anu