arch linux arm下载_arm开发板运行hello word的详细过程
arm開(kāi)發(fā)板運(yùn)行helloword
1.uboot的編譯
? 這里已經(jīng)安裝好了交叉編譯工具鏈,如果自己的電腦下沒(méi)有,請(qǐng)自行百度安裝。將下載好uboot到linux下,進(jìn)行解壓-->打補(bǔ)丁-->編譯-->燒寫(xiě),執(zhí)行以下命令完成上述四個(gè)步驟(不同的開(kāi)發(fā)板在下載u-boot之后,進(jìn)行打補(bǔ)丁操作),編譯完成,u-boot.bin文件燒寫(xiě)到開(kāi)發(fā)板即可。
tar -jvxf u-boot-1.1.6.tar.bz2 cd ./u-boot-1.1.6 patch -p1 < ../ u-boot-1.1.6_jz2440.patch make 100ask24x0_config make CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- smdk2440_config make -j42.linux內(nèi)核的編譯
? 同樣,將下載好的內(nèi)核包進(jìn)行以下操作:解壓-->打補(bǔ)丁-->配置內(nèi)核-->編譯,執(zhí)行以下命令完成對(duì)應(yīng)的操作。(執(zhí)行make menuconfig時(shí)會(huì)出現(xiàn)配置內(nèi)核的界面,根據(jù)自己的需要進(jìn)行配置)
tar -jvxf linux-2.6.22.6.tar.bz2 cd linux-2.6.22.6 patch -p1 < ../linux-2.6.22.6_jz2440.patch make s3c2410_defconfig cp config_ok .config make menuconfig CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4 make uImage CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4編譯過(guò)程中遇到了錯(cuò)誤是按照如下解決,如果遇到其他錯(cuò)誤請(qǐng)自行解決
? 最后編譯完成。
? 生成的uImage在下圖中路徑。燒寫(xiě)到開(kāi)發(fā)板中即可。
3.文件系統(tǒng)的制作
? 一般開(kāi)發(fā)板的廠商會(huì)提供文件系統(tǒng),你可以自行燒寫(xiě)對(duì)應(yīng)的文件系統(tǒng),這里自己制作一個(gè)最小文件系統(tǒng)。制作之前應(yīng)該了解最小文件系統(tǒng)由什么組成。最小根文件系統(tǒng)封需要5個(gè)要求:
1 | busybox--ls、cp等命令的集合
2 | 兩個(gè)設(shè)備:/dev/console /dev/null
3 | /etc/inittab配置文件
4 | C庫(kù)
5 | 配置指定的運(yùn)行程序
3.1 制作busybox
? busybox其實(shí)就是linux下ls、cd等一些基本命令的集合,所以要編譯它進(jìn)行操作。對(duì)應(yīng)操作:解壓-->配置-->編譯-->安裝,分別對(duì)應(yīng)以下命令。
tar -jvxf busybox-1.7.0_patch.tar.bz2 tar -vxf busybox-1.7.0.tar.bz2 cd busybox-1.7.0 make menuconfig CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4 make CROSS_COMPILE=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux- ARCH=arm -j4 make CONFIG_PREFIX=/home/book/nfsroot/busybox install出現(xiàn)錯(cuò)誤
/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root/usr/include/linux/netfilter.h:56: error: field 'in6' has incomplete type ipsvd/tcpudp.c: In function 'tcpudpsvd_main': ipsvd/tcpudp.c:314: warning: ignoring return value of 'write', declared with attribute warn_unused_result scripts/Makefile.build:192: recipe for target 'ipsvd/tcpudp.o' failed make[1]: [ipsvd/tcpudp.o] Error 1 Makefile:701: recipe for target 'ipsvd' failed make: [ipsvd] Error 2 make: Waiting for unfinished jobs.... make: wait: No child processes. Stop.
解決:下載的交叉編譯庫(kù)中有個(gè)頭文件中的 in 和 in6 類型不對(duì),解決的方法(親自測(cè)試): 在 …/arm-none-linux-gnueabi/libc/usr/include/linux/netfilter.h 的開(kāi)頭 添加缺少的頭文件:
include
iptunnel.c:(.text.print_tunnel+0x290): more undefined references to `__cpu_to_be16' follow collect2: ld returned 1 exit status Makefile:678: recipe for target 'busybox_unstripped' failed make: *** [busybox_unstripped] Error 1
解決:在該目錄下的 vim networking/libiproute/iptunnel.c 文件中加入#include
最后成功編譯的busybox
3.2 創(chuàng)建設(shè)備文件
? 這兩個(gè)設(shè)備文件可以理解為內(nèi)核啟動(dòng)的第一個(gè)程序console:其實(shí)就是命令窗口
mkdir dev cd dev/ sudo mknod console c 5 1 sudo mknod null c 1 33.3 創(chuàng)建ect/inittab配置文件
mkdir etc cd etc/ vi inittab console::askfirst:-/bin/sh3.4 配置C庫(kù)
? 將編譯器的C庫(kù)拷貝到根文件系統(tǒng)目錄下的庫(kù)文件/lib中,是交叉編譯的C庫(kù)
mkdir lib cp /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/so* /work/nfs_root/lib/ -d3.4制作文件系統(tǒng)
? 此次將文件系統(tǒng)制作為yaffs文件系統(tǒng),下載制作工具,拷貝到linux,然后給制作工具附加執(zhí)行權(quán)限,制作完畢之后燒寫(xiě)到開(kāi)發(fā)板中即可。
sudo cp ./mkyaffs2image /usr/local/bin chmod +x /usr/local/bin/mkyaffs2image mkyaffs2image nfs_root nfs_root.yaffs2? 此時(shí),開(kāi)發(fā)板系統(tǒng)已經(jīng)能正常運(yùn)行。
3.6 設(shè)置開(kāi)發(fā)板的ip
? 此時(shí)系統(tǒng)已經(jīng)跑起來(lái)了,為了方便接下來(lái)的操作,將自己虛擬機(jī)的文件掛載到開(kāi)發(fā)板中,先配置ip,根據(jù)自己的電腦和虛擬機(jī)中,自行設(shè)置,但是一定要處于同一網(wǎng)絡(luò),然后讓三者相互ping通即可。
ifconfig eth0 192.168.43.203.7 掛載網(wǎng)絡(luò)文件系統(tǒng)
? 下面兩個(gè)命令都可以掛載虛擬機(jī)下的文件夾,但是當(dāng)進(jìn)行大量傳輸文件到開(kāi)發(fā)板時(shí),第一種掛載會(huì)出現(xiàn)錯(cuò)誤,所以建議使用第二種掛載命令。建議使用第二種掛載命令
mount -t nfs -o nolock 192.168.43.175:/work/nfs_root /mnt mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.43.61:/work/nfs_root /mnt4.運(yùn)行helloword程序
? 首先在自己的linux下創(chuàng)建main.c,然后進(jìn)行交叉編譯生成開(kāi)發(fā)板的可執(zhí)行文件,放入開(kāi)發(fā)板中執(zhí)行。
1? 創(chuàng)建完之后,進(jìn)行編譯,執(zhí)行結(jié)果
arm-linux-gcc -static -o a.out main.c總結(jié)
以上是生活随笔為你收集整理的arch linux arm下载_arm开发板运行hello word的详细过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 酷比手机i50(酷比手机是哪个公司的)
- 下一篇: linux多用户运行同一程序_linux