http://blog.csdn.net/embededswordman/article/details/6704197

uImage的制作是使用的u-boot工具mkimage,build完u-boot后也会将mkimage build出來到/tools目录下,可以直接拿來用,它的作用就是在zImage的前面加上64个字节的头,让u-boot能够识别要加载内核的类型、加载地址等。

基本格式:mkimage -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image

-A 指定CPU的体系结构:(u-boot支持多种的架构,这里应该是arm)
取值        表示的体系结构
alpha       Alpha 
arm          A RM 
x86          Intel x86
ia64         IA64
mips         MIPS
mips64     MIPS 64 Bit
ppc          PowerPC
s390        IBM S390
sh            SuperH
sparc       SPARC
sparc64   SPARC 64 Bit
m68k       MC68000

-O 指定操作系统类型,可以取以下值:(u-boot支持多种的OS,这里应该是linux)
openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos

-T 指定映象类型,可以取以下值:(u-boot可以加载不同的映像,这里应该是kernel)
standalone、kernel、ramdisk、multi、firmware、script、filesystem

-C 指定映象压缩方式,可以取以下值:(除了zImage本身是压缩格式外,u-boot还可以对其再压缩,这里应该是none)
none 不压缩
gzip 用gzip的压缩方式
bzip2 用bzip2的压缩方式

-a 指定映象在内存中的加载地址,可以于实际加载(如tftp加载)时的地址不相同,也可以相同,详见后面的解释。

-e 指定映像运行的入口地址,可以等于加载地址,也可以是加载地址偏移64字节(+0x40)后的地址,详见后面的解释。

-n 指定映像名称

-d 指定【源文件】和生成的【目标文件名】

调整的最多的参数是-a, -e,这两个参数需要与实际加载到内存时的动作保持一致。

1、如果加载时的地址与-a参数指定的不相同,则-e必须等于-a。u-boot会把kernel image去掉不包括64字节的信息头后搬移到-e处,直接启动。要注意两个image的存储空间不要重叠,两者之间至少要留image size的空间。

编译环境:

mkimage -A arm -O linux -T kernel -C none -a 0x70008000 -e 0x70008000 -n 'Linux' -d zImage uImage
        cp uImage /tftpboot/

目标板环境:

tftp   0x72200000  uImage;   bootm   0x72200000;

2、如果加载时的地址与-a参数指定相同,则-e必须是-a + 0x40的地址。这时u-boot不需要再执行搬移的动作,根据-e的地址直接启动。

编译环境:

mkimage -A arm -O linux -T kernel -C none -a 0x0x70008000 -e 0x70008040 -n 'Linux‘ -d zImage uImage

cp uImage /tftpboot/

目标板环境:

tftp   0x70008000  uImage;    bootm  0x70008000;

##########################华丽分割线##########################

mkimage工具在具体的使用中,可以不进行拷贝,在解压u-boot后,

将mkimage的目录 /tools添加到,全局环境变量中。

$gedit /etc/profile在最后一行添加  export PATH=:$PATH :/ubootj解压目录/tools

$source  /etc/profile

环境变量就可以实现

最近直接在执行:

cd /arch/arm/boot
mkimage -n 'linux-2.6.34' -A arm -O linux -T kernel -C none -a 0x20008000 -e 0x20008040 -d zImage linux-2.6.34_uImage

下载到SDRAM 中就可以知道本次编译的内核是否能正确启动,用bootm 20008000 启动即可。

U-boot mkimage指定Linux内核地址时的两种方式的更多相关文章

  1. linux内核挂载文件系统的两种方式

    1.nfs方式(挂载的为文件夹) bootargs=root=/dev/nfs nfsroot=192.168.1.105:/mnt/rootfs/rootfs ip=192.168.1.88:192 ...

  2. Linux进程分配内存的两种方式--brk() 和mmap()

    如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...

  3. linux 设置开机启动项两种方式

    原文链接:http://blog.csdn.net/karchar/article/details/52489572 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务. 在解问题之前 ...

  4. 云服务器 ECS Linux 服务器修改时区的两种方式

    在云服务器 ECS Linux 系统中,以 Centos6.5 为例,可以通过如下两种方式,修改系统时区: 可以使用命令 tzselect,修改时区.操作示例: [root@localhost ~]# ...

  5. linux 下部署nodejs(两种方式)

    本次博客的编写时用的系统环境,刚装好的Centos 6.4  64位虚拟机. 另外关于linux 其他系统的安装 可以参考https://github.com/joyent/node/wiki/Ins ...

  6. Linux下 磁盘扩容的两种方式

    Hadoop扩容 概述 Hadoop存储容量或计算能力不能满足日益增长的需求时,就需要扩容. 扩容有两个方案: 1) 增加磁盘 2) 增加节点 方案一:扩大虚拟磁盘 扩大容量 将虚拟的Linux关闭, ...

  7. Linux部署springboot项目,两种方式

    部署jar包(官方推荐) 在linux服务器上运行Jar文件时通常的方法是: $ java -jar test.jar 这种方式特点是ssh窗口关闭时,程序中止运行.或者是运行时没法切出去执行其他任务 ...

  8. Linux下安装Oracle的两种方式------有图形界面安装和静默安装

    本文参考文章 http://blog.csdn.net/zonej/article/details/50680857 http://blog.csdn.net/tongzidane/article/d ...

  9. linux下登陆MongoDB的两种方式

    第一种:不带auth认证的 第二种:需要带auth认证的(即需要用户名和密码的) 当指定用户名和密码在查看数据,发现就可以看得到了 查看文章:开启MongoDB客户端访问控制

随机推荐

  1. mysql常用数据类型的选择

    时间戳可以用int来存储 ip地址的存储数据类型,可以使用INET_ATON 和INET_NTOA来配合bigint类型来代替varchar

  2. EXTJS 4.2 资料 控件textfield中fieldLabel去掉冒号,控件label的长度

    代码: labelSeparator: '', // 去掉laebl中的冒号 labelWidth: 10,//控件label的长度

  3. windows 2008 R2 Activition

    无需破解:Windows Server 2008 R2 至少免费使用 900天 1.首先安装后,有一个180天的试用期. 2.在180天试用期即将结束时,使用下面的评估序列号激活Svr 2008 R2 ...

  4. 常见架构TLB miss处理方法(转)

    转自网站:http://blog.sina.com.cn/s/blog_633f462901018reb.html 0.       综述 总的来说TLB miss处理分为硬件处理和软件处理两种,硬件 ...

  5. Microsoft.Web.Administration in IIS

    http://blogs.msdn.com/b/carlosag/archive/2006/04/17/microsoftwebadministration.aspx 最好使用在IIS8中,因为为每一 ...

  6. 基于注解风格的Spring-MVC的拦截器

    基于注解风格的Spring-MVC的拦截器 Spring-MVC如何使用拦截器,官方文档只给出了非注解风格的例子.那么基于注解风格如何使用拦截器呢? 基于注解基本上有2个可使用的定义类,分别是Defa ...

  7. js和HTML结合(补充知识:如何防止文件缓存的js代码)

    来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(二) 使用html标签<script>可以把js嵌入到html页面中,让脚本 ...

  8. MVC EF异常-“序列化类型为 XX 的对象时检测到循环引用”

    原因:在EF实体中,两个互为主外键关系的实体类的导航属性相互引用. 解决方法一:删除一个不需要的类的导航属性 方法二:使用DTO模型 方法三:直接返回需要的属性(不能包括相互引用的属性)

  9. js获取fck值的代码方法

    引入js文件 <script type="text/javascript" src="${basePath}/FCKeditor/fckeditor.js" ...

  10. HDU1429+bfs+状态压缩

    bfs+状态压缩思路:用2进制表示每个钥匙是否已经被找到.. /* bfs+状态压缩 思路:用2进制表示每个钥匙是否已经被找到. */ #include<algorithm> #inclu ...