本帖是学习韦东山老师linux kernel教程,粗略总结的课堂笔记及自己感悟。如想深入了解linux kernel,请绕路。
相关帖子:
uboot启动第二阶段
uboot启动第一阶段
UBOOT初体验:编译、下载
初识uboot Makefile
环境说明
S3C2440开发板
串口线
下载线
光盘linux kernel源码、补丁文件:
002_JZ2440资料光盘_20200423(免费)资料光盘B盘uboot+kernel+filesystem的镜像源码及补丁kernellinux-2.6.22.6.tar.bz2 002_JZ2440资料光盘_20200423(免费)资料光盘B盘uboot+kernel+filesystem的镜像源码及补丁kernellinux-2.6.22.6_jz2440_v2v3.patch编译下载 1- 上传文件到虚机
将文件linux-2.6.22.6.tar.bz2、linux-2.6.22.6_jz2440_v2v3.patch上传到虚机路径:/home/lhk/2440_learn/kernel/linux-2.6.22.6
2- 解压linux-2.6.22.6.tar.bz2tar -xjvf linux-2.6.22.6.tar.bz23- 打补丁
# cd linux-2.6.22.6 # pwd /home/lhk/2440_learn/kernel/linux-2.6.22.6/linux-2.6.22.6 # patch -p1 < ../linux-2.6.22.6_jz2440_v2v3.patch4- 配置编译
config_ok为韦东山提供的内核配置文件
cp config_ok .config make menuconfig make uImage
编译的uImage路径为:
/home/lhk/2440_learn/kernel/linux-2.6.22.6/linux-2.6.22.6/arch/arm/boot/uImage5- 烧录uboot.bin文件到开发板
开发板上电,进入到uboot模式,先擦除flash中原有内核:
OpenJTAG> nand erase kernel NAND erase: device 0 offset 0x60000, size 0x200000 Erasing at 0x240000 -- 100% complete. OK
擦除完flash中内核后,重启单板会报错找不到内核:
Booting Linux ... NAND read: device 0 offset 0x60000, size 0x200000 Reading data from 0x25f800 -- 100% complete. 2097152 bytes read: OK ## Booting image at 30007fc0 ... Bad Magic Number
将编译好的uImage烧录进开发板,重启开发板可以看到正常进入到内核。
内核配置文件.config文件可以由下面几种方式生成
make menuconfig手动配置内核
厂商提供本例中config_ok复制成.config,这里的config_ok即为厂商(韦东山)提供的
使用芯片默认配置可以搜索系统默认配置
find ./ -name "*defconfig*"
对于我们的2440可以选择arch/arm/configs/s3c2410_defconfig作为默认配置编译,然后在此基础上修改配置文件生成我们需要的.config,或者直接手动修改arch/arm/configs/s3c2410_defconfig文件,复制成.config文件
#find ./ -name "*defconfig*" arch/arm/configs/s3c2410_defconfig ...



