參考資料:
https://github.com/friendlyarm/u-boot/tree/sunxi-v2017.x/arch/arm/include/asm/arch-sunxi
綠色LED是連接到PL10,按鍵則是連接到PL3
R_GPIO位址
PL_CFG0
PL_CFG1
PL_DATA
PL_PUL0
BUS_CLK_GATING_REG2
main.s
.global _start .equ PRCM, 0x01f01400 .equ CCU, 0x01c20000 .equ PIO, 0x01c20800 .equ R_PIO, 0x01f02c00 .equ PA_CFG1, (PIO + (0x24 * 0) + 0x04) .equ PA_DATA, (PIO + (0x24 * 0) + 0x10) .equ PL_CFG0, (R_PIO + (0x24 * 0) + 0x00) .equ PL_CFG1, (R_PIO + (0x24 * 0) + 0x04) .equ PL_DATA, (R_PIO + (0x24 * 0) + 0x10) .equ PL_PUL0, (R_PIO + (0x24 * 0) + 0x1c) .equ BUS_CLK_GATING_REG2, (CCU + 0x68) .equ PRCM_APB0_GATE, (PRCM + 0x28) .equ PRCM_APB0_RESET, (PRCM + 0xb0) .equ PRCM_SEC_SWITCH, (PRCM + 0x1d0) .arm .text _start: .long 0xea000016 .byte 'e', 'G', 'O', 'N', '.', 'B', 'T', '0' .long 0, __spl_size .byte 'S', 'P', 'L', 2 .long 0, 0 .long 0, 0, 0, 0, 0, 0, 0, 0 .long 0, 0, 0, 0, 0, 0, 0, 0 _vector: b reset b . b . b . b . b . b . b . reset: ldr r0, =BUS_CLK_GATING_REG2 ldr r1, [r0] orr r1, #(1 << 5) str r1, [r0] ldr r0, =PRCM_SEC_SWITCH ldr r1, =(1 << 2) | (1 << 1) | (1 << 0) str r1, [r0] ldr r0, =PRCM_APB0_GATE ldr r1, [r0] orr r1, #(1 << 0) str r1, [r0] ldr r0, =PRCM_APB0_RESET ldr r1, =(1 << 0) str r1, [r0] ldr r0, =PL_CFG0 ldr r1, =0x00000000 str r1, [r0] ldr r0, =PL_CFG1 ldr r1, =0x00000100 str r1, [r0] ldr r0, =PL_PUL0 ldr r1, =0x00000040 str r1, [r0] ldr r0, =PL_DATA 0: ldr r1, [r0] lsl r1, #7 eor r1, #(1 << 10) str r1, [r0] b 0b .end
P.S. 由於沒有PRCM相關文件可以參考,所以司徒從U-Boot把PRCM初始化的部份抄出來
完成