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写 ...
最新文章
- linux 故障注入_阿里巴巴开源故障注入工具_chaosblade
- 详解 | Dropout为何能防止过拟合?
- 近期苹果、Facebook等科技巨头股价缘何不断下跌?
- alsa 测试 linux_python语音智能对话聊天机器人--linuxamp;amp;树莓派双平台兼容
- 深入理解RocketMQ:Consumer消费消息原理
- python中str用法_python数据类型之str用法
- Camera摄像头工作原理
- mysql双机热备 配置文件,MYSQL 双机热备配置手册()
- 基于Gulp的简易前端自动化工程搭建
- go json部分解析_Go语言爱好者周刊:第 60 期 — 今天这题你做对了吗?
- 三角形垂点坐标js算法(三点定圆求圆心)
- 中国第一代程序员简史:中国龙简晶的程序人生
- java简单增删改查_JAVA JDBC 简单的增删改查
- Python zipfile – Python ZIP
- 手机怎么在线拍照翻译英语?这个方法不能不知道
- ImportError: cannot import name ‘bbox_ious‘
- 赤壁之战的Google Map
- 周期函数的傅里叶级数展开
- html中定义高度的属性是什么,height【css 高度】属性教程
- 解决Word2010中插入图片时变成空白框问题
热门文章
- centos7盘符 linux_linux_centos7_扩展磁盘空间
- 将当前的head推送到远程_Git 通俗易懂系列 三、远程仓库和标签
- 解释型语言和编译型语言的区别_从泛型的使用情况看出你对语言的理解程度(2)...
- java重写面试题_Java面试题:重写了equals方法,为什么还要重写hashCode方法?
- android webservices 返回多行多列数据,NoahWeb实现表格多行多列
- 长春理工大学c语言实验题库,长春理工大学首届趣味心理知识竞赛初赛题库.doc...
- ssrf漏洞内网渗透_渗透小白看了也能明白的SSRF
- mysql5.7.19不好用_Mysql 5.7.19 免安装版遇到的坑(收藏)
- html5 中 video 标签,H5页面中 video 标签的坑
- spring常见术语理解