【OK210试用体验】u-boot篇 -- SPL移植(续) - 在线问答 - 电子威廉希尔官方网站 论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】u-boot篇 -- SPL移植(续)

本帖最后由 q15920078530 于 2015-8-28 22:21 编辑

【OK210试用体验】u-boot篇 -- SPL移植(续)


    做好的准备工作,知道了u-boot的启动走向,对接下来的移植就比较方便了。
    移植涉及到的文件:

                 Makefile
                 board/samsung/smdkv210/smdkv210.c
                 arch/arm/include/asm/arch-s5pc1xx/cpu.h
                 include/configs/smdkv210.h
                 board/samsung/smdkv210/lowlevel_init.S
                 spl/Makefile
                 arch/arm/lib/crt0.S
                 arch/arm/include/asm/arch-s5pc1xx/clock.h
                 arch/arm/include/asm/arch-s5pc1xx/dmc.h
    首先,为了方便以后编译,在顶层的Makefile文件中添加交叉编译器信息:
    这里用SPL的方式,所以要在include/configs/smdkv210.h中添加宏定义,来关联编译。
    在S5PC110版本中,肯定有相关的寄存器定义,这里把其改成S5PV210的版本,毕竟自己定义了单板信息smdkv210。在arch/arm/include/asm/arch-s5pc1xx/cpu.h中,增加这些寄存器的定义: 这里参考的模板是位于同个文件下的S5PC110版本。S5PC110和S5PV210除了封装体积,其他的一模一样,只是应用在不同环境下而已。
    在 board/samsung/smdkv210/lowlevel_init.S中的代码是对硬件的初始化,这里为了方方便些,直接用裸机程序上写好的代码,直接应用,当然,应用的也是C语言的代码,但是对于S5PV210这里强大的CPU来说,这点性能开销也不算什么。有兴趣的可以用汇编代码来添加自己板子的初始化,提高效率。这里对系统时钟和RAM做初始化。
    通过宏可以有效的区分好不同的编译情况和输出文件的内容。这里用一个宏来检测是否被编译,在board/samsung/smdkv210/smdkv210.c中添加:
  1. #ifndef CONFIG_SPL_BUILD
复制代码
   这里也做修改: 最后记得#endif。

    要对clock和ddr做初始化,要有实现的代码,在arch/arm/include/asm/arch-s5pc1xx/clock.h中有对clock初始化的相关寄存器定义和代码,这里的寄存器同样参照S5PC110的版本改成S5PV210的版本
    在board/samsung/smdkv210/smdkv210.c中添加实现包含的头文件。
    clock_init在board/samsung/smdkv210/smdkv210.c中来实现。
    在arch/arm/include/asm/arch-s5pc1xx/cpu.h中修改一个在clock_init中有用到的编译宏信息:
    同理,可以完成ddr_init的相关操作,dmc.h需要新创建。
    在arch/arm/lib/crt0.S中有对栈的设置,因为u-boot-spl.bin的代码相当小,SRAM提供的栈空间已经足够了,所以这里屏蔽掉栈的设置,做如下修改:
    这里有CONFIG_SYS_SDRAM_BASE在include/configs/smdkv210.h中,可以把地址修改成另外合理的地址。
    完成了这些初始化的实现,还要完成将BL2的代码拷贝到RAM中运行的代码,这个也是根据裸机程序中的重定位代码,直接使用即可。在board/samsung/smdkv210/smdkv210.c中添加代码。
    最后,还需要为u-boot-spl.bin添加头信息,在spl/Makefile中做修改
    头信息工具和命令脚本这里借用友善之臂提供的: addheader.zip (1.17 KB, 下载次数: 0)     将工具addheader.c编译生成addheader,拷贝到tools目录下,改名为mksmdkv210spl.
   
    OK,编译,即可生成 .bin 文件,烧到SD卡上,然后用SD卡启动即可。


0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /7 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-11-13 10:12 , Processed in 0.331375 second(s), Total 34, Slave 25 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表