【JZ2440筆記】裸機實驗點亮LED

 

一、前言

最近在學韋東山的JZ2440開發板,於是記錄下學習過程中的筆記。一般學程序寫的第一個例子是打印“Hello World”,而學單片機的第一個例子一般都是點亮LED,學ARM的話如果從裸機開始學,也跟玩單片機差不多,從點亮LED開始。

 

二、實驗步驟

1、目標

點亮開發板上的3個LED燈。

2、硬件連線

 點亮LED需要S3C2440芯片的IO引腳GPF4、GPF5、GPF6輸出低電平即可。

3、寄存器配置

和玩單片機一個套路,配置IO模式(GPFCON寄存器)和要輸出的電平(GPFDAT)就行了。即GPFCON寄存器給0x00001500把GPF4、5、6配置成輸出模式,GPFDAT給0x00000000讓三個IO輸出低電平。

4、編寫代碼

這裏比較乾脆,教程裏從彙編講起,所以用匯編語言寫的代碼。

led_turnOn.S

@******************************************************************************
@ 功能:LED點燈程序,點亮LED1、2、4
@ 對應IO爲GPF4、GPF5、GPF6
@******************************************************************************  

.text
.global _start
_start:
		LDR R0,=0x56000050	@ R0放入GPFCON寄存器的地址
		
		MOV	R1,#0x00001500 	@ R1放入GPFCON想要設置的值
							@ 將GPF4、GPF5、GPF6設置爲輸出模式
		STR R1,[R0]			@ 將R1值放入R0指向的地址,輸出模式配置完成
		
		LDR R0,=0x56000054	@ R0放入GPFDAT寄存器的地址
		
		MOV R1,#0x00000000	@ R1放入GPFDAT想要設置的值
							@ 將GPF4、GPF5、GPF6設置爲輸出低電平
		STR R1,[R0]			@ 將R1值放入R0指向的地址,輸出電平配置完成
		
		@ 還有個GPFUP寄存器可以配置IO上下拉的,這裏不配置也行
		
MAIN_LOOP:
		B	MAIN_LOOP		@ 程序原地死循環跳轉

MakeFile

led_turnOn.bin : led_turnOn.S
	#根據led_turnOn.S生成目標文件led_turnOn.o,
	#-g加入調試信息,-c編譯不鏈接,-o目標文件
	arm-linux-gcc -g -c -o led_turnOn.o led_turnOn.S
	#Ttext指定代碼段的鏈接地址
	arm-linux-ld -Ttext 0x0000000 -g led_turnOn.o -o led_turnOn_elf
	#根據led_turnOn_elf生成二進制文件,-O binary輸出二進制
	arm-linux-objcopy -O binary -S led_turnOn_elf led_turnOn.bin
clean:
	#刪除bin和中間文件
	rm -f   led_turnOn.bin led_turnOn_elf *.o

將這兩個文件使用FTP工具拷貝到Linux下,執行make命令生成二進制文件led_turnOn.bin,將該文件用FTP工具拷貝回Windows下,可以燒寫到開發板上運行了。

 

5、燒寫代碼到開發板

有很多種方式燒寫代碼,如openJTAG或者DNW,這裏使用openJTAG。打開Windows命令行CMD工具,進入到led_turnOn.bin所在目錄,輸入oflash [文件名]。

選擇0,使用的燒寫工具爲openJTAG:

CPU選擇1,S3C2440:

選擇燒寫到NandFlash中去:

燒寫到NandFlash的塊0:

爲什麼把bin文件燒寫到NandFlash中去而且還是塊0呢,因爲S3C2440不像單片機一樣把程序燒到內部的ROM,它的程序放在外部存儲器中,上電之後再到外部存儲器中去讀取出來運行。在這裏,S3C2440內部有一個4KB大小的片內SRAM,沒有片內ROM供我們使用,上電之後有個默認操作,就是S3C2440在設置爲Nand啓動之後,會將NandFlash塊0的前4KB內容拷貝到內部的4KB片內SRAM內,然後PC指針指向SRAM的開始地址,從SRAM中讀取內容作爲程序指令然後運行。所以bin文件是燒寫到NandFlash中去的。

最後拔掉openJTAG和開發板的連線,撥碼開關選擇Nand啓動,開發板重新上電運行,三個LED燈就點亮了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章