系统移植试验手册0819new.docx

上传人:b****5 文档编号:8404981 上传时间:2023-01-31 格式:DOCX 页数:55 大小:161.53KB
下载 相关 举报
系统移植试验手册0819new.docx_第1页
第1页 / 共55页
系统移植试验手册0819new.docx_第2页
第2页 / 共55页
系统移植试验手册0819new.docx_第3页
第3页 / 共55页
系统移植试验手册0819new.docx_第4页
第4页 / 共55页
系统移植试验手册0819new.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

系统移植试验手册0819new.docx

《系统移植试验手册0819new.docx》由会员分享,可在线阅读,更多相关《系统移植试验手册0819new.docx(55页珍藏版)》请在冰豆网上搜索。

系统移植试验手册0819new.docx

系统移植试验手册0819new

 

嵌入式学院实验手册

系统移植部分

嵌入式学院教材开发部编著

(内部资料,请勿外传)

 

嵌入式学院(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内核移植—Nandflash驱动的添加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、Ubuntu10.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、工具的安装

在使用之前必须安装一些软件

$sudoapt-getinstallgawkautotools-devautomaketexinfolibtoolcvspatchbisonflexlibncurses5-dev

3、必要目录的创建

/home/linux目录下,$mkdirs3c2410-2.6.35$mkdirtoolchain

$cds3c2410-2.6.35

$mkdirtoolchain

$cdtoolchain

$mkdirtoolchain-build

$mkdirtoolchain-install

把下列源码包复制到目录/home/linux/s3c2410-2.6.35/toolchain

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

4、解压源码并打补丁

$tarxvfcrosstool-ng-1.8.1.tar.bz2

$cdcrosstool-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

$makeinstall

6、 配置工具链选项

$cd../toolchain-build

$cp../crosstool-ng-1.8.1/samples/arm-unknown-linux-gnueabi/*./

$mvcrosstool.config.config

$../toolchain-install/bin/ct-ngmenuconfig

Pathsandmiscoptions--->

(${HOME}/src)Localtarballsdirectory

(${HOME}/x-tools/${CT_TARGET})Prefixdirectory

修改为

Pathsandmiscoptions--->

(/home/linux/Downloads)Localtarballsdirectory//源码包存放路径

(/home/linux/toolchain)Prefixdirectory//工具生成后的安装路径

 

 

Targetoptions--->

(armv4t)Architecturelevel

(arm9tdmi)EmitassemblyforCPU

(arm920t)TuneforCPU

 

Ccompiler--->

[]Java

 

OperatingSystem--->

[]Checkinstalledheaders

 

Pathsandmiscoptions--->

(1)Numberofparalleljobs

 

Toolchainoptions--->

(none)Tuple'svendorstring

 

Ccompiler--->

(crosstool-NG-${CT_VERSION}-farsight)gccIDstring

 

修改.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-ngbuild

这个过程比较时间比较长,1.5小时左右

9、环境变量的添加

修改文件/etc/bash.bashrc添加如下内容

exportPATH=$PATH:

/home/linux/toolchain/bin

重启配置文件

$sourcebash.bashrc

10、工具链的测试

$arm-none-linux-gnueabi-gcc–v

Usingbuilt-inspecs.

Target:

arm-none-linux-gnueabi

Configuredwith:

/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

Threadmodel:

posix

gccversion4.3.2(crosstool-NG-1.8.1-none)

这个时候我们的工具链就生成了

~/s3c2410-2.6.35/toolchain/toolchain-build/targets/arm-none-linux-gnueabi/build/build-gdb-gdbserver/gdbserver

 

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

【实验目的】

了解U-boot-2010.03的代码结构及移植方法。

【实验环境】

1、Ubuntu10.10发行版

2、u-boot-2010.03

3、FS2410平台

4、交叉编译器arm-none-linux-gnueabi-gcc

【实验步骤】

1、u-boot的烧写

使用H-jtag将u-boot烧写在2410开发板的nandflash的零地址上,过程与arm实验时相同,区别在于选择flash上。

我们选择的是K9VF1208,如图

烧写完成后打开终端,重启开发板,显示如下

2、设置基本的u-boot环境变量

主机ip设置

#setenvserverip192.168.1.2

目标板ip设置

#setenvipaddr192.168.1.3

保存环境变量

#saveenv

3、内核烧写

内核和文件系统的烧写都使用的是u-boot提供的命令如下:

#tftp30008000zImage

#nanderase40000200000

#nandwrite3000800040000200000

4、文件系统烧写

#tftp30008000rootfs.cramfs

#nanderase240000800000

#nandwrite30008000240000800000

5、启动参数设置

#setenvbootcmdnandread3000800040000200000\;go30008000

#setenvbootargsroot=/dev/mtdblock2init=/linuxrcconsole=ttySAC0,115200

#savenv

6、重新启动开发板,最终会进入如下界面,这便是一个最简linux系统

7、u-boot其他命令

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

”查看

实验三u-boot-2010.03的移植

【实验目的】

了解U-boot-2010.03的代码结构及移植方法。

【实验环境】

1、Ubuntu10.10发行版

2、u-boot-2010.03

3、FS2410平台

4、交叉编译器arm-none-linux-gnueabi-gcc

【实验步骤】

说明:

后面实验中的命令行提示符是($)则为主机命令(主机上执行),(#)则为开发板命令(开发板上执行)

1、建立自己的平台

1、下载源码

我们可以在下面这个网站上下载最新的和以前任一版本的uboot

ftp:

//ftp.denx.de/pub/u-boot/

我们这里使用的是u-boot-2010.03.tar.bz2

2、解压uboot源码

$tarjxvfu-boot-2010.03.tar.bz2

3、进入到uboot源码

$cdu-boot-2010.03

4、添加FS2410平台信息

我们关心的班级相关内容文件或目录

u-boot-2010.03/Makefile

u-boot-2010.03/cpu/arm920t/start.S

u-boot-2010.03/board/Samsung/smdk2410

u-boot-2010.03/lib_arm

u-boot-2010.03/include/configs/smdk2410.h

smdk2410是s3c2410的标准板,我们在smdk2410的基础上做FS2410的移植

$cdboard/samsung/

$cpsmdk2410fs2410–a

$cdfs2410

$mvsmdk2410.cfs2410.c

$vimMakefile

修改

COBJS:

=smdk2410.oflash.o

COBJS:

=fs2410.oflash.o

$cdinclude/configs

$cpsmdk2410.hfs2410.h

修改u-boot顶层目录下的Makefile,按照smdk2410的内容添加fs2410的内容

$vimMakefile

smdk2410_config:

unconfig

@$(MKCONFIG)$(@:

_config=)armarm920tsmdk2410samsungs3c24x0

 下添加:

fs2410_config:

unconfig

@$(MKCONFIG)$(@:

_config=)armarm920tfs2410samsungs3c24x0

 

修改编译器

ifeq($(HOSTARCH,$(ARCH))

CROSS_COMPILE?

=

endif

下添加:

ifeq(arm,$(ARCH))

CROSS_COMPILE?

=arm-none-linux-gnueabi-

endif

5、编译u-boot-2010.03

$makedistclean

$makefs2410_config

$make

这个时候我们就可以得到一个u-boot.bin也就是我们的目标文件,但是这个文件通常情况下是不能够正常工作的,我们还需要对u-boot源代码进行进一步的修改。

2、针对我们的FS2410平台进行进一步的修改

1、u-boot源码中的中断屏蔽位

在s3c2410中有11个子中断屏蔽位代码里只有10个

修改cpu/arm920t/start.S

修改

#ifdefined(CONFIG_S3C2410)

ldr        r1,=0x3ff

ldr        r0,=INTSUBMSK

str        r1,[r0]

#endif

为:

#ifdefined(CONFIG_S3C2410)

ldr        r1,=0x7ff

ldr        r0,=INTSUBMSK

str        r1,[r0]

#endif

2、修改配置文件include/configs/fs2410.h

1)命令行提示符的修改:

#defineCONFIG_SYS_PROMPT"SMDK2410#"

改成:

#defineCONFIG_SYS_PROMPT"fs2410#"

2)网络参数设置

修改

#defineCONFIG_ETHADDR        08:

00:

3e:

26:

0a:

5b

#defineCONFIG_NETMASK255.255.255.0

#defineCONFIG_IPADDR        10.0.0.110

#defineCONFIG_SERVERIP        10.0.0.1

#defineCONFIG_ETHADDR        11:

22:

33:

44:

55:

66

#defineCONFIG_NETMASK255.255.255.0

#defineCONFIG_IPADDR        192.168.1.222

#defineCONFIG_SERVERIP        192.168.1.223

3)内核加载地址的修改

修改

#defineCONFIG_SYS_LOAD_ADDR0x33000000

改成:

#defineCONFIG_SYS_LOAD_ADDR0x30008000

4)Nand功能添加

对照include/config_cmd_default.h和include/config_cmd_all.h添加我们需要的相应功能。

Nand的功能的添加

#defineCONFIG_CMD_NAND                /*NANDsupport*/

#ifdefined(CONFIG_CMD_NAND)

#defineCONFIG_SYS_MAX_NAND_DEVICE1

#defineCONFIG_SYS_NAND_BASE0x4E000000

#defineCONFIG_NAND_S3C2410

 

#defineSTACK_BASE0x33f00000

#defineSTACK_SIZE0x8000

/*NandFlash*/

#defineCONFIG_MTD_NAND_VERIFY_WRITE1

#endif

5)同时支持nand启动和nor启动

#ifdefined(CONFIG_S3C2410)

#defineCONFIG_S3C2410_NAND_BOOT1//nand启动

#defineCONFIG_S3C2410_NOR_BOOT1//nor启动

#endif

6)环境变量保存位置

添加:

#ifdefCONFIG_S3C2410_NOR_BOOT

#defineCONFIG_ENV_IS_IN_FLASH1/*common/env_flash.c*/

#defineCONFIG_ENV_ADDR(CONFIG_SYS_FLASH_BASE+0x30000)

#endif

#ifdefCONFIG_S3C2410_NAND_BOOT

#defineCONFIG_ENV_IS_IN_NAND1/*common/env_nand.c*/

#defineCONFIG_ENV_SIZE0x10000

#defineCONFIG_ENV_OFFSET0x30000

#defineNAND_CTL_BASE0x4E000000

/*Offset*/

#defineoNFCONF0x00

#defineoNFCMD0x04

#defineoNFADDR0x08

#defineoNFDATA0x0c

#defineoNFSTAT0x10

#defineoNFECC0x14

#endif

7)USB功能的添加

#defineCONFIG_CMD_FAT                /*FATsupport*/

#defineCONFIG_CMD_USB                /*USBsupport*/

#ifdefined(CONFIG_CMD_USB)

#defineCONFIG_DOS_PARTITION

#defineCONFIG_USB_OHCI

#defineCONFIG_USB_STORAGE

#defineCONFIG_SUPPORT_VFAT

#defineLITTLEENDIAN

#endif

Ping命令的添加

#defineCONFIG_CMD_PING                /*pingsupport*/

8)Norflash(sst39vf1601)及Norflash相关内容的

注释掉

#defineCONFIG_AMD_LV400        1        /*uncommentthisifyouhaveaLV400flash*/

添加

#defineCONFIG_SST_39VF16011

添加

#ifdefCONFIG_SST_39VF1601

#definePHYS_FLASH_SIZE                0x00200000/*2M*/

#defineCONFIG_SYS_MAX_FLASH_SECT        (512)        /*maxnumberofsectorsononechip*/

#endif

3、添加Nand启动功能(修改cpu/arm920t/start.S)

u-boot默认情况下是nar启动,这里我们添加nand启动的内容:

1)添加头文件

#include

#include

2)添加nand启动标志位

/*addforenv_nand.c*/

.externpbootflag

@pbootflag:

              

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1