S3C2416通过U-Boot启动后,U-Boot会自动执行bootcmd来加载内核。《君益兴开发板手册V2》第3.3.4节,把kernel烧写到nandflash的0x40000地址后,set bootcmd 'nand read.i c0008000 0x40000 0x400000;bootm c0008000',即U-Boot把nandflash的0x40000到0x400000地址的数据copy到SDRAM的c0008000,并执行从c0008000执行,这样就完成了内核的加载。当nandflash中没有内核时,同样可以U-Boot下载内核至SDRAM,并加载内核。 直接编译生成的内核镜像
zImage是无法直接被U-Boot引导的,需要给zImage添加一个64字节的Header,生成uImage,以供U-Boot引导。U-boot下用tftp下载kernel并bootm的步骤如下:
1,在Fedora系统上,在U-Boot代码目录的tools里找到mkimage文件,并copy到PATH包含的路径里,例如/usr/local/bin。即先cd到u-boot-1.3.4.jyx所在目录,然后
- cp u-boot-1.3.4.jyx/tools/mkimage /usr/local/bin/
2,在Fedora系统上,cd到zImage所在目录,利用mkimage工具由zImage生成uImage。
- mkimage -A arm -O linux -T kernel -C none -a 30008000 -e 30008040 -n linux-2.6.13 -d zImage uImage
3,tftp下载&加载kernel。首先要在Fedora系统上搭建tftp服务器,详细步骤参考《君益兴开发板手册V2》第3.3.1.2节。然后把生成的uImage cp到tftp目录。利用U-Boot启动开发板,并在U-Boot的shell执行
- tftp 30008000 uImage
- bootm 30008000
这时kernel就被加载了。
本帖最后由 sdwuyawen 于 2014-7-20 14:04 编辑