⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exuart.cod

📁 一个berry eboot 源代码
💻 COD
📖 第 1 页 / 共 4 页
字号:
  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 + -