Sanity check on setup for uart1 imx6 please?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Sanity check on setup for uart1 imx6 please?

ソリューションへジャンプ
1,134件の閲覧回数
johnballance
Contributor III

Hi

running bare metal, I have a loader that loads code at 0x17800000 .. cf uboot.

I need a serial debug port asap, so want to set it up BEFORE turning any mmu stuff on. This means I have to set up all relevant clock.pad.mux, etc settings, as well as the actual uart.

The assembler I use for this is below. Can anyone suggest what I've missed?  Please assume I've set the base addresses to the correct values for physical addresses

Thanks in advance  (& is equivalent to 0x)

HAL_UARTStartUp

; first setup pads,pins, and clock sources

        ldr     a2, [sb, #:INDEX:IOMUXC_Base]

        ldr     a3, =0x1b0b0             ; pad drive stuff

        str    a3, [a2,#IOMUXC_SW_PAD_CTL_PAD_EIM_D19-IOMUXC_BASE_ADDR]     ; cts

        str    a3, [a2,#IOMUXC_SW_PAD_CTL_PAD_EIM_D20-IOMUXC_BASE_ADDR]     ; rts

        str    a3, [a2,#IOMUXC_SW_PAD_CTL_PAD_CSI0_DAT10-IOMUXC_BASE_ADDR]

        str    a3, [a2,#IOMUXC_SW_PAD_CTL_PAD_CSI0_DAT11-IOMUXC_BASE_ADDR]

        mov    a3, #3                  ; alt3

        str    a3, [a2,#IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT10-IOMUXC_BASE_ADDR]  ;txd

        str    a3, [a2,#IOMUXC_SW_MUX_CTL_PAD_CSI0_DAT11-IOMUXC_BASE_ADDR]  ;rxd

        mov    a3, #1                  ;UART1_UART_RX_DATA_SELECT_INPUT

        str    a3, [a2,#IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT-IOMUXC_BASE_ADDR]

        str    a3, [a2,#IOMUXC_UART1_IPP_UART_RTS_B_SELECT_INPUT-IOMUXC_BASE_ADDR]

        ldr     a2, [sb, #:INDEX:CCM_Base]

; root clock o/p to uart

        ldr    a3, [a2,#CCM_CSCDR1_OFFSET]

        bic    a3, a3, #&3f        ; ensure uart_podf set to 1

        str    a3, [a2,#CCM_CSCDR1_OFFSET]

; turn on uart clock supply     

        ldr    a3, [a2,#CCM_CCGR5_OFFSET]

        orr    a3, a3, #&f<<24        ; ensure uart clock and serial clock on

        str    a3, [a2,#CCM_CCGR5_OFFSET]

; now set uart registers up

        BaseAddr

        mov     a2, #1                         ;reset UART state machines

        str     a2, [a1, #UART_UCR2_OFFSET]

        mov     a2, #&60<<8

        add    a2, a2, #&66                   ;UCR2 = 8n2,IRTS,CTSC,TXEN,RXEN=1,reset clr

        str     a2, [a1, #UART_UCR2_OFFSET]

        mov     a2, #1                         ;UARTEN = 1,enable the clock

        str     a2, [a1, #UART_UCR1_OFFSET]

        mov     a2, #0x4

        str     a2, [a1, #UART_UCR3_OFFSET]    ;set RXD_MUX_SEL bit

        ldr     a2, [a1, #UART_UFCR_OFFSET]

        bic     a2, a2, #7<<7

        orr     a2, a2, #5<<7                  ;set RFDIV to div-by-1 or b101

        str     a2, [a1, #UART_UFCR_OFFSET]

        mov     a2, #0x4

        str     a2, [a1, #UART_UBIR_OFFSET]

        mov     a2,#0xd8

        str     a2, [a1, #UART_UBMR_OFFSET]

        MOV     pc, lr

ラベル(1)
0 件の賞賛
返信
1 解決策
937件の閲覧回数
johnballance
Contributor III

To Answer this, it had 1 error: IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT needed setting to 0 on my board (wandboard) to get txd onto the correct pad of CSI_DAT10 and 11

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
938件の閲覧回数
johnballance
Contributor III

To Answer this, it had 1 error: IOMUXC_UART1_IPP_UART_RXD_MUX_SELECT_INPUT needed setting to 0 on my board (wandboard) to get txd onto the correct pad of CSI_DAT10 and 11

0 件の賞賛
返信