移植uboot到powerpc(2)--start.s跟踪,u-boot,ppc ,mpc85 mpc83

可以看看这篇文章:http://www.foxice.net/techinfo_ubootvxworks7.asp

以及搜索下vxworks的启动文件rominit.s,对比uboot的start.s,前面很像。我这里说说具体要改的地方。

 

打开cpu.mpc83xx/start.s

1、配置“硬件复位配置字”,有个宏定义#define _HRCW_TABLE_ENTRY对应。配置字在inclue/configs/mpc8323erdb.h定义,注意是大端模式

2、接下可以跟着汇编跑,第一个来到“_start:”,跑到boot_cold->boot_warm,然后到了bl map_flash_by_law1,这里就要跳过去改一改了。因为这个是启动flash的配置。map_flash_by_law1其实是修改cs0的访问空间,因为上电后只能访问32k(好像是)空间。这样如果不改,uboot后面的程序就没法运行了。所以,

lwz    r4, OR0@l(r3)
    li    r5, 0xff7 ;;这个要改

3、接着代码就跑到in_flash了,顾名思义,还是在flash运行。这时第一时间跳到remap_flash_by_law0,这个remap_flash_by_law0就是重新更改cs0设置,以flash的实际大小为依据。所以,

lwz r4, BR0(r3)
    li  r5, 0xff7  ;;再改一次

 

4、然后就是流水账了:“bl    cpu_init_f” -》“bl    board_init_f”

到了board_init_f()这个函数仍然是只允许一小部分c代码运行的环境。这个函数最后会调用relocate_code(),relocate_code就是把代码拷贝到sdram并运行之。

看看relocate_code(),执行完后就跑到in_ram:了,然后“clear_bss:”-》“bl    board_init_r”。这个board_init_r()就是真正的c函数。

 

 

所以,总结下,start.s改动不多,有仿真器更好跟踪。基本上很多初始化的工作都在头文件定义完了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值