1. 程式人生 > >手把手教你從頭開始搭建友善之臂ARM-tiny4412開發環境(史上最詳細!!)

手把手教你從頭開始搭建友善之臂ARM-tiny4412開發環境(史上最詳細!!)

建立一個ARM目錄
mkdir   /disk/A9  -p

接下來你需要準備以下的東西
1、arm-linux-gcc-4.5.1    
交叉編譯器
2、linux-3.5-tiny4412     
核心
3、rootfs_qtopia_qt4-20140124.tar.gz    QT
檔案系統 (做好的)
4、busybox-1.22.1.tar.bz2 
檔案系統原碼  busybox
5、uboot_tiny4412-20130729.tgz   uboot
6、arm-qte-4.8.5-20131207.tar.gz   QT
原碼  ARM

7、uboot_tiny4412-20130729.tgz  對應的4412uboot原始碼

8、minicon   串列埠

9、安裝dnw ,需要上網搜尋dnw下載並安裝到系統

10、一張SD卡、一條串列埠線、一根dnw線、一根網線


好了,該準備的我們都準備好了,接下來看如何把開發環境搭建好。

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  登出測試是否安裝成功  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燒寫到SD

1>
插入SD

2>D

dd if=/dev/zero  of=/dev/sdb   bs=1024 count=102400

3>
燒寫
cd  /disk/A9/uboot_tiny4412/sd_fuse
make
cd  tiny4412
./sd_fusing.sh   /dev/sdb

燒寫完畢配置minicom

在命令列中輸入:
minicom -s


            ┌─────[configuration]──────┐
            │ Filenames and paths      
            │ File transferprotocols  
            │ Serial port setup          <== 選擇這一項
            │ 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
儲存成預設
Exit             
退出退出minicom  
ctrl + a  + q 
退出然後開機介面可以看到以下列印資訊:
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 #


核心移殖編好核心   zImage   uboot引導

cd  /disk/A9

ls linux-3.5-tiny4412

tar -xvf  linux-3.5-tiny4412

cd  linux-3.5

cp  tiny4412_linux_defconfig   .config

make

最後出現
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方式下載核心
1
minicom
dnw 0x40008000

2>  PC

cd /disk/A9/linux-3.5
dnw  arch/arm/boot/zImage

成功下載核心到板子

3>
引導核心 ==>  啟動核心
bootm 0x40008000 

. SD卡下載核心
 1>
關電取出SD卡,並將PC機上的核心zImage拷到SD卡上的第一個分割槽 fat32

 2>
SD卡插入開發板並且開機

 3>
檢視SD卡上的核心
    fatls mmc 0:1 /      //
檢視第0MMC裝置 第一個分割槽 的分割槽目錄

 4>
讀取SD卡上的核心
    fatload mmc 0:1 0x40008000  zImage 

 5>
引導核心
    bootm 0x40008000

. 自動讀取SD卡上的核心並且啟動在minicom
    set bootcmd  "fatload mmc 0:10x40008000 zImage;bootm 0x40008000"
    save

reset 
檢視是否會自動啟動核心四. movi 核心啟動
1
DNW下載核心到板子uboot  地址0x40008000

2>
寫核心

  movi write kernel 0 0x40008000

3>
設定自動啟動
set bootcmd "movi read kernel 0 0x40008000;bootm 0x40008000"

4>  reset 
自動啟動核心燒寫檔案系統
1
>網路檔案系統

cd /disk/A9

tar -xvf  busybox-1.22.1.tar.bz2

cd  busybox-1.22.1

make defconfig     //
預設配置

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  
會生成一個目錄   _install


製作檔案系統

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 ..
給許可權
chmod 777 filesystem -R

釋出檔案系統
vim   /etc/exports
新增
/disk/A9/filesystem      *(rw,sync,no_root_squash)
儲存退出檢查檔案系統是否已經發布
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
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 
檢視是否進入檔案系統

//************************************************************
SD
卡檔案系統一>
   
/disk/A9/filesystem  拷到 SD卡上的 第四個分割槽板子
    1>
儲存nfsbootargs
    set nfsbootargs $bootargs
    save
   
    2>
    set bootargs "root=/dev/mmcblk0p4console=ttySAC0,115200 lcd=S70 ctp=2"
    save
   
    3>
    reset
檢視是否進入SD卡檔案系統二>先進入網路檔案系統掛載出SD卡的第四個分割槽
    mount /dev/mmcblk0p4  /mnt
   
打包現有的檔案系統
    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
檢視是否進入SD卡檔案系統最後一個將檔案系統直接燒錄到板子上的mmc
    1.
   
uboot燒寫進去
    dnw E4412_N.bl1.bin
   
   
先進入SD卡的uboot
    2.
    emmc open 1
    //      1
板子上的MMC   0x40008000從哪裡讀  0起始塊地址  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啟動,上電看是否進入板子MMCuboot


   
燒寫MMC 核心
    dnw arch/arm/boot/zImage
   
    movi write kernel 0 0x40008000
    set bootcmd "movi read kernel 00x40008000;bootm 0x40008000"
    save
   
    //
分割槽板子上的MMC
    fdisk -p 0  
檢視分割槽資訊建立分割槽
    fdisk -c  1000 500 500
   
   
直接進入網路檔案系統
    set bootargs"root=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    save

   
進入系統之後
    mount /dev/mmcblk0p2  /mnt
    tar -xvf nfs.tar -C /mnt
    chmod 777 /mnt/  -R
    umount /mnt
   
   
    u-boot

    set bootargs"root=/dev/mmcblk0p2 console=ttySAC0,115200 lcd=S70 ctp=2"
    save

    reset 
啟動MMC內的檔案系統