📄 pxa27x_camera.cod
字号:
00048 |$L38736|
00048 eb000000 bl NKDbgPrintfW
; 198 : {
; 199 : return FALSE;
0004c e3a00000 mov r0, #0
00050 ea000068 b |$L38226|
00054 |$L38233|
; 160 : return FALSE; // Memory mapped file set failed
; 161 : }
; 162 : // Get a valid process pointer to the buffer mapped above.
; 163 : pDMAGlobals = (DMA_GLOBALS *)MapViewOfFile( hSharedMap, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
00054 e3a0180f mov r1, #0xF, 16
00058 e3a0e000 mov lr, #0
0005c e381101f orr r1, r1, #0x1F
00060 e3a03000 mov r3, #0
00064 e3a02000 mov r2, #0
00068 e1a00005 mov r0, r5
0006c e58de000 str lr, [sp]
00070 eb000000 bl MapViewOfFile
00074 e59f41c4 ldr r4, [pc, #0x1C4]
00078 e1a03000 mov r3, r0
; 164 : //handle is not needed because mapped view has an internal open handle to the object
; 165 : CloseHandle(hSharedMap);
0007c e1a00005 mov r0, r5
00080 e5843004 str r3, [r4, #4]
00084 eb000000 bl CloseHandle
; 166 : if( !pDMAGlobals )
00088 e5943004 ldr r3, [r4, #4]
0008c e3530000 cmp r3, #0
; 167 : {
; 168 : NKDbgPrintfW(TEXT("Camera DMA: MapViewOfFile failed. \r\n"));
00090 059f01a4 ldreq r0, [pc, #0x1A4]
00094 0affffeb beq |$L38736|
; 169 : return FALSE; // Memory mapped file set failed.
; 170 : }
; 171 :
; 172 : v_pI2C = (volatile unsigned int *)VirtualAllocCopyPhysical(sizeof(XLLP_I2C_T),"CAM_Init : v_pI2C",(PVOID)(BULVERDE_BASE_REG_PA_I2C));
00098 e59f1198 ldr r1, [pc, #0x198]
0009c e3a02101 mov r2, #1, 2
000a0 e3822603 orr r2, r2, #3, 12
000a4 e3a00024 mov r0, #0x24
000a8 eb000000 bl VirtualAllocCopyPhysical
000ac e3500000 cmp r0, #0
000b0 e5840008 str r0, [r4, #8]
; 173 : if (!v_pI2C)
; 174 : {
; 175 : return FALSE;
000b4 0a00001e beq |$L38735|
; 176 : }
; 177 :
; 178 : v_pOSTRegs = (volatile unsigned int *)VirtualAllocCopyPhysical(sizeof(XLLP_OST_T),"CAM_Init : v_pOSTRegs",(PVOID)(BULVERDE_BASE_REG_PA_OST));
000b8 e59f1174 ldr r1, [pc, #0x174]
000bc e3a02101 mov r2, #1, 2
000c0 e382260a orr r2, r2, #0xA, 12
000c4 e3a000e0 mov r0, #0xE0
000c8 eb000000 bl VirtualAllocCopyPhysical
000cc e3500000 cmp r0, #0
000d0 e5840010 str r0, [r4, #0x10]
; 179 : if (!v_pOSTRegs)
; 180 : {
; 181 : return FALSE;
000d4 0a000016 beq |$L38735|
; 182 : }
; 183 :
; 184 : v_pCIRegs = (volatile unsigned int *)VirtualAllocCopyPhysical(1024,"CAM_Init : v_pCIRegs",(PVOID)(BULVERDE_BASE_REG_PA_CAMERA));
000d8 e59f1150 ldr r1, [pc, #0x150]
000dc e3a02205 mov r2, #5, 4
000e0 e3a00b01 mov r0, #1, 22
000e4 eb000000 bl VirtualAllocCopyPhysical
000e8 e3500000 cmp r0, #0
000ec e584000c str r0, [r4, #0xC]
; 185 : if (!v_pCIRegs)
; 186 : {
; 187 : return FALSE;
000f0 0a00000f beq |$L38735|
; 188 : }
; 189 :
; 190 : v_pClkRegs = (volatile XLLP_CLKMGR_T *)VirtualAllocCopyPhysical(sizeof(XLLP_CLKMGR_T),"CAM_Init : v_pClkRegs",(PVOID)(BULVERDE_BASE_REG_PA_CLKMGR));
000f4 e59f1130 ldr r1, [pc, #0x130]
000f8 e3a02441 mov r2, #0x41, 8
000fc e3822603 orr r2, r2, #3, 12
00100 e3a00010 mov r0, #0x10
00104 eb000000 bl VirtualAllocCopyPhysical
00108 e3500000 cmp r0, #0
0010c e5840014 str r0, [r4, #0x14]
; 191 : if (!v_pClkRegs)
; 192 : {
; 193 : return FALSE;
00110 0a000007 beq |$L38735|
; 194 : }
; 195 :
; 196 : v_pGPIORegs = (volatile XLLP_GPIO_T *)VirtualAllocCopyPhysical(sizeof(XLLP_GPIO_T),"CAM_Init : v_pGPIORegs",(PVOID)(BULVERDE_BASE_REG_PA_GPIO));
00114 e59f110c ldr r1, [pc, #0x10C]
00118 e3a02101 mov r2, #1, 2
0011c e382260e orr r2, r2, #0xE, 12
00120 e3a00f53 mov r0, #0x53, 30
00124 eb000000 bl VirtualAllocCopyPhysical
00128 e3500000 cmp r0, #0
0012c e5840018 str r0, [r4, #0x18]
; 197 : if (!v_pGPIORegs)
00130 1a000001 bne |$L38261|
00134 |$L38735|
; 198 : {
; 199 : return FALSE;
00134 e3a00000 mov r0, #0
00138 ea00002e b |$L38226|
0013c |$L38261|
; 200 : }
; 201 :
; 202 : OS_I2CInit();
0013c eb000000 bl OS_I2CInit
; 203 :
; 204 : pOSCR = v_pOSTRegs + 4;
00140 e5941010 ldr r1, [r4, #0x10]
; 205 :
; 206 : hCameraFrameReady = CreateEvent(NULL,FALSE,FALSE,CAMERA_EVENT_NAME);
00144 e59f30d8 ldr r3, [pc, #0xD8]
00148 e3a02000 mov r2, #0
0014c e2811010 add r1, r1, #0x10
00150 e5841000 str r1, [r4]
00154 e3a01000 mov r1, #0
00158 e3a00000 mov r0, #0
0015c eb000000 bl CreateEventW
00160 e59f20b8 ldr r2, [pc, #0xB8]
; 207 : hStillImageReady = CreateEvent(NULL, FALSE, FALSE, CAMERA_EVENT_STILL_IMAGE_READY);
00164 e59f30b0 ldr r3, [pc, #0xB0]
00168 e3a01000 mov r1, #0
0016c e5820000 str r0, [r2]
00170 e3a02000 mov r2, #0
00174 e3a00000 mov r0, #0
00178 eb000000 bl CreateEventW
0017c e59f2094 ldr r2, [pc, #0x94]
; 208 : hCameraShutdownComplete = CreateEvent(NULL, FALSE, FALSE, CAMERA_SHUTDOWN_COMPLETE);
00180 e59f308c ldr r3, [pc, #0x8C]
00184 e3a01000 mov r1, #0
00188 e5820000 str r0, [r2]
0018c e3a02000 mov r2, #0
00190 e3a00000 mov r0, #0
00194 eb000000 bl CreateEventW
00198 e59f2070 ldr r2, [pc, #0x70]
; 209 : hShutDown = CreateEvent(NULL, FALSE, FALSE, NULL);
0019c e3a03000 mov r3, #0
001a0 e3a01000 mov r1, #0
001a4 e5820000 str r0, [r2]
001a8 e3a02000 mov r2, #0
001ac e3a00000 mov r0, #0
001b0 eb000000 bl CreateEventW
; 210 :
; 211 : memset(&XllpCAMERA, 0, sizeof(XLLP_Camera_Context_T));
001b4 e59f4050 ldr r4, [pc, #0x50]
001b8 e59fe048 ldr lr, [pc, #0x48]
001bc e1a03000 mov r3, r0
001c0 e1a00004 mov r0, r4
001c4 e3a020c8 mov r2, #0xC8
001c8 e3a01000 mov r1, #0
001cc e58e3000 str r3, [lr]
001d0 eb000000 bl memset
; 212 :
; 213 : // Set the DMA channels to their "uninitialized" state
; 214 : XllpCAMERA.dma_channels[0] = 0xFF;
001d4 e3a030ff mov r3, #0xFF
; 215 : XllpCAMERA.dma_channels[1] = 0xFF;
; 216 : XllpCAMERA.dma_channels[2] = 0xFF;
; 217 :
; 218 : NKDbgPrintfW(TEXT("pxa27x_camera: CameraInit-\r\n"));
001d8 e5843068 str r3, [r4, #0x68]
001dc e3a030ff mov r3, #0xFF
001e0 e59f001c ldr r0, [pc, #0x1C]
001e4 e584306c str r3, [r4, #0x6C]
001e8 e3a030ff mov r3, #0xFF
001ec e5843070 str r3, [r4, #0x70]
001f0 eb000000 bl NKDbgPrintfW
; 219 :
; 220 : return TRUE;
001f4 e3a00001 mov r0, #1
001f8 |$L38226|
; 221 : }
001f8 e28dd008 add sp, sp, #8
001fc e8bd4030 ldmia sp!, {r4, r5, lr}
00200 e12fff1e bx lr
00204 |$L38742|
00204 00000000 DCD |??_C@_1DK@BFLAGAFK@?$AAp?$AAx?$AAa?$AA2?$AA7?$AAx?$AA_?$AAc?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?3?$AA?5?$AAC?$AAa?$AAm?$AAe?$AAr@|
00208 00000000 DCD |hShutDown|
0020c 00000000 DCD |XllpCAMERA|
00210 00000000 DCD |hCameraShutdownComplete|
00214 00000000 DCD |??_C@_1CO@NGNPLHGF@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AAS?$AAh?$AAu?$AAt?$AAd?$AAo?$AAw?$AAn?$AAC?$AAo?$AAm?$AAp?$AAl?$AAe@|
00218 00000000 DCD |hStillImageReady|
0021c 00000000 DCD |??_C@_1CM@JBPBEKNK@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AAS?$AAt?$AAi?$AAl?$AAl?$AAI?$AAm?$AAa?$AAg?$AAe?$AAR?$AAe?$AAa?$AAd@|
00220 00000000 DCD |hCameraFrameReady|
00224 00000000 DCD |??_C@_1CI@KKLEGNCF@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AAF?$AAr?$AAa?$AAm?$AAe?$AAC?$AAo?$AAm?$AAp?$AAl?$AAe?$AAt?$AAe?$AA?$AA@|
00228 00000000 DCD |??_C@_0BH@PBOFJJFL@CAM_Init?5?3?5v_pGPIORegs?$AA@|
0022c 00000000 DCD |??_C@_0BG@IBDMMMKG@CAM_Init?5?3?5v_pClkRegs?$AA@|
00230 00000000 DCD |??_C@_0BF@PAFAMGAD@CAM_Init?5?3?5v_pCIRegs?$AA@|
00234 00000000 DCD |??_C@_0BG@HNJELJCK@CAM_Init?5?3?5v_pOSTRegs?$AA@|
00238 00000000 DCD |??_C@_0BC@JDPBKHAF@CAM_Init?5?3?5v_pI2C?$AA@|
0023c 00000000 DCD |??_C@_1EK@NNEALNOC@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?5?$AAD?$AAM?$AAA?$AA?3?$AA?5?$AAM?$AAa?$AAp?$AAV?$AAi?$AAe?$AAw?$AAO@|
00240 00000000 DCD |pOSCR|
00244 00000000 DCD |??_C@_1EO@EAMKEIPG@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?5?$AAD?$AAM?$AAA?$AA?3?$AA?5?$AAN?$AAo?$AA?5?$AAe?$AAx?$AAi?$AAs?$AAt@|
00248 00000000 DCD |??_C@_1CE@CCBBDCAA@?$AAG?$AAd?$AAe?$AAD?$AAm?$AAa?$AAG?$AAl?$AAo?$AAb?$AAa?$AAl?$AAs?$AAF?$AAi?$AAl?$AAe?$AA?$AA@|
0024c 00000000 DCD |??_C@_1FI@KHBFKLNE@?$AAp?$AAx?$AAa?$AA2?$AA7?$AAx?$AA_?$AAc?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?3?$AA?5?$AAC?$AAa?$AAm?$AAe?$AAr@|
00250 |$M38738|
ENDP ; |CameraInit|
EXPORT |CameraDeinit|
00000 AREA |.text| { |CameraDeinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraDeinit|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraDeinit| } ; comdat associative
|$T38750| DCD |$L38749|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraDeinit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraDeinit| PROC
; 224 : {
00000 |$L38749|
00000 |$M38747|
; 225 : // TBD: Deallocate memory
; 226 :
; 227 : return TRUE;
00000 e3a00001 mov r0, #1
; 228 : }
00004 e12fff1e bx lr
00008 |$M38748|
ENDP ; |CameraDeinit|
EXPORT |CameraInterruptHandler|
00000 AREA |.text| { |CameraInterruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraInterruptHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraInterruptHandler| } ; comdat associative
|$T38757| DCD |$L38756|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraInterruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraInterruptHandler| PROC
; 310 : {
00000 |$L38756|
00000 |$M38754|
; 311 :
; 312 : }
00000 e12fff1e bx lr
00004 |$M38755|
ENDP ; |CameraInterruptHandler|
EXPORT |CameraInterfaceInterruptHandler|
00000 AREA |.text| { |CameraInterfaceInterruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraInterfaceInterruptHandler|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraInterfaceInterruptHandler| } ; comdat associative
|$T38764| DCD |$L38763|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraInterfaceInterruptHandler| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraInterfaceInterruptHandler| PROC
; 408 : {
00000 |$L38763|
00000 |$M38761|
; 409 : }
00000 e12fff1e bx lr
00004 |$M38762|
ENDP ; |CameraInterfaceInterruptHandler|
EXPORT |CameraReadRegister|
IMPORT |XllpLock|
IMPORT |XllpUnlock|
00000 AREA |.text| { |CameraReadRegister| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraReadRegister|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraReadRegister| } ; comdat associative
|$T38773| DCD |$L38772|
DCD 0x40001401
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraReadRegister| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraReadRegister| PROC
; 425 : {
00000 |$L38772|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M38770|
00004 e1a04001 mov r4, r1
00008 e1a05000 mov r5, r0
; 426 : *bufP = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -