嵌入式学院实验手册
系统移植部分
嵌入式学院教材开发部 编著
(内部资料,请勿外传)
嵌入式学院(2010) 版权所有 V3.0
目录
目录 .....................................................................................................................................................2
实验一 交叉工具链的移植 ............................................................................................................... 3
实验二 u-boot 的烧写及使用 ........................................................................................................... 8
实验三 u-boot-2010.03 的移植.......................................................................................................12
实验四 linux-2.6.22.6 内核的编译和配置......................................................................................31
实验五 linux-2.6.35 内核移植—网卡驱动的添加 ......................................................................... 34
实验六 linux-2.6.35 内核移植—Nand flash 驱动的添加...............................................................36
实验七 linux-2.6.35 内核移植—LCD 驱动的添加..........................................................................38
实验八 linux-2.6.35 内核移植—USB 驱动的添加..........................................................................40
实验九 linux-2.6.35 内核移植—SD 卡驱动的添加 ........................................................................42
实验十 linux-2.6.35 内核移植—yaffs2 文件系统的支持.............................................................. 45
实验十一 内核调试......................................................................................................................... 47
实验十二 内存调试......................................................................................................................... 50
实验十三 文件系统的移植............................................................................................................. 53
实验十四 UDEV 的移植................................................................................................................... 58
实验一 交叉工具链的移植
【实验目的】
了解交叉工具链的编译过程及其使用。
说明:在本系统移植课程实验中命令行提示符 “$”表示是在主机上执行,“#”表示在目
标板执行
【实验环境】
1、 Ubuntu 10.10 发行版
2、 FS2410 平台
【实验步骤】
1、源码下载
Crosstools-ng 下载地址
http://ymorin.is-a-geek.org/download/crosstool-ng/
同时对每一个版本都有相应的补丁我们尽量把这些补丁打上,这些补丁的下载地址是
http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/
我这里选用的是 crosstool-ng-1.8.1.tar.bz2
并下载补丁
000-scripts_log_do_not_interpret_log_string_as_printf_format.patch
001-binutils_binutils_remove_faulty_patch.patch
002-kconfig_resync_curses_check_with_Linux_kernel.patch
2、工具的安装
在使用之前必须安装一些软件
$ sudo apt-get install gawk autotools-dev automake texinfo libtool cvs patch bison flex
libncurses5-dev
3、 必要目录的创建
$ mkdir toolchain_build
$ mkdir toolchain_install
4、 解压源码并打补丁
$ tar xvf crosstool-ng-1.8.1.tar.bz2
$ cd crosstool-ng-1.8.1
$ patch –p1 < 000-scripts_log_do_not_interpret_log_string_as_printf_format.patch
$ patch –p1 < 001-binutils_binutils_remove_faulty_patch.patch
$ patch –p1< 002-kconfig_resync_curses_check_with_Linux_kernel.patch
5、 配置并编译 crosstool-ng-1.8.1
$ ./configure --prefix=/home/linux/s3c2410-2.6.35/toolchain/toolchain-install
$ make
$ make install
6、 配置工具链选项
$ cd ../toolchain-build
$ cp ../crosstool-ng-1.8.1/samples/arm-unknown-linux-gnueabi/* ./
$ mv crosstool.config .config
$ ../toolchain-install/bin/ct-ng menuconfig
Paths and misc options --->
(${HOME}/src) Local tarballs directory
(${HOME}/x-tools/${CT_TARGET}) Prefix directory
修改为
Paths and misc options --->
(/home/linux/Downloads) Local tarballs directory //源码包存放路径
(/home/linux/toolchain) Prefix directory
//工具生成后的安装路径
Target options --->
(armv4t) Architecture level
(arm9tdmi) Emit assembly for CPU
(arm920t) Tune for CPU
C compiler --->
[ ] Java
Operating System --->
[ ] Check installed headers
Paths and misc options --->
(1) Number of parallel jobs
Toolchain options --->
(none) Tuple's vendor string
C compiler --->
(crosstool-NG-${CT_VERSION}-farsight) gcc ID string
修改.config 文件,将文件中的 2.6.33.2 全部改为 2.6.35
7、 目标代码准备
拷贝下面文件到/home/linux/Downloads 目录下:
binutils-2.19.1.tar.bz2
gcc-4.3.2.tar.bz2
glibc-ports-2.9.tar.bz2
linux-2.6.35.tar.bz2
ncurses-5.7.tar.gz
dmalloc-5.5.2.tgz
gdb-6.8.tar.bz2
gmp-4.3.2.tar.bz2
ltrace_0.5.3.orig.tar.gz
strace-4.5.19.tar.bz2
duma_2_5_15.tar.gz
glibc-2.9.tar.bz2
libelf-0.8.13.tar.gz
mpfr-2.4.2.tar.bz2
Sstrip.c
8、 工具链编译
$ ../toolchain-install/bin/ct-ng build
这个过程比较时间比较长
9、 环境变量的添加
修改文件/etc/bash.bashrc 添加如下内容
export PATH=$PATH:/home/linux/toolchain/bin
重启配置文件
$ source bash.bashrc
10、 工具链的测试
$ arm-none-linux-gnueabi-gcc –v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/src/gcc-
4.3.2/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --
target=arm-none-linux-gnueabi --prefix=/home/linux/toolchain --with-
sysroot=/home/linux/toolchain/arm-none-linux-gnueabi//sys-root --enable-
languages=c,c++,fortran --disable-multilib --with-arch=armv4t --with-cpu=arm9tdmi --with-
tune=arm920t --with-float=soft --with-pkgversion=crosstool-NG-1.8.1-none --disable-sjlj-
exceptions --enable-__cxa_atexit --disable-libmudflap --with-gmp=/home/linux/s3c2410-
2.6.35/toolchain/toolchain-build/targets/arm-none-linux-gnueabi/build/static --with-
mpfr=/home/linux/s3c2410-2.6.35/toolchain/toolchain-build/targets/arm-none-linux-
gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-local-
prefix=/home/linux/toolchain/arm-none-linux-gnueabi//sys-root --disable-nls --enable-
symvers=gnu --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.3.2 (crosstool-NG-1.8.1-none)
这个时候我们的工具链就生成了
实验二 u-boot 的烧写及使用
【实验目的】
了解 U-boot-2010.03 的代码结构及移植方法。
【实验环境】
1、 Ubuntu 10.10 发行版
2、 u-boot-2010.03
3、 FS2410 平台
4、 交叉编译器 arm-none-linux-gnueabi-gcc
【实验步骤】
1、 u-boot 的烧写
使用 H-jtag 将 u-boot 烧写在 2410 开发板的 nand flash 的零地址上,过程与 arm 实验时相
同,区别在于选择 flash 上。我们选择的是 K9VF1208,如图