参考http://blog.csdn.net/jianchi88/article/details/7061089
分析ARM的两种启动方式
从Nor Flash启动:
Nor Flash一般为1M空间,程序可直接在Nor Flash中运行,地址映射为0
只需保证bootloader放在Nor Flash的0地址,ARM一上电会从Nor Flash的0地址执行
从Nand Flash启动:
ARM一上电Nand Flash的最前4k的内容会被写进soc的sram(起步阶石,大小4k)
地址映射为0,ARM从0地址取指执行,而一般的bootloader会大于4k,所以bootloader
会被分成stage1与stage2。
一.stage1分析
1.无论bootloader的大小,前4k会被拷进sram,完成硬件初始化
2.拷贝整个bootloader至sdram,如:从地址0x40000000开始放
3.设置堆栈
4.pc跳转至sdram执行stage2(多为c函数)
需要设置跳转到相对地址
__asm__ __volatile__ (
"ldr r0, =main\n"