015裸機開發快速體驗

2022-05-23 06:09:10 字數 2502 閱讀 7852

1、裸機開發流程:

(1)編寫裸機程式;

(2)除錯邏輯程式;

(3)生成二進位制映象(編譯,鏈結,格式轉換);

(4)燒寫、執行二進位制映象;

2、安裝交叉編譯器

將arm_tools壓縮包複製到linux系統,然後解壓;解壓之後可以看到該目錄下的檔案;

然後安裝工具鏈,其實就是解壓;

解壓:arm-linux-gcc-4.3.2.tgz -c /  (通過-c指定解壓到根目錄中);根據解壓的過程,可以知道是解壓到了/usr/local/arm/4.3.2目錄下;

在/usr/local/arm/4.3.2/bin目錄下,可以看到以後需要使用的工具;

但是安裝還沒完成,還需要配置環境變數,否則會提示命令找不到;(如果使用命令時,前面加上完成路徑,可以找到命令);

linux系統找某個命令是從path環境變數所列出來的路徑中去找的;

使用命令:vim /root/.bashrc修改環境變數;

在開啟的檔案中,新增:export path=$path:/usr/local/arm/4.3.2/bin

然後使用命令:source /root/.bashrc,使剛才配置的環境變數生效;

這樣,命令就可以使用了!不會再提示找不到命令了!

3、編譯裸機程式

將**複製到linux系統中;

使用命令:arm-linux-gcc -g -c led.s 進行編譯,將裸機程式變成二進位制映象檔案,執行命令後,會有led.o產生;

然後使用命令:arm-linux-ld -tled.lds -o led.elf led.o 進行鏈結,會產生led.elf產生,但是它的格式不對,這個格式不能直接燒寫到開發板中執行,必須轉換成二進位制的;

然後使用命令:arm-linux-objcopy -o binary led.elf led.bin 會產生bin檔案(二進位制格式);

當把乙個程式變成乙個可以燒寫的映象時,需要執行這麼多命令,如果經常先修改程式是不是每一次都得執行這麼多命令?

解決方法:寫乙個makefile檔案;

4、makefile

首先執行命令:make clean,執行之後,可以看到led下的檔案又恢復成最初狀態;

然後執行make命令,可以看到之前用許多命令產生的檔案,同樣產生出來了,但是僅僅執行了乙個make命令,沒像之前執行那麼多命令;

5、燒寫程式到開發板

開發板中的nand flash作用相當於硬碟,那麼我們要執行的程式比如作業系統或自己編寫的一些程式,我們希望最終都是把它們安裝到nand flash中去,所以要明確,編譯好的裸機程式最終是被燒寫到nand flash中去執行;

如何燒寫到nand flash?2410的開發板會有nor flash;

6410或210的開發板沒有nor flash,但是可以有sd卡,要把裸機程式燒寫到nand flash去,方法都是利用nor flash或者sd卡里的系統安裝輔助程式來幫我們燒寫;

具體步驟:

(1)將系統安裝輔助程式燒寫到sd卡中;

(2)將sd卡插到開發板上;

(3)設定開發板跳線從sd卡啟動;

(4)開啟securecrt,檢視串口號,設定串列埠連線;

(5)將手指按在空格鍵上,開啟開發板的電源,可以安裝到sd卡中的mmc.bin程式執行的介面;

(6)選擇,對nand flash進行格式化;

然後選擇;

(11)最後設定開發板從nand flash啟動(因為我們是把程式燒寫到nand flash中去了),就會看到程式執行的結果;

5、用到的工具:

交叉工具鏈、鏈結器指令碼、makefile;

ARM裸機開發快速體驗

一。linux平台 自己寫makefile 自己寫lds指令碼 自己搭建除錯環境 二。裸機開發流程 1 編寫裸機程式 2 除錯裸機程式 3 編譯 鏈結 格式轉換成二進位制映像 1.安裝交叉工具鏈 把課程裡面的工具包拷貝到linux,解壓arm linux gcc到根目錄 c 交叉工具在usr loc...

學習日誌 2 2 1 裸機開發快速體驗

裸機開發流程 1.編寫裸機程式 2.除錯裸機程式 3.生成2進製映像 編譯 鏈結 格式轉換 4.燒寫 執行2進製映像 安裝交叉編譯器 1.複製arm tools到linux中 2.解壓工具鏈 tar zxvf arm tools.tar.gz 3.安裝arm linux gcc tar zxvf a...

裸機開發步驟簡述

ubuntu應用程式 gcc所遵循的部分約定規則 c為字尾的檔案,c語言源 檔案 a為字尾的檔案,是由目標檔案構成的檔案庫檔案 c,cc或.cxx 為字尾的檔案,是c 源 檔案且必須要經過預處理 h為字尾的檔案,是程式所包含的標頭檔案 i 為字尾的檔案,是c源 檔案且不應該對其執行預處理 ii為字尾...