移植uboot到powerpc(2)--start.s跟踪,u-boot,ppc ,mpc85 mp
可以看看这篇文章: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) 3、接着代码就跑到in_flash了,顾名思义,还是在flash运行。这时第一时间跳到remap_flash_by_law0,这个remap_flash_by_law0就是重新更改cs0设置,以flash的实际大小为依据。所以, lwz r4,BR0(r3) ? 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改动不多,有仿真器更好跟踪。基本上很多初始化的工作都在头文件定义完了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c – 为什么编译器会在下面选择模板版本?
- 正则表达式 – 以逗号或逗号和空格分隔的项目列表的正则表达
- Swift NSMutableData附加Byte
- c# – TextBox最大字符数(不是MaxLength)
- Swift——分支guard的使用
- ruby – 如果没有块参数,`do` …`end`语句如何工作?
- 创建并置表,第 1 部分: 使用 Flex 创建 JTable
- ruby-on-rails – 如何配置Haml’s:降价过滤器以使用带有选
- Oracle ADF 11g在Java EE框架中位于哪里?
- ios – 使用startMonitoringSignificantLocationChanges时是