今天看到一篇文章,介绍了一种新的2407调试程序的方法,感觉不错,不过有几处地方看得不是很懂,还请各位指教<br />/*******************************************************<br />3 一种新的程序调试方法分析 <br />3.1 <br />程序调试前的准备工作 <br />与 TI 公司的其他系列的 DSP 芯片不同<br />TMS320LF2407必须从程序存贮器的 0000h单元读<br />取复位向量<br />所以在程序调试以前 要在 0000h 单<br />元写入复位向量 一般采用 TI 公司提供的<br />2407FLASH 烧写插件将一段中断向量表烧入片内 //1.具体怎么实现呢?<br />FLASH 的 0000h 单元 其格式如下 <br /> .sect ".vectors" <br />RESET B _c_int0 <br />INT1 B PHANTOM <br />INT2 B PHANTOM <br />INT3 B PHANTOM <br />INT4 B PHANTOM <br />INT5 B PHANTOM <br />┊ <br />此时在命令文件 CMD 文件 中的程序起始<br />将上边的中断向量表烧入<br />地址应为0000h<br />FLASH 在 DSP 上电后 程序指针将指向_c_int0<br />所存放的地址 使存放在 RAM上的程序得以执行 <br /><br />3.2 TMS320LF2407 程序调试的实现 <br /> 首先 在硬件设计时将 2407 芯片的<br />MP/MC 引脚接地 使器件被配置为微控制器方式 //2.将MP/c#接地跟在SCSR2中设为0有什么区别吗?<br />片内 FLASH 可以被访问 器件从片内存贮器中读<br />取复位向量 <br /> 程序中将 SCSR2 中的 BOOT EN 位设置为<br />1 禁止引导 ROM TMS320LF2407 片内 FLASH<br />程序存储器映射地址范围为 0000h 7FFFh 将<br />DON 和 PON 位分别配置为 0 1 使 SARAM 被映<br />射到片内程序空间 TMS320LF2407 上电复位后<br />BOOT EN 位设置为 1 DON 和 PON 位分别配置<br />为 1 1 如使用系统默认值也能完成本设计 <br /> 命令文件 CMD 文件 中 将程序空间分<br />配到从 8000h 开始的 2K 空间 其格式如下 <br />-o example.out <br />-stack 100 <br />example.obj <br />-l rts2xx.lib <br />MEMORY <br />PAGE 0: VECS: origin=0x8000, length=0x0040 <br /> PVECS: origin=0x8044, length=0x0100 <br /> PROG: origin=0x8150, length=0x0680 <br />程序调试完后 将起始地址由 8000h 改为<br />0000h 就能将程序成功烧入 DSP 芯片内部的<br />FLASH 之中 <br />3.3 此方案要注意的问题及其解决方法 <br />方法对 TMS320LF2407 进行程序调试时 若<br />程序超出 2K 可将程序模块化 各模块分开调试<br />全部调试成功后再将其整理为一个文件 在编译器<br />中编译并生成 OBJ 文件 然后烧写到 FLASH 中进<br />如果单个模块超过 2K 可将模块中的部<br />行联调<br />分程序屏蔽<br />对模块中的各个功能进行调试 <br />4 结束语 <br />上述方案能实现没有片外扩展程序存储器情<br />以减少资源的浪费和电路设计的<br />况下的程序调试<br />难度 获得更高的效率 <br />***************************************************<br /><br />我看不懂的是:<br />1.如何将中断向量烧到片内呢?是不是建一个asm文件,然后编译通过后就烧进去呢?不需要C语言源程序吗<br /><br />2.文中提到将MP/MC#置0,这跟在软件中将其置0有什么区别呢? |
|