📄 maxkey.cod
字号:
00034 eb000000 bl XllpI2cInit
00038 e3500000 cmp r0, #0
; 171 : {
; 172 : return FALSE;
0003c 13a00000 movne r0, #0
; 176 : }
00040 18bd4010 ldmneia sp!, {r4, lr}
; 173 : }
; 174 :
; 175 : return TRUE;
00044 03a00001 moveq r0, #1
; 176 : }
00048 08bd4010 ldmeqia sp!, {r4, lr}
0004c e12fff1e bx lr
00050 |$L31162|
00050 00000000 DCD |?gs_pi2cregs@@3PAUXLLP_I2C_T@@A|
00054 |$M31158|
ENDP ; |?I2CInit@@YAHXZ|, I2CInit
IMPORT |UnmapViewOfFile|
IMPORT |CloseHandle|
IMPORT |MmUnmapIoSpace|
00000 AREA |.text| { |?I2CDeinit@@YAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?I2CDeinit@@YAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CDeinit@@YAHXZ| } ; comdat associative
|$T31170| DCD |$L31169|
DCD 0x40003601
; Function compile flags: /Ogsy
00000 AREA |.text| { |?I2CDeinit@@YAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?I2CDeinit@@YAHXZ| PROC ; I2CDeinit
; 178 : {
00000 |$L31169|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M31167|
; 179 : if (gs_pClockRegs)
00004 e59f40c8 ldr r4, [pc, #0xC8]
00008 e5940008 ldr r0, [r4, #8]
0000c e3500000 cmp r0, #0
00010 0a000003 beq |$L30733|
; 180 : {
; 181 : MmUnmapIoSpace((PVOID)gs_pClockRegs, sizeof(XLLP_CLKMGR_T));
00014 e3a01018 mov r1, #0x18
00018 eb000000 bl MmUnmapIoSpace
; 182 : gs_pClockRegs = NULL;
0001c e3a03000 mov r3, #0
00020 e5843008 str r3, [r4, #8]
00024 |$L30733|
; 183 : }
; 184 :
; 185 : if (gs_pi2cregs)
00024 e5940004 ldr r0, [r4, #4]
00028 e3500000 cmp r0, #0
0002c 0a000003 beq |$L30736|
; 186 : {
; 187 : MmUnmapIoSpace((PVOID)gs_pi2cregs, sizeof(XLLP_I2C_T));
00030 e3a01024 mov r1, #0x24
00034 eb000000 bl MmUnmapIoSpace
; 188 : gs_pi2cregs = NULL;
00038 e3a03000 mov r3, #0
0003c e5843004 str r3, [r4, #4]
00040 |$L30736|
; 189 : }
; 190 :
; 191 : if (gs_pOstRegs)
00040 e5940000 ldr r0, [r4]
00044 e3500000 cmp r0, #0
00048 0a000003 beq |$L30739|
; 192 : {
; 193 : MmUnmapIoSpace((PVOID)gs_pOstRegs, sizeof(XLLP_OST_T));
0004c e3a010e0 mov r1, #0xE0
00050 eb000000 bl MmUnmapIoSpace
; 194 : gs_pOstRegs = NULL;
00054 e3a03000 mov r3, #0
00058 e5843000 str r3, [r4]
0005c |$L30739|
; 195 : }
; 196 : if (gs_pGpioRegs)
0005c e594000c ldr r0, [r4, #0xC]
00060 e3500000 cmp r0, #0
00064 0a000003 beq |$L30742|
; 197 : {
; 198 : MmUnmapIoSpace((PVOID)gs_pGpioRegs, sizeof(XLLP_GPIO_T));
00068 e3a01d13 mov r1, #0x13, 26
0006c eb000000 bl MmUnmapIoSpace
; 199 : gs_pGpioRegs = NULL;
00070 e3a03000 mov r3, #0
00074 e584300c str r3, [r4, #0xC]
00078 |$L30742|
; 200 : }
; 201 :
; 202 : if (mfp_reg)
00078 e5940010 ldr r0, [r4, #0x10]
0007c e3500000 cmp r0, #0
00080 0a000003 beq |$L30745|
; 203 : {
; 204 : MmUnmapIoSpace((PVOID)mfp_reg, sizeof(XLLP_VUINT32_T));
00084 e3a01004 mov r1, #4
00088 eb000000 bl MmUnmapIoSpace
; 205 : mfp_reg = NULL;
0008c e3a03000 mov r3, #0
00090 e5843010 str r3, [r4, #0x10]
00094 |$L30745|
; 206 : }
; 207 :
; 208 : if(g_pMfpRMDb)
00094 e5943014 ldr r3, [r4, #0x14]
00098 e3530000 cmp r3, #0
0009c 0a000003 beq |$L30748|
; 209 : {
; 210 : UnmapViewOfFile(g_pMfpRMDb);
000a0 e5940014 ldr r0, [r4, #0x14]
000a4 eb000000 bl UnmapViewOfFile
; 211 : g_pMfpRMDb = NULL;
000a8 e3a03000 mov r3, #0
000ac e5843014 str r3, [r4, #0x14]
000b0 |$L30748|
; 212 : }
; 213 :
; 214 : if(g_hMfpRMDHandle)
000b0 e5940018 ldr r0, [r4, #0x18]
000b4 e3500000 cmp r0, #0
000b8 0a000002 beq |$L30749|
; 215 : {
; 216 : CloseHandle(g_hMfpRMDHandle);
000bc eb000000 bl CloseHandle
; 217 : g_hMfpRMDHandle = NULL;
000c0 e3a03000 mov r3, #0
000c4 e5843018 str r3, [r4, #0x18]
000c8 |$L30749|
; 218 : }
; 219 : return TRUE;
000c8 e3a00001 mov r0, #1
; 220 : }
000cc e8bd4010 ldmia sp!, {r4, lr}
000d0 e12fff1e bx lr
000d4 |$L31172|
000d4 00000000 DCD |?gs_pOstRegs@@3PAUXLLP_OST_T@@A|
000d8 |$M31168|
ENDP ; |?I2CDeinit@@YAHXZ|, I2CDeinit
IMPORT |XllpI2CWrite|
IMPORT |XllpI2CRead|
00000 AREA |.text| { |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| } ; comdat associative
|$T31195| DCD |$L31194|
DCD 0x40002404
; Function compile flags: /Ogsy
00000 AREA |.text| { |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| PROC ; I2CRead
; 223 : {
00000 |$L31194|
00000 e1a0c00d mov r12, sp
00004 e92d000f stmdb sp!, {r0 - r3}
00008 e92d53f0 stmdb sp!, {r4 - r9, r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M31192|
00010 e1a08003 mov r8, r3
00014 e1a06001 mov r6, r1
00018 e1a07000 mov r7, r0
; 224 : XLLP_STATUS_T status;
; 225 : I2CLock();
0001c e59f5068 ldr r5, [pc, #0x68]
00020 e3e01000 mvn r1, #0
00024 e5950000 ldr r0, [r5]
00028 eb000000 bl WaitForSingleObject
; 226 : status = XllpI2CWrite(i2cRegs, ostRegs, SLAVE_ADDRESS, ®, 1, XLLP_TRUE);
0002c e3a09001 mov r9, #1
00030 e28d3030 add r3, sp, #0x30
00034 e3a02038 mov r2, #0x38
00038 e1a01006 mov r1, r6
0003c e1a00007 mov r0, r7
00040 e58d9004 str r9, [sp, #4]
00044 e58d9000 str r9, [sp]
00048 eb000000 bl XllpI2CWrite
0004c e1b04000 movs r4, r0
; 227 : if (status != XLLP_STATUS_SUCCESS)
; 228 : {
; 229 : I2CUnlock();
; 230 : return status;
00050 1a000007 bne |$L31191|
; 231 : }
; 232 : status = XllpI2CRead(i2cRegs, ostRegs, SLAVE_ADDRESS, val, 1, XLLP_TRUE);
00054 e1a03008 mov r3, r8
00058 e3a02038 mov r2, #0x38
0005c e1a01006 mov r1, r6
00060 e1a00007 mov r0, r7
00064 e58d9004 str r9, [sp, #4]
00068 e58d9000 str r9, [sp]
0006c eb000000 bl XllpI2CRead
00070 e1a04000 mov r4, r0
00074 |$L31191|
; 233 : I2CUnlock();
00074 e5950000 ldr r0, [r5]
00078 eb000000 bl ReleaseMutex
0007c e1a00004 mov r0, r4
; 234 : return status;
; 235 : }
00080 e28dd008 add sp, sp, #8
00084 e89d63f0 ldmia sp, {r4 - r9, sp, lr}
00088 e12fff1e bx lr
0008c |$L31197|
0008c 00000000 DCD |g_hI2CMutex|
00090 |$M31193|
ENDP ; |?I2CRead@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z|, I2CRead
00000 AREA |.text| { |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| } ; comdat associative
|$T31216| DCD |$L31215|
DCD 0x40001b02
; Function compile flags: /Ogsy
00000 AREA |.text| { |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z| PROC ; I2CWrite
; 238 : {
00000 |$L31215|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M31213|
00008 e1a04001 mov r4, r1
0000c e1a05000 mov r5, r0
; 239 : XLLP_STATUS_T status;
; 240 : XLLP_UINT8_T buf[2];
; 241 : buf[0] = reg;
; 242 : buf[1] = val;
; 243 : I2CLock();
00010 e59f6050 ldr r6, [pc, #0x50]
00014 e3e01000 mvn r1, #0
00018 e5cd2008 strb r2, [sp, #8]
0001c e5960000 ldr r0, [r6]
00020 e5cd3009 strb r3, [sp, #9]
00024 eb000000 bl WaitForSingleObject
; 244 : status = XllpI2CWrite(i2cRegs, ostRegs, SLAVE_ADDRESS, buf, 2, XLLP_TRUE);
00028 e3a03001 mov r3, #1
0002c e3a02002 mov r2, #2
00030 e58d3004 str r3, [sp, #4]
00034 e58d2000 str r2, [sp]
00038 e28d3008 add r3, sp, #8
0003c e3a02038 mov r2, #0x38
00040 e1a01004 mov r1, r4
00044 e1a00005 mov r0, r5
00048 eb000000 bl XllpI2CWrite
0004c e1a04000 mov r4, r0
; 245 : I2CUnlock();
00050 e5960000 ldr r0, [r6]
00054 eb000000 bl ReleaseMutex
; 246 : return status;
00058 e1a00004 mov r0, r4
; 247 : }
0005c e28dd00c add sp, sp, #0xC
00060 e8bd4070 ldmia sp!, {r4 - r6, lr}
00064 e12fff1e bx lr
00068 |$L31218|
00068 00000000 DCD |g_hI2CMutex|
0006c |$M31214|
ENDP ; |?I2CWrite@@YA?AW4XLLP_STATUS_T@@PAUXLLP_I2C_T@@PAUXLLP_OST_T@@EE@Z|, I2CWrite
00000 AREA |.text| { |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| } ; comdat associative
|$T31254| DCD |$L31253|
DCD 0x40002702
; Function compile flags: /Ogsy
00000 AREA |.text| { |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?I2CReadReg@@YAHPAUXLLP_I2C_T@@PAUXLLP_OST_T@@EPAE@Z| PROC ; I2CReadReg
; 250 : {
00000 |$L31253|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M31251|
00008 e1a06003 mov r6, r3
0000c e1a07001 mov r7, r1
00010 e1a08000 mov r8, r0
; 251 : XLLP_UINT8_T buf[2];
; 252 : XLLP_STATUS_T status;
; 253 :
; 254 : status = I2CRead(pI2C, pOST, reg, buf);
00014 e59f507c ldr r5, [pc, #0x7C]
00018 e3e01000 mvn r1, #0
0001c e5cd2008 strb r2, [sp, #8]
00020 e5950000 ldr r0, [r5]
00024 eb000000 bl WaitForSingleObject
00028 e3a09001 mov r9, #1
0002c e28d3008 add r3, sp, #8
00030 e3a02038 mov r2, #0x38
00034 e1a01007 mov r1, r7
00038 e1a00008 mov r0, r8
0003c e58d9004 str r9, [sp, #4]
00040 e58d9000 str r9, [sp]
00044 eb000000 bl XllpI2CWrite
00048 e1b04000 movs r4, r0
0004c 1a000007 bne |$L31250|
00050 e28d300a add r3, sp, #0xA
00054 e3a02038 mov r2, #0x38
00058 e1a01007 mov r1, r7
0005c e1a00008 mov r0, r8
00060 e58d9004 str r9, [sp, #4]
00064 e58d9000 str r9, [sp]
00068 eb000000 bl XllpI2CRead
0006c e1a04000 mov r4, r0
00070 |$L31250|
00070 e5950000 ldr r0, [r5]
00074 eb000000 bl ReleaseMutex
; 255 :
; 256 : if (XLLP_STATUS_SUCCESS == status)
00078 e3540000 cmp r4, #0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -