TMS320F28P550SJ: Failed using tool ”serial_flash_programmer“

Part Number: TMS320F28P550SJ
Other Parts Discussed in Thread: C2000WARE

我想要基于SCI进行串行编程,这样用户可以快速验证而不需要XDS下载器。

然后我找到了一篇指导如何使用 “serial_flash_programmer” 进行SCI串行编程的文章:Serial Flash Programming of C2000 Microcontrollers (Rev. H)

按照文章的说明,我将路径下:D:\TI\C2000\C2000Ware_5_04_00_00\driverlib\f28p55x\examples\flash 的 flash_kernel_ex3_sci_flash_kernel 工程导入 CCS 20.1.1 中直接编译,将该工程下的 CPU1_RAM 文件夹中生成的 flash_kernel_ex3_sci_flash_kernel.txt 保存。

我编写了一个LED闪烁的案例,根据案例  flash_kernel_ex3_sci_flash_kernel 的HEX配置,重新配置了我LED闪烁的HEX配置,然后编译生成了 led.txt 文件。

接着,我
将F28P550SJ9PZ芯片进入了Boot form SCI 模式,即GPIO32=1,GPIO24=0。

操作完成后,我来到:..\C2000Ware_5_04_00_00\utilities\flash_programmers\serial_flash_programmer ,在该文件夹下通过命令行CMD执行

serial_flash_programmer.exe -d f28p55x -k flash_kernel_ex3_sci_flash_kernel.txt -a led.txt -p COM81 -b 9600


> 这里我确保我的端口是没有问题,毕竟尝试过了很多次。

我看到在输出 x==x 格式的数据,说明 flash_kernel_ex3_sci_flash_kernel.txt 文件正在烧录,我等待了很久,当它出现选项时,我选择了 1-DFU CPU1。


我看到它正在烧录 led.txt 文件到device,但是到最后确失败了?我还尝试了将led.txt改为编译到CPI1_FLASH,但是还是失败。




请问还有什么方法能够不使用XDS下载器的情况下,将固件烧录到芯片中执行?无论是RAM还是FLASH。

  • 您好,
    已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

  • 您好

    能否发送与led.txt文件关联的链接程序cmd文件? 此应用程序应该是基于闪存的,我怀疑链接程序文件正在将应用程序放置在RAM中。 请参阅C2000Ware_5_04_00_00\device_support\f28p55x\common\cmd\28p55x_generic_flash_lnk.cmd以获取基于闪存的链接程序文件的示例。 此外,F28P55x闪存内核使用512位编程,因此您必须修改链接器文件中初始化部分的对齐方式。 应将带有align(8)的输出部分更新为align(32)。

  • 感谢您的回复!
    根据您提供的思路,已经完成了串口烧录工作。
    我直接将 C2000Ware_5_04_00_00\device_support\f28p55x\common\cmd\ 路径下的 28p55x_flash_api_512bit_lnk.cmd 的更新到生成固件的工程中,并在ccs中配置该工程的环境变量 FlashAPI_LIB_ROOT 的路径为 D:/TI/C2000/C2000Ware_5_04_00_00/libraries/flash_api/f28p55x/lib。在C2000 Linker配置下的File Search Path 中新增路径:${FlashAPI_LIB_ROOT}。重新编译,拿生成的.txt文件执行命令:

    serial_flash_programmer.exe -d f28p55x -k flash_kernel_ex3_sci_flash_kernel.txt -a led.txt -p COM81 -b 9600

    即可。