我现在的情况是:
已经写好了一些程序,里面的首要功能类似bootloader.然后有sctter文件将vector如下: FLASH 0x8000 { FLASH 0x8000 { init.o (Init, +First) * (+RO) }
32bitRAM 0x0000 { vectors.o (Vect, +First) interrupt.o * (+RW,+ZI) }
HEAP +0 UNINIT { heap.o (+ZI) }
STACKS 0x40000 UNINIT { stack.o (+ZI) }
} 现在的问题是:
因为板子上本来就有一个bootloader运行着在,板子上本身跑的bootloader需要地址0x0后的32k单元. 我用bootloader提供的指令load这个ads生成的.bin文件,
如果运行g 0x8000,程序死在那里,没有一点反应.我觉得,这是因为bootloader在0x0那里占着位置,所以运
行的时候才出问题.
但是,如果我不用scatter形式生成.bin,而用simple,ro指定位0x8000,rw不指定,程序却能从串口打印一些
我想要的,预料之中的信息,但不完全.不完全的原因是其他我想要的输出是和irq中断处理有关的.我用
simple形式生成.bin,那么,无疑在地址0x0处不能放置我写的vector在那里.所以,即使板子的irq到来,我
也不能运行我的程序.
我现在想了下,如果将我的程序的scatter文件中的FLASH后的地址改成remap后flash处的地址,然后将.bin
下载到flash开始的地方,那样在板子重新上电的时候,我的程序应该就能运行了.
各位说下,这样可用么?
另外,看了下armulator的semihosting,倒是可以利用这种机制,但是如果这样需要armulator来模拟我所要
的硬件.按照我现在的水平,还有时间的考虑,这样估计不行了.
各位dx,还有其他的方法,我可以用来完成我的调试么?比如用simple形式生成的.bin有方法来完成么?
我是初学者中的初学者啊,各位说说建议把.! |