嵌入式學習之裸機開發前奏

2021-08-17 13:56:53 字數 2943 閱讀 1307

為裸機開發做鋪墊

我們需

安裝交叉編譯工具鏈 (就是在linux下安裝軟體)並且進行相關配置方便裸機開發時使用

熟悉makefile流程 方便裸機開發工程管理

知道各個檔案字尾的作用以及來歷

mkv210_imge.c程式的作用以及內部**

區分ubs串列埠燒寫和sd卡燒寫的區別

1;我們使用安裝包的形式進行安裝工具鏈

交叉編譯工具鏈的安裝

步驟1:開啟虛擬機器,在/usr/local/下建立/usr/local/arm資料夾

步驟2:先將安裝包從windows中弄到linux中去。可以用共享資料夾,也可以用samba,也可以cuteftp。

步驟3:解壓。tar -jxvf arm-2009q3.tar.bz2

到此相當於程式已經安裝完畢,真正的應用程式安裝在/usr/local/arm/arm-2009q3/bin目錄下

安裝後的測試

到真正的應用程式的安裝目錄下(也就是/usr/local/arm/arm-2009q3/bin),去執行arm-linux-gcc -v

執行方法是:./arm-none-linux-gnueabi-gcc -v

執行後可以得到一長串輸出,其中有「gcc version 4.4.1 」字樣,即表示安裝成功。

2;環境配置

將工具鏈匯出到環境變數

export path=/usr/local/arm/arm-2009q3/bin:pa

th在一

個終端中

執行以上

命令後,

該終端中

就可以直

接使用a

rm−l

inux

−gcc

了,但是

只要關掉

這個終端

再另外打

開乙個立

馬就不行

了。原因

是我們本

次終端中

執行時的

操作只是

針對本終

端,以後

再開啟的

終端並未

被執行過

這個命令

所以沒導

出。解決

方案是在

/.ba

shrc

中,新增

expo

rtpa

th=/

usr/

loca

l/ar

m/ar

m−2009q3

/bin

: pat

h在乙個

終端中執

行以上命

令後,該

終端中就

可以直接

使用ar

m−li

nux−

gcc了

,但是只

要關掉這

個終端再

另外開啟

乙個立馬

就不行了

。原因是

我們本次

終端中執

行時的操

作只是針

對本終端

,以後再

開啟的終

端並未被

執行過這

個命令所

以沒匯出

。解決方

案是在/

.bas

hrc中

,新增e

xpor

tpat

h=/u

sr/l

ocal

/arm

/arm

−2009q3

/bin

:path 即可。

注意:我們匯出這個環境變數是在當前使用者,如果你登入時在其他使用者下是沒用的。

3,為工具鏈建立arm-linux-***符號鏈結

ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line

可以製作指令碼 就是將這些命令放到乙個檔案中做成.sh檔案,然後放到bin目錄下進行source執行即可

(注意在window下的文字中換行是\n而linux中換行是-r,因此有時會指令碼製作出錯 就是這個原因 解決辦法是在linux裡面建指令碼檔案然後進行貼上,而不是在window下貼上)

4;makefile;

為什麼需要makefile

makefile是用來管理工程的。

在乙個正式的軟體專案中,由很多個.c和.h檔案構成,此時如果直接在命令列編譯,就會像這樣:gcc a.c b.c c.c d.c e.c f.c g.c -o exe 這時候每次編譯的時候都要打很多a.c等等 很不方便 那麼就引出了makefile 建乙個檔案裡面寫好這些** 那麼每次編譯除錯的時候只需要打make編譯就可以了 主要是乙個整合的作用

makefile中的一些基本概念

目標:目標定格寫,後面是冒號(冒號後面是依賴)

依賴:依賴是用來產生目標的原材料。

命令:命令前面一定是tab,不能是定格,也不能說多個空格。命令就是要生成那個目標需要做的動作。

makefile的基本工作原理

其一,當我們執行 make xx 的時候,makefile會自動執行xx這個目標下面的命令語句。

其二,當我們make xx的時候,是否執行命令是取決於依賴的。依賴如果成立就會執行命令,否則不執行。

其三,我們直接執行make 和make 第乙個目標 效果是一樣的。(第乙個目標其實就是預設目標)

makefile裡面的內容

mkv210_image.c的作用:為bl1新增校驗頭

我們編譯鏈結時只得到了led.bin,這個210.bin的得到和交叉編譯工具鏈是完全無關的。由led.bin得到210.bin的過程是三星的s5pv210所特有的,因此需要我們自己去完成,為此我們寫了mkv210_image.c來完成。

嵌入式裸機之ADC學習筆記

1 adc analog digital converter,ad轉換,模數轉換 也就是模擬轉數字 2 cpu本身是數字的,而外部世界變數 如電壓 溫度 高度 壓力 都是模擬的,所以需要用cpu來處理這些外部的模擬變數的時候就需要做ad轉換。為了用數字技術來處理外部的模擬物理量。1 模擬的就是連續的...

嵌入式Linux裸機開發(十五) LCD

lcd liquid crystal display 是 液晶顯示器簡稱。lcd的構造是在兩片平行的 玻璃基板當中放置液晶盒,下基板玻璃上設定 tft 薄膜電晶體 上基板玻璃上設定彩色濾光片,通過tft上的訊號與電壓改變來控制液晶分子的轉動方向,從而達到控制每個畫素點偏振光出射與否而達到顯示目的。按...

ARM嵌入式裸機程式學習(一)

這裡不用ads整合開發環境,因為ads相容性存在問題,而且通過自己手動編譯 鏈結對學習有好處,所以我們下面都在linux環境下進行arm開發。開發環境 linux作業系統 ubuntu 開發工具 arm linux gdb 7.5 eclipse cpp helios sr2 linux gtc a...