u-boot-2016.09移植(4)-u-boot.bin
来源:互联网 发布:好听的淘宝店铺英文名 编辑:程序博客网 时间:2024/04/29 00:18
u-boot.bin从start.S中的reset开始执行,执行一些CPU底层初始化,然后跳转到crt0.S中的_main函数。
CONFIG_SYS_INIT_SP_ADDR 在单板配置文件 tq210.h中定义,这个可以随便设置,但要保证能够供board_init_f 使用,以及存储GD (‘global data’),我们可以直接设置为DDR 的最高地址0x60000000。
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + PHYS_SDRAM_1_SIZE)
其中PHYS_SDRAM_1_SIZE定义为它的最大值
#define CONFIG_SYS_LOAD_ADDR CONFIG_SYS_SDRAM_BASE + 0x40000000
接着调用board_f.c中的board_init_f函数,给它传了一个参数r0=0,事实上没有用到。这个函数使用到了一些全局变量,因此我们需要让u-boot.bin位于其链接地址,通过修改tq210.h中的宏CONFIG_SYS_TEXT_BASE指定其链接地址。我们将其指定为u-boot.bin 在 DDR 中的起始地址
接着分析board_init_f,这个在common/board_f.c中定义,在第二节中我们分析了这个函数主要是执行init_sequence_f这个函数数组,这里我们主要分析几个我们需要修改的函数。
调用serial_init初始化串口,通过跟踪代码发现在单板配置文件 tq210.h中通过宏CONFIG_SERIAL0 指定使用哪个串口,默认使用的是串口0,所以这里我们需要为串口0配置GPIO口,直接在board/samsung/tq210/lowlevel_init.S中定义:
调用print_cpuinfo显示CPU信息:
修改arch/arm/cpu/armv7/s5p-common/cpu_info.c显示我们自己的CPU:
s5p_get_cpu_name得到CPU的名称,在arch/arm/mach-s5pv210/include/mach/cpu.h 中
定义为:
get_arm_clk 根据 CPU 的ID决定调用那个函数来获取时钟,其定义在arch/arm/mach-s5pv210/clock.c中:
我们将其修改为
仿照s5pc110_get_arm_clk()修改一个s5pv210_get_arm_clk(),在s5pv210_get_arm_clk 中调用了get_pll_clk(APLL)来获得APLL 输出时钟,与get_arm_clk一样参考s5pc110_get_pll_clk(pllreg)写一个s5pv210_get_pll_clk(pllreg):
其他的函数我们不用去修改,返回继续看crt0.S.
编译,产生u-boot.bin,查看得到273K,在crt0.S中复制u-boot.bin时,我们之前的大小是随意写的,这个时候需要修改复制的大小必须必u-boot.bin大,
为了防止后面还需要变大,我就在这里使用700扇区,350K。
再次编译,将产生的u-boot.bin烧录到34扇区。
同样的为了验证是否成功,我在board_init_r后面添加点灯程序,灯亮,表示u-boot.bin移植完成。
- u-boot-2016.09移植(4)-u-boot.bin
- u-boot-2016.11移植u-boot.bin
- u-boot-2016.09移植(3)-u-boot-spl.bin
- u-boot-2016.09移植(8)-合并tq210-spl.bin与u-boot.bin
- U-BOOT移植过程详解: u-boot.bin
- U-BOOT移植过程详解: u-boot.bin
- u-boot-2016.11移植uboot-spl.bin
- 制作u-boot.bin
- 海思u-boot.bin
- u-boot.bin
- U-boot移植之U-boot概述
- XSBase255B -- u-boot移植
- u-boot移植心得
- u-boot移植日记
- U-BOOT移植
- 移植u-boot
- u-boot移植三
- U-BOOT移植总结
- 动态规划资料
- SpringMVC——接收请求参数和页面传参
- jackson 部分源码解读(未完成)
- 冒泡排序
- 一些常用的sql(一)
- u-boot-2016.09移植(4)-u-boot.bin
- 在 Docker 上配置 Oracle
- Android控件的继承关系图
- 2016.11.7人力资源管理讲座有感
- JAVA中如何用接口实现多继承和多态 (非常好)
- Android 自定义View基本绘制流程及实例
- C——位运算简介及实用技巧
- 详解Message,Handler,MessageQueue,Looper的关系
- javascript之工厂模式