- UID
- 153856
- 性别
- 男
|
请教大家一个问题,不知道有人遇到过没有: 我用同一个程序下载到两块板子上,其中一块是购买的2407开发板,另一块是我根据自己项目需要做的试验板,下载后发现反汇编代码有差异,导致我的试验板无法正常使用, 下面是下载到购买的2407开发板的反汇编代码的一部分: 88F0 _c_int0: 88F0 BF08 LAR AR0,#8a3h 88F2 BF09 LAR AR1,#8a3h 88F4 BE42 CLRC OVM 88F5 BF00 SPM 88F6 BE47 SETC SXM 88F7 BF80 LACC #8995h,0 88F9 B801 ADD #1h 88FA E388 BCND 88feh,EQ 88FC 7A89 CALL 8902h,*,AR1 88FE 7A89 CALL main,*,AR1 8900 7A89 CALL C$$EXIT,*,AR1(与后面比较看看) 8902 7802 ADRK #2h 8903 BF80 LACC #8995h,0 ...... 下面是下载到我的试验板的反汇编代码的一部分: 88F0 _c_int0: 88F0 BF08 LAR AR0,#8a3h 88F2 BF09 LAR AR1,#8a3h 88F4 BE42 CLRC OVM 88F5 BF00 SPM 88F6 BE47 SETC SXM 88F7 BF80 LACC #8995h,0 88F9 B801 ADD #1h 88FA E388 BCND 88feh,EQ 88FC 7A89 CALL 8902h,*,AR1 88FE 7A89 CALL main,*,AR1 8900 0680 LAR AR6,* (与前面比较看看) 8901 7C03 SBRK #3h 8902 0090 LAR AR0,*- ...... 可以看到从8900处开始不一样,请问这与硬件有关吗?
//========================================= 下面是我新发现的问题 我写了一个汇编程序进行测试,结果发现下载到我的试验板的反汇编代码 的8880~~8897与8868~~887F处的代码重复了(我是下载到RAM中仿真的) 我的CMD文件定义如下 MEMORY { PAGE 0: VECS: origin = 0x8000, length 0x040 PAGE 0: PROG: origin = 0x8860, length 0x6000 PAGE 1: B0 : origin = 0x200, length 0x100 PAGE 1: B1 : origin = 0x300, length 0x100 PAGE 1: DATA: origin = 0x8860, length 0x700 }
SECTIONS { .vectors : {} >VECS PAGE 0 /* 中断向量表 */ .text : {} >ROG PAGE 0 /* 可执行代码和字符串 */ .cinit : {} >ROG PAGE 0 .data : {} >DATA PAGE 1 /* 初始化变量和常数表 */ .bss : {} >DATA PAGE 1 /* 保留全局变量和静态变量空间 */ .const : {} >DATA PAGE 1 /* 字符串和switch表 */ .switch : {} >ROG PAGE 0 /* 包含.switch语句建立的表格 */ .stack : {} >DATA PAGE 1 /* 为系统堆栈分配存储器 */ .system : {} >DATA PAGE 1 /* 为动态存储器函数分配存储器空间 */
}
如果将 PAGE 0: VECS: origin = 0x8000, length 0x040 PAGE 0: PROG: origin = 0x8860, length 0x6000 修改为 PAGE 0: VECS: origin = 0x8000, length 0x040 PAGE 0: PROG: origin = 0x8960, length 0x6000 则8980~~8997与8968~~897F处的代码重复了(我是下载到RAM中仿真的) 请各路高手帮忙分析一下,不胜感激
[em04]问题已经解决,下面把问题列出,供初学者参考(我也是第一次接触DSP,哈哈),遇到相同问题时可以少走弯路 经过分析及对硬件的检查发现是硬件问题,原来是在PCB布版时TMS320LF2407A的A6脚未与外扩的存储器的A6脚连接导致了上述问题的产生
[此贴子已经被作者于2008-3-10 12:58:33编辑过] |
|