做了一段时间44b0相关的东西,终于对ARM的一些问题有了一点点的认识,这里把我的一些经验贴出来,希望对像我一样的初学者有些帮助,也省的大家又开新帖,或翻旧帖,浪费时间。不对的地方请高手指出。 我以前没接触过ARM,只弄过51,刚一上手又是44b0,44b0没有内部ROM和RAM(不算CACHE),所以刚开始对程序的运行地址一头雾水。 首先,要搞明白调试和上电运行的不同。我们初学者接触ARM通常会用ADS调试ARM板上的示例程序。ADS的调试原理是将你编译后的程序写入-ro-base为起始地址的地方开始运行,通常将这个地址到RAM中,例如0x0c008000,你设到0x00来调试没用,0x00开始一般为flash(rom),AXD下不进去,要下到flash里,得写烧录代码,或者用flash烧写工具。如果你非要把地址设成0x00也可以,那你看到的运行的程序是flash里的程序,而不是你自己修改的示例程序。 然后,44b0不支持重映射,上电运行时的地址一定是你电路上bank0接的芯片的开始运行地址,这和调试不一样。如果你的程序需要上电就开始运行,那么你要把程序写完编译,再下到flash里(注意bootloader)。这时候你你要将-ro-base设为0x00000000,因为ADS编译后生成的文件中,程序的起始代码是-ro-base,如果你非要设其他的也行,烧进去后没反映的。 就先写这么多,有什么问题大家跟帖讨论,这里我还有个问题,三星44b0的bootloader中有个CONFIG参数是什么用的? 问了好久没人回答我,也找不到相关资料。。 |