代碼編輯分析:(運行時可以刪除注釋,開發板為mini2440)
創建匯編文件led_on.S
- .global _start
- -start:
- LDR R0,=0X56000010 //設置LED的GPIO控制寄存器GPBCON的模式為輸出模式,0X56000010為GPB的控制器地址,0X00000400:知設置GPB5的端口為 輸出模式是第10位和第11位為10則其余0~9位補0,得到100000000000b,換算為十六進制則為0X00000400
- MOV R1,#0X00000400
- STR R1,[R0]
- LDR R0,=0X56000014//0X56000014:GPBDAT寄存器地址,0X00000000:拉低GPB口的電壓
- MOV R1,#0X00000000
- STR R1,[R0]
- MAIN_LOOP://循環
- B MAIN_LOOP
Makefile文件
- led_on.bin:led_on.S
- arm-linux-gcc -g -c -o led_on.o led_on.S
- arm-linux-ld -Ttext 0x00000000 -g led_on.o -o led_on_elf
- arm-linux-objcopy -o binary -S led_on_elf led_on.bin
- clean:
- rm -f led_on.bin led_on_elf *.o
編譯:
利用samba服務上傳,通過終端進入上傳文件,編譯命令make
生成led_on.bin文件
測試:
下載到開發板,可以按照手冊上的下載到內存運行,即在nor flash模式下啟動,打開window終端和DNW下載led_on.bin
總結:萬事開頭難,這樣簡單的程序對那些高手而言可能不值一提,但是對於初學者來說真的步步維艱,希望這樣的分析,為自己的學習做個記錄,也為大家提供個參照。