基於FS4412平台的Linux系統移植

來源:互聯網
上載者:User

標籤:linux   嵌入式系統   交叉編譯   檔案系統   kernel   

實驗一 交叉工具鏈的安裝

【實驗目的】

       瞭解交叉工具鏈的編譯過程及其使用。

       說明:在實驗中命令列提示符 為“$”表示在主機上運行,“#”表示在目標板上運行

【實驗環境】

1、  ubuntu 12.04發行版

2、  FS4412平台

【實驗步驟】

1、 如果要自己編譯工具鏈,從以下連結下載源碼

       crosstools-ng

http://ymorin.is-a-geek.org/download/crosstool-ng/

       同時對每一個版本都有相應的補丁我們盡量把這些補丁打上,這些補丁的是

http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/

在這裡我們已經提前給大家準備好了,大家進入到我們的tools檔案夾中.

把該檔案夾移動到我們的Ubuntu系統中,然後執行。

$     cd  tools

$  sudodpkg  -i *.deb

2、  解壓工具鏈壓縮包

$  cd  ~

$ mkdir toolchain

$ cd toolchain 

將第一天/工具/gcc-4.6.4.tar.xz拷貝到toolchain目錄下並解壓

$ tar  xvf  gcc-4.6.4.tar.xz

 

3、  環境變數的添加

       修改檔案/etc/bash.bashrc添加如下內容

export  PATH=$PATH:/home/linux/toolchain/gcc-4.6.4/bin

重啟設定檔

$ source  /etc/bash.bashrc

 

4、  工具鏈的測試

$ arm-none-linux-gnueabi-gcc  –v

Using built-in specs.

COLLECT_GCC=arm-none-linux-gnueabi-gcc

COLLECT_LTO_WRAPPER=/home/david/Exynos4412/toolchain/gcc-4.6.4/bin/../libexec/gcc/arm-arm1176jzfssf-linux-gnueabi/4.6.4/lto-wrapper

Target: arm-arm1176jzfssf-linux-gnueabi

Configured with: /work/builddir/src/gcc-4.6.4/configure--build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu--target=arm-arm1176jzfssf-linux-gnueabi--prefix=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4--with-sysroot=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot--enable-languages=c,c++ --with-arch=armv6zk --with-cpu=arm1176jzf-s--with-tune=arm1176jzf-s --with-fpu=vfp --with-float=softfp--with-pkgversion=‘crosstool-NG hg+default-2685dfa9de14 - tc0002‘--disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap--disable-libgomp --disable-libssp --disable-libquadmath--disable-libquadmath-support --with-gmp=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools--with-mpfr=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools--with-mpc=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools--with-ppl=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools--with-cloog=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools--with-libelf=/work/builddir/arm-arm1176jzfssf-linux-gnueabi/buildtools--with-host-libstdcxx=‘-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm‘--enable-threads=posix --enable-target-optspace --without-long-double-128--disable-nls --disable-multilib--with-local-prefix=/opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/sysroot--enable-c99 --enable-long-long

Thread model: posix

gcc version 4.6.4 (crosstool-NG hg+default-2685dfa9de14 -tc0002)

       這樣我們的交叉工具鏈就安裝好了

實驗二 u-boot的燒寫及使用

【實驗目的】

       瞭解u-boot的常用命令和linux核心的引導。

【實驗環境】

1、  ubuntu 12.04發行版

2、  u-boot-2010.03

3、  FS4412平台

4、  交叉編譯器 arm-none-linux-gnueabi-gcc

【實驗步驟】

1、 SD啟動盤製作

a)        將第一天/工具/ sd_fusing拷貝到Linux下

b)       將SD卡插入電腦並識別

c)        進入sdfuse_d執行如下操作

       $ sudo ./mkuboot.sh  /dev/sdb

d)       在SD卡中建立目錄sdupdate並把第一天/鏡像中的u-boot-fs4412.bin拷貝到這個目錄下

2、 u-boot的燒寫

a)        串連串口和板子,運行串口通訊程式(putty第一天工具中)

選擇右上方的”Serial”,然後點擊左下角的”Serial”

按照自己的主機的情況選擇COM口其他必須一直,然後點擊open開啟串口

b)       關閉開發板電源,將撥碼開關SW1調至(1000)(SD啟動模式)後開啟電源

c)        將剛才做好的SD啟動盤插入SD卡插槽

d)       重新開啟開發板能夠看到如下介面

在倒計時時按任意鍵

e)        燒寫

在終端上執行

       sdfuse flashall

等待終端無輸出是表示燒寫結束

f)        關閉開發板電源,將撥碼開關SW1調至0110(EMMC啟動模式)後開啟電源可以看到如下介面表示燒寫成功

在倒計時時按任意鍵

 

3、 通過網路載入核心和檔案系統

a)        將 第一天/鏡像檔案/uImage拷貝到ubuntu的/tftpboot下

b)       將 第一天/鏡像檔案/rootfs.tar.xz拷貝到ubuntu的/source下並解壓

c)        將 第一天/鏡像檔案/exynos4412-fs4412.dtb拷貝到ubuntu的/tftpboot下

d)       修改虛擬機器nfs設定檔/etc/exports,添加如下內容並重啟nfs服務

/source/rootfs *(rw,sync,no_subtree_check,no_root_squash)

e)        重新驅動nfs服務

$ sudo /etc/init.d/nfs-kernel-server restart

f)        設定啟動參數

# setenv serverip 192.168.9.120

# setenv ipaddr 192.168.9.233

# setenv bootcmd tftp 41000000 uImage\;tftp 42000000exynos4412-fs4412.dtb\;bootm 41000000 - 42000000

#setenv bootargs root=/dev/nfsnfsroot=192.168.9.120:/source/rootfs rw console=ttySAC2,115200  init=/linuxrc  ip=192.168.9.233

# saveenv

注意:192.168.9.120對應Ubuntu的ip

        192.168.9.233 對應板子的ip

      這兩個ip應該根據自己的實際情況適當修改      

 

g)       啟動開發板看到如下現象表示成功通過網路掛載:

 

       這是可以輸入一些Linux的命令測試

4、 從EMMC載入核心和檔案系統

a)        拷貝第一天/鏡像檔案/ramdisk.img拷貝到虛擬機器/tftpboot目錄下

b)       燒寫核心鏡像到EMMC上

# tftp  41000000  uImage

# movi  write  kernel 41000000

 

c)        燒寫裝置樹檔案到EMMC上

# tftp  41000000  exynos4412-fs4412.dtb

# movi  write  dtb 41000000

 

d)       燒寫檔案系統鏡像到EMMC上

# tftp  41000000  ramdisk.img

# movi  write  rootfs 41000000  300000

 

e)        設定啟動參數

# setenv bootcmd movi read kernel 41000000\;movi read dtb42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000

# saveenv

 

f)        重新啟動開發板,u-boot自動載入、執行核心

5、  其他命令練習

        

 

6、 交叉編譯和交叉調試

a)        將u-boot啟動參數修改為網路啟動

# setenv serverip 192.168.9.120

# setenv ipaddr 192.168.9.233

# setenv bootcmd tftp 41000000 uImage\;tftp 42000000exynos4412-fs4412.dtb\;bootm 41000000 - 42000000

#setenv bootargs root=/dev/nfsnfsroot=192.168.9.120:/source/rootfs rw console=ttySAC2,115200  init=/linuxrc  ip=192.168.9.233

# saveenv

注意:192.168.9.120對應Ubuntu的ip

        192.168.9.233 對應板子的ip

      這兩個ip應該根據自己的實際情況適當修改     

b)       編輯程式源碼myapp.c(自己寫一個簡單的c程式)

c)        交叉編譯後複製到/source/rootfs   (編譯時間添加選項-g)

$arm-none-linux-gnueabi-gcc myapp.c –o myapp –g

$ cpmyapp /source/rootfs

d)       運行我們的myapp程式,觀察輸出結果

$./myapp

 

基於FS4412平台的Linux系統移植

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.