從零開始的led燈(基於嵌入式開發s3c2440)
首先我們使用的是tq2440開發板,嵌入式開發和微控制器開發有些不一樣,對於初學者來說,硬要將嵌入式的裸機開 發
說成微控制器開發,我覺得是不當的,首先,大家都玩過51和stm32吧,首先他們的啟動都是編譯器幫你們寫好了的
吧,基本不需要寫makefile,51最簡單了,點亮一盞燈,只需要看原理圖就可以確定,哪個引腳需要配置成高電平或 者
低電平最可以了,然後stm32的開發比51微控制器更難的地方就是需要配置引腳的狀態(上拉或者輸入輸出等等), 說
白了,st公司幫你們把他的位址空間分配成乙個個暫存器,你需要操作上層的東西就可以了。
但是,嵌入式領域,沒有任何人幫助你完全這些東西,甚至你需要從彙編開始寫起啟動**,但是你需要知道一點點 會
彙編的**。
1、**1:點亮一盞led燈
由上圖可以知道led的點亮需要引腳輸出低電平就可以了。
.text
.global _start
_start:
ldr r0,=0x56000010 @ gpbcon=0x560000010, 就是
//需要修改的gpio的引腳gpb5
mov r1,#0x00000400 //?0001 1001 0000?gpb2:輸出引腳
//gpb3:tout3 gpb4:輸出引腳
str r1,[r0] //把 r0位址寫入r1的內容
ldr r0,=0x56000014 //後面的道理也是同一樣的
mov r1,#0x00000000
str r1,[r0]
main_loop:
b main_loop
為何是0x56000010和0x56000014,我可以肯定的是stm32不會讓你操作位址,很少的地方使用指標和結構體和鍊錶
的東西,但是公司裡面寫的**全部都是這些c語言。
根據原理圖可以看到那些地方需要使用到那些暫存器,然後可以通過晶元手冊查詢到相應的**。
2、**2;使用c語言學習使用
init.s
.text
.global _start
_start:
ldr r0,=0x53000000 //看門狗的暫存器的位址
mov r1,#0x0
str r1,[r0] //如果不進行硬體的初始化,那麼看門狗會一直復位
ldr sp,=1024*4 //設定堆疊,注意不能大於4k,因為片內的記憶體只有4錕
bl main
halt_loop:
b halt_loop
main.c
#define gpbcon (*(volatile unsigned long *)0x56000010) //加上關鍵字volatile的話,那麼就會不斷的檢查這個位址的
//內容是否總是檢查
#define gpbdat (*(volatile unsigned long *)0x56000014)
int main()
學習嵌入式,從零開始(硬體篇)
這段時間很多關注者問起怎樣學習嵌入式,對於乙個剛開始接觸嵌入式的朋友來說,這的確是個問題。在這裡筆者就給大家講講怎樣利用 it指路燈 來學習嵌入式系統。學習嵌入式之前我們需要了解什麼是嵌入式。官方說法 嵌入式系統是一種專用的計算機系統,作為裝置或裝置的一部分。國內普遍認同的嵌入式系統定義為 以應用為...
從零開始學習嵌入式 筆記(1)
shell命令解析器 bin bash 或 bin sh 開啟不同的shell sh bourne shell bash bourne again shell 定義變數 例 a hello world echo a echo 傳入指令碼的命令列引數個數 所有命令列的引數值,在各個引數值之間有空格 0...
嵌入式實驗 彙編點亮LED 燈
嵌入式實驗 彙編點亮led 燈 一 實驗目的 通過本次實驗,使學生能夠操作 s5pv210實驗平台,搭建並使用交叉編譯環境,具備初步的嵌入式裸機平台應用開發能力。二 實驗原理 由原理圖可知,點亮 210 的 4 個 led 需如下 2 個步驟 第一步 設定暫存器gpj2con,使gpj2 0 1 2...