對於希望學習ARM匯編的同學而言, 購買ARM開發板進行板上實測無疑是一個有效的方法,不過購買ARM開發板需要一筆費用,而且每次測試都需要連接開發板,比較麻煩。這裡介紹一個ARM模擬器——SkyEye,通過SkyEye我們可以直接在一台PC上完成ARM匯編程序的開發和調試了,擺脫了ARM開發板的限制,真是不錯!
下面介紹如何使用:
1.點擊這裡進入下載SkyEye的最新版,我的是skyeye-1.3.4_rc1.tar.gz,同時為了後面的實驗,我們還要下載testsuite,這是skyeye的測試文件,我的版本是skyeye-testsuite-1.3.4,裡面有ArmLinux
2.
tar zxvf skyeye-1.3.4_rc1.tar.gz
cd skyeye
根據INSTALL文件裡說的:
./configure
make lib
make
sudo make install
sudo make install_lib
注意,在make時可能會缺各種文件,apt-get install就可以了,我所遇到的兩個問題是:
python-dev和llvm沒有安裝,很簡單:
sudo apt-get install python-dev
sudo apt-get install llvm
就可以了
這樣SkyEye就算安裝好了
3.
默認SkyEye是安裝在/opt/下的,因此為了方便,我們在環境變量裡把它的路徑加入:
vi ~/.bashrc
輸入:
#SkyEye 1.3.4
export PATH=/opt/skyeye/bin:$PATH
之後注銷再登錄或直接source .bashrc就可以使環境變量生效了
4.
SkyEye安裝好後會在/opt/skyeye/testsuite下有一個arm_hello的測試程序,按如下方式運行:
cd /opt/skyeye/testsuite/arm_hello
skyeye -e arm_hello
#注意:skyeye要運行一個程序時必須要在這個程序的目錄裡,因為skyeye要讀取這個程序的skyeye.conf配置文件,所以第一步我們要切換到/opt/skyeye/testsuite/arm_hello目錄下
這時我們會進入skyeye命令模式,輸入start讓arm_hello程序開始運行,會彈出一個connecting to Ubuntu:xxx的字樣的窗口
5.
skyeye命令行輸入:run開始運行,這時窗口會不停的輸出“helloworld”,說明arm_hello已經成功運行了!
6.
skyeye命令行輸入:stop停止運行;輸入:quit退出skyeye;輸入:help查看幫助
下面介紹如何在SkyEye上啟動Linux,就和在真實的ARM開發板上一樣:
1.
解壓testsuite測試文件:
tar zxvf skyeye-testsuite-1.3.4_rc1.tar.gz
其中的linux目錄就是我們要移植到板子上的amrlinux,依次進入:s3c2410-->s3c2410x-2.6.36,有三個文件,vmlinux是Linux內核鏡像,skyeye.conf是配置文件,initrd.img是臨時根文件系統。我們在/opt/skyeye/testsuite下新建一個目錄,然後copy過來:
sudo mkdir /opt/skyeye/testsuite/armlinux
cd linux/s3c2410/s3c2410x-2.6.36
sudo copy * /opt/skyeye/testsuite/armlinux
2.
cd /opt/skyeye/testsuite/armlinux
skyeye -e vmlinux
進入skyeye命令模式;
輸入start打開串口窗口:
我在執行這一步時出錯:failed to setup_module (name:net, type:cs8900a),我把skyeye.conf裡的net那一行注釋掉了,就行了
如果窗口沒有打開,則修改:uart:mod=stdio為uart:mod=term,然後再試試
3.
skyeye命令行:run啟動Linux,
屏幕隨即會輸出串口信息,不過速度很慢!
附幾張圖:
下面我們開始SkyEye的第二部分。