#endif
2. 加入cs8900A 的物理地址到虚拟地址的映射
[arm@localhost cs8900a]$vi
$KERNEL/linux-2.6.14.1/arch/arm/mach-s3c2410/mach-smdk2410.c
/* 加入如下内容 */
static struct map_desc smdk2410_iodesc[] __initdata = {
{vSMDK2410_ETH_IO, 0x19000000, SZ_1M, MT_DEVICE} /* Add this line */ };
2 创建 uImage
2.1 相关技术背景介绍
前面已经介绍了内核编译后,生成zImage 的内核镜像文件。该镜像文件可以通过U-BOOT 提供的go 命令,
跳转执行,引导内核。同时在u-boot-1.1.4 的tools 目录下,提供了生成uImage 的工具mkimage 命令,在生成
u-boot 的二进制镜像文件的同时,mkimage 命令会同时编译生成,无需另外编译。通过mkimage 命令,在
zImage 中加入头文件 (镜像头长0x40,真正的内核入口向后偏移了0x40 大小),生成uImage 镜像文件,该文
件就是执 bootm 所需的内核镜像文件。
2.2 在内核中创建 uImage 的方法
2.2.1 获取 mkimage工具
2.6 内核树的Makefile 提供了创建uImage 的方法,但需要我们提供相应的mkimage 命令。
所以首先拷贝u-boot 中tools 目录下编译后生成的mkimage 到/usr/bin/下,然后便可以在内核根目录下通过
make uImage
来创建uImage 文件。该文件生成在arch/arm/boot/下。
2.2.2 修改内核的 Makefile文件
[arm@localhost linux-2.6.14.1]$ vi arch/arm/boot/Makefile
#MKIMAGE 变量记录mkimage 命令的路径mkuboot.sh 脚本文件可以scripts 目录中找到
MKIMAGE := $(srctree)/scripts/mkuboot.sh
#zreladdr-y 与params_phys-y 可以在
arch/arm/mach-s3c2410/Makefile.boot 当中找到
ZRELADDR := $(zreladdr-y)
PARAMS_PHYS := $(params_phys-y)
INITRD_PHYS := $(initrd_phys-y)
----------------------- 页面 62-----------------------
#生成uImage 的mkImage 命令行,其中需要关注的就是-a 与 -e 参数。
#参数-a:指明uImage 加载的SDRAM 地址,内核默认指定加载地址为0x30008000 。
# u-boot 引导时,bootm 命令跳到与上相同位置执行,检查完镜像头后,它会跳到内核真正的入口点开
始执 。
#参数-e:指明uImage 中刨去镜像头后真正的内核入口地址。
# 镜像头为0x40 长,故此处指定为0x30008040 。
# u-boot 引导时,go 命令可以直接指定此位置。go 命令不检查镜像头。
quiet_cmd_uimage = UIMAGE $@
cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \\
-C none -a $(ZRELADDR) -e 0x30008040 \\
-n 'Linux-$(KERNELRELEASE)' -d $< $@
3追加实验记录
以同样方式移植其他2.6 主线内核,出现问题如下:
3.1移植 linux-2.6.15.7
编译通过,启动时显示:
VFS: Cannot open root device \
Please append a correct \
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
3.2 移植 linux-2.6.16.21
编译通过,启动时显示:
VFS: Cannot open root device \
Please append a correct \
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
3.3 移植 linux-2.6.17
编译失败
4 参考资料
1. Porting kernel 2.6.11.7 to S3C2410
http://superlp.blogchina.com/1391393.html
非常感谢此篇文档的作者
2. devfs 介绍
http://www-128.ibm.com/developerworks/cn/linux/filesystem/l-fs4/index.html#resources
3. <
中文名:<<构建嵌入式Linux 系统>>
作者介绍:本文由尚观科技老师和同学生(刘勇,孙贺,聂强,聂大鹏 ,牛须乐,孙磊)共同创作
相关内容: ARM9 2410移植之在Linux下,用OpenJTAG+OpenOCD烧写NAND Flash ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的 ARM9 2410移植之Nand flash 驱动的编写与移植 ARM9 2410移植之应用程序的移植 ARM9 2410移植之u-boot 的移植 ARM9 2410移植之GNU 交叉工具链 ARM9 2410移植之系统启动bootloader 的编写(ADS) ARM9 2410移植之硬件环境