编译完内核之后,会产生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