ARM学习过程中,初学者最难突破的应当是ARM映象文件形态和ARM启动代码分析了,本文将以我的Bootloader源码为例,力求作个透彻分析。
如下给出我的开发环境:
² Cpu:INTEL PXA270 (ARM V5TE)
² Board:INTEL MAINSTONE 2
² Memory:64MByte SDRAM,32MByte NorFlash(Inte E28F128),32MByte NandFlash
² Cross-complier:cross_3.3.2
一、关于映象文件和load region和execute region:
1. ARM映象文件组成
我们在ADS中编译源代码文件后的生成文件有两个:.axf和.bin文件。.bin文件是二进制格式执行文件,它才是真正可下载到FLASH中运行的;.axf文件是ADS的调试文件,利用UltraEdit查看其二进制代码,可以发现.axf其实是在.bin文件基础上增加文件头标识、文件尾表示(U-boot中的mkimage工具在映象文件中加入64kbyte的文件头,以供U-Boot识别)、再插入ADS的调试符号。打开ADS的调试器,可对.axf文件调试。
2. ARM映象文件加载域(load region)、运行域(execute region)
看了很多ARM教材这方面都没怎么涉及,有的书本提到感觉始终太过术语话,不太好明白。这里我首先对些关键概念做个简单名词解释,相信大家一看就懂:
² RO:Read-only
RW:Read-write.
ZI:Zero-initialized
² 段(Section):描述映像文件的代码或数据块。
² 输入段(input secti