移植最新uboot的总结
程
重新编译,只关心最后一条链接命令:
里面有这句arm-linux-ld
通过链接脚本知道: . = 0x00000000;同时-Ttext 0x0,由此我们知道是从NOR flash开始运行,通过链接脚本还知道第一个运行的是arch/arm/cpu/arm920t/start.s
自己写bootload的总结的过程:
a. 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH
b. 如果bootloader比较大,要把它重定位到SDRAM
c. 把内核从NAND FLASH读到SDRAM
d. 设置"要传给内核的参数"
e. 跳转执行内核
反汇编:
新uboot的过程:
2.1 set the cpu to SVC32 mode
2.2 turn off the watchdog
2.3 mask all IRQs by setting all bits in the INTMR
2.4 设置时钟比例
2.5 设置内存控制器
2.6 设置栈,调用C函数board_init_f
2.7 调用函数数组init_sequence里的各个函数
2.7.1 board_early_init_f : 设置系统时钟、设置GPIO
......
2.8 重定位代码:
2.8.1 从NOR FLASH把代码复制到SDRAM
2.8.2 程序的链接地址是0,访问全局变量、静态变量、调用函数时是使"基于0地址编译得到的地址"
2.8.3 程序里有些地址在链接时不能确定,要到运行前才能确定:fixabs
2.9 clear_bss
2.10 调用C函数board_init_r:第2阶段的代码
book@book-desktop:/work/system/u-boot-2012.04.01$
可以修改配置定义CONFIG_S3C2440
3. 修改U-BOOT代码
3.1 建一个单板(修改3个文件)
book@book-desktop:/work/system/u-boot-2012.04.01$
book@book-desktop:/work/system/u-boot-2012.04.01$
book@book-desktop:/work/system/u-boot-2012.04.01/board/samsung$
book@book-desktop:/work/system/u-boot-2012.04.01/board/samsung$
book@book-desktop:/work/system/u-boot-2012.04.01$
book@book-desktop:/work/system/u-boot-2012.04.01/include/configs$
看看是否能编译通过:
book@book-desktop:/work/system/u-boot-2012.04.01/include/configs$
book@book-desktop:/work/system/u-boot-2012.04.01$
make: *** No rule to make target `smdk2440_config.
make: *** [smdk2440_config] Error 1
编译通不过.怀疑是makefile的问题,搜索一下:
book@book-desktop:/work/system/u-boot-2012.04.01$
arch/arm/include/asm/mach-types.h:1644:# define machine_is_smdk2410()
arch/arm/include/asm/mach-types.h:1646:# define machine_is_smdk2410()
board/samsung/smdk2410/Makefile:28:COBJS
board/samsung/smdk2440/Makefile:28:COBJS
boards.cfg:65:smdk2410
MAINTAINERS:750:
book@book-desktop:/work/system/u-boot-2012.04.01$
在boards.cfg文件下复制65行,修改boards.cfg:
仿照
smdk2410
添加:
smdk2440
然后重新配置一下
book@book-desktop:/work/system/u-boot-2012.04.01$
然后重新编译一下
book@book-desktop:/work/system/u-boot-2012.04.01$
3.2 烧写看结果无法执行,下面按照第2节里面的分析启动过程
3.3 调试:
a. 阅读代码发现不足:UBOOT里先以60MHZ的时钟计算参数来设置内存控制器,但是MPLL还未设置
移植uboo 相关文章:
- minis3c2440移植之uboot移植(11-24)
- 移植uboot2010.09到S3C2440二(11-20)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)