最近在工作上,需要用到ARM相關平台,所以花時間研究 ARM CPU 架構的開發環境,
其中硬體商(目前開發板:Friendly ARM Tiny6410)提供的部分程式必須在Windows 上才可執行。
故筆者想能不能在windows 及ubuntu-linux 中,也可各有一個模擬arm 的開發平台,可直接編譯程式而不需要使用cross-compiler(簡言之,如在windows平台上,使用ARM虛擬機器編譯arm執行檔)。
經過搜尋網上資料後,發現有一套件debian armel可供使用,且很貼心的提供可利用qemu arm來直接載入使用,大大減少重新編譯的時間。
設定步驟
安裝QEMU
- Windows: 請參考在Cygwin中設定並使用Qemu一文
- Mac OS X : 請參考"在蘋果電腦上執行 qemu (MAC OS X)"一文
- Ubuntu: 請執行下列apt-get命令
- sudo apt-get install qemu qemu-system
檔案所在位置: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.qcow | debian squeeze 標準系統映像檔(可寫入更新資料) |
執行debian arm linux
開機完成後,預設登入帳號及密碼皆為root。
執行腳本檔
此腳本用來執行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 板子上的時間。
沒有留言:
張貼留言