移植内核3.4.2
程序员文章站
2022-07-14 10:01:16
...
1、解压tar xjf linux-3.4.2.tar.bz2
2、进入解压后的文件目录,修改顶层Makefile
ARCH=arm
CROSS_COMPILE=arm-linux-
3、选择默认配置
内核默认已经支持很多单板,以defconfig命名结尾,搜索默认配置单板。
find -name"*defconfig"
make s3c2410_defconfig
生成配置文件.config,可以查看.config进行查看是否支持单板。
4、编译
make uImage
5、烧录查看打印信息,打印信息是乱码
在uboot启动内核时,会传给内核3个参数,r0=0,r1=机器ID,r2=tag参数地址。查看uboot传入的机器id。
do_bootm ==》boot_os[i]==》do_bootm_linux==》boot_jump_linux==》kernel_entry(0, machid, r2);
可知机器id(machid)既可以从程序默认指定,也可以从环境变量中获取。
6、设置机器id
uboot查看支持的machid(arch/arm/include/asm/mach-types.h)
方法一:将gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;改为gd->bd->bi_arch_number = MACH_TYPE_S3C2440;重新编译烧录uboot
方法二:通过环境变量设置:
set machid 16a
save
7、修改时钟初始化和串口波特率
时钟初始化:板子使用12M晶振,所以需要修改
修改串口波特率:修改环境变量set bootargs console=ttySAC0,115200 .....
8、设置分区(arm/arm/mach-s3c24xx/common-smdk.c),可以根据内核打印信息找到分区在哪。
9、编译烧录,成功打印信息。