第五章 搭建S3C6410开发板的测试环境
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章 搭建S3C6410开发板的测试环境相关的知识,希望对你有一定的参考价值。
S3C6410开发环境配置
一、搭建编译环境所需要的交叉编译工具链:S3C6410XToolChain4.2.2-EABIV0.0-cross-4.2.2-eabi.tar1.解压上述工具链获得文件夹:4.2.2-eabi/2.在/usr/local/下面创建目录arm/(注意,最好是放到这个目录,不然在以后的编译过程中可能出现一些错误)3.将目录4.2.2-eabi/移动到/usr/local/arm/下面4.设置环境变量:编辑/etc/profile文件,在文件末尾添加:PATH="$PATH:/usr/local/arm/4.2.2-eabi/usr/bin"exportPATH使环境变量生效:在终端输入命令:source/etc/profile测试环境变量是否设置成功:在终端输入:echo$PATH,如果输出的路径中包含了/usr/local/arm/4.2.2-eabi/usr/bin则说明环境变量设置成功5.测试交叉编译工具链在终端输入:arm-linux-gcc-v显示如下:Usingbuilt-inspecs.Target:arm-unknown-linux-gnueabiConfiguredwith:/home/scsuh/workplace/coffee/buildroot-20071011/toolchain_build_arm/gcc-4.2.2/configure--prefix=/usr--build=i386-pc-linux-gnu--host=i386-pc-linux-gnu--target=arm-unknown-linux-gnueabi--enable-languages=c,c++--with-sysroot=/usr/local/arm/4.2.2-eabi/--with-build-time-tools=/usr/local/arm/4.2.2-eabi//usr/arm-unknown-linux-gnueabi/bin--disable-__cxa_atexit--enable-target-optspace--with-gnu-ld--enable-shared--with-gmp=/usr/local/arm/4.2.2-eabi//gmp--with-mpfr=/usr/local/arm/4.2.2-eabi//mpfr--disable-nls--enable-threads--disable-multilib--disable-largefile--with-arch=armv4t--with-float=soft--enable-cxx-flags=-msoft-floatThreadmodel:posixgccversion4.2.2说明交叉编译工具链已经安装成功。
二、搭建文件系统镜像制作环境1.创建根文件系统目录rootfs及其子目录bin,sbin,boot,root,sys,srv,proc,usr等2.编译busybox1.7.0:(所需要的源码包:busybox-1.7.0.tar.bz2)2.1解压源码包,进入源码目录;2.2配置busybox:在源码目录执行makemenuconfig,如果使用默认配置则直接退出、保存,如果需要配置自己的则更改相应的选项再保存退出。选上以下选项可以支持Tab补全功能BusyboxSettings--->BusyboxLibraryTuning--->[]Tabcompetion已经支持了mountnfs功能2.3修改源码目录的Makefile:将175行:ARCH?=$(SUBARCH)修改为:ARCH?=arm
将176行:CROSS_COMPILE?=修改为:CROSS_COMPILE?=arm-linux-2.4正式编译busybox:在源码目录执行make编译2.5安装busybox:执行命令makeCONFIG_PREFIX=/***/rootfs(根文件系统目录)install3.拷贝glibc库相关文件到根文件系统glibc相关库文件在交叉编译工具链中已经有了,可以直接拷贝过来用$sudocp/usr/local/arm/4.2.2-eabi/lib/*.so*/***/rootfs/lib/-d$sudocp/usr/local/arm/4.2.2-eabi/usr/arm-unknown-linux-gnueabi/lib/*.so*/***/rootfs/lib/-d4.创建配置文件:4.1创建/etc/inittab,内容如下:#/etc/inittab::sysinit:/etc/init.d/rcS::askfirst:-/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount-a-r4.2创建/etc/init.d/rcS,内容如下:(创建完成后改变其属性使它可以执行sudochmod+x/etc/init.d/rcS)#!/bin/sh(这段脚本主要用来自动生成设备文件)#ifconfigeth0192.168.1.17mount-amkdir/dev/ptsmount-tdevptsdevpts/dev/ptsecho/sbin/mdev>/proc/sys/kernel/hotplugmdev-s4.3创建/etc/fstab文件,内容如下:#devicemount-pointtypeoptionsdumpfsckorderproc/procprocdefaults00tmpfs/tmptmpfsdefaults00sysfs/syssysfsdefaults00tmpfs/devtmpfsdefaults005.创建设备文件在根文件系统的/dev目录下执行$sudomknodconsolec51$sudomknodnullc13这样我们的最基本的根文件系统就做好了。6.测试已经制作好的根文件系统在PC上安装mkcramfs包,以便可以制作cramfs格式的文件制作出根文件系统:$mkcramfs/***/rootfs/rootfs.cramfs烧录uboot,kernel,rootfs到开发板并重启开发板(如何烧录这些内容请参考第三节:内核及文件系统镜像的烧写)系统正常启动,并进入shell,测试成功。7.测试基本的C程序在根文件系统的运行在PC上写一个最简单的hello.c程序:#include<stdio.h>intmain(){printf("hello!\n");
return0;}编译程序:$arm-linux-gcc-ohellohello.c将编译出来的hello复制到根文件系统的/bin或/sbin或/usr/bin或/usr/sbin等任一目录重新制作根文件系统镜像rootfs.cramfs重新烧写根文件系统镜像到开发板重启动开发板,进入shell,执行hello程序,显示hello!测试成功。
三、内核及文件系统镜像烧写内核及文件系统镜像的烧写请参考6410LinuxUserGuide.pdf上面有详细的描述和图片
四、搭建内核开发环境所需要的文件:linux-2.6.24-for-apdk6410.tar.gz解压内核源码,进入到源码目录(注意:源码必须放在不含中文的目录下,否则makeAPDK6410_defconfig是不能正确执行的)在源码目录执行$makeAPDK6410_defconfig命令(此命令将arch/arm/configs下面的APDK6410_defconfig拷贝到源码目录并命名为.config,这样在编译时就正确运用了APDK6410的对应配置)查看源码目录的.cross_compile文件,可见有如下内容:/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-我们刚好将编译器装在了对应的位置,如果当时没有装在这个对应的位置,就要更改此文件内容,确保路径是一致的。编译内核:在源码目录下执行make获得结果:在arch/arm/boot下生成了zImage文件,这就是我们所需要的内核。测试:将内核烧录到开发板上,重启开发板,正常进入系统,测试成功注:配置文件已经默认增加了对nfs的支持,配置信息如下:CONFIG_NETWORK_FILESYSTEMS=yCONFIG_NFS_FS=yCONFIG_NFS_V3=yCONFIG_NFS_V3_ACL=yCONFIG_NFS_V4=yCONFIG_NFS_DIRECTIO=yCONFIG_NFSD=mCONFIG_NFSD_V2_ACL=yCONFIG_NFSD_V3=yCONFIG_NFSD_V3_ACL=yCONFIG_NFSD_V4=yCONFIG_NFSD_TCP=yCONFIG_ROOT_NFS=yCONFIG_LOCKD=yCONFIG_LOCKD_V4=yCONFIG_EXPORTFS=mCONFIG_NFS_ACL_SUPPORT=yCONFIG_NFS_COMMON=y
五、程序调试方法1.在PC上安装、配置、启动NFS服务$sudoapt-getinstallnfs-kernel-serverportmap修改其配置文件/etc/exports,在里面增加以下内容:/work/nfs_root*(rw,sync,no_root_squash)那以后就可以通过网络文件系统访问以上目录了 修改完后保存退出,重启NFS服务: $sudo /etc/init.d/nfs-kernel-server restart 2.在开发板上启动系统后(网络已经通过配置文件设置好了,可以自行个更改不同的IP) 在开发板的系统上执行命令: mount -o nolock 192.168.0.*:/work/nfs_root /mnt 这样就将IP为192.168.0.*的PC上的/work/nfs_root目录mount到了开发板系统的/mnt目录 3.完成以上操作就可以随时调试自己交叉编译出来的程序了
以上是关于第五章 搭建S3C6410开发板的测试环境的主要内容,如果未能解决你的问题,请参考以下文章