마이크로비젼 기술지원팀입니다.
위 관련하여 확인한 결과 아래를 참고하여 진행해 보시길 바랍니다.
mv4412-lcd/u-boot-mv4412-dev/board/samsung/smdkv310 폴더에서 “lowlevel_init.S”파일을 참고.
아래 소스에서 확인한 것처럼 어셈으로 uart를 등록하는 것을 볼 수 있습니다.
uart_asm_init:
/* set GPIO to enable UART */
@ GPIO setting for UART for UART0/1/2/3
ldr r0, =0x11400000
ldr r1, =0x22222222
str r1, [r0]
ldr r0, =0x11400020
ldr r1, =0x222222
str r1, [r0]
ldr r0, =S5PV310_CLOCK_BASE
ldr r1, =CLK_SRC_PERIL0_VAL
ldr r2, =CLK_SRC_PERIL0_OFFSET
str r1, [r0, r2]
ldr r1, =CLK_DIV_PERIL0_VAL
ldr r2, =CLK_DIV_PERIL0_OFFSET
str r1, [r0, r2]
ldr r0, =S5PV310_UART_CONSOLE_BASE
ldr r1, =0x111
str r1, [r0, #UFCON_OFFSET]
mov r1, #0x3
str r1, [r0, #ULCON_OFFSET]
ldr r1, =0x3c5
str r1, [r0, #UCON_OFFSET]
ldr r1, =UART_UBRDIV_VAL
str r1, [r0, #UBRDIV_OFFSET]
ldr r1, =UART_UDIVSLOT_VAL
str r1, [r0, #UDIVSLOT_OFFSET]
ldr r1, =0x4f4f4f4f
str r1, [r0, #UTXH_OFFSET] @'O'
mov pc, lr
u-boot-mv4412-dev/board/samsung/smdk4212폴더에서 “smdk4212.c”파일을 참고.
아래와 같이 따로 매크로로 정의를 하지 않고 writel / readl을 이용하여 직접 번지에 값을 읽고 / 쓰기를 합니다.
writel(0x00000000, 0x11000000 + 0xC20);
writel(0x0000, 0x11000000 + 0xC28);
writel(0x00000100, 0x11000000 + 0x100); //GPL2[2]
writel(0x04, 0x11000000 + 0x104);
writel(0x01000000, 0x11000000 + 0x2E0);
writel(0x00000040, 0x11000000 + 0x2E4);
}
--------------------------------------------------------------------------------------------------
reg=readl(0x11400000);
printf("GPA0CON=0x%08x\n",reg);
reg=readl(0x106E0000);
printf("GPV0CON=0x%08x\n",reg);
reg=readl(0x106E0020);
printf("GPV1CON=0x%08x\n",reg);
reg=readl(0x106E0060);
printf("GPV2CON=0x%08x\n",reg);
reg=readl(0x106E0080);