初學JZ2440之GPIO彙編點燈

2021-06-21 16:05:19 字數 1808 閱讀 8707

剛拿到jz2440開發板熟悉了它的程式燒錄之後,我想大家的做法肯定都差不多,肯定是準備自己的程式設計之旅了,當然第乙個實驗肯定不能少了偉大 「點燈實驗」。

點亮led非常簡單,為了養成良好的學習習慣,還是一步一步來。

第一步:檢視硬體連線圖(不管是什麼板子,這個硬體原理圖肯定是你的板子廠商提供給你的)

從我的原理圖中可以看出,我所用的開發板外接了三個led燈,分別連線到gpf4、gpf5、gpf6管腳,並且當gpio(通用輸入輸出口)輸出低電平時led燈被點亮,輸出高電平時led熄滅。

第二步:檢視晶元手冊,獲取相關暫存器的配置,這個晶元手冊是由你所用的開發板上的soc(cpu晶元)的生產廠商提供的,我的jz2440開發板用的是s3c2440晶元,它是由三星公司基於arm920t核設計的。

從上面的資訊中很容易得出gpf4/5/6要設定為輸出口功能時

gpfcon 控制暫存器bit[13:8]的值需要設定為:010101;

點亮/熄滅三盞燈時需要設定gpfdat暫存器bit[6:4]的值為:000、111;gpfup上拉暫存器不要想配置。

第三步編寫匯程式設計序:gpio_led.s

.text

.global _start

_start:

@關看門狗(對應位址是0x53000000),不然系統會不停的復位

ldr      r0, =0x53000000

mov   r1, #0x0

str      r1, [r0]

@點亮三盞led燈

ldr      r0, =0x56000050

mov   r1, #0x00001500@bit[13:8]=010101

str      r1, [r0]

ldr      r0, =0x56000054

mov   r1, #0x00000000@bit[6:4]=000

str      r1, [r0]

main_loop:

b        main_loop

第四步編寫編譯鏈結程式makefile

cflag = -wall

gpio_led.bin : gpio_led.s

#編譯但不鏈結

arm-linux-gcc $(cflag) -g -o gpio_led.o -c gpio_led.s

#指定鏈結位址為0x00000000,生成elf格式映象

arm-linux-ld  -ttext 0x00000000 -g gpio_led.o -o gpio_led_elf

#去除elf格式資訊

arm-linux-objcopy -o binary -s gpio_led_elf  gpio_led.bin

clean:

rm  -rf   gpio_led.bin   gpio_led_elf   *.o

JZ2440學習筆記

1.easyopenjtag工具用於為目標板初次燒寫u boot再合適不過了。2.燒寫核心和檔案系統使用tftp nfs,速度是很快的哦。toc 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基...

JZ2440 系統時鐘

jz2440 系統時鐘。時鐘控制邏輯給整個晶元提供了三種時鐘。fclk 用於cpu核心 hclk 用於ahb匯流排上裝置,比如cpu核,儲存控制器,中斷控制器,lcd控制器,dma控制器,和usb主機模組,主要用於高效能模組 pclk 用於apb匯流排上裝置,比如watchdog,iis,i2c,p...

Jz2440燒寫系統

linux 2.6.22 步驟 1 openjtag燒寫u boot oflash與檔案在同一目錄 oflash 0 1 00 0 u boot.bin 2 u boot下燒寫系統 tftp 關閉防火牆 tftp 30000000uimage 4.3 nand erase kernel nand w...