DSP在线升级(1)---认识DSP芯片启动流程
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地址开始运行用户代码;(详细启动过程见链接)
查看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上电执行了哪些代码,了解的更加清晰;(同上)
对于以上的内容再进行进一步补充说明;假设我们配置cmd文件;
BEGIN: origin=0x082000,length=0x000002
我们连接仿真器在线运行时,程序是可以正常运行的,但是当我们不连接仿真器时,将DSP芯片上电,此时,程序的确已经烧写进入dsp的flash芯片当中,但是芯片无法正常运行;我们需要将程序的cmd文件设置为:
BEGIN : origin=0x080000,length=0x000002
codestart : > BEGIN
即将codestart执行地址通过cmd文件链接至0x80000处(不同型号芯片的地址不完全相同),程序才可以正常执行
阅读完链接之后,我们可以了解到;
DSP上电运行后,执行流程如下(图12):

图12

本文详细讲解了TI DSP28377上电运行流程,包括bootloader设计、Flash烧写和代码执行路径。从启动配置、代码定位到实际执行,一步步揭示了DSP芯片的启动秘密。
---认识DSP芯片启动流程&spm=1001.2101.3001.5002&articleId=117929502&d=1&t=3&u=babeb91b3ca743e9a617944d3494e4c1)
763

被折叠的 条评论
为什么被折叠?



