当前位置: 代码迷 >> 综合 >> uboot 引导Linux 内核步骤--经典
  详细解决方案

uboot 引导Linux 内核步骤--经典

热度:30   发布时间:2023-12-08 22:15:04.0
内核的引导步骤如下:
(1)用U-boot 的mkimage 工具处理内核映像zImage。
(2)通过网络、串口、U 盘、SD 卡等方式将处理过的内核映像传输到SDRAM 的一定
位置(一般使用0x30008000)
(3)然后使用”bootm"等内核引导命令来启动内核。

        为什么要用U-boot 的mkimage 工具处理内核映像zImage?
因为在用bootm 命令引导内核的时候,bootm 需要读取一个64 字节的文件头,来获取这
个内核映象所针对的CPU 体系结构、OS、加载到内存中的位置、在内存中入口点的位置以
及映象名等等信息。这样bootm 才能为OS 设置好启动环境,并跳入内核映象的入口点。而
mkimage 就是添加这个文件头的专用工具。具体的实现请看U-boot 中bootm 的源码和
mkimage 的源码。

      mkimage 工具的使用:
参数说明:
-A    指定 CPU 的体系结构,可用值有alpha、arm 、x86、ia64、mips、mips64、
ppc 、s390、sh、sparc 、sparc64、m68k


-O    指定操作系统类型,可用值有:openbsd、netbsd、freebsd、4_4bsd、linux、
svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、
rtems、artos


-T     指定映象类型,可用值有:standalone、kernel、ramdisk、multi、firmware、script、
filesystem


-C    指定映象压缩方式,可用值有:
none 不压缩(一般使用这个,因为zImage 是已经被bzip2 压缩过的自解压内核)

    gzip 用gzip 的压缩方式
    bzip2 用bzip2 的压缩方式

-a     指定映象在内存中的加载地址,映象下载到内存中时,要按照用 mkimage 制作映象
时,这个参数所指定的地址值来下载
-e     指定映象运行的入口点地址,这个地址就是-a 参数指定的值加上0x40(因为前面有个
mkimage 添加的0x40 个字节的头)
-n     指定映象名
-d     指定制作映象的源文件


以下是制作内核映像的命令示例:
mkimage -n 'tekkaman' -A arm -O linux -T kernel -C none -a 0x30008000 -e
0x30008040 -d zImage zImage.img