ARM裸機開發(一)LED控制

2021-09-08 16:27:58 字數 1486 閱讀 6429

以下裸機程式基於gt2440,編譯器為arm-linux-gcc-4.4.3。

程式的功能為:開機上電首先跳轉到復位異常處理,在復位異常處理裡關閉看門狗,然後執行led控制程式,程式執行結果為板上4個led全亮。

led.s檔案:

1

@暫存器實體地址巨集定義

2#define wtcon 0x53000000

3#define gpbcon 0x56000010

4#define gpbdat 0x56000014

5#define gpbup 0x56000018

6 #define ngpb_output ((1

<<10)|(1

<<12)|(1

<<14)|(1

<<16))7

8.section .text

9.global _start

10_start:

11b reset @跳到復位異常處理程式

1213

reset:

14bl disable_watchdog @跳到關閉看門狗子程式

15bl control_led @跳到控制led子程式

16loop:

17b loop @死迴圈

1819

disable_watchdog:

20ldr r0,=wtcon @載入看門狗暫存器位址

21bic r1,r0,#0x20

22str

r1,[r0] @寫入看門狗暫存器

23mov

pc,lr @返回

2425

control_led:

26ldr r0,=gpbcon @載入io暫存器位址

27orr r1,r0,#ngpb_output

28str

r1,[r0]

29ldr r0,=0x0 @輸出低電平(led亮)

30ldr r1,=gpbdat

31str

r0,[r1]

32mov pc,lr @返回

makefile檔案:

1

led.bin:

2 arm-linux-gcc -g -c -o led.o led.s

3 arm-linux-ld -ttext 0x00000000 -g led.o -o led_elf

4 arm-linux-objcopy -o binary -s led_elf led.bin

5 rm -f led_elf led.o67

clean:

8 rm -f led.bin

在終端下執行make編譯生成led.bin二進位制檔案,通過bios燒寫到nand flash,從nand flash啟動。

ARM裸機led控制

define gpj0con 0xe0200240 define gpj0dat 0xe0200244 global start 將 start設定為外部屬性 start ldr r0,0x11111111 偽指令編譯器判斷是否為合法立即數 一般都是偽指令 ldr r1,gpj0con str r0...

ARM裸機之點亮LED

實驗開發版 s5pv210 1 什麼是gpio?general purpose input output 通用輸入 輸出 簡稱為gpio,屬於晶元引腳的一部分。嵌入式系統中常常有數量眾多,但是結構卻比較簡單的外部裝置 電路,對這些裝置 電路有的需要cpu為之提供控制手段,有的則需要被cpu用作輸入訊...

ARM 裸機 02 ARM裸機開發流程

執行在不同平台上的程式,開發過程不盡相同。為了更好地理解 arm 裸機的開發流程,我們先和比較熟悉的 windows linux 應用程式開發對比。不同平台程式開發流程對比示意 編譯嵌入式程式的平台稱為宿主機,譬如執行 ubuntu 系統的 pc。執行嵌入式程式的平台稱為目標機,譬如 arm 開發板...