编译完内核之后,会产生zImage,而把它直接导入0x30008000,会出现Bad Magic Number.

查明是需要将内核加一个0x40大小的头,由mkimage工具来添加.mkimage在编译u-boot时在u-boot-1.1.6/tools下生成,可以为编译的内核添加头信息的.在bootm命令中会解析这个头,获得参数.zImage在编译内核时,在arch/arm/boot目录下生成。我们需要把zImage用mkimage工具处理一下。

mkimage参数的意义如下:

-A == set architecture to 'arch'

-O == set operating system to 'os'

-T == set image type to 'type'

-C == set compression type 'comp'

-a == set load address to 'addr' (hex)

-e == set entry point to 'ep' (hex)

-n == set image name to 'name'

-d == use image data from 'datafile'

-x == set XIP (execute in place)

首先可以把zImage拷贝到u-boot-1.1.6/tools目录下,在此目录下,执行如下命令:

./mkimage -n 'linux-2.6.26' -A arm -O linux -T kernel -C none -a 0x30007fc0 -e 0x30008000 -d zImage uImage

输出信息如下:

Image Name:linux-2.6.26

Created:Tue Jul 28 18:50:26 2009

Image Type:ARM Linux Kernel Image (uncompressed)

Data Size:1655648 Bytes = 1616.84 kB = 1.58 MB

Load Address: 0x30007FC0

Entry Point:0x30008000

可以看出加载地址是0x30007fc0,而入口地址是0x30008000.

GEC2410 #tftp 30008000 uImage

TFTP from server 192.168.0.50; our IP address is 192.168.0.100

Filename 'uImage'.

Load address: 0x30008000

Loading: #################################################################

#################################################################

#################################################################

#################################################################

################################################################

done

Bytes transferred = 1655712 (1943a0 hex)

GEC2410 #bootm 30008000

## Booting image at 30008000 ...

Image Name:linux-2.6.26

Created:2009-07-2810:50:26 UTC

Image Type:ARM Linux Kernel Image (uncompressed)

Data Size:1655648 Bytes =1.6 MB

Load Address: 30007fc0

Entry Point:30008000

Verifying Checksum ... OK

OK

Starting kernel ...(卡死在这儿了)

GEC2410 #tftp 30008000 uImage

TFTP from server 192.168.0.50; our IP address is 192.168.0.100

Filename 'uImage'.

Load address: 0x30008000

Loading: #################################################################

#################################################################

#################################################################

#################################################################

################################################################

done

Bytes transferred = 1655712 (1943a0 hex)

GEC2410 #bootm 30007fc0

## Booting image at 30007fc0 ...

Bad Magic Number

GEC2410 #tftp 30007fc0 uImage

TFTP from server 192.168.0.50; our IP address is 192.168.0.100

Filename 'uImage'.

Load address: 0x30007fc0

Loading: #################################################################

#################################################################

#################################################################

#################################################################

################################################################

done

Bytes transferred = 1655712 (1943a0 hex)

GEC2410 #bootm 30008000

## Booting image at 30008000 ...

Bad Magic Number

GEC2410 #

GEC2410 # tftp 0x30007fc0 uImage

TFTP from server 192.168.0.50; our IP address is 192.168.0.100

Filename 'uImage'.

Load address: 0x30007fc0

Loading: #################################################################

#################################################################

#################################################################

#################################################################

################################################################

done

Bytes transferred = 1655712 (1943a0 hex)

GEC2410 #bootm 30007fc0

## Booting image at 30007fc0 ...

Image Name:linux-2.6.26

Created:2009-07-2810:50:26 UTC

Image Type:ARM Linux Kernel Image (uncompressed)

Data Size:1655648 Bytes =1.6 MB

Load Address: 30007fc0

Entry Point:30008000

Verifying Checksum ... OK

XIP Kernel Image ... OK

Starting kernel ...

Uncompressing Linux............................................................................................................ done, booting the kernel.

………………….

(一大堆信息)

从上面可以看出,tftp下载的地址和bootm引导的地址是同一个地址,且是mkimage的参数 -a 的地址,即加载地址,而不是入口地址。

./mkimage -n 'linux-2.6.26' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage

Created:Tue Jul 28 19:21:15 2009

Image Type:ARM Linux Kernel Image (uncompressed)

Data Size:1655648 Bytes = 1616.84 kB = 1.58 MB

Load Address: 0x30008000

Entry Point:0x30008000

入口地址和加载地址一样的时候,

我在做这个尝试的时候,导致开发板重启……。

现在能正确引导内核啦,但是GEC2410的网卡芯片是CS8900A的芯片,要能正确的启动Linux系统,还必须添加CS8900A的驱动……

linux 内核入口地址,linux内核的加载地址和入口地址相关推荐

  1. uboot加载linux内核加载那些内容,几个地址参数及uboot加载启动内核过程的理解

    关于uBoot和Linux内核中几个地址参数及uboot加载启动内核过程的理解 uboot一般使用mkimage工具先制作一个启动映象文件来引导识别内核的,uboot源代码的tools/目录下有mki ...

  2. linux优化网页加载过程,【zz】Linux起步过程中硬件模块的加载

    [zz]Linux起步过程中硬件模块的加载 [zz]Linux起步过程中硬件模块的加载 日期:2014-05-16 浏览次数:20354 次 [zz]Linux启动过程中硬件模块的加载 文章来源不详. ...

  3. linux程序卸载动态库,Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载...

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 相信读者已经看过了 Intel平台下Linux中ELF文件动态链接的加载.解析及实例分析(一): 加载的内容了,了解了ELF文件被加载的 ...

  4. linux 卡在grub_浅析 GRUB 如何加载 Linux kernel

    前言 对于 GRUB 的加载流程,网上绝大部分都是写对 menu.lst, grub.cfg 这些 GRUB 配置文件的编写流程,就像是写脚本语言一样,用些关键字就能让 PC机能正确启动桌面 Linu ...

  5. Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法

    Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法 问题描述 在Ubuntu上使用CP210x USB转UART设备时需要安装驱动程序(CP ...

  6. Linux下C/C++程序编译链接加载过程中的常见问题及解决方法

    Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...

  7. linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...

    今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...

  8. [转载总结]Linux环境下C++运行时动态链接库加载要点总结

    最近在看的一些web服务器源码的扩展部分基本上都使用到了.so动态库的运行时加载,也遇到了不少坑,看了不少网上的博客,在这里稍微总结转载一下,也是为了以后少走弯路. 首先需要了解的就是静态库与动态库的 ...

  9. Glide 加载网络图片,图片地址不变,图片字段变更时,图片不加载的问题。

    业务场景: 移动端需要进行图片分享,该图片由后端处理好,返回url地址供移动端加载使用,每次在页面中点击分享,加载对应参数拼接的图片地址,可是在同一参数,获取不同结果时,图片地址不变,图片内容数据却在 ...

  10. linux模式下无奶瓶程序,PE加载BEINI奶瓶,看不到奶瓶图标?忘指导

    利用grub4dos启动Beini后看不到奶瓶图标的解决办法 第一种启动方案:解开启动. 把Beini_1.2.3.iso用winrar解开,放在优盘或者本地硬盘根目录,用bootice在优盘MBR写 ...

最新文章

  1. linux 故障注入_阿里巴巴开源故障注入工具_chaosblade
  2. 详解 | Dropout为何能防止过拟合?
  3. 近期苹果、Facebook等科技巨头股价缘何不断下跌?
  4. alsa 测试 linux_python语音智能对话聊天机器人--linuxamp;amp;树莓派双平台兼容
  5. 深入理解RocketMQ:Consumer消费消息原理
  6. python中str用法_python数据类型之str用法
  7. Camera摄像头工作原理
  8. mysql双机热备 配置文件,MYSQL 双机热备配置手册()
  9. 基于Gulp的简易前端自动化工程搭建
  10. go json部分解析_Go语言爱好者周刊:第 60 期 — 今天这题你做对了吗?
  11. 三角形垂点坐标js算法(三点定圆求圆心)
  12. 中国第一代程序员简史:中国龙简晶的程序人生
  13. java简单增删改查_JAVA JDBC 简单的增删改查
  14. Python zipfile – Python ZIP
  15. 手机怎么在线拍照翻译英语?这个方法不能不知道
  16. ImportError: cannot import name ‘bbox_ious‘
  17. 赤壁之战的Google Map
  18. 周期函数的傅里叶级数展开
  19. html中定义高度的属性是什么,height【css 高度】属性教程
  20. 解决Word2010中插入图片时变成空白框问题

热门文章

  1. centos7盘符 linux_linux_centos7_扩展磁盘空间
  2. 将当前的head推送到远程_Git 通俗易懂系列 三、远程仓库和标签
  3. 解释型语言和编译型语言的区别_从泛型的使用情况看出你对语言的理解程度(2)...
  4. java重写面试题_Java面试题:重写了equals方法,为什么还要重写hashCode方法?
  5. android webservices 返回多行多列数据,NoahWeb实现表格多行多列
  6. 长春理工大学c语言实验题库,长春理工大学首届趣味心理知识竞赛初赛题库.doc...
  7. ssrf漏洞内网渗透_渗透小白看了也能明白的SSRF
  8. mysql5.7.19不好用_Mysql 5.7.19 免安装版遇到的坑(收藏)
  9. html5 中 video 标签,H5页面中 video 标签的坑
  10. spring常见术语理解