我想要基于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
即可。