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