赞
踩
由于工作需要,写一TI芯片的串口烧录软件,以前使用过matlab python 写过上位机,但是我想顺便学习一下C#,就准备用C#写上位机,感觉上位机的套路都是差不多的,就是各种语言格式、库不一样而已。把这个过程写下来,免得自己以后忘了。
先介绍一下大致的框架原理,通过芯片内部的固化烧写一段BootLoader程序,然后在利用BootLoader程序烧写真正的程序。所以写串口烧写软件需要同时写上位机和下位机,使他们进行配合。
TI芯片有出厂固化的一段程序,位于bootrom。因此我们是利用这段程序来进行串口烧写。
如果想查看这部分程序可以看通过TI官方C2000软件库,目录在
\C2000Ware_3_03_00_00\libraries\boot_rom\f2807x。写软件时候看看这部分还是很有必要的,不然无法理解bootleader是怎么烧写进去的,这部分软件主要就是一个函数。
void CopyData() { struct HEADER { Uint16 BlockSize; Uint32 DestAddr; } BlockHeader; Uint16 wordData; Uint16 i; // Get the size in words of the first block BlockHeader.BlockSize = (*GetWordData)(); // While the block size is > 0 copy the data // to the DestAddr. There is no error checking // as it is assumed the DestAddr is a valid // memory location while(BlockHeader.BlockSize != (Uint16)0x0000) { BlockHeader.DestAddr = GetLongData(); for(i = 1; i <= BlockHeader.BlockSize; i++) { wordData = (*GetWordData)(); *(Uint16 *)BlockHeader.DestAddr++ = wordData; } // Get the size of the next block BlockHeader.BlockSize = (*GetWordData)(); } return; }
这段程序挺好理解,数据帧也很简单。
数据长度+数据。
然后介绍怎么进入SCI Boot Mode,也就是上面这段代码。
在不连接仿真器时候默认是按照图片中红色箭头。
通过外部电路配置GPIO72与GPIO84,即可进入相应的模式。
我们在软件完成以后可以不连接仿真器烧写软件,但是开发阶段还是需要通过仿真器进入SCI Boot Mode,
通过上面框图,可以发现有两种方法。需要配置bootctr寄存器。
具体就需要好好研究一下芯片的官方手册了。
编写上位机可以参考一下官方的串口烧录软件flash_programmers,这在官方库软件C2000与controlsuit里面都有。顺便看看官方zhca806与sprabv4d介绍文档,基本可以搞清楚上位机是怎么回事。
大致逻辑上可以参考官方的,但是官方软件要是想用在批量生成上,那是做梦,那速度也就能够我吃顿饭。
上位机前面的部分还好写,因为bootrom固化程序的原因,格式已经定死了。烧写的BootLoader程序,必须转化为TI规定的文本格式,这个可以通过CCS设置得到一个txt文本程序文件。
但是烧写应用程序的格式我们就能自己决定了,这就需要与BootLoader程序配合了,这个程序TI官方也有例证,
C2000Ware_3_03_00_00\device_support\f2807x\examples\cpu1\F2807x_sci_flash_kern。直接在这上面修改就可以了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。