关于u-boot的理解

来源:互联网 发布:什么是数据透视表 编辑:程序博客网 时间:2024/06/06 02:59
    首先来理解Bootloader,中文意思可理解为“启动加载器”,是一个系统启动时工作的软件,是一个涉及硬件和软件衔接的系统软件。
    在PC上,BootLoader由BIOS和MBR组成,PC上电后首先执行BIOS程序,
根据用户配置,由BIOS加载硬盘MBR的启动数据。
BIOS把硬盘MBR的数据读取到内存中,然后把系统的控制权交给保存在MBR的操作系统加载程序,操作系统加载程序继续工作,直到加载操作系统内核,再把控制权交给操作系统内核。
    在嵌入式开发中,u-boot就是一种Bootloader软件。它开源,支持众多开发板,支持的处理器和操作系统也很多。u-boot与PC上的BIOS类似,但是也有不同之处,因为PC有统一的设计规范,启动工作都是由BIOS完成,而对于开发板,就没有统一的设计规范,需要自己设计Bootloader。
    下面拿我fl2440开发板举例:
fl2440的主要硬件有:
CPU芯片:ARM920t,4K的SRAM和ARM9TDMI(ARM核)
运行内存:64M的SDRAM
硬盘:256M的nandflash
    将u-boot移植到开发板的流程如下
1.用J-link将bootstrap-s3c2440.bin加载到芯片的SRAM上,这时ARM核会执行bootstap的程序,初始化运行内存SDRAM和CPU
2. 用J-link将u-boot-s3c2440.bin加载到运行内存SDRAM(不是芯片的SRAM)上,这时ARM核会执行u-boot的程序,初始化CPU的各寄存器以及其他外部设备,建立存储器映射图以及初始化堆栈,为内核、文件系统提供基本的运行环境。
3.使用tftp将u-boot烧录到nandflash上,这样u-boot就固化在nandflash上,不用每次都重新烧录,之后每次一上电就会将u-boot的前4K代码(相当于bootstrap)从nandflash调入CPU的SRAM中,初始化运行内存SDRAM和CPU,接着再将剩余的u-boot代码调入SDRAM接着初始化工作。换个说法,上电即执行上面1和2步骤,只是芯片SRAM掉电丢失数据,即上次bootstrap-s3c2440.bin已经丢失了,所以要用u-boot的前4K代码代替,u-boot的前4K代码等同于是bootstrap的代码。
4.初始化完成就可以进入u-boot命令行,接下来可以在这里烧录内核,文件系统。
  说明:
1.bootstrap-s3c2440.bin和u-boot-s3c2440.bin这两个程序要自行设计,是对应fl2440开发板而设计的,不同的开发板会用到不同的程序,bootstrap就是为了引导u-boot。还有注意区分运行内存SDRAM和CPU的SRAM。
2.J-link仿真器,JTAG最初是用来对芯片进行测试的,如今,JTAG接口还常用于实现ISP(In-System Programmer,在系统编程),对FLASH等器件进行编程。JTAG编程方式是在线编程。所以J-link可以将程序直接加载到内存中。
3.从上面我们看到,一段存储空间一般要先初始化,才能写入程序。如何理解这里的初始化呢?个人感觉是将芯片和存储硬件联系起来,实现兼容,或者说实现硬件和软件的兼容。
0 0
原创粉丝点击