📄 exuart.cod
字号:
0015c e3a04001 mov r4, #1
00160 e5832100 str r2, [r3, #0x100]
00164 e5963008 ldr r3, [r6, #8]
; 134 : rEXUARTB_ISR_FCR_AFR = 0x07; // reset FIFO of transmit and recieve
00168 e3a0e007 mov lr, #7
0016c e5831300 str r1, [r3, #0x300]
00170 e5963008 ldr r3, [r6, #8]
00174 e5837000 str r7, [r3]
00178 e5963008 ldr r3, [r6, #8]
0017c e5832100 str r2, [r3, #0x100]
00180 e5963008 ldr r3, [r6, #8]
00184 e5832300 str r2, [r3, #0x300]
00188 e5963008 ldr r3, [r6, #8]
0018c e5830300 str r0, [r3, #0x300]
00190 e5963008 ldr r3, [r6, #8]
00194 e5834200 str r4, [r3, #0x200]
00198 e5963008 ldr r3, [r6, #8]
0019c e583e200 str lr, [r3, #0x200]
; 135 :
; 136 : /*
; 137 : * Don't enable UART, place in polled mode.
; 138 : * UART is not enabled till GPIO pins are configured also.
; 139 : * We don't have to configure INTC_REGS to use IRQ and enable interrupt,
; 140 : * as UART is used in polling mode only.
; 141 : */
; 142 : rEXUARTB_IER_DLM = 0x00; // don't need interrupt register in polled mode
001a0 e5963008 ldr r3, [r6, #8]
001a4 e5832100 str r2, [r3, #0x100]
; 143 :
; 144 : /*
; 145 : * Ensuring loop back test mode is off
; 146 : * even though MCR reset value is 0x0.
; 147 : */
; 148 : rEXUARTB_MCR = 0x00; // UART is in normal mode,not lookback model.
001a8 e5963008 ldr r3, [r6, #8]
001ac |$L37772|
001ac e5832400 str r2, [r3, #0x400]
001b0 |$L37550|
; 149 : }
; 150 : }
001b0 e8bd40f0 ldmia sp!, {r4 - r7, lr}
001b4 e12fff1e bx lr
001b8 |$L37778|
001b8 00000000 DCD |v_pGPIOReg|
001bc |$M37774|
ENDP ; |ExUart_Initial|
EXPORT |ExSerialARxChar|
00000 AREA |.text| { |ExSerialARxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ExSerialARxChar|, PDATA, SELECTION=5, ASSOC=|.text| { |ExSerialARxChar| } ; comdat associative
|$T37786| DCD |$L37785|
DCD 0x40000800
; Function compile flags: /Ogsy
00000 AREA |.text| { |ExSerialARxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ExSerialARxChar| PROC
; 154 : {
00000 |$L37785|
00000 |$M37783|
; 155 : if((rEXUARTA_LSR & 0x1)) //Receive data ready
00000 e59f3014 ldr r3, [pc, #0x14]
00004 e5932000 ldr r2, [r3]
00008 e5923500 ldr r3, [r2, #0x500]
0000c e3130001 tst r3, #1
; 156 : {
; 157 : return ExReadReg(EXUART_A_BASE_U_VIRTUAL, RHR_OFFSET);
00010 15d20000 ldrneb r0, [r2]
; 158 : }
; 159 : else
; 160 : {
; 161 : return 0xFFFFFFFF;
00014 03e00000 mvneq r0, #0
; 162 : }
; 163 : }
00018 e12fff1e bx lr
0001c |$L37788|
0001c 00000000 DCD |EXUART_A_BASE_U_VIRTUAL|
00020 |$M37784|
ENDP ; |ExSerialARxChar|
EXPORT |ExSerialATxChar|
00000 AREA |.text| { |ExSerialATxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ExSerialATxChar|, PDATA, SELECTION=5, ASSOC=|.text| { |ExSerialATxChar| } ; comdat associative
|$T37797| DCD |$L37796|
DCD 0x40001100
; Function compile flags: /Ogsy
00000 AREA |.text| { |ExSerialATxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ExSerialATxChar| PROC
; 167 : {
00000 |$L37796|
00000 |$M37794|
; 168 : if(data=='\n')
00000 e20030ff and r3, r0, #0xFF
00004 e59f1034 ldr r1, [pc, #0x34]
00008 e353000a cmp r3, #0xA
0000c 1a000005 bne |$L37792|
00010 e5912000 ldr r2, [r1]
00014 |$L37574|
; 169 : {
; 170 : while(!(rEXUARTA_LSR & 0x20));
00014 e5923500 ldr r3, [r2, #0x500]
00018 e3130020 tst r3, #0x20
0001c 0afffffc beq |$L37574|
; 171 : ExWriteReg(EXUART_A_BASE_U_VIRTUAL, THR_OFFSET, '\r');
00020 e3a0300d mov r3, #0xD
00024 e5c23000 strb r3, [r2]
00028 |$L37792|
00028 e5912000 ldr r2, [r1]
0002c |$L37580|
; 172 : }
; 173 :
; 174 : while(!(rEXUARTA_LSR & 0x20)); //Wait until THR is empty.
0002c e5923500 ldr r3, [r2, #0x500]
00030 e3130020 tst r3, #0x20
00034 0afffffc beq |$L37580|
; 175 : ExWriteReg(EXUART_A_BASE_U_VIRTUAL, THR_OFFSET, data);
00038 e5c20000 strb r0, [r2]
; 176 : }
0003c e12fff1e bx lr
00040 |$L37799|
00040 00000000 DCD |EXUART_A_BASE_U_VIRTUAL|
00044 |$M37795|
ENDP ; |ExSerialATxChar|
EXPORT |ExSerialATxString|
00000 AREA |.text| { |ExSerialATxString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ExSerialATxString|, PDATA, SELECTION=5, ASSOC=|.text| { |ExSerialATxString| } ; comdat associative
|$T37809| DCD |$L37808|
DCD 0x40000c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |ExSerialATxString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ExSerialATxString| PROC
; 180 : {
00000 |$L37808|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M37806|
00004 e1a04000 mov r4, r0
; 181 : while(*p)
00008 e5d43000 ldrb r3, [r4]
0000c ea000003 b |$L37805|
00010 |$L37589|
; 182 : {
; 183 : ExSerialATxChar(*p);
00010 e1a00c03 mov r0, r3, lsl #24
00014 e1a00c40 mov r0, r0, asr #24
00018 eb000000 bl ExSerialATxChar
0001c e5f43001 ldrb r3, [r4, #1]!
00020 |$L37805|
00020 e3530000 cmp r3, #0
00024 1afffff9 bne |$L37589|
; 184 : p++;
; 185 : }
; 186 : }
00028 e8bd4010 ldmia sp!, {r4, lr}
0002c e12fff1e bx lr
00030 |$M37807|
ENDP ; |ExSerialATxString|
EXPORT |ExSerialBRxChar|
00000 AREA |.text| { |ExSerialBRxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ExSerialBRxChar|, PDATA, SELECTION=5, ASSOC=|.text| { |ExSerialBRxChar| } ; comdat associative
|$T37818| DCD |$L37817|
DCD 0x40000800
; Function compile flags: /Ogsy
00000 AREA |.text| { |ExSerialBRxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ExSerialBRxChar| PROC
; 191 : {
00000 |$L37817|
00000 |$M37815|
; 192 : if((rEXUARTB_LSR & 0x1)) //Receive data ready
00000 e59f3014 ldr r3, [pc, #0x14]
00004 e5932000 ldr r2, [r3]
00008 e5923500 ldr r3, [r2, #0x500]
0000c e3130001 tst r3, #1
; 193 : {
; 194 : return ExReadReg(EXUART_B_BASE_U_VIRTUAL, RHR_OFFSET);
00010 15d20000 ldrneb r0, [r2]
; 195 : }
; 196 : else
; 197 : {
; 198 : return 0xFFFFFFFF;
00014 03e00000 mvneq r0, #0
; 199 : }
; 200 : }
00018 e12fff1e bx lr
0001c |$L37820|
0001c 00000000 DCD |EXUART_B_BASE_U_VIRTUAL|
00020 |$M37816|
ENDP ; |ExSerialBRxChar|
EXPORT |ExSerialBTxChar|
00000 AREA |.text| { |ExSerialBTxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ExSerialBTxChar|, PDATA, SELECTION=5, ASSOC=|.text| { |ExSerialBTxChar| } ; comdat associative
|$T37829| DCD |$L37828|
DCD 0x40001100
; Function compile flags: /Ogsy
00000 AREA |.text| { |ExSerialBTxChar| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ExSerialBTxChar| PROC
; 204 : {
00000 |$L37828|
00000 |$M37826|
; 205 : if(data=='\n')
00000 e20030ff and r3, r0, #0xFF
00004 e59f1034 ldr r1, [pc, #0x34]
00008 e353000a cmp r3, #0xA
0000c 1a000005 bne |$L37824|
00010 e5912000 ldr r2, [r1]
00014 |$L37605|
; 206 : {
; 207 : while(!(rEXUARTB_LSR & 0x20));
00014 e5923500 ldr r3, [r2, #0x500]
00018 e3130020 tst r3, #0x20
0001c 0afffffc beq |$L37605|
; 208 : ExWriteReg(EXUART_B_BASE_U_VIRTUAL, THR_OFFSET, '\r');
00020 e3a0300d mov r3, #0xD
00024 e5c23000 strb r3, [r2]
00028 |$L37824|
00028 e5912000 ldr r2, [r1]
0002c |$L37611|
; 209 : }
; 210 :
; 211 : while(!(rEXUARTB_LSR & 0x20)); //Wait until THR is empty.
0002c e5923500 ldr r3, [r2, #0x500]
00030 e3130020 tst r3, #0x20
00034 0afffffc beq |$L37611|
; 212 : ExWriteReg(EXUART_B_BASE_U_VIRTUAL, THR_OFFSET, data);
00038 e5c20000 strb r0, [r2]
; 213 : }
0003c e12fff1e bx lr
00040 |$L37831|
00040 00000000 DCD |EXUART_B_BASE_U_VIRTUAL|
00044 |$M37827|
ENDP ; |ExSerialBTxChar|
EXPORT |ExSerialBTxString|
00000 AREA |.text| { |ExSerialBTxString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ExSerialBTxString|, PDATA, SELECTION=5, ASSOC=|.text| { |ExSerialBTxString| } ; comdat associative
|$T37841| DCD |$L37840|
DCD 0x40000c01
; Function compile flags: /Ogsy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -