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