Uboot移植_starts(文件级).2.2

 (原创文章,作者:达达kiki,未经许可,谢绝转载)   

    众所周知,如果要成功移植一个u-boot(针对硬件有变化)我们需要修改其对应的所有文件,那么在前一篇我们看到的头文件(100ask24x0.h)也是需要修改的,这里我们暂时跳过,因为添加过硬件的几乎都知道,只有当我们需要某个硬件时我们才考虑将其代码放置到主函数里面,将其头文件和相关定义放置到统一的头文件里面(这里也包含了c预处理的一些知识,可参考《C语言程序设计-现代方法》第二版),因此关于头文件修改的地方我们会在接下来关于添加硬件的地方逐个叙述。

    start.s是u-boot的第一阶段(stage1),在网上我们摘录了stage1需要做的事(这里针对的是s3c24x0,不同CPU可能会有些许不同,但是大致思想是一样的,掌握分析方法就行了):

    1、系统上电,进入svc模式
    2、关闭看门狗,禁止所有中断
    3、进行初级硬件初始化
    4、将自身代码拷贝到SDRAM中
    5、设置堆栈
    6、清空bss段
    7、跳转到C语言实现的stage2中

    我们可以在网上下载一个u-boot-1.1.6的源码,找到start.S(位置\cpu\arm920t\start.S),从上到下看一遍,和上述步骤可以完全对应(网上有很多注释的资料,自己查阅),但是我们要做的是根据一款硬件有改动的board,所以start.S肯定是需要修改的,选择一个已经修改的start.S(韦东山视频选用的百问做的开发板对应u-boot)来作为我们对照的对象,以此来学习如何修改。

    可能很多人会有疑惑这次修改有对照对象,但是以后怎么办呢?我们做一个实际项目或许并没有参考对象,其实我们通过这个过程目的其实是看看要完成stage1哪些才是必不可少的步骤,哪些是我们根据不同需求可添加可删除的,所以掌握了一款芯片的“最简启动”(启动u-boot需要的最简配置)在考虑其他芯片就会更为容易了,我们参考别人的配置不是为了仿照,而是要完全理解,然后随心所欲的裁剪,这样才cool.(详细的比较学习过程我写到文章里面,就不在随笔了,所以在下一篇随笔之前会有几篇文章,名字和这篇随笔是差不多的,待分析完再跳回随笔继续从文件的角度分析)

posted @ 2016-09-08 10:53  达达kiki  阅读(273)  评论(0编辑  收藏  举报