zoukankan      html  css  js  c++  java
  • uboot无法引导uImage错误及其解决方法

    先编译友善提供的linux内核:

    make ARCH=arm mini2440_defconfig
    make
    CROSS_COMPILE=arm-linux- uImage

    在arch/arm/boot/uImage 生成uImage

    在使用《mini2440移植uboot 2014.04(六)》中移植的uboot来加载刚才编译的uImage,拷贝到tftp文件夹,重启tftp服务器:

    tftp 30008000 uImage
    bootm

    此时内核无法加载,在显示下面的信息后就不再显示其他内容。

    Starting kernel ...

    这是因为uImage实际上是在zImage前添加了64个字节的文件头,可以用mkimage工具查看uImage的文件头信息:

    $ mkimage -l arch/arm/boot/uImage 
    Image Name:   Linux-2.6.32.2-FriendlyARM
    Created:      Thu Jul  3 10:05:23 2014
    Image Type:   ARM Linux Kernel Image (uncompressed)
    Data Size:    2275212 Bytes = 2221.89 kB = 2.17 MB
    Load Address: 30008000
    Entry Point:  30008000

    其中有两个重要的地址,一个是加载地址(Load Address),另一个是入口地址(Entry Point).

    加载地址是uboot在加载内核时的存放地址,入口地址是内核代码的开始执行地址。

    在使用前面的uboot加载uImage时,把uImage加载到加载地址(0x30008000)处,然后就在入口地址(0x30008000)处开始执行,而实际的代码执行地址是0x30008040(入口地址+文件头长度)。

    所以无法启动uImage.

    以前我在《mini2440移植uboot 2011.03(上)》和《mini2440移植uboot 2014.04(四)》中执行下面的命令才正常加载内核:

    # tftp 30007fc0 uImage
    # bootm

    但是这种方法看起来会让人觉得有点怪,有种违和感。

    其实也可以直接将uImage中的加载地址修改为0x30008040就也能正常加载内核,只需要修改内核源码文件arch/arm/boot/Makefile即可:

    删除一行:
    $(obj)/uImage: STARTADDR=
    $(LOADADDR)
    在删除行后面添加一行: $(obj)/uImage: STARTADDR=$(shell echo $(LOADADDR) | sed -e "s/..$$/40/")

    此行内容用于将30008000最后两位替换成40,即30008040,正好和我们的要求相符合。

    修改后重新编译uImage,并加载,可以正常启动内核了。

     此时执行mkimage查看uimage,如下所示:

    $ mkimage -l arch/arm/boot/uImage 
    Image Name:   Linux-2.6.32.2-FriendlyARM
    Created:      Thu Jul  3 10:23:53 2014
    Image Type:   ARM Linux Kernel Image (uncompressed)
    Data Size:    2275212 Bytes = 2221.89 kB = 2.17 MB
    Load Address: 30008000
    Entry Point:  30008040
  • 相关阅读:
    v4L2编程
    我的c#开发之路
    JS 获取页面input控件 追加样式属性
    FileUpload控件应用
    C# Winform项目下实现左侧菜单右侧界面显示效果
    在DropDownList 控件绑定数据源中新增一条自定义数据
    在datatable数据中自定义增加一列
    java 实现字符串词频统计
    Hibernate3.x 中BLOB、CLOB 注解配置写法
    lucene 排序
  • 原文地址:https://www.cnblogs.com/qiaoqiao2003/p/3821917.html
Copyright © 2011-2022 走看看