编译完内核之后,会产生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. 每日一皮:妹子们写的代码,Bug为什么这么多?
  2. 【Linux+vscode】配置好秘钥之后还是不能ssh连接(离线配置)
  3. Vue+Openlayers实现地图上绘制线
  4. 记录某一天安服仔的漏洞挖掘过程
  5. php友价商城手游,2019年T5友价商城网站程序-伪静态规则
  6. oracle:时间数据的处理
  7. 【java】 获取计算机信息及Java信息
  8. Windows 10企业批量部署实战之Windows 10客户端部署
  9. 金融行业密钥体系介绍(转)
  10. Delphi2007中安装OCX控件
  11. eclispe 下载与安装
  12. 一个简单的微信小程序支付demo
  13. jmeter5.4.1插件管理器下载安装-Jmeter-plugins-manager
  14. OpenDrive格式高精度地图详细解析及其使用(2.Road道路元素和Lane车道元素)
  15. 面试必须学会的八大技巧——让你在面试官面前游刃有余(面试注意事项等)
  16. Mac安装mysql最简单
  17. 好佳居窗帘十大品牌 窗帘的发展故事
  18. 2019 Revit二次开发企业
  19. SpringMVC创建Maven工程
  20. 基于stm32的两轮自平衡小车1(模块选型篇)

热门文章

  1. php+数组存放文件名_php将数组存储为文本文件的三种方法
  2. oracle asm磁盘回收步骤,【翻译自mos文章】回收 asm磁盘空间的方法
  3. 五邑大学c语言期末考试题,五邑大学 c语言试卷.doc
  4. for循环如果先--_乐字节Java循环:循环控制和嵌套循环
  5. 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程
  6. Outlook2016怎么修改默认数据库
  7. 轻量级RTSP服务模块和RTSP推流模块适用场景区别
  8. 输入过滤筛选下拉信息(类似百度输入)
  9. ECharts 仪表盘的轴线宽度修改
  10. java获取json中某个字段