s3c2440基本io/ports led點亮
Led對應管腳如下圖所示:
所以需要設置GPB相關(guān)的寄存器,在IO Port里,Port B Control Register。有11個io input/output接口
GPB5
Led1
GPB6
Led2
GPB7
Led3
GPB8
Led4
S3C2440存在接口復用,所以即需要設置PnCON以確定io口的功能。
如果接口設置位output則可寫data寄存器進行控制,若設為input可讀寄存器的值。
相關(guān)的還有一個混雜寄存器和外部中斷寄存器,可不用關(guān)心。
可知相關(guān)的兩個寄存器的地址為0x56000010,,0x56000014。
對于GPBCON,各個接口都應該選01,作為output使用
0x 00 0 0
要是GPB5-8全部點亮,設置01 0101 0100 00000000 ----------------> 0x15400
LED低電平點亮:
所有匯編程序如下
.text
.global_start
start:
LDR R0,=0x56000010 @R0設為GPBCON寄存器,此寄存器用于選擇端口B引腳的功能:
@是輸入輸出還是其他
MOV R1, #0x15400 @要是GPB5-8全部點亮,設置01 01010100 0000 0000 --> 0x15400
STRR1,[R0] @將GPBCON寄存器設置為0x15400
MOV R1,#0x00000000 @
STRR1,[R0] @GPB5-8輸出0,LED1-4全部點亮
MAIN_LOOP:
B MAIN_LOOP
Makefile:
Led_on:led_on.s
arm_linux_gcc -g -o led_on.o led_on.s
#編譯
arm_linux_ld -Ttext 0x00000000 -g led_on.o led_tmp.o
#鏈接
arm_linux_objcopy -O binary -S led_on_tmp.o led_on
#把ELF格式的可執(zhí)行那個文件led_on_tmp.o轉(zhuǎn)換成
二進制文件格式led_on
Clean:
rm -f led_on
rm *.o
實驗還未經(jīng)過驗證。