【Linux 移植 】——2、移植 u-boot-2012.04.01指分析启动过程

(韦东山毕业班视频)


一、移植 u-boot-2012.04.01指分析启动过程

a、获取源代码:

从 ftp://ftp.denx.de/pub/u-boot/  下载u-boot-2012.04.01.tar.bz2,下载交叉编译链arm-linux-gcc-4.3.2.tar.bz2。


b、将 u-boot-2012.04.01.tar.bz2 解压到 PC 上,并建立 Source Insight 工程。

将 u-boot-2012.04.01.tar.bz2  放到 Ubuntu 上面 进行解压,同时安装 arm-linux-gcc-4.3.2.tar.bz2。


c、建好Source Insight 工程后添加相应文件便可以分析  u-boot-2012.04.01 的启动过程:

根据链接过程,打开 start.S 进行代码分析:

1、设置 CPU 为管理模式 set the cpu to SVC32 mode

2、关看门狗 turn off the watchdog

3、屏蔽中断  mask all IRQs by setting all bits in the INTMR

4、设置分频时钟比例

5、设置内存控制控制器 (CPU 底层初始化)

6、设置栈,调用 C 函数 board_init_f

7、调用函数数组 init_sequence 里的各个函数

7.1 board_early_init_f : 设置系统时钟、设置GPIO

... ...

8、 重定位代码

8.1 从NOR FLASH把代码复制到SDRAM

8.2 程序的链接地址是0,访问全局变量、静态变量、调用函数时是使"基于0地址编译得到的地址"
      现在把程序复制到了SDRAM
      需要修改代码,把"基于0地址编译得到的地址"改为新地址

8.3 程序里有些地址在链接时不能确定,要到运行前才能确定:fixabs

9、clear_bss

10、调用C函数board_init_r:第2阶段的代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值