系统移植实验手册

更新时间:2023-10-07 16:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

嵌入式学院实验手册

系统移植部分

嵌入式学院教材开发部 编著 (内部资料,请勿外传)

嵌入式学院(2011) 版权所有V3.0

1

目录

目录 .................................................................................................................................................. 2 实验一 交叉工具链的安装 ............................................................................................................. 3 实验二 u-boot的烧写及使用 ......................................................................................................... 5 实验三 u-boot-2011.09的移植 ..................................................................................................... 10 实验四 内核的配置和编译 ............................................................................................................ 23 实验五 网卡驱动的移植 ................................................................................................................ 25 实验六 LED驱动的移植 ................................................................................................................. 28 实验七 Nand flash驱动的移植 ..................................................................................................... 31 实验八 LCD驱动的移植................................................................................................................. 35 实验九 USB驱动的移植 ................................................................................................................ 36 实验十 SD卡驱动的移植 .............................................................................................................. 40 实验十一 yaffs2文件系统的移植 ................................................................................................ 42 实验十二 内核调试 ........................................................................................................................ 44 实验十三 内存调试 ........................................................................................................................ 46 实验十四 文件系统的移植 ............................................................................................................ 49 实验十五 UDEV的移植 ................................................................................................................. 55

2

华清远见--嵌入式学院 第二期课程实验手册 v2.0

实验一 交叉工具链的安装

【实验目的】

了解交叉工具链的编译过程及其使用。

说明:在实验中命令行提示符 为“$”表示在主机上运行,“#”表示在目标板上运行

【实验环境】

1、 ubuntu 10.10发行版 2、 FS_S5PC100平台 【实验步骤】

1、如果要自己编译工具链,从以下链接下载源码 crosstools-ng下载地址

http://ymorin.is-a-geek.org/download/crosstool-ng/

同时对每一个版本都有相应的补丁我们尽量把这些补丁打上,这些补丁的下载地址是

http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/

2、工具的安装

在使用之前先安装下列软件

$ sudo apt-get install gawk autotools-dev automake texinfo libtool cvs patch bison flex libncurses5-dev

为了节约时间,我们已下载了相关的安装包,大家可以在本地安装 $ sudo dpkg -i tools/*.deb

3、 解压工具链压缩包 $ cd ~

$ tar xvf arm-none-linux-gnueabi.tar.bz2 $ mv arm-2010.09 toolchain

3

华清远见--嵌入式学院 第二期课程实验手册 v2.0

4、 环境变量的添加

修改文件/etc/bash.bashrc添加如下内容 export PATH=$PATH:/home/linux/toolchain/bin 重启配置文件

$ source /etc/bash.bashrc

5、 工具链的测试

$ arm-none-linux-gnueabi-gcc –v Using built-in specs.

Target : arm-none-linux-gnueabi

Configured with: /home/linux/src/gcc-4.5.1/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=armv5te --with-float=soft --with-pkgversion=crosstool-NG-1.8.1-none --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --with-gmp=/home/linux/toolchain/toolchain-build/targets/arm-none-linux-gnueabi/build/static --with-mpfr=/home/linux/

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.5.1 (Sourcery G++ Lite) 这个时候我们的交叉工具链就安装好了

4

华清远见--嵌入式学院 第二期课程实验手册 v2.0

实验二 u-boot的烧写及使用

【实验目的】

了解u-boot-2011.09的代码结构及移植方法。

【实验环境】

1、 ubuntu 10.10发行版 2、 u-boot-2011.09 3、 FS_S5PC100平台

4、 交叉编译器 arm-none-linux-gnueabi-gcc 【实验步骤】

1、 u-boot的烧写

先认真阅读FS_S5PC100平台用户手册

关闭开发板电源,将拨码开关SW1调至0001(usb启动模式)后打开电源

加载运行USB Installer_DDR2.bin

USB Port ? Transmit ? Transmit,选中image目录下的USB Installer_DDR2.bin

5

华清远见--嵌入式学院 第二期课程实验手册 v2.0

加载运行u-boot.bin

USB Port ? Transmit ? Transmit,选中image目录下的u-boot.bin 如下图所示

串口终端下能看到如下内容(如果有倒计时数字,按任意键出现提示符)

6

华清远见--嵌入式学院 第二期课程实验手册 v2.0

针对有些学生DNW不能用,删除C盘下的dnw.ini即可。 设置并保存环境变量

# printenv // 查看环境变量的值并按如下设置 # setenv baudrate 115200

# setenv ethaddr 11:22:33:44:55:66 # setenv gatewayip 192.168.1.1

# setenv serverip 192.168.1.100 // serverip要和虚拟机的ip相同 # setenv ipaddr 192.168.1.200 // ipaddr也可以是192.168.1.x其他值 # setenv netmask 255.255.255.0

保存环境变量 # saveenv

拷贝image/u-boot.bin到虚拟机/tftpboot目录下

烧写u-boot.bin到nand flash起始地址 # tftp 20008000 u-boot.bin # nand erase 0 40000

# nand write 20008000 0 40000 关闭开发板电源,将拨码开关SW1调至0000(nand启动模式)后打开电源 2、 通过网络加载内核和文件系统 设置内核启动参数

# setenv bootargs root=nfs nfsroot=192.168.1.100:/source/rootfs ip=192.168.1.200 init=/linuxrc console=ttySAC0,115200 # saveenv

设置虚拟机

拷贝/image/zImage到虚拟机/tftpboot目录下 解压rootfs.tgz到虚拟机/source目录下

修改虚拟机nfs配置文件/etc/exports,添加如下内容并重启nfs服务 /source/rootfs *(rw,sync,no_subtree_check,no_root_squash) $sudo /etc/init.d/nfs-kernel-server restart

下载、启动内核 # tftp 20008000 zImage # go 20008000

7

华清远见--嵌入式学院 第二期课程实验手册 v2.0

3、 从nand flash加载内核和文件系统 拷贝rootfs.cramfs到虚拟机/tftpboot目录下 烧写内核镜像到nand flash # tftp 20008000 zImage # nand erase 100000 300000

# nand write 20008000 100000 300000

烧写文件系统镜像到nand flash # tftp 20008000 rootfs.cramfs # nand erase 400000 400000

# nand write 20008000 400000 400000

设置启动参数 # setenv bootdelay 3

# setenv bootcmd nand read 20008000 100000 300000\\; go 20008000 # setenv bootargs root=/dev/mtdblock2 # saveenv

4、 重新启动开发板,u-boot自动加载、执行内核

8

init=/linuxrc console=ttySAC0,115200

华清远见--嵌入式学院 第二期课程实验手册 v2.0

5、 u-boot其他命令

u-boot支持的命令我们可以通过在终端上输入”?”查看

6、 交叉编译和交叉调试

9

华清远见--嵌入式学院 第二期课程实验手册 v2.0

? 编辑程序源码myapp.c

? 交叉编译后复制到/source/rootfs (编译时添加选项-g)

? 复制gdbserver到/source/rootfs (gdbserver在工具链安装路径下查找) ? 在开发板上如下运行

# gdbserver 192.168.1.200:1234 myapp & ? 在主机上运行交叉调试器

$ arm-none-linux-gnueabi-gdb myapp ? 在交叉调试器下和开发板gdbserver建立连接

(gdb) target remote 192.168.1.200:1234

? 设置断点,输入命令c开始调试程序(注意观察串口输出)

我们可以在板子上使用mount -o nolock 192.168.1.110:/home/kmart/2410/rootfs test/把虚拟机上的nfs目录挂载到板子上的某一个目录。

10

本文来源:https://www.bwwdw.com/article/rh3d.html

Top