剛拿到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...