.globl _start
_start:
/* 硬件相關的設置 */
/* Peri port setup */
ldr r0, =0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff)
/* 關看門狗 */
/* 往WTCON(0x7E004000)寫0 */
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
/* 設置GPMCON讓GPM3作爲輸出引腳 */
ldr r1, =0x7F008820
mov r0, #0x1000
str r0, [r1]
/* 設置GPMDAT讓GPM3輸出0 */
ldr r1, =0x7F008824
mov r0, #0
str r0, [r1]
halt:
b halt
1. 把外設基地址告訴CPU.
因爲CPU訪問某個地址時不知道訪問的是外設地址還是內存地址,需要協處理指令設置外設地址範圍。
S3C6410外設地址範圍256M(0x70000000-0x7fffffff) ,如代碼所設置。
協處理器訪問指令參見我的另一篇博文 CP15協處理器訪問指令MCR/MRC解析
For example:
MRC p15, 0, <Rd>, c15, c2, 4 ; Read Peripheral Port Memory Remap Register
MCR p15, 0, <Rd>, c15, c2, 4 ; Write Peripheral Port Memory Remap Register
2.關閉看門狗
3. IO口操作
OK6410開發板IO口資源如下圖所示:
IO口主要以下幾點用途:輸出,輸入,外部觸發中斷,複用功能;只要配置相應的寄存器即可。LED操作需要配置爲輸出口。
代碼設置GPM3爲輸出,其餘位輸入,再向GPMDAT寫入0,結果是點亮LED4。