S3C6410開發環境配置
1、搭建編譯環境所須要的交叉編譯工具鏈: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說明交叉編譯工具鏈已經安裝成功。
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!測試成功。
3、內核及文件系統鏡像燒寫內核及文件系統鏡像的燒寫請參考6410LinuxUserGuide.pdf上面有詳細的描述和圖片
4、搭建內核開發環境所須要的文件: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
5、程序調試方法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.完成以上操做就能夠隨時調試本身交叉編譯出來的程序了linux