2011年10月1日 星期六

ARM Linux 開發環境設定指南

debian-arm-booting 
最近在工作上,需要用到ARM相關平台,所以花時間研究 ARM CPU 架構的開發環境,
其中硬體商(目前開發板:Friendly ARM Tiny6410)提供的部分程式必須在Windows 上才可執行。
故筆者想能不能在windows 及ubuntu-linux 中,也可各有一個模擬arm 的開發平台,可直接編譯程式而不需要使用cross-compiler(簡言之,如在windows平台上,使用ARM虛擬機器編譯arm執行檔)。
經過搜尋網上資料後,發現有一套件debian armel可供使用,且很貼心的提供可利用qemu arm來直接載入使用,大大減少重新編譯的時間。

設定步驟


安裝QEMU
下載debian-armel
檔案所在位置:http://people.debian.org/~aurel32/qemu/armel/
 a3853606c5762d41bb245aaeb8823996  debian_lenny_armel_desktop.qcow2
  dce9f0d2855d57b79b63bcf3a9ecd51d  debian_lenny_armel_standard.qcow2
  a6d0dde54fb27254e2b8d94736889462  initrd.img-2.6.26-2-versatile
  1969e2a0ffc571ccf6024dc7c842d4dd  vmlinuz-2.6.26-2-versatile
  c5f9039b463e07852055071ac118320a  debian_squeeze_armel_desktop.qcow2
  b7807306c4c79aaa9a423119f4633ffb  debian_squeeze_armel_standard.qcow2
  f73e83b8e48bd422457dafeb8afe7fc6  initrd.img-2.6.32-5-versatile
  8b33324f99d13dc71d6ad060db2fd60a  vmlinuz-2.6.32-5-versatile

筆者所使用的檔案組合如下表:
下載檔案說明
initrd.img-2.6.32-5-versatile初始化並啟動附加檔案
vmlinuz-2.6.32-5-versatile系統啟動用linux 核心
debian_squeeze_armel_standard.qcowdebian squeeze 標準系統映像檔(可寫入更新資料)


執行debian arm linux
開機完成後,預設登入帳號及密碼皆為root。
debian-arm-login

執行腳本檔
此腳本用來執行debian-armel,及相關必要參數。
run.sh
#!/bin/sh
export PATH="$PATH:/usr/local/qemu/bin"
PLATFORM="`uname -s | cut -d'_' -f1`"
QEMUEXE="qemu-system-arm"
if [ "$PLATFORM" = "CYGWIN" ] ; then
    QEMUEXE=${QEMUEXE}.exe
fi
img=debian_squeeze_armel_standard.qcow2
$QEMUEXE -M versatilepb  -kernel vmlinuz-versatile -initrd initrd.gz -m 256 -hda $img -append 'root=/dev/sda1' -redir tcp:2200::22

使用腳本檔案前用先將,下列檔案更名:

  • initrd.img-2.6.32-5-versatile  改為 initrd.gz
  • vmlinuz-2.6.32-5-versatile 改為 vmlinuz-versatile

進入到run.sh 所在目錄,並執行下列腳本檔

sh run.sh

註一:當在使用apt-get install gcc g++ 時,發生找不到檔案的情形。
解決方法: apt-get update –fix-missing
註二:因為qemu 網路架構原設計,需使用-redir 參數用來將Guest OS(debian-arm) 的ssh 22 port 轉到本機2200port。(記得debian-arm中,執行 apt-get install openssh-server來安裝ssh server)

結論
當筆者完成所有步驟後,等於擁有一台虛擬ARM機器,且為一包含完整開發軟體的LINUX系統。
若網友們所寫的程式無特別額外ARM硬體需求,則可直接在上面開發偵錯,可減少arm程式複製到arm 板子上的時間。

沒有留言: