kernel(一)初步配置

1、修改顶层Makefile


然后使用 s5pv210 的默认配置文件来生成默认的.config 配置文件

生成了配置文件.config, 现在执行 make menuconfig,先进行初步配置
root@zjh:/home/work/linux-3.10.46# make menuconfig
System Type --->
        (
0) S3C UART to use for low-level messages
注意:这里要根据自己的开发板来选择调试串口, TQ210 使用的是 UART0。 如果配置错误, u-boot
启动内核时会卡在 Starting kernel ...

S5PC110 Machines --->
        [ ] Aquila
        [ ] GONI
        [ ] SMDKC110
去掉 s5pc110 相关的开发板配置。
S5PV210 Machines --->
        [*] SMDKV210
        [ ] Torbreck
只保留 SMDKV210 开发板

保存退出。 先试着编译一下,执行 make uImage
root@zjh:/home/work/linux-3.10.46# make uImage
编译完成,成功生成 uImage

uImage 拷贝到 tftp 服务器目录(根据自己的实际环境操作)
root@zjh:/home/work/linux-3.10.46# cp arch/arm/boot/uImage /mnt/hgfs/E/tftpd32.400/
为了方便,不用每次编译完都有手动拷贝,可以在 arch/arm/boot/Makefile 中加一句

然后启动开发板,使用 tftpboot 命令下载 uImage 到内存的任意地址(尽量靠前面点),我直接下载到 0x20000000 地址

然后使用 bootm 命令启动内核

出错:不支持的机器 ID0x722), 可支持的机器 ID 0x998。复位开发板,执行 bdinfo 查看 u-boot 的机器 ID

arch_number = 0x00000722
现在有两种办法: 1、修改 u-boot 代码,重新编译; 2、设置环境变量 machid
1、修改 u-boot 代码
        在
smdkv210.c 中的 board_init 函数中设置了机器码

默认设置为 MACH_TYPE_SMDKC100,其定义在 arch/arm/include/asm/mach-types.h,在这个文件
中已经有
MACH_TYPE_SMDKV210,其值和内核的 SMDKV210 开发板的机器码 24560x998)相
同,因此只需要将
board_init 中的 MACH_TYPE_SMDKC100 换成 MACH_TYPE_SMDKV210 就行了。

然后重新编译 u-boot,烧写到开发板

现在的 arch_number 已经为 0x998 了。
再次下载
uImage 0x20000000,然后使用 bootm 启动内核

        成功启动内核了。
2、设置环境变量
        也可以不用修改
u-boot 代码,设置环境变量 machid 也可以解决

        然后重新下载 uImage 0x20000000,使用 bootm 启动内核

打印出了“Using machid 0x998 from environment
设置环境变量
machid 后, u-boot 不再使用保存在全局变量 gd 中的机器 ID 了,而是直接使用环
境变量
machid 的值。
为了方便,不用每次都手动输入下载和启动命令,将这
2 个操作写入 u-boot 菜单
set bootmenu_0 start kernel=tftp 20000000 uImage.bin\;bootm 20000000

猜你喜欢

转载自blog.csdn.net/jerrygou/article/details/80684904