TIDSP TMS320F28075 芯片串口烧录软件编写

前言

由于工作需要,写一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。直接在这上面修改就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值