📄 gpx_serial.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237
TTL D:\WINCE500\PLATFORM\up_pxa270cl\Src\Drivers\Gpx\.\gpx_serial.cpp
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.bss|, NOINIT
|g_pDebugUARTPort| % 0x4
|pGPIO_REGS| % 0x4
|pCLKMGR_REGS| % 0x4
EXPORT |?DllEntry@@YA_NPAXK0@Z| ; DllEntry
; File d:\wince500\platform\up_pxa270cl\src\drivers\gpx\gpx_serial.cpp
00000 AREA |.text| { |?DllEntry@@YA_NPAXK0@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?DllEntry@@YA_NPAXK0@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DllEntry@@YA_NPAXK0@Z| } ; comdat associative
|$T30895| DCD |$L30894|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |?DllEntry@@YA_NPAXK0@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?DllEntry@@YA_NPAXK0@Z| PROC ; DllEntry
; 38 : {
00000 |$L30894|
00000 |$M30892|
; 39 : return true;
00000 e3a00001 mov r0, #1
; 40 : }
00004 e12fff1e bx lr
00008 |$M30893|
ENDP ; |?DllEntry@@YA_NPAXK0@Z|, DllEntry
EXPORT |?GPXWriteByte@@YAXE@Z| ; GPXWriteByte
00000 AREA |.text| { |?GPXWriteByte@@YAXE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?GPXWriteByte@@YAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?GPXWriteByte@@YAXE@Z| } ; comdat associative
|$T30904| DCD |$L30903|
DCD 0x40000a00
; Function compile flags: /Ogsy
00000 AREA |.text| { |?GPXWriteByte@@YAXE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?GPXWriteByte@@YAXE@Z| PROC ; GPXWriteByte
; 44 : {
00000 |$L30903|
00000 |$M30901|
; 45 :
; 46 : if (!g_pDebugUARTPort)
00000 e59f301c ldr r3, [pc, #0x1C]
00004 e5932000 ldr r2, [r3]
00008 e3520000 cmp r2, #0
0000c 0a000003 beq |$L30721|
00010 |$L30724|
; 47 : {
; 48 : return;
; 49 : }
; 50 :
; 51 : // Spin if FIFO has more than half data.
; 52 : //
; 53 : while(!(g_pDebugUARTPort->lsr & 0x020));
00010 e5923014 ldr r3, [r2, #0x14]
00014 e3130020 tst r3, #0x20
00018 0afffffc beq |$L30724|
; 54 :
; 55 : // Write a character byte to the FIFO.
; 56 : //
; 57 : g_pDebugUARTPort->thr_rbr_dll = (unsigned char)ch;
0001c e5820000 str r0, [r2]
00020 |$L30721|
; 58 :
; 59 : }
00020 e12fff1e bx lr
00024 |$L30906|
00024 00000000 DCD |g_pDebugUARTPort|
00028 |$M30902|
ENDP ; |?GPXWriteByte@@YAXE@Z|, GPXWriteByte
EXPORT |?GPXReadByte@@YAHXZ| ; GPXReadByte
00000 AREA |.text| { |?GPXReadByte@@YAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?GPXReadByte@@YAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?GPXReadByte@@YAHXZ| } ; comdat associative
|$T30917| DCD |$L30916|
DCD 0x40000d00
; Function compile flags: /Ogsy
00000 AREA |.text| { |?GPXReadByte@@YAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?GPXReadByte@@YAHXZ| PROC ; GPXReadByte
; 63 : {
00000 |$L30916|
00000 |$M30914|
; 64 : int data = READ_NODATA;
; 65 : UINT32 LSR;
; 66 :
; 67 : if (!g_pDebugUARTPort)
00000 e59f3028 ldr r3, [pc, #0x28]
00004 e5933000 ldr r3, [r3]
00008 e3530000 cmp r3, #0
; 68 : {
; 69 : return(data);
0000c 0a000005 beq |$L30913|
; 70 : }
; 71 :
; 72 : // Read LSR.
; 73 : //
; 74 : LSR = g_pDebugUARTPort->lsr;
00010 e5932014 ldr r2, [r3, #0x14]
; 75 :
; 76 : // Return if no data.
; 77 : //
; 78 : if(!(LSR & 0x1))
00014 e3120001 tst r2, #1
; 79 : {
; 80 : return(data);
00018 0a000002 beq |$L30913|
; 81 : }
; 82 :
; 83 : // Read data.
; 84 : //
; 85 : data = g_pDebugUARTPort->thr_rbr_dll;
0001c e5930000 ldr r0, [r3]
; 86 :
; 87 : // Signal error if PE or FE was set.
; 88 : // Do nothing if BI or OE was set.
; 89 : //
; 90 : if(LSR & 0x0c)
00020 e312000c tst r2, #0xC
00024 0a000000 beq |$L30733|
00028 |$L30913|
; 91 : {
; 92 : data = READ_NODATA;
00028 e3e00000 mvn r0, #0
0002c |$L30733|
; 93 : }
; 94 :
; 95 : return(data);
; 96 :
; 97 : }
0002c e12fff1e bx lr
00030 |$L30919|
00030 00000000 DCD |g_pDebugUARTPort|
00034 |$M30915|
ENDP ; |?GPXReadByte@@YAHXZ|, GPXReadByte
EXPORT |?GPX_Close@@YA_NK@Z| ; GPX_Close
00000 AREA |.text| { |?GPX_Close@@YA_NK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?GPX_Close@@YA_NK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?GPX_Close@@YA_NK@Z| } ; comdat associative
|$T30927| DCD |$L30926|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |?GPX_Close@@YA_NK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?GPX_Close@@YA_NK@Z| PROC ; GPX_Close
; 103 : {
00000 |$L30926|
00000 |$M30924|
; 104 : bool bret=true;
; 105 : return bret;
00000 e3a00001 mov r0, #1
; 106 : }
00004 e12fff1e bx lr
00008 |$M30925|
ENDP ; |?GPX_Close@@YA_NK@Z|, GPX_Close
EXPORT |?GPX_Deinit@@YA_NK@Z| ; GPX_Deinit
00000 AREA |.text| { |?GPX_Deinit@@YA_NK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?GPX_Deinit@@YA_NK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?GPX_Deinit@@YA_NK@Z| } ; comdat associative
|$T30936| DCD |$L30935|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |?GPX_Deinit@@YA_NK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?GPX_Deinit@@YA_NK@Z| PROC ; GPX_Deinit
; 109 : {
00000 |$L30935|
00000 |$M30933|
; 110 : return true;
00000 e3a00001 mov r0, #1
; 111 : }
00004 e12fff1e bx lr
00008 |$M30934|
ENDP ; |?GPX_Deinit@@YA_NK@Z|, GPX_Deinit
EXPORT |?PreInit@@YAXI@Z| ; PreInit
00000 AREA |.text| { |?PreInit@@YAXI@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?PreInit@@YAXI@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?PreInit@@YAXI@Z| } ; comdat associative
|$T30945| DCD |$L30944|
DCD 0x40003201
; Function compile flags: /Ogsy
00000 AREA |.text| { |?PreInit@@YAXI@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?PreInit@@YAXI@Z| PROC ; PreInit
; 114 : {
00000 |$L30944|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M30942|
; 115 : // Ensure that UART interrupts are turned off.
; 116 : //
; 117 : g_pDebugUARTPort->lcr = 0x0; // Clear DLAB.
00004 e59f20b8 ldr r2, [pc, #0xB8]
00008 e3a05000 mov r5, #0
; 118 : g_pDebugUARTPort->ier_dlh = 0x0; // IER_DLH = 0x0.
; 119 :
; 120 : // Set the Baud Rate (Divisor low = DEBUG_BAUD_38400).
; 121 : // The divisor latches are at offsets 0 and 1, which are
; 122 : // receive/transmit data and ier registers.
; 123 : //
; 124 : g_pDebugUARTPort->lcr = 0x80; // Access Divisor.
0000c e3a03080 mov r3, #0x80
00010 e592e008 ldr lr, [r2, #8]
; 125 : g_pDebugUARTPort->thr_rbr_dll = baud; // Low byte divisor.
; 126 : g_pDebugUARTPort->ier_dlh = 0x00; // High byte divisor.
; 127 : g_pDebugUARTPort->lcr = 0x0; // Clear DLAB.
; 128 :
; 129 : //Setting UART properties to 8N1
; 130 : //
; 131 : g_pDebugUARTPort->lcr = 0x3; // 8 bits, 1 stop, no parity. Also LCR DLAB bit = 0.
00014 e3a01003 mov r1, #3
; 132 :
; 133 : g_pDebugUARTPort->iir_fcr = 0x01; // Enable the FIFO.
00018 e3a04001 mov r4, #1
0001c e58e500c str r5, [lr, #0xC]
00020 e58e5004 str r5, [lr, #4]
00024 e58e300c str r3, [lr, #0xC]
00028 e58e0000 str r0, [lr]
0002c e58e5004 str r5, [lr, #4]
00030 e58e500c str r5, [lr, #0xC]
00034 e1a0300e mov r3, lr
00038 e58e100c str r1, [lr, #0xC]
0003c e5a34008 str r4, [r3, #8]!
; 134 : g_pDebugUARTPort->iir_fcr = 0x07; // Clear Rx,Tx FIFOs.
; 135 :
; 136 : // Don't enable UART interrupts - we'll poll for the data.
; 137 : //
; 138 : g_pDebugUARTPort->ier_dlh = 0x0;
; 139 :
; 140 : // Ensure loop-back test mode is off even though MCR reset value is 0x0.
; 141 : //
; 142 : g_pDebugUARTPort->mcr = 0x0; // UART is in normal mode.
; 143 :
; 144 : // Configure GPIO pins for FFUART
; 145 : //
; 146 :
; 147 :
; 148 : pGPIO_REGS->GPCR1 |= (1<<15);
00040 e5921004 ldr r1, [r2, #4]
00044 e3a00007 mov r0, #7
00048 e5830000 str r0, [r3]
0004c e58e5004 str r5, [lr, #4]
00050 e58e5010 str r5, [lr, #0x10]
00054 e5913028 ldr r3, [r1, #0x28]
; 149 :
; 150 : // Configure direction of GPIO pins 42 and 44 as input
; 151 : // and GPIO pins 43 and 45 as output.
; 152 : //
; 153 : pGPIO_REGS->GPDR1 &= ~( 1<<14);
; 154 : pGPIO_REGS->GPDR1 |= ( 1<<15);
; 155 :
; 156 : // Configure GPIO pins 42 and 44 for Alt_fn1. And pins 43 and 45 for Alt_fn2.
; 157 : //
; 158 : // pGPIO_REGS->GAFR1_L |= ( XLLP_GPIO_AF_BIT_BTRXD | XLLP_GPIO_AF_BIT_BTCTS |
; 159 : // XLLP_GPIO_AF_BIT_BTTXD | XLLP_GPIO_AF_BIT_BTRTS );
; 160 :
; 161 : pGPIO_REGS->GAFR1_L &= ~( (3<<28) |
; 162 : (3<<30) );
; 163 :
; 164 : pGPIO_REGS->GAFR1_L |=(XLLP_GPIO_AF_BIT_STD_RXD|XLLP_GPIO_AF_BIT_STD_TXD);
; 165 :
; 166 : // Turn on the BTUART transceiver.
; 167 : //
; 168 : // g_pBLRegs->misc_wr |= nBT_OFF_MASK;
; 169 :
; 170 :
; 171 : // Enable the BTUART clock.
; 172 : //
; 173 : pCLKMGR_REGS->cken |= XLLP_CLKEN_STUART ;
00058 e5922000 ldr r2, [r2]
; 174 :
; 175 :
; 176 :
; 177 : // Enable the UART.
; 178 : //
; 179 : g_pDebugUARTPort->ier_dlh = 0x40;
0005c e3a00040 mov r0, #0x40
00060 e3833902 orr r3, r3, #2, 18
00064 e5813028 str r3, [r1, #0x28]
00068 e5913010 ldr r3, [r1, #0x10]
0006c e3c33901 bic r3, r3, #1, 18
00070 e5813010 str r3, [r1, #0x10]
00074 e5913010 ldr r3, [r1, #0x10]
00078 e3833902 orr r3, r3, #2, 18
0007c e5813010 str r3, [r1, #0x10]
00080 e591305c ldr r3, [r1, #0x5C]
00084 e3c3320f bic r3, r3, #0xF, 4
00088 e581305c str r3, [r1, #0x5C]
0008c e591305c ldr r3, [r1, #0x5C]
00090 e3833206 orr r3, r3, #6, 4
00094 e581305c str r3, [r1, #0x5C]
00098 e5923004 ldr r3, [r2, #4]
0009c e3833020 orr r3, r3, #0x20
000a0 e5823004 str r3, [r2, #4]
000a4 e58e0004 str r0, [lr, #4]
000a8 |$L30748|
; 180 :
; 181 : // Restore the logging mask.
; 182 : //
; 183 : // g_oalLogMask = logMask;
; 184 :
; 185 : do{
; 186 : while(!(g_pDebugUARTPort->lsr & 0x020));
000a8 e59e3014 ldr r3, [lr, #0x14]
000ac e3130020 tst r3, #0x20
000b0 0afffffc beq |$L30748|
; 187 : g_pDebugUARTPort->thr_rbr_dll = '2';
000b4 e3a03032 mov r3, #0x32
000b8 e58e3000 str r3, [lr]
; 188 : }while(0);
; 189 : }
000bc e8bd4030 ldmia sp!, {r4, r5, lr}
000c0 e12fff1e bx lr
000c4 |$L30947|
000c4 00000000 DCD |pCLKMGR_REGS|
000c8 |$M30943|
ENDP ; |?PreInit@@YAXI@Z|, PreInit
EXPORT |?GPX_Init@@YAKK@Z| ; GPX_Init
IMPORT |MmMapIoSpace|
00000 AREA |.text| { |?GPX_Init@@YAKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -