📄 pxa27x_camera.cod
字号:
0000c e3a03000 mov r3, #0
; 427 :
; 428 : XllpLock(PI2C);
00010 e3a00058 mov r0, #0x58
00014 e5c43000 strb r3, [r4]
00018 eb000000 bl XllpLock
; 429 :
; 430 : pFunctions.ReadRegister(&XllpCAMERA, subAddress, bufP);
0001c e59f3028 ldr r3, [pc, #0x28]
00020 e59f0020 ldr r0, [pc, #0x20]
00024 e1a02004 mov r2, r4
00028 e5933018 ldr r3, [r3, #0x18]
0002c e1a01005 mov r1, r5
00030 e1a0e00f mov lr, pc
00034 e12fff13 bx r3
; 431 :
; 432 : XllpUnlock(PI2C);
00038 e3a00058 mov r0, #0x58
0003c eb000000 bl XllpUnlock
; 433 :
; 434 : //RETAILMSG(1,(TEXT("Reading register %x with %x\r\n"), subAddress, *bufP));
; 435 : }
00040 e8bd4030 ldmia sp!, {r4, r5, lr}
00044 e12fff1e bx lr
00048 |$L38775|
00048 00000000 DCD |XllpCAMERA|
0004c 00000000 DCD |pFunctions|
00050 |$M38771|
ENDP ; |CameraReadRegister|
EXPORT |CameraStartVideoCapture|
EXPORT |??_C@_1GO@IOBLIJCI@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?5?$AAi?$AAn?$AAi?$AAt?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAu?$AAr?$AAe?$AA?5@| [ DATA ] ; `string'
IMPORT |XllpCameraSetCaptureFormat|
IMPORT |XllpCameraStartVideoCapture|
IMPORT |XllpCameraSetInterruptMask|
IMPORT |EnterCriticalSection|
IMPORT |LeaveCriticalSection|
00000 AREA |.text| { |CameraStartVideoCapture| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraStartVideoCapture|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraStartVideoCapture| } ; comdat associative
|$T38781| DCD |$L38780|
DCD 0x40003001
00000 AREA |.rdata| { |??_C@_1GO@IOBLIJCI@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?5?$AAi?$AAn?$AAi?$AAt?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAu?$AAr?$AAe?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GO@IOBLIJCI@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?5?$AAi?$AAn?$AAi?$AAt?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAu?$AAr?$AAe?$AA?5@| DCB "C"
DCB 0x0, "a", 0x0, "m", 0x0, "e", 0x0, "r", 0x0, "a", 0x0, " "
DCB 0x0, "i", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, " ", 0x0, "f"
DCB 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "u", 0x0, "r", 0x0, "e"
DCB 0x0, " ", 0x0, "i", 0x0, "n", 0x0, "s", 0x0, "i", 0x0, "d"
DCB 0x0, "e", 0x0, " ", 0x0, "C", 0x0, "a", 0x0, "m", 0x0, "e"
DCB 0x0, "r", 0x0, "a", 0x0, "S", 0x0, "e", 0x0, "t", 0x0, "C"
DCB 0x0, "a", 0x0, "p", 0x0, "t", 0x0, "u", 0x0, "r", 0x0, "e"
DCB 0x0, "F", 0x0, "o", 0x0, "r", 0x0, "m", 0x0, "a", 0x0, "t"
DCB 0x0, "(", 0x0, ")", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraStartVideoCapture| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraStartVideoCapture| PROC
; 439 : {
00000 |$L38780|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M38778|
; 440 : XLLP_STATUS_T status;
; 441 :
; 442 : EnterCriticalSection(&CameraMutex);
00004 e59f0098 ldr r0, [pc, #0x98]
00008 eb000000 bl EnterCriticalSection
; 443 :
; 444 : bDoStillCapture = FALSE;
0000c e59f30a8 ldr r3, [pc, #0xA8]
00010 e3a02000 mov r2, #0
; 445 :
; 446 : XllpLock(PI2C);
00014 e3a00058 mov r0, #0x58
00018 e5832000 str r2, [r3]
0001c eb000000 bl XllpLock
; 447 :
; 448 : // Configure the capture format. Set the width, height, mode, and the physical addresses of the
; 449 : // start of the descriptor chain.
; 450 : XllpCAMERA.capture_width = XllpCAMERA.Video_capture_width;
00020 e59f5090 ldr r5, [pc, #0x90]
; 451 : XllpCAMERA.capture_height = XllpCAMERA.Video_capture_height;
; 452 : XllpCAMERA.capture_mode = XLLP_CAMERA_MODE_RECORD;
; 453 :
; 454 : XllpCAMERA.fifo0_descriptors_physical = VideoCaptureDescriptorPhysicalStartAddress_CH0;
00024 e59f2088 ldr r2, [pc, #0x88]
; 455 : XllpCAMERA.fifo1_descriptors_physical = VideoCaptureDescriptorPhysicalStartAddress_CH1;
00028 e59f1080 ldr r1, [pc, #0x80]
0002c e595300c ldr r3, [r5, #0xC]
; 456 : XllpCAMERA.fifo2_descriptors_physical = VideoCaptureDescriptorPhysicalStartAddress_CH2;
00030 e59fe074 ldr lr, [pc, #0x74]
00034 e5924000 ldr r4, [r2]
00038 e5853004 str r3, [r5, #4]
0003c e5953010 ldr r3, [r5, #0x10]
00040 e5912000 ldr r2, [r1]
00044 e3a01004 mov r1, #4
00048 e5853008 str r3, [r5, #8]
0004c e59e3000 ldr r3, [lr]
00050 e5851024 str r1, [r5, #0x24]
00054 e585408c str r4, [r5, #0x8C]
00058 e5852094 str r2, [r5, #0x94]
; 457 :
; 458 : // set capture format
; 459 : status = XllpCameraSetCaptureFormat(&XllpCAMERA);
0005c e1a00005 mov r0, r5
00060 e585309c str r3, [r5, #0x9C]
00064 eb000000 bl XllpCameraSetCaptureFormat
00068 e3500000 cmp r0, #0
; 460 : if (status)
; 461 : {
; 462 : RETAILMSG(1,(TEXT("Camera init failure inside CameraSetCaptureFormat().\r\n")));
0006c 159f0034 ldrne r0, [pc, #0x34]
00070 1b000000 blne NKDbgPrintfW
; 463 : }
; 464 :
; 465 : XllpCameraSetInterruptMask(&XllpCAMERA,
; 466 : XLLP_CI_CICR0_FOM |
; 467 : XLLP_CI_CICR0_EOFM |
; 468 : XLLP_CI_CICR0_SOFM |
; 469 : XLLP_CI_CICR0_CDM |
; 470 : XLLP_CI_CICR0_QDM |
; 471 : XLLP_CI_CICR0_PERRM |
; 472 : XLLP_CI_CICR0_EOLM |
; 473 : XLLP_CI_CICR0_FEM);
00074 e3a010ff mov r1, #0xFF
00078 e1a00005 mov r0, r5
0007c eb000000 bl XllpCameraSetInterruptMask
; 474 :
; 475 : XllpCameraStartVideoCapture(&XllpCAMERA, 0);
00080 e3a01000 mov r1, #0
00084 e1a00005 mov r0, r5
00088 eb000000 bl XllpCameraStartVideoCapture
; 476 :
; 477 : XllpUnlock(PI2C);
0008c e3a00058 mov r0, #0x58
00090 eb000000 bl XllpUnlock
; 478 :
; 479 : LeaveCriticalSection(&CameraMutex);
00094 e59f0008 ldr r0, [pc, #8]
00098 eb000000 bl LeaveCriticalSection
; 480 :
; 481 : }
0009c e8bd4030 ldmia sp!, {r4, r5, lr}
000a0 e12fff1e bx lr
000a4 |$L38783|
000a4 00000000 DCD |CameraMutex|
000a8 00000000 DCD |??_C@_1GO@IOBLIJCI@?$AAC?$AAa?$AAm?$AAe?$AAr?$AAa?$AA?5?$AAi?$AAn?$AAi?$AAt?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAu?$AAr?$AAe?$AA?5@|
000ac 00000000 DCD |VideoCaptureDescriptorPhysicalStartAddress_CH2|
000b0 00000000 DCD |VideoCaptureDescriptorPhysicalStartAddress_CH1|
000b4 00000000 DCD |VideoCaptureDescriptorPhysicalStartAddress_CH0|
000b8 00000000 DCD |XllpCAMERA|
000bc 00000000 DCD |bDoStillCapture|
000c0 |$M38779|
ENDP ; |CameraStartVideoCapture|
EXPORT |CameraStopVideoCapture|
IMPORT |XllpCameraStopVideoCapture|
00000 AREA |.text| { |CameraStopVideoCapture| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraStopVideoCapture|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraStopVideoCapture| } ; comdat associative
|$T38789| DCD |$L38788|
DCD 0x40000f01
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraStopVideoCapture| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraStopVideoCapture| PROC
; 484 : {
00000 |$L38788|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M38786|
; 485 : EnterCriticalSection(&CameraMutex);
00004 e59f0028 ldr r0, [pc, #0x28]
00008 eb000000 bl EnterCriticalSection
; 486 :
; 487 : XllpLock(PI2C);
0000c e3a00058 mov r0, #0x58
00010 eb000000 bl XllpLock
; 488 :
; 489 : XllpCameraStopVideoCapture(&XllpCAMERA);
00014 e59f001c ldr r0, [pc, #0x1C]
00018 eb000000 bl XllpCameraStopVideoCapture
; 490 :
; 491 : XllpUnlock(PI2C);
0001c e3a00058 mov r0, #0x58
00020 eb000000 bl XllpUnlock
; 492 :
; 493 : LeaveCriticalSection(&CameraMutex);
00024 e59f0008 ldr r0, [pc, #8]
00028 eb000000 bl LeaveCriticalSection
; 494 : }
0002c e49de004 ldr lr, [sp], #4
00030 e12fff1e bx lr
00034 |$L38791|
00034 00000000 DCD |CameraMutex|
00038 00000000 DCD |XllpCAMERA|
0003c |$M38787|
ENDP ; |CameraStopVideoCapture|
EXPORT |CameraCaptureStillImage|
IMPORT |XllpCameraCaptureStillImage|
00000 AREA |.text| { |CameraCaptureStillImage| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraCaptureStillImage|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraCaptureStillImage| } ; comdat associative
|$T38797| DCD |$L38796|
DCD 0x40003a01
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraCaptureStillImage| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraCaptureStillImage| PROC
; 497 : {
00000 |$L38796|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M38794|
; 498 : XLLP_STATUS_T status;
; 499 :
; 500 : CameraStopVideoCapture();
00004 eb000000 bl CameraStopVideoCapture
; 501 :
; 502 : EnterCriticalSection(&CameraMutex);
00008 e59f00bc ldr r0, [pc, #0xBC]
0000c eb000000 bl EnterCriticalSection
; 503 :
; 504 : XllpLock(PI2C);
00010 e3a00058 mov r0, #0x58
00014 eb000000 bl XllpLock
; 505 :
; 506 :
; 507 : discardframes = 0;
; 508 :
; 509 : // Configure the capture format. Set the width, height, mode, and the physical addresses of the
; 510 : // start of the descriptor chain.
; 511 : XllpCAMERA.capture_width = XllpCAMERA.Still_capture_width;
00018 e59f40c4 ldr r4, [pc, #0xC4]
; 512 : XllpCAMERA.capture_height = XllpCAMERA.Still_capture_height;
; 513 : XllpCAMERA.capture_mode = XLLP_CAMERA_MODE_STILL;
; 514 :
; 515 : XllpCAMERA.fifo0_descriptors_physical = StillCaptureDescriptorPhysicalStartAddress_CH0;
0001c e59f20bc ldr r2, [pc, #0xBC]
; 516 : XllpCAMERA.fifo1_descriptors_physical = StillCaptureDescriptorPhysicalStartAddress_CH1;
00020 e59f10b4 ldr r1, [pc, #0xB4]
00024 e5943014 ldr r3, [r4, #0x14]
; 517 : XllpCAMERA.fifo2_descriptors_physical = StillCaptureDescriptorPhysicalStartAddress_CH2;
00028 e59f00a8 ldr r0, [pc, #0xA8]
0002c e5922000 ldr r2, [r2]
00030 e5843004 str r3, [r4, #4]
00034 e5943018 ldr r3, [r4, #0x18]
00038 e5911000 ldr r1, [r1]
0003c e3a0e002 mov lr, #2
00040 e5843008 str r3, [r4, #8]
00044 e59f5088 ldr r5, [pc, #0x88]
00048 e5903000 ldr r3, [r0]
0004c e584e024 str lr, [r4, #0x24]
00050 e584208c str r2, [r4, #0x8C]
00054 e5841094 str r1, [r4, #0x94]
; 518 :
; 519 : // Reset the buffer chain. The application must now resubmit all capture buffers.
; 520 : bFirstVideoCaptureBufferSubmitted = FALSE;
00058 e3a01000 mov r1, #0
0005c e3a0e000 mov lr, #0
; 521 : VirtAddr_Last_Pn_CH0 = 0x0;
00060 e3a02000 mov r2, #0
; 522 :
; 523 : // set capture format
; 524 : status = XllpCameraSetCaptureFormat(&XllpCAMERA);
00064 e1a00004 mov r0, r4
00068 e585100c str r1, [r5, #0xC]
0006c e584309c str r3, [r4, #0x9C]
00070 e585e000 str lr, [r5]
00074 e5852030 str r2, [r5, #0x30]
00078 eb000000 bl XllpCameraSetCaptureFormat
0007c e3500000 cmp r0, #0
; 525 : if (status)
; 526 : {
; 527 : RETAILMSG(1,(TEXT("Camera init failure inside CameraSetCaptureFormat().\r\n")));
00080 159f0048 ldrne r0, [pc, #0x48]
00084 1b000000 blne NKDbgPrintfW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -