linux 内核入口地址,linux内核的加载地址和入口地址
编译完内核之后,会产生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内核的加载地址和入口地址相关推荐
- uboot加载linux内核加载那些内容,几个地址参数及uboot加载启动内核过程的理解
关于uBoot和Linux内核中几个地址参数及uboot加载启动内核过程的理解 uboot一般使用mkimage工具先制作一个启动映象文件来引导识别内核的,uboot源代码的tools/目录下有mki ...
- linux优化网页加载过程,【zz】Linux起步过程中硬件模块的加载
[zz]Linux起步过程中硬件模块的加载 [zz]Linux起步过程中硬件模块的加载 日期:2014-05-16 浏览次数:20354 次 [zz]Linux启动过程中硬件模块的加载 文章来源不详. ...
- linux程序卸载动态库,Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载...
在 IBM Bluemix 云平台上开发并部署您的下一个应用. 相信读者已经看过了 Intel平台下Linux中ELF文件动态链接的加载.解析及实例分析(一): 加载的内容了,了解了ELF文件被加载的 ...
- linux 卡在grub_浅析 GRUB 如何加载 Linux kernel
前言 对于 GRUB 的加载流程,网上绝大部分都是写对 menu.lst, grub.cfg 这些 GRUB 配置文件的编写流程,就像是写脚本语言一样,用些关键字就能让 PC机能正确启动桌面 Linu ...
- Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法
Linux系统安装驱动过程中ko文件加载错误(Required key not available)的解决办法 问题描述 在Ubuntu上使用CP210x USB转UART设备时需要安装驱动程序(CP ...
- Linux下C/C++程序编译链接加载过程中的常见问题及解决方法
Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...
- linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...
今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...
- [转载总结]Linux环境下C++运行时动态链接库加载要点总结
最近在看的一些web服务器源码的扩展部分基本上都使用到了.so动态库的运行时加载,也遇到了不少坑,看了不少网上的博客,在这里稍微总结转载一下,也是为了以后少走弯路. 首先需要了解的就是静态库与动态库的 ...
- Glide 加载网络图片,图片地址不变,图片字段变更时,图片不加载的问题。
业务场景: 移动端需要进行图片分享,该图片由后端处理好,返回url地址供移动端加载使用,每次在页面中点击分享,加载对应参数拼接的图片地址,可是在同一参数,获取不同结果时,图片地址不变,图片内容数据却在 ...
- linux模式下无奶瓶程序,PE加载BEINI奶瓶,看不到奶瓶图标?忘指导
利用grub4dos启动Beini后看不到奶瓶图标的解决办法 第一种启动方案:解开启动. 把Beini_1.2.3.iso用winrar解开,放在优盘或者本地硬盘根目录,用bootice在优盘MBR写 ...
最新文章
- 每日一皮:妹子们写的代码,Bug为什么这么多?
- 【Linux+vscode】配置好秘钥之后还是不能ssh连接(离线配置)
- Vue+Openlayers实现地图上绘制线
- 记录某一天安服仔的漏洞挖掘过程
- php友价商城手游,2019年T5友价商城网站程序-伪静态规则
- oracle:时间数据的处理
- 【java】 获取计算机信息及Java信息
- Windows 10企业批量部署实战之Windows 10客户端部署
- 金融行业密钥体系介绍(转)
- Delphi2007中安装OCX控件
- eclispe 下载与安装
- 一个简单的微信小程序支付demo
- jmeter5.4.1插件管理器下载安装-Jmeter-plugins-manager
- OpenDrive格式高精度地图详细解析及其使用(2.Road道路元素和Lane车道元素)
- 面试必须学会的八大技巧——让你在面试官面前游刃有余(面试注意事项等)
- Mac安装mysql最简单
- 好佳居窗帘十大品牌 窗帘的发展故事
- 2019 Revit二次开发企业
- SpringMVC创建Maven工程
- 基于stm32的两轮自平衡小车1(模块选型篇)
热门文章
- php+数组存放文件名_php将数组存储为文本文件的三种方法
- oracle asm磁盘回收步骤,【翻译自mos文章】回收 asm磁盘空间的方法
- 五邑大学c语言期末考试题,五邑大学 c语言试卷.doc
- for循环如果先--_乐字节Java循环:循环控制和嵌套循环
- 搜狗浏览器怎么保存账号密码 搜狗浏览器保存账号密码教程
- Outlook2016怎么修改默认数据库
- 轻量级RTSP服务模块和RTSP推流模块适用场景区别
- 输入过滤筛选下拉信息(类似百度输入)
- ECharts 仪表盘的轴线宽度修改
- java获取json中某个字段