总结uboot在FS2410上的移植

来源:互联网 发布:图像形态学 知乎 编辑:程序博客网 时间:2024/05/29 11:01
一、移植环境

1、Ubuntu 10.10 发行版
2、u-boot-1.3.1
3、FS2410平台
4、交叉编译器 arm-linux-gnu-gcc (ver:3.4.5)

二、移植步骤

移植的功能特点包括:

  • 支持Nand Flash读写
  • 支持从Nor/Nand Flash启动
  • 支持CS8900网卡 
  • 支持Yaffs文件系统 
  • 支持USB下载(还未实现)

    1、了解u-boot主要的目录结构和启动流程

    u-bootstage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成; 

    stage1的流程为:系统复位转入u-boot的stage1入口点——>设置异常向量——>设置cpu的速度、时钟频率及终端控制寄存——>初始化内存控制器——>拷贝u-boot的stage2的代码到RAM空间中——>设置堆栈、初始化数据段——>跳转到stage2的c入口点。

     u-bootstage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。

    stage2的流程为:c入口点——>初始化Flash设备——>初始化内存——>初始化NAND、显示、网络等设备——>将kernel和根文件系统映射从flash读到ARM中——>设定内存启动参数和调用内核。

    2、建立自己的开发板项目并测试编译

    目前u-boot对很多CPU直接支持,可以查看board目录的一些子目录,如:board/smdk2410/目录下就是对三星S3C2410 处理器的支持,但没有FS2410板子的支持,所以我们就在这里建立自己的开发板项目。

    3、根据u-boot启动流程图的步骤来分析或者修改u-boot源码

    1)fs2410开发板u-boot的stage1入口点分析。
    一般在嵌入式系统软件开发中,在所有源码文件编译完成之后,链接器要读取一个链接分配文件,在该文件中定义了程序的入口点,代码段、数据段等分配情况等。那么我们的fs2410开发板u-boot的这个链接文件就是board/fs2410/u-boot.lds

    2)在u-boot中添加对S3C2410一些寄存器的支持、添加中断禁止部分和时钟设置部分
    修改cpu/arm920t/start.S文件,完成U-Boot的重定向。

    3)测试编译新建的fs2410开发板项目

    好了!修改完毕后我们再重新编译u-boot,然后再烧录到NAND或者NOR FLASH(甚至可以通过仿真器下载到RAM的0x33f80000位置)中运行测试。结果终端有输出信息并且出现类似Shell的命令行,这说明这一部分移植完成。

  • 4)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上Nor Flash的支持)