DSP在线升级(1)

您所在的位置:网站首页 firmware更新需要多久 DSP在线升级(1)

DSP在线升级(1)

2024-07-11 09:55| 来源: 网络整理| 查看: 265

DSP在线升级(1)---认识DSP芯片启动流程

DSP在线升级(2)--bootloader的设计框架

DSP在线升级(3)-----一块DSP芯片的片上flash如何烧写2个工程

DSP在线升级(4)-----bootloader实现的功能

首先了解一下TI的DSP上电之后是如何运行的;

以Ti的DSP28377为例,CCS版本号v7.3;

连接仿真器,保持DSP的在线调试状态;

 

首先进入debug调试界面,启动28377的芯片配置;鼠标右键点击connect Target按钮(如图1所示);

 

图1

点击连接芯片之后,我们可以看到调试界面显示, 0x3FF16A(no symbols are defined)

no source avaliable for 0x3ff16a(如图2所示);

这里的意思是程序运行至了芯片片上FLASH的0x3FF16A处,但是本地的工程文件并没有与该地址对应的代码以及符号映射;因此会出现这些信息;

 

图2

配合工程文件的.cmd文件理解;

在不进行特殊设置的情况下,默认用户启动方式为从片内FLASH启动;

cmd文件中,标明了用户程序(不包含Ti出厂前已固化在芯片中的程序)的初始启动地址,对于28377芯片而言,该地址为0x080000;

RESET 为芯片上电重启后执行的第一条指令;该指令在芯片FLASH上的地址为0x3FFFC0;

(如图3所示)

 

图3

在连上仿真器的状态下,我们可以查看FLASH芯片中烧写的内容;

首先查看0x3FFFC0处的内容;

通过调试界面的view,中的memory broswer 选项,查看flash地址0x3FFFC0中的内容(如图4所示);内容为 F16A  003F,FLASH中保存的都是数据,这些“数据”也就是可执行的机器码,这段汇编代码具体的意思,可以通过dsp的反汇编来查看;其中0x3FFFC0处的内容为待执行程序有效地址:0x3FF16A;(如图4所示)

这与前面的no symbols are defined in 0x3ff16a 是对应的;

 

图4

接着查看flash地址为0x3FF16A处的内容:

flash的这些地址中烧写的数据都是Ti在芯片出厂前固化在芯片中的代码;代码实现的功能是对寄存器和堆栈等进行初始化;(如图5所示)

这些系统的boot程序运行完之后;就会跳转至芯片中片上FLASH的地址0x080000处,去执行用户的第一条指令;

 

图5

加载自己的程序:

首先我们新建一个工程,工程名为test(如图6所示);

 

图6

工程只有一个main函数,同时我们需要注意;对于不同型号的芯片(本例中为28377),需要添加对应芯片的F2837xD_CodeStartBranch.asm文件;该文件为汇编文件,其中定义了codestart函数:codestart函数对应 .cmd文件中的 codestart 段,相关内容如下(见图7所示):

 

图7

(cmd中对应的codestart段)

cmd文件,将codestart定位在 BEGIN(0x80000)处(如图8所示)

 

图8

 

编译好程序,并将其烧写至dsp片上FLASH之后;在线调试;

dsp芯片上电重启后,首先运Ti已经固化的系统boot程序,为用户程序的运行配置运行环境;之后从0x80000地址开始运行用户代码;(详细启动过程见链接)

DSP芯片上电后在执行main函数前的执行流程

查看FLASH 0x80000处内容(如图9所示);

 

图9

该地址处的内容为0048 201C,对应我们代码中的codestart;

其中0048 201C为机器码;该两字节代码意思为跳转(004)至(0x8201C)处;

实际对应汇编语句 LB _c_int00观察0x8201C中的内容(如图10所示);

 

图10

该地址内的代码,即为_c_int00函数的机器码;

前面介绍了codestart函数(如图11所示)

 

图11

codestart函数中LB  _c_int00 即为跳转至 _c_int00;

 

结合这个链接,可以将dsp上电执行了哪些代码,了解的更加清晰;(同上)

DSP芯片上电后在执行main函数前的执行流程

 

对于以上的内容再进行进一步补充说明;假设我们配置cmd文件;

BEGIN:              origin=0x082000,length=0x000002

我们连接仿真器在线运行时,程序是可以正常运行的,但是当我们不连接仿真器时,将DSP芯片上电,此时,程序的确已经烧写进入dsp的flash芯片当中,但是芯片无法正常运行;我们需要将程序的cmd文件设置为:

BEGIN                :        origin=0x080000,length=0x000002

codestart          :        >      BEGIN

即将codestart执行地址通过cmd文件链接至0x80000处(不同型号芯片的地址不完全相同),程序才可以正常执行

 

阅读完链接之后,我们可以了解到;

DSP上电运行后,执行流程如下(图12):

图12



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3