手把手教你從零開(kāi)始搭建友善之臂ARM-tiny4412開(kāi)發(fā)環(huán)境
好久沒(méi)在微信公眾平臺(tái)上冒泡了,不好意思,本人工作也挺忙的,現(xiàn)在在深圳偉易達(dá)集團(tuán)從事嵌入式軟件開(kāi)發(fā),所以現(xiàn)在的文章我會(huì)以博客的形式發(fā)布在CSDN上面,當(dāng)然,為了滿足各位讀著的需求,也會(huì)在公眾號(hào)上推送相應(yīng)的文章,如果想在CSDN上看,可以訪問(wèn)這個(gè)地址:http://blog.csdn.net/morixinguan
謝謝大家的支持!
今天我們來(lái)介紹一下TINY4412開(kāi)發(fā)環(huán)境的搭建。
在Linux環(huán)境下:
在終端輸入以下命
創(chuàng)建一個(gè)ARM目錄
mkdir /disk/A9 -p
接下來(lái)你需要準(zhǔn)備以下的東西
1、arm-linux-gcc-4.5.1 交叉編譯器
2、linux-3.5-tiny4412 內(nèi)核
3、rootfs_qtopia_qt4-20140124.tar.gz QT文件系統(tǒng) (做好的)
4、busybox-1.22.1.tar.bz2 文件系統(tǒng)原碼 busybox
5、uboot_tiny4412-20130729.tgz uboot
6、arm-qte-4.8.5-20131207.tar.gz QT原碼 ARM
7、uboot_tiny4412-20130729.tgz 對(duì)應(yīng)的4412uboot源碼
8、minicon 串口
9、安裝dnw ,需要上網(wǎng)搜索dnw下載并安裝到系統(tǒng)
10、一張SD卡、一條串口線、一根dnw線、一根網(wǎng)線
好了,該準(zhǔn)備的我們都準(zhǔn)備好了,接下來(lái)看如何把開(kāi)發(fā)環(huán)境搭建好。
1.安裝交叉編譯器
cd /disk/A9
tar -xvf arm-linux-gcc-4.5.1
ls opt
FriendlyARM
cp opt/FriendlyARM /opt -r
ls /opt/FriendlyARM/toolschain/4.5.1/bin/
拷 /opt/FriendlyARM/toolschain/4.5.1/bin/
vim ~/.bash_profile
在PATH=$PATH:$HOME/bin下面加上
PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin/
保存退出 ctrl +Alt + backspace 注銷(xiāo)
測(cè)試是否安裝成功 arm- tab tab 可以列出所有的交叉編譯器就成功
2.編譯uboot
cd /disk/A9
tar -xvf uboot_tiny4412-20130729.tgz
cd uboot_tiny4412
make tiny4412_config
make 生成u-boot.bin u-boot 文件
3.將編好的u-boot.bin燒寫(xiě)到SD卡
1>插入SD卡
2>D卡
dd if=/dev/zero of=/dev/sdb bs=1024 count=102400
3>燒寫(xiě)
cd /disk/A9/uboot_tiny4412/sd_fuse
make
cd tiny4412
./sd_fusing.sh /dev/sdb
燒寫(xiě)完畢
配置minicom
在命令行中輸入:
minicom -s
┌─────[configuration]──────┐
│ Filenames and paths
│ File transferprotocols
│ Serial port setup <== 選擇這一項(xiàng)
│ Modem and dialing
│ Screen and keyboard
│ Save setup as dfl
│ Save setup as..
│ Exit
│ Exit from Minicom
└──────────────────────────┘
按如圖所示配置
┌───────────────────────────────────────────────────────────────────────┐
│ A - Serial Device : /dev/ttyUSB0
│ B - Lockfile Location : /var/lock
│ C - Callin Program :
│ D - Callout Program :
│ E - Bps/Par/Bits : 115200 8N1
│ F - Hardware Flow Control : No
│ G - Software Flow Control : No
│
│ Change which setting?
└───────────────────────────────────────────────────────────────────────┘
改成這樣
enter
Save setup as dfl 保存成默認(rèn)
Exit 退出
退出minicom
ctrl + a + q 退出
然后開(kāi)機(jī)界面可以看到以下打印信息:
U-Boot 2010.12 (Oct 13 2015 - 11:03:50) for TINY4412
CPU: S5PC220 [Samsung SOC on SMPPlatform Base on ARM CortexA9]
APLL = 1400MHz, MPLL = 800MHz
Board: TINY4412
DRAM: 1023 MiB
vdd_arm: 1.2
vdd_int: 1.0
vdd_mif: 1.1
BL1 version: N/A (TrustZone EnabledBSP)
Checking Boot Mode ... SDMMC
REVISION: 1.1
MMC Device 0: 3724 MB
MMC Device 1: 7456 MB
MMC Device 2: N/A
*** Warning - using default environment
Net: No ethernet found.
Hit any key to stop autoboot: 0
TINY4412 #
內(nèi)核移殖
編好內(nèi)核 zImage 給uboot引導(dǎo)
cd /disk/A9
ls linux-3.5-tiny4412
tar -xvf linux-3.5-tiny4412
cd linux-3.5
cp tiny4412_linux_defconfig .config
make
最后出現(xiàn)
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
編譯成功
arch/arm/boot/zImage
安裝DNW
cd /disk/A9/dnw-linux
make
make install
一 . 利用dnw方式下載內(nèi)核
1> minicom中
dnw 0x40008000
2> PC中
cd /disk/A9/linux-3.5
dnw arch/arm/boot/zImage
成功下載內(nèi)核到板子
3>引導(dǎo)內(nèi)核 ==> 啟動(dòng)內(nèi)核
bootm 0x40008000
二 . SD卡下載內(nèi)核
1> 關(guān)電取出SD卡,并將PC機(jī)上的內(nèi)核zImage拷到SD卡上的第一個(gè)分區(qū) fat32
2> 將SD卡插入開(kāi)發(fā)板并且開(kāi)機(jī)
3> 查看SD卡上的內(nèi)核
fatls mmc 0:1 / //查看第0個(gè)MMC設(shè)備 第一個(gè)分區(qū) 的分區(qū)目錄
4> 讀取SD卡上的內(nèi)核
fatload mmc 0:1 0x40008000 zImage
5> 引導(dǎo)內(nèi)核
bootm 0x40008000
三 . 自動(dòng)讀取SD卡上的內(nèi)核并且啟動(dòng)
在minicom中
set bootcmd "fatload mmc 0:10x40008000 zImage;bootm 0x40008000"
save
reset 查看是否會(huì)自動(dòng)啟動(dòng)內(nèi)核
四. movi 內(nèi)核啟動(dòng)
1> DNW下載內(nèi)核到板子uboot 地址0x40008000
2>寫(xiě)內(nèi)核
movi write kernel 0 0x40008000
3> 設(shè)置自動(dòng)啟動(dòng)
set bootcmd "movi read kernel 0 0x40008000;bootm 0x40008000"
4> reset 自動(dòng)啟動(dòng)內(nèi)核
燒寫(xiě)文件系統(tǒng)
1> 網(wǎng)絡(luò)文件系統(tǒng)
cd /disk/A9
tar -xvf busybox-1.22.1.tar.bz2
cd busybox-1.22.1
make defconfig //默認(rèn)配置
make menuconfig
Busybox Settings --->
[*] Build BusyBox as a static binary (no shared libs) │
[*] Build BusyBox as a positionindependent executable (NEW) │
[ ] Force NOMMU build │
[ ] Build shared libbusybox (NEW) │
[*] Build with Large File Support (for accessing files > 2 GB) │
(arm-linux-) Cross Compiler prefix
保存退出
make -j4
make install 會(huì)生成一個(gè)目錄 _install
制作文件系統(tǒng)
cd /disk/A9
mkdir filesystem
cd /disk/A9/filesystem
cp /disk/A9/busybox-1.22.1/_install/* .-r
mkdir etc dev opt sys tmp mnt lib proc
mkdir etc/init.d
vim etc/init.d/rcS
添加
mount -t ramfs none /dev
mount -t sysfs none /sys
mount -t proc none /proc
mount -t tmpfs none /tmp
/sbin/mdev -s
保存退出
vim etc/inittab
添加
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh
保存退出
vim etc/profile
添加
export PS1="[root @ cjy \W ] #"
保存退出
mknod dev/console c 5 1
cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./lib -r
cd ..
給權(quán)限
chmod 777 filesystem -R
發(fā)布文件系統(tǒng)
vim /etc/exports
添加
/disk/A9/filesystem *(rw,sync,no_root_squash)
保存退出
檢查文件系統(tǒng)是否已經(jīng)發(fā)布
showmount -e 192.168.88.xxx
//板子上配置IP還有bootargs
set gatewayip 192.168.88.1
set ipaddr 192.168.88.x //板子的IP
set serverip 192.168.88.xxx //PC機(jī)IP
save
set bootargs "root=/dev/nfsnfsroot=192.168.88.xxx:/disk/A9/filesystem
ip=192.168.88.x console=ttySAC0,115200 lcd=S70 ctp=2"
save
reset 查看是否進(jìn)入文件系統(tǒng)
//************************************************************
SD卡文件系統(tǒng)
一>
將/disk/A9/filesystem 拷到 SD卡上的 第四個(gè)分區(qū)
板子
1> 保存nfsbootargs
set nfsbootargs $bootargs
save
2>
set bootargs "root=/dev/mmcblk0p4console=ttySAC0,115200 lcd=S70 ctp=2"
save
3>
reset 查看是否進(jìn)入SD卡文件系統(tǒng)
二>
先進(jìn)入網(wǎng)絡(luò)文件系統(tǒng)
掛載出SD卡的第四個(gè)分區(qū)
mount /dev/mmcblk0p4 /mnt
打包現(xiàn)有的文件系統(tǒng)
cd /disk/A9/filesystem
tar -cf nfs.tar *
tar -xvf nfs.tar -C /mnt
umount /mnt
板子
2>
set bootargs "root=/dev/mmcblk0p4console=ttySAC0,115200 lcd=S70 ctp=2"
save
3>
reset 查看是否進(jìn)入SD卡文件系統(tǒng)
最后一個(gè)
將文件系統(tǒng)直接燒錄到板子上的mmc
1.
將uboot燒寫(xiě)進(jìn)去
dnw E4412_N.bl1.bin
先進(jìn)入SD卡的uboot
2.
emmc open 1
// 1板子上的MMC 0x40008000從哪里讀 0起始?jí)K地址 0x10大小
3.
mmc write 1 0x40008000 0 0x10
dnw bl2.bin
4.
mmc write 1 0x40008000 0x10 0x1C
dnw u-boot.bin
5.
mmc write 1 0x40008000 0x300x1F6
6.
emmc close 1
7.
段電,拔SD卡,選擇NAND啟動(dòng),上電看是否進(jìn)入板子MMCuboot
燒寫(xiě)MMC 內(nèi)核
dnw arch/arm/boot/zImage
movi write kernel 0 0x40008000
set bootcmd "movi read kernel 00x40008000;bootm 0x40008000"
save
//分區(qū)板子上的MMC
fdisk -p 0 查看分區(qū)信息
創(chuàng)建分區(qū)
fdisk -c 1000 500 500
直接進(jìn)入網(wǎng)絡(luò)文件系統(tǒng)
set bootargs"root=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
save
進(jìn)入系統(tǒng)之后
mount /dev/mmcblk0p2 /mnt
tar -xvf nfs.tar -C /mnt
chmod 777 /mnt/ -R
umount /mnt
u-boot內(nèi)
set bootargs"root=/dev/mmcblk0p2 console=ttySAC0,115200 lcd=S70 ctp=2"
save
reset 啟動(dòng)MMC內(nèi)的文件系統(tǒng)
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!