📄 mutexi2c.cod
字号:
; 315 : m_pi2c->WriteByte(ID); // IDSR: WRITE_ID address
00070 e5940010 ldr r0, [r4, #0x10]
00074 e1a01006 mov r1, r6
00078 eb000000 bl |?WriteByte@MES_I2C03@@QAAXE@Z|
; 316 : m_pi2c->Set_ICSR(MES_I2C03::TXRXMODE_MASTER_RX, CTRUE, CTRUE); // ISSR: ST_ENB, MASTER_TX, TX_ENB, ST_BUSY(STOP)
0007c e5940010 ldr r0, [r4, #0x10]
00080 e3a03001 mov r3, #1
00084 e3a02001 mov r2, #1
00088 e3a01002 mov r1, #2
0008c eb000000 bl |?Set_ICSR@MES_I2C03@@QAAXW4TXRXMODE@1@HH@Z|
; 317 :
; 318 : // ACK check
; 319 : if(! WaitACK(ID, TRUE))
00090 e3a02001 mov r2, #1
00094 e1a01006 mov r1, r6
00098 e1a00004 mov r0, r4
0009c eb000000 bl |?WaitACK@MutexI2C@@IAAHEH@Z|
000a0 e3500000 cmp r0, #0
000a4 0a000034 beq |$HWI2C_READ_FAIL$35842|
; 320 : goto HWI2C_READ_FAIL;
; 321 :
; 322 : for (int k=0; k<Len; k++)
000a8 e3a06000 mov r6, #0
000ac e3570000 cmp r7, #0
000b0 da00001a ble |$L35847|
000b4 e2658001 rsb r8, r5, #1
000b8 |$L35845|
000b8 e0883005 add r3, r8, r5
; 323 : {
; 324 : if(k+1 == Len) last = CFALSE;
000bc e1530007 cmp r3, r7
; 325 : // DATA receive
; 326 : m_pi2c->SetAckGenerationEnable(last); // ICCR: ACK_GEN-Not ACK, last Data
000c0 e5940010 ldr r0, [r4, #0x10]
000c4 03a09000 moveq r9, #0
000c8 e1a01009 mov r1, r9
000cc eb000000 bl |?SetAckGenerationEnable@MES_I2C03@@QAAXH@Z|
; 327 : m_pi2c->ClearInterruptPending(); // IRQ PEND[0]: clear interrupt pend
000d0 e5942010 ldr r2, [r4, #0x10]
000d4 e5923014 ldr r3, [r2, #0x14]
000d8 e2820014 add r0, r2, #0x14
000dc e5933010 ldr r3, [r3, #0x10]
000e0 e1a0e00f mov lr, pc
000e4 e12fff13 bx r3
; 328 : m_pi2c->ClearOperationHold(); // IRQ PEND[1]: clear operatin hold
000e8 e5940010 ldr r0, [r4, #0x10]
000ec eb000000 bl |?ClearOperationHold@MES_I2C03@@QAAXXZ|
; 329 : if(! WaitACK(0, FALSE))
000f0 e3a02000 mov r2, #0
000f4 e3a01000 mov r1, #0
000f8 e1a00004 mov r0, r4
000fc eb000000 bl |?WaitACK@MutexI2C@@IAAHEH@Z|
00100 e3500000 cmp r0, #0
00104 0a00001c beq |$HWI2C_READ_FAIL$35842|
; 330 : goto HWI2C_READ_FAIL;
; 331 :
; 332 : Data[k] = m_pi2c->ReadByte(); // IDSR: READ DATA
00108 e5940010 ldr r0, [r4, #0x10]
0010c eb000000 bl |?ReadByte@MES_I2C03@@QAAEXZ|
00110 e2866001 add r6, r6, #1
00114 e1560007 cmp r6, r7
00118 e4c50001 strb r0, [r5], #1
0011c baffffe5 blt |$L35845|
00120 |$L35847|
; 333 : }
; 334 :
; 335 : m_pi2c->Set_ICSR(MES_I2C03::TXRXMODE_MASTER_RX, CTRUE, CFALSE); // ISSR: ST_ENB, MASTER_TX, TX_ENB, ST_BUSY(STOP)
00120 e5940010 ldr r0, [r4, #0x10]
00124 e3a03000 mov r3, #0
00128 e3a02001 mov r2, #1
0012c e3a01002 mov r1, #2
00130 eb000000 bl |?Set_ICSR@MES_I2C03@@QAAXW4TXRXMODE@1@HH@Z|
; 336 : m_pi2c->ClearInterruptPending(); // IRQ PEND[0]: clear interrupt pend
00134 e5942010 ldr r2, [r4, #0x10]
00138 e5923014 ldr r3, [r2, #0x14]
0013c e2820014 add r0, r2, #0x14
00140 e5933010 ldr r3, [r3, #0x10]
00144 e1a0e00f mov lr, pc
00148 e12fff13 bx r3
; 337 : m_pi2c->ClearOperationHold(); // IRQ PEND[1]: clear operatin hold
0014c e5940010 ldr r0, [r4, #0x10]
00150 eb000000 bl |?ClearOperationHold@MES_I2C03@@QAAXXZ|
00154 |$L35852|
; 338 :
; 339 : // BUSY check
; 340 : while(CTRUE == m_pi2c->IsBusy());
00154 e5940010 ldr r0, [r4, #0x10]
00158 eb000000 bl |?IsBusy@MES_I2C03@@QAAHXZ|
0015c e3500001 cmp r0, #1
00160 0afffffb beq |$L35852|
; 341 :
; 342 : m_pi2c->SetClockPClkMode(MES_IClockControl::PCLKMODE_ONLYWHENCPUACCESS); // CLKENB: Disable
00164 e5943010 ldr r3, [r4, #0x10]
00168 e3a01000 mov r1, #0
0016c e2830008 add r0, r3, #8
00170 eb000000 bl |?SetClockPClkMode@MES_IClockControl@@QAAXW4PCLKMODE@1@@Z|
00174 e3a05001 mov r5, #1
00178 ea000024 b |$L36705|
0017c |$HWI2C_READ_FAIL$35842|
; 343 :
; 344 : ReleaseMutex(m_hMutex);
; 345 :
; 346 : return TRUE;
; 347 :
; 348 : HWI2C_READ_FAIL:
; 349 :
; 350 : // STOP condition
; 351 : m_pi2c->Set_ICSR(MES_I2C03::TXRXMODE_MASTER_RX, CTRUE, CFALSE); // ISSR: ST_ENB, MASTER_TX, TX_ENB, ST_BUSY(STOP)
0017c e5940010 ldr r0, [r4, #0x10]
00180 e3a03000 mov r3, #0
00184 e3a02001 mov r2, #1
00188 e3a01002 mov r1, #2
0018c eb000000 bl |?Set_ICSR@MES_I2C03@@QAAXW4TXRXMODE@1@HH@Z|
; 352 : m_pi2c->ClearInterruptPending(); // IRQ PEND[0]: clear interrupt pend
00190 e5942010 ldr r2, [r4, #0x10]
00194 e5923014 ldr r3, [r2, #0x14]
00198 e2820014 add r0, r2, #0x14
0019c e5933010 ldr r3, [r3, #0x10]
001a0 e1a0e00f mov lr, pc
001a4 e12fff13 bx r3
; 353 : m_pi2c->ClearOperationHold(); // IRQ PEND[1]: clear operatin hold
001a8 e5940010 ldr r0, [r4, #0x10]
001ac eb000000 bl |?ClearOperationHold@MES_I2C03@@QAAXXZ|
; 354 :
; 355 : // BUSY check
; 356 : // while(CTRUE == m_pi2c->IsBusy());
; 357 :
; 358 : m_pi2c->SetClockPClkMode(MES_IClockControl::PCLKMODE_ONLYWHENCPUACCESS); // CLKENB: Disable
001b0 e5943010 ldr r3, [r4, #0x10]
001b4 e3a01000 mov r1, #0
001b8 e2830008 add r0, r3, #8
001bc eb000000 bl |?SetClockPClkMode@MES_IClockControl@@QAAXW4PCLKMODE@1@@Z|
001c0 ea000011 b |$L36715|
001c4 |$L35835|
; 359 :
; 360 : ReleaseMutex(m_hMutex);
; 361 :
; 362 : return FALSE;
; 363 : }
; 364 : else if(result == WAIT_TIMEOUT )
001c4 e3a03c01 mov r3, #1, 24
001c8 e3833002 orr r3, r3, #2
; 365 : {
; 366 : ERRORMSG(ZONE_ERROR,(TEXT(" MutexI2C: TimeOut WaitForSingleObject\r\n")));
001cc e59f105c ldr r1, [pc, #0x5C]
001d0 e1500003 cmp r0, r3
001d4 e59f0050 ldr r0, [pc, #0x50]
001d8 1a000006 bne |$L35855|
001dc e3a02f5b mov r2, #0x5B, 30
001e0 e3822002 orr r2, r2, #2
001e4 eb000000 bl NKDbgPrintfW
001e8 e59f0038 ldr r0, [pc, #0x38]
001ec eb000000 bl NKDbgPrintfW
001f0 e3a05001 mov r5, #1
001f4 ea000005 b |$L36705|
001f8 |$L35855|
; 367 : ReleaseMutex(m_hMutex);
; 368 : }
; 369 : else
; 370 : {
; 371 : ERRORMSG(ZONE_ERROR,(TEXT(" MutexI2C: Fail WaitForSingleObject\r\n")));
001f8 e3a02e17 mov r2, #0x17, 28
001fc e3822003 orr r2, r2, #3
00200 eb000000 bl NKDbgPrintfW
00204 e59f0018 ldr r0, [pc, #0x18]
00208 eb000000 bl NKDbgPrintfW
0020c |$L36715|
0020c e3a05000 mov r5, #0
00210 |$L36705|
; 372 : ReleaseMutex(m_hMutex);
00210 e5940000 ldr r0, [r4]
00214 eb000000 bl ReleaseMutex
; 373 : return FALSE;
00218 e1a00005 mov r0, r5
; 374 : }
; 375 : return TRUE;
; 376 : }
0021c e8bd43f0 ldmia sp!, {r4 - r9, lr}
00220 e12fff1e bx lr
00224 |$L36722|
00224 00000000 DCD |??_C@_1EM@OLMHANLJ@?$AA?5?$AAM?$AAu?$AAt?$AAe?$AAx?$AAI?$AA2?$AAC?$AA?3?$AA?5?$AAF?$AAa?$AAi?$AAl?$AA?5?$AAW?$AAa?$AAi?$AAt@|
00228 00000000 DCD |??_C@_1FC@JPHGIFGK@?$AA?5?$AAM?$AAu?$AAt?$AAe?$AAx?$AAI?$AA2?$AAC?$AA?3?$AA?5?$AAT?$AAi?$AAm?$AAe?$AAO?$AAu?$AAt?$AA?5?$AAW@|
0022c 00000000 DCD |??_C@_1CI@OHCJFJPM@?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?3?$AA?5?$AA?$CF?$AAs?$AA?5?$AAl?$AAi?$AAn?$AAe?$AA?5?$AA?$CF?$AAd?$AA?3?$AA?5?$AA?$AA@|
00230 00000000 DCD |??_C@_1IC@EEOMFCED@?$AAc?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@|
00234 |$M36718|
ENDP ; |?I2CRead@MutexI2C@@IAAHPAEH@Z|, MutexI2C::I2CRead
EXPORT |??0?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@QAA@XZ| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>
EXPORT |?GetNumberOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKXZ| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::GetNumberOfRegisterSet
EXPORT |?GetSizeOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKK@Z| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::GetSizeOfRegisterSet
EXPORT |?SetVirtualAddressOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAXKK@Z| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::SetVirtualAddressOfRegisterSet
EXPORT |?GetNumerOfClockGroup@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKXZ| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::GetNumerOfClockGroup
EXPORT |?GetOffsetOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKK@Z| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::GetOffsetOfRegisterSet
EXPORT |??_7?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@6BMES_IModule@@@| [ DATA ] ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::`vftable'
EXPORT |??_7?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@6BMES_IClockControl@@@| [ DATA ] ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::`vftable'
EXPORT |??_G?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAPAXI@Z| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::`scalar deleting destructor'
IMPORT |??_E?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAPAXI@Z|, WEAK |??_G?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAPAXI@Z| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::`vector deleting destructor', MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::`scalar deleting destructor'
IMPORT |??0MES_IModule@@QAA@XZ| ; MES_IModule::MES_IModule
IMPORT |?Initialize@MES_IModule@@UAAXXZ| ; MES_IModule::Initialize
IMPORT |?OpenModule@MES_IModule@@UAAXXZ| ; MES_IModule::OpenModule
IMPORT |?CloseModule@MES_IModule@@UAAXXZ| ; MES_IModule::CloseModule
IMPORT |?CheckBusy@MES_IModule@@UAAHXZ| ; MES_IModule::CheckBusy
IMPORT |?CanPowerDown@MES_IModule@@UAAHXZ| ; MES_IModule::CanPowerDown
; File c:\wince500\platform\mp2530f\src\prototype\mes_base\mes_iclockcontrol.h
00000 AREA |.text| { |??0?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@QAA@XZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$??0?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@QAA@XZ|, PDATA, SELECTION=5, ASSOC=|.text| { |??0?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@QAA@XZ| } ; comdat associative
|$T36736| DCD |$L36735|
DCD 0x40001301
00000 AREA |.rdata| { |??_7?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@6BMES_IModule@@@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_7?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@6BMES_IModule@@@| DCD |??_E?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAPAXI@Z| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::`vftable'
DCD |_purecall|
DCD |?GetNumberOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKXZ|
DCD |?GetSizeOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKK@Z|
DCD |?SetVirtualAddressOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAXKK@Z|
DCD |?GetOffsetOfRegisterSet@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKK@Z|
DCD |?Initialize@MES_IModule@@UAAXXZ|
DCD |?OpenModule@MES_IModule@@UAAXXZ|
DCD |?CloseModule@MES_IModule@@UAAXXZ|
DCD |?CheckBusy@MES_IModule@@UAAHXZ|
DCD |?CanPowerDown@MES_IModule@@UAAHXZ|
00000 AREA |.rdata| { |??_7?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@6BMES_IClockControl@@@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_7?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@6BMES_IClockControl@@@| DCD |?GetNumerOfClockGroup@?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@UAAKXZ| ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::`vftable'
; Function compile flags: /Ogsy
00000 AREA |.text| { |??0?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@QAA@XZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |??0?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@QAA@XZ| PROC ; MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>::MES_BasicModuleWithClock<MES_I2C03_RegisterSet,0,256>
; 151 : {}
00000 |$L36735|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M36733|
00004 e1a04000 mov r4, r0
00008 eb000000 bl |??0MES_IModule@@QAA@XZ|
0000c e59f3034 ldr r3, [pc, #0x34]
00010 e1a02004 mov r2, r4
00014 e59f1028 ldr r1, [pc, #0x28]
00018 e5a23008 str r3, [r2, #8]!
0001c e59f301c ldr r3, [pc, #0x1C]
00020 e3a00000 mov r0, #0
00024 e5820004 str r0, [r2, #4]
00028 e5840010 str r0, [r4, #0x10]
0002c e1a00004 mov r0, r4
00030 e5841000 str r1, [r4]
00034 e5843008 str r3, [r4, #8]
00038 e8bd4010 ldmia sp!, {r4, lr}
0003c e12fff1e bx lr
00040 |$L36738|
00040 00000000 DCD |??_7?$MES_BasicModuleWithClock@UMES_I2C03_RegisterSet@@$0A@$0BAA@@@6BMES_IClockControl@@@|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -