问个代码重定位的问题,在DRAM中重定位,我在学ARM

[复制链接]
查看11 | 回复2 | 2013-4-14 00:09:15 | 显示全部楼层 |阅读模式
楼主应该是想问boot的启动过程吧;以nand flash启动为例:(1)一般我们编写出来的boot程序肯定大于arm自带的4kB RAM空间;所以我们就将初始化代码和重定位代码链接到程序的最前面(即前面4KB内);(2)并且他们都使用相对跳转指令;(3)arm上电复位即跳转到0地址运行,即,我们链接在最前面的代码段;(4)初始化中的重定位函数;会将flash中的boot整个copy到外部ram中去(copy到它们的连接地址);(5)然后将pc指针指向外部ram中的执行地址;即完成重定位功能;(6)所以重定位功能必须在boot程序的前4KB代码段中完成...
回复

使用道具 举报

千问 | 2013-4-14 00:09:15 | 显示全部楼层
一般是这样的!1、系统内核一般是在外部flash中的,这是无法直接读取的2、一般系统启动后,CPU直接跳到复位向量,执行硬件初始化,这就是传说中的bootloader3、bootloader一般就会把内核(可能较大)复制到RAM中去执行,然后跳到内核去。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行