Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1908532
  • 博文数量: 376
  • 博客积分: 2147
  • 博客等级: 大尉
  • 技术积分: 3642
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-06 10:47
文章分类

全部博文(376)

文章存档

2019年(3)

2017年(28)

2016年(15)

2015年(17)

2014年(182)

2013年(16)

2012年(115)

我的朋友

分类: LINUX

2012-09-24 16:39:28

PowerPC架构 
Linux和ARM,X86等平台有些差异,PowerPC平台HW参数不是通过命令行方式传递到Linux,而是通过传递Device tree文件的方式传递参数,所以PowerPC平台Linux需要编译dtb和uImage才能正常加载,另外PowerPC架构linux还提供simpleImage的方式加载,也就是将dtb与uImage或将dtb,uImage与ramdisk.image.gz多个文件整合生产单个simpleImage文件,这种simpleImage文件加载方式适合于没有bootloader支持的情况下,通过JTAG将simpleImage直接加载到target board内存中运行,对于调试非常方便,下面说说这几种Image文件的编译:

1,dtb:

dtb文件由dts生成,对于任何一个PowerPC处理器板,都要有对应的dts文件,dts文件主要是对目标板的HW参数进行描述,比如我的目标板是 evm440(Powerpc440),我编写了一个evm440.dts文件放到内核arch/powerpc/boot/dts/目录下.
编译evm440.dtb文件命令如下:
$ make ARCH=powerpc CROSS_COMPILE=/toolchain/freescale-2010.09/bin/powerpc-linux-gnu- evm440.dtb
编译成功后会在arch/powerpc/boot/下生成evm440.dtb文件,这就是我们需要的dtb文件.

2. uImage:
这个Image应该是地球都知道的,这里就不多说了,编译命令如下:
$ make ARCH=powerpc CROSS_COMPILE=/toolchain/freescale-2010.09/bin/powerpc-linux-gnu- uImage

编译成功后会在arch/powerpc/boot/下生成uImage文件,这就是我们需要的内核Image文件.

3. simpleImage.xxxx和simpleImage.initrd.xxxx:
这里的xxxx是特定目标板名字,我的目标板是evm440,也就是simpleImage.evm440和simpleImage.initrd.evm440。
simpleImage.evm440是包括evm440.dtb与uImage以及simpleboot的单一Image,可以不需要bootloader支持加载.
simpleImage.initrd.evm440是包括evm440.dtb,ramdisk.image.gz与uImage以及simpleboot的单一Image,也是可以不需要bootloader支持加载.
编译命令如下:

$ make ARCH=powerpc CROSS_COMPILE=/usr/toolchain/freescale-2010.09/bin/powerpc-linux-gnu- simpleImage.evm440

$ make ARCH=powerpc CROSS_COMPILE=/usr/toolchain/freescale-2010.09/bin/powerpc-linux-gnu- simpleImage.initrd.evm440

编译成功后会在arch/powerpc/boot/下生成:
simpleImage.evm440
simpleImage.evm440.elf
simpleImage.initrd.evm440
simpleImage.initrd.evm440.elf
阅读(3639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~