arm9,arm7这些关乎指令架构和指令集的,是编译的时候给不同的参数给arm-linux-gcc的。
arm-linux-gcc自身也有差异,有些只能做特定指令的。
硬件的资源无非是内存和IO寄存器和IO Mem,这些都在某个地址空间里,所以,差不都是地址位置的确定。
如果是编裸奔的程序,内存的大小啊,代码、数据的分布的情况等,这些是东西是在链接阶段由链接脚本指定的,最后由arm-linux-objcopy这类程序由ELF格式转为纯二进制格式。
如果是编在某个OS上跑的程序,一般都链接到底层库上,然后OS的ELF加载程序会解析ELF头信息,搞定代码数据在内存上的分布,动态的内存分配和资源的位置请求会有底层库向OS请求搞定。
如果不是从头开发OS,一般不需要搞这么多细节问题,BSP开发环境会提供好相关的东西,我们只需要改代码make就行。
|