大家好,我在使用DSP320F28027进行串口烧录的时候不成功,烧录软件使用C2Prog,烧录的时候提示错误如下:请问是什么原因呢?感谢各位。
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.
这现象是串口通讯不稳定造成的,前面Connecting和Bootloading都是用低波特率的
后面烧录使用115200,如果通讯接触等原因不稳定就会失败。
1、通讯线看看接触是否良好
2、修改波特率:在c2prog安装目录下有targets\targets.xml文件
打开它,找到下面这段代码,把<bootbaud>38400</bootbaud>,改小<bootbaud>9600</bootbaud>
把<loadbaud>38400;115200</loadbaud>改成<loadbaud>9600;38400</loadbaud>
保存好,重新打开软件试一下
<target>
<name>28027,23,21_SCI</name>
<version>1.0</version>
<protocols>
<protocol>
<port>serial</port>
<name>default</name>
<bootclass>codeskin.c2oooprog.BootLoader28xxHalfDuplex</bootclass>
<bootbaud>38400</bootbaud>
<boottxdelay>0</boottxdelay>
<boottxburst>100</boottxburst>
<bootrecord>600;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;ffff</bootrecord>
<bootfile>flasher28021_2_3_6_7_200_emu.hex</bootfile>
<loadbaud>38400;115200</loadbaud>
<loadtxdelay>5</loadtxdelay>
<loadtxspace>1</loadtxspace>
</protocol>
</protocols>
<chip>28027</chip>
</target>
你好lai jiucai,谢谢你之前的帮助。通过截取C2PROG串口发送的数据,我发现它先将flasher28021_2_3_6_7_200_emu文件里面的数据放到RAM,然后返回到0x00000000地址;接着检测boot版本并且解锁CSM;然后把flash api的函数load到安全区里面;检测flash api版本;最后发送用户数据,通过flash api烧写到flash里面。不知道这个过程是否有错?里面的flasher28021_2_3_6_7_200_emu文件是什么作用呢?我使用串口工具模拟CEPROG发送的数据,但是到了检测boot版本的时候总是执行不下去,不知道0x00000000地址开始运行的程序是怎么处理串口的数据呢?
过程是对的,flasher28021_2_3_6_7_200_emu.hex文件是最开始的boot文件,由于该工具面向的使用者可能存在芯片加密的情况,加密条件下只有RAM0和RAM1可用(如2802x有2KRAM),所以这个boot文件要很小。boot文件运行后,读取芯片的型号,版本,解密芯片,
这样就可以导入flasher28021_2_3_6_7_200_emu_API.hex了。因为该软件使用的是软件flashAPI,没有使用bootROM里面的flashAPI(release里面好像是说TI的bootrom有升级过,一些早期的芯片的bootrom没有更新,所以统一使用软件api)。
在Unlocking target...OK以后Loading...的就是flasher28021_2_3_6_7_200_emu_API.hex.
然后读取flashAPI的版本(应该是给使用者一个信息,同时检测下API库正常工作与否)
正常以后擦除flash,一段一段的接收,烧录目标代码。
0x00000000地址运行的是boot文件,接受100个数据以后,返回烧录的情况,具体如何定义的就不知道了。
可能你模拟发送flasher28021_2_3_6_7_200_emu.hex文件时出错了,一定要把换行符号去掉。因为换行字符通常看不见,如果发送了换行,那么文件就发送不对了。你看flasher28021_2_3_6_7_200_emu.hex这个文件,第一行不要,从AA 08开始发送。