- 前面的4篇uboot博文基本概括了uboot的整体flow,现在使能支持启动linux,至此之前请先阅读《嵌入式学习笔记200-Linux kernel初体验》和《嵌入式学习笔记201-Linux kernel动起来》。准备kernel的镜像文件才可以立马检测uboot是否能够启动kernel。在u-boot-1.1.6\include\configs\tq2440.h 最后添加如下几行code:
/****************** boot kernel setup ******************************/
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_CMDLINE_TAG 1
#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"
#define CONFIG_BOOTCOMMAND "nand read 0x32000000 0x200000 0x300000; bootm 0x32000000"
在do_bootm_linux()会使用到,关于CONFIG_BOOTCOMMAND 的解释在《嵌入式学习笔记102-uboot_1.1.6移植(2)》有提及,现在解释一下CONFIG_BOOTARGS ,这个命令参数很多,不做过多解释,读者可以自行查看其他资料,只讲解该命令的参数,其中noinitrd 代表不用ramdisk文件系统,linux启动后会去挂载文件系统 由root=/dev/mtdblock2指定,所以这就要求到时porting kernel时注意分区与该参数是否匹配。init表示linux除main系统初始化后调用文件系统存储的第一个脚本。所以我们的文件系统根目录下要有linuxrc ,否则会挂了,不过也不是一定要先启动这个脚本,也可以是/etc下其他的。关于console有很多种设置,具体本人也不是很清楚,就使用常用设置 ttySAC0
时间: 2024-10-22 01:05:04