本文跟随着韦东山老师的毕业班移植内核视频进行学习。
首先
tar -xjf linux-3.4.2.tar.bz2
cd linux-3.4.2
修改顶层Makefile:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
选择类似的开发板配置文件进行配置:
make s3c2410_defconfig
make uImage
将编译好的uImage烧到开发板中,启动发现乱码,说明串口已经有输出,根据https://blog.csdn.net/weixin_41354745/article/details/82381790文章中linux的启启动流程分析,先考虑机器id是否能够匹配,查看uboot传入的机器id:
在cmd_bootm.c中,
U_BOOT_CMD(
bootm, CONFIG_SYS_MAXARGS, 1, do_bootm,
);
查看do_bootm函数:
boot_fn = boot_os[images.os.os];
boot_os是一个指针数组,由于宏CONFIG_BOOTM_LINUX被定义,我们执行的是do_bootm_linux:
static boot_os_fn *boot_os[] = {
#ifdef CONFIG_BOOTM_