您好,欢迎访问三七文档
实验一交叉工具链的安装【实验目的】了解交叉工具链的编译过程及其使用。说明:在实验中命令行提示符为“$”表示在主机上运行,“#”表示在目标板上运行【实验环境】1、ubuntu12.04发行版2、FS210平台【实验步骤】1、如果要自己编译工具链,从以下链接下载源码crosstools-ng下载地址同时对每一个版本都有相应的补丁我们尽量把这些补丁打上,这些补丁的下载地址是、工具的安装在使用之前先安装下列软件$sudoapt-getinstallgawkautotools-devautomaketexinfolibtoolcvspatchbisonflexlibncurses5-dev为了节约时间,我们已下载了相关的安装包,大家可以在本地安装$sudodpkg-itools/*.deb3、解压工具链压缩包$cd~$tarxvfarm-cortex_a8-linux-gnueabi.tar.bz2$mvarm-cortex_a8toolchain4、环境变量的添加修改文件/etc/bash.bashrc添加如下内容exportPATH=$PATH:/home/linux/toolchain/bin重启配置文件$source/etc/bash.bashrc5、工具链的测试$arm-cortex_a8-linux-gnueabi-gcc–vUsingbuilt-inspecs.Target:arm-cortex_a8-linux-gnueabiConfiguredwith:/home/linux/src/gcc-4.4.6/configure--build=i686-build_pc-linux-gnu--host=i686-build_pc-linux-gnu--target=arm-cortex_a8-linux-gnueabi--prefix=/home/linux/toolchain--with-sysroot=/home/linux/toolchain/arm-cortex_a8-linux-gnueabi//sys-root--enable-languages=c,c++,fortran--disable-multilib--with-arch=armv7-a--with-float=soft--with-pkgversion=crosstool-NG-1.12.4-none--disable-sjlj-exceptions--enable-__cxa_atexit--disable-libmudflap--with-gmp=/home/linux/toolchain/toolchain-build/targets/arm-cortex_a8-linux-gnueabi/build/static--with-mpfr=/home/linux/toolchain/toolchain-build/targets/arm-cortex_a8-linux-gnueabi/build/static--enable-threads=posix--enable-target-optspace--with-local-prefix=/home/linux/toolchain/arm-cortex_a8-linux-gnueabi//sys-root--disable-nls--enable-symvers=gnu--enable-c99--enable-long-longThreadmodel:posixgccversion4.4.6(crosstool-NG1.12.4)这样我们的交叉工具链就安装好了实验二u-boot的烧写及使用【实验目的】了解u-boot的常用命令和linux内核的引导。【实验环境】1、ubuntu12.04发行版2、u-boot-2010.033、FS210平台4、交叉编译器arm-cortex_a8-linux-gnueabi-gcc【实验步骤】1、SD启动盘制作a)将第一天/SD卡启动制作工具/sd_fusing拷贝到Linux下b)将SD卡插入电脑并识别c)进入sd_fusing执行如下操作$make$chmod777sd_fusing.sh$sudo./sd_fusing.sh/dev/sdb2、u-boot的烧写a)运行串口通信程序(putty)b)关闭开发板电源,将拨码开关SW2调至0110(SD启动模式)后打开电源c)将刚才做好的SD启动盘插入SD卡插槽d)重新打开开发板能够看到如下界面e)设置板子环境变量#setenvserverip192.168.1.200//和ubuntuip一直#setenvipaddr192.168.1.100//板子的ip不要和windows和Ubuntu冲突f)将第一天/镜像文件/u-boot.bin拷贝到ubuntu的/tftpboot目录下g)烧写#tftp20008000u-boot.bin#nanderase0100000#nandwrite200080000100000h)关闭开发板电源,将拨码开关SW2调至1000(NAND启动模式)后打开电源可以看到如下界面表示烧写成功3、通过网络加载内核和文件系统a)将第一天/镜像文件/zImage拷贝到ubuntu的/tftpboot下b)将第一天/镜像文件/rootfs.tar.bz2拷贝到ubuntu的/source下并解压c)修改虚拟机nfs配置文件/etc/exports,添加如下内容并重启nfs服务source/rootfs*(rw,sync,no_subtree_check,no_root_squash)d)重新驱动nfs服务$sudo/etc/init.d/nfs-kernel-serverrestarte)设置启动参数#setenvbootcmdtftp20008000zImage\;go20008000#setenvbootargsroot=nfsnfsroot=192.168.1.100:/source/rootfsip=192.168.1.200init=/linuxrcconsole=ttySAC0,115200#saveenvf)启动开发板看到如下现象表示成功通过网络挂载:4、从nandflash加载内核和文件系统a)拷贝第一天/镜像文件/rootfs.cramfs到虚拟机/tftpboot目录下b)烧写内核镜像到nandflash#tftp20008000zImage#nanderase100000300000#nandwrite20008000100000300000c)烧写文件系统镜像到nandflash#tftp20008000rootfs.cramfs#nanderase400000400000#nandwrite20008000400000400000d)设置启动参数#setenvbootdelay1#setenvbootcmdnandread20008000100000300000\;go20008000#setenvbootargsroot=/dev/mtdblock2init=/linuxrcconsole=ttySAC0,115200#saveenve)重新启动开发板,u-boot自动加载、执行内核5、u-boot其他命令a)u-boot支持的命令我们可以通过在终端上输入”?”查看6、交叉编译和交叉调试a)编辑程序源码myapp.c(自己写一个简单的c程序)b)交叉编译后复制到/source/rootfs(编译时添加选项-g)#arm-cortex_a8-linux-gnueabi-gccmyapp.c–omyapp-gc)复制gdbserver到/source/rootfs(gdbserver在工具链安装路径下查找)d)在开发板上如下运行#gdbserver192.168.1.200:1234myapp&e)在主机上运行交叉调试器$arm-cortex_a8-linux-gnueabi-gdbmyappf)在交叉调试器下和开发板gdbserver建立连接(gdb)targetremote192.168.1.200:1234设置断点,输入命令c开始调试程序(注意观察串口输出)实验三u-boot-2010.03的移植【实验目的】了解u-boot-2010.03的代码结构及移植方法。【实验环境】1、ubuntu12.04发行版2、u-boot-2010.033、FS210平台4、交叉编译器arm-cortex_a8-linux-gnueabi-gcc【实验步骤】说明:后面实验中的命令行提示符是($)则为主机命令(主机上执行),(#)则为开发板命令(开发板上执行)一、建立自己的平台1、下载源码我们可以在下面这个网站上下载最新的和以前任一版本的uboot、解压uboot源码并进入目录$tarxvfu-boot-2010.03.tar.gz$cdu-boot-2010.033、添加fs210平台信息我们关心的板级相关文件或目录u-boot-2010.03/Makefileu-boot-2010.03/include/configs/smdkc100.hu-boot-2010.03/cpu/arm_cortexa8/start.Su-boot-2010.03/board/samsung/smdkc100u-boot-2010.03/lib_arm4、smdkc100是使用s5pc100芯片的参考板,我们在其基础之上移植fs210$cdboard/samsung/$cp-asmdkc100fs210$cdfs210$mvsmdkc100.cfs210.c$vimMakefile修改COBJS-y:=smdkc100.o为COBJS-y:=fs210.o$cdinclude/configs$cpsmdkc100.hfs210_nand.h修改u-boot顶层目录下的Makefile,指定交叉工具链$vimMakefile在ifeq($(HOSTARCH,$(ARCH))CROSS_COMPILE?=endif下添加:ifeq(arm,$(ARCH))CROSS_COMPILE?=arm-cortex_a8-linux-gnueabi-endif在u-boot顶层目录下的Makefile中添加fs210配置信息$vimMakefile在smdkc100_config:unconfig@$(MKCONFIG)$(@:_config=)armarm_cortexa8smdkc100samsungs5pc1xx下添加:fs210_nand_config:unconfig@$(MKCONFIG)$(@:_config=)armarm_cortexa8fs210samsungs5pc1xx5、编译u-boot-2010.03$makedistclean$makefs210_nand_config$make编译完成后生成的u-boot.bin就是可执行的镜像文件。但是该文件只能在smdkv210平台上运行,我们需要对u-boot源代码进行相应的修改。二、uboot移植1、修改board/samsung/fs210/config.mk修改TEXT_BASE=0x34800000为:TEXT_BASE=0x23e000002、拷贝fs210.c、mem_setup.S、lowlevel_init.S、nand_cp.c、smdkc110_val.h到board/samsung/fs210/目录下这些文件是板级初始化代码,来源是三星的BSP3、修改board/samsung/fs210/Makefile修改COBJS-y
本文标题:系统移植实验手册
链接地址:https://www.777doc.com/doc-2179799 .html