IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    移植u-boot-2010.09到tq2440(一)

    Qiang发表于 2011-02-08 12:53:11
    love 0

    前言:
    很久之前就买了块s3c2440的开发板tq2440,之前一直都是用天嵌提供的u-boot,但是这个u-boot的版本太老,使用的还是parameter_struct的传递内核参数的方法,这种传递参数的方法主要是2.6 之前的内核使用的方式。于是我就有了移植u-boot的想法,在网上看了不少u-boot移植的资料,但是大多都是讲到一些驱动的移植后就结束了,竟然连linux内核的引导都没有讲清楚,感觉很不完整,所以我打算再做一个文档作为补充。所以,我的移植重点在于完整的实现一个最最基本的bootloader的功能—从cpu加电开始,一直到bootloader完全的把cpu的控制权限交给内核,什么NOR Flash,网卡,统统用不到,所以不移植。

    一. 移植的硬软件环境
    移植版本:u-boot-2010.09
    硬件参数:tq2440开发板,s3c2440A,64M的SDRAM,256M的nand Flash。

    二. U-boot引导内核的基本过程
    接触过bootloader的人都知道bootloader是分为两个部分,即stage1和stage2,stage1的主要工作为:
    1. 定义入口,设置异常向量;
    2. 初始化硬件,如cpu,内存;
    3. 将rom中的代码复制到ram中;
    4. 初始化C的运行环境;
    5. 跳转到ram中继续运行。
    有了stage1的铺垫,stage2的工作就显得比较简单了:
    1. 调用一些列的初始化函数,例如初始化nand flash;
    2. 如果是交互模式,则进入主loop(),循环的接收执行用户输入的命令;
    3. 如果不是交互模式,对于zImage格式的内核,就复制nand flash中的内核映像到ram的指定位置(如s3c2440为0x30008000),然后跳转到指定位置执行(这里的详细过程,以后会讲到),此刻,bootloader的使命就完成了,内核已经取得了cpu的完全控制。



沪ICP备19023445号-2号
友情链接