S5PV210(TQ210)学习笔记——内核移植与文件系统构建
内核移植其实很简单,因为内核是linus率领的linux内核开发团队开发并维护的,我们只需要跟我们的平台交叉编译一下即可使用,但是,内核移植也不简单,因为内核移植起见出现任何问题都可能会被卡住,因为内核代码非常庞大,我们无法通读内核代码,下面是我移植期间遇到的各种悲催的问题和解决方案,首先是必备的开发环境:
a) Linux内核代码,版本3.8.3
b) S5PV210开发板(我的是TQ210)
c) HOST环境是WIN7(64位)下安装的Ubuntu虚拟机(12.10)
一 内核编译
从Linux内核网站(kernel.org)下载内核代码、解压并进入内核目录
(1)修改Makefile,将195行和196行改为:
- ARCH=arm
- CROSS_COMPILE?=arm-linux-
- makes5pv210_defconfig
- makezImage
- makeuImage
a. 编译的内核类型错误,比如您的uboot使用的是uImage,而您编译的是zImage。
b. 移植的uboot存在问题,没能正确的拷贝内核到正确的内存地址并启动。
c. 内核存在某些配置,我们没有配置。
经过查看内核配置项知道,内核默认采用的UART1打印调试信息,因此,执行:
- makemenuconfig
编译完内核之后再次下载并尝试运行,这时,可以看到内核打印的信息了,如果您不幸只看到“Uncompressing Linux... done, booting the kernel.”就没有任何输出了,那么请检查uboot传入的机器码跟内核机器码是否匹配,如果不匹配请修正,然后重新编译运行内核或者uboot,如果修正之后仍然看不到其他输出,那么请检查uboot的bootargs参数,bootargs中必须配置console=ttySAC0,否则也看不到打印信息。
如果没有出现上面的错误,那么您的内核已经可以打印出很多信息,但是由于内核默认没有提供对Nand或网卡的支持,无法挂接文件系统,所以仍然无法正常运行。为了能使内核进入控制台,为后面的驱动开发提供环境,我们先制作文件系统,然后来移植网卡驱动,让内核NFS方式挂接文件系统,然后我们就可以开发其他驱动了,如Nand、LCD、声卡等等。
二 构建文件系统
其实构建文件系统还是比较简单的,注意几个地方,然后按部就班的来就可以了。
(1)创建根文件系统目录结构,可以使用如下脚本:
- #!/bin/sh
- echo"------Createrootfsdirectonsstart...--------"
- mkdirrootfs
- cdrootfs
- echo"--------Createroot,dev....----------"
- mkdirrootdevetcboottmpvarsysproclibmnthomeusr
- mkdiretc/init.detc/rc.detc/sysconfig
- mkdirusr/sbinusr/binusr/libusr/modules
- echo"makenodeindev/consoledev/null"
- sudomknod-m600dev/consolec51
- sudomknod-m600dev/nullc13
- mkdirmnt/etcmnt/jffs2mnt/yaffsmnt/datamnt/temp
- mkdirvar/libvar/lockvar/runvar/tmp
- chmod1777tmp
- chmod1777var/tmp
- echo"-------makedirectiondone---------"
在这里我将脚本命名为mkrootfs.sh,接下来给脚本加可执行权限(即chmod a+x mkrootfs)并运行脚本。我的脚本是在/nfsroot目录下运行的,所以我的根文件系统的根目录为/nfsroot/rootfs,后面均以该目录为例阐述。
(2)编译Busybox
到Busybox下载最新版的Busybox源码,我是用的是1.21.0版本,下载完后解压并进入busybox目录,首先是配置busybox
- makemenuconfig
配置菜单跟配置内核时的差不多,依次进入Busybox Settings =>Build Options =>Cross Compiler prefix (NEW),设置为编译器的前缀,我的是arm-linux-。网上有些朋友还推荐选择Busybox Settings => Build Options =>Build BusyBox as a static binary (no shared libs),但是如果我们正确拷贝编译器了运行库的话,不设置也可以。现在可以编译Busybox了,执行
- make
编译过程很顺利,我这里没有遇到任何错误,接下来将编译好的Busybox安装到/nfsroot/rootfs就可以了,执行
S5PV210内核移植文件系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)