📄 pxa27x_camera.cod
字号:
; 528 : // return 1;
; 529 : }
; 530 :
; 531 : XllpCameraSetInterruptMask(&XllpCAMERA,
; 532 : XLLP_CI_CICR0_FOM |
; 533 : XLLP_CI_CICR0_EOFM |
; 534 : XLLP_CI_CICR0_SOFM |
; 535 : XLLP_CI_CICR0_CDM |
; 536 : XLLP_CI_CICR0_QDM |
; 537 : XLLP_CI_CICR0_PERRM |
; 538 : XLLP_CI_CICR0_EOLM |
; 539 : XLLP_CI_CICR0_FEM);
00088 e3a010ff mov r1, #0xFF
0008c e1a00004 mov r0, r4
00090 eb000000 bl XllpCameraSetInterruptMask
; 540 :
; 541 : bDoStillCapture = TRUE;
00094 e3a03001 mov r3, #1
; 542 :
; 543 : // Enable the still image capture sequence.
; 544 : // Calling this routine once results in capture sequence that sometimes fails to interrupt on the end of frame.
; 545 : // Calling this routine twice works around this problem - but it needs to be looked into to root cause the failure.
; 546 : XllpCameraCaptureStillImage(&XllpCAMERA, 0);
00098 e3a01000 mov r1, #0
0009c e1a00004 mov r0, r4
000a0 e5853004 str r3, [r5, #4]
000a4 eb000000 bl XllpCameraCaptureStillImage
; 547 : XllpCameraCaptureStillImage(&XllpCAMERA, 0);
000a8 e3a01000 mov r1, #0
000ac e1a00004 mov r0, r4
000b0 eb000000 bl XllpCameraCaptureStillImage
; 548 :
; 549 : XllpUnlock(PI2C);
000b4 e3a00058 mov r0, #0x58
000b8 eb000000 bl XllpUnlock
; 550 :
; 551 : LeaveCriticalSection(&CameraMutex);
000bc e59f0008 ldr r0, [pc, #8]
000c0 eb000000 bl LeaveCriticalSection
; 552 : }
000c4 e8bd4030 ldmia sp!, {r4, r5, lr}
000c8 e12fff1e bx lr
000cc |$L38799|
000cc 00000000 DCD |CameraMutex|
000d0 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@|
000d4 00000000 DCD |discardframes|
000d8 00000000 DCD |StillCaptureDescriptorPhysicalStartAddress_CH2|
000dc 00000000 DCD |StillCaptureDescriptorPhysicalStartAddress_CH1|
000e0 00000000 DCD |StillCaptureDescriptorPhysicalStartAddress_CH0|
000e4 00000000 DCD |XllpCAMERA|
000e8 |$M38795|
ENDP ; |CameraCaptureStillImage|
EXPORT |CameraShutdown|
IMPORT |XllpCameraDeInit|
IMPORT |free|
; File f:\wm520\public\wpc\cesysgen\sdk\inc\kfuncs.h
00000 AREA |.text| { |CameraShutdown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraShutdown|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraShutdown| } ; comdat associative
|$T38815| DCD |$L38814|
DCD 0x40002901
; Function compile flags: /Ogsy
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\camera\pxa27x_camera.c
00000 AREA |.text| { |CameraShutdown| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraShutdown| PROC
; 556 : {
00000 |$L38814|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M38812|
; 557 : DWORD i;
; 558 : DESCRIPTOR_INFO_T *pDescriptorInfo;
; 559 :
; 560 : XllpLock(PI2C);
00004 e3a00058 mov r0, #0x58
00008 eb000000 bl XllpLock
; 561 :
; 562 : XllpCameraDeInit(&XllpCAMERA);
0000c e59f008c ldr r0, [pc, #0x8C]
00010 eb000000 bl XllpCameraDeInit
; 563 :
; 564 : for (i = 0; i < NumBuffers; i++)
00014 e59f5080 ldr r5, [pc, #0x80]
00018 e3a07000 mov r7, #0
0001c e5953020 ldr r3, [r5, #0x20]
00020 e3530000 cmp r3, #0
00024 0a00000d beq |$L38337|
; 557 : DWORD i;
; 558 : DESCRIPTOR_INFO_T *pDescriptorInfo;
; 559 :
; 560 : XllpLock(PI2C);
00028 e59f6068 ldr r6, [pc, #0x68]
0002c |$L38335|
; 565 : {
; 566 : //NKDbgPrintfW(TEXT("Freeing resources.\r\n"));
; 567 : pDescriptorInfo = MasterBufferList[i];
0002c e4964004 ldr r4, [r6], #4
; 568 :
; 569 : free(pDescriptorInfo->pDescriptorBufferPhyAddress);
00030 e5940044 ldr r0, [r4, #0x44]
00034 eb000000 bl free
; 570 : free(pDescriptorInfo->pDescriptorBufferVirtAddress);
00038 e5940048 ldr r0, [r4, #0x48]
0003c eb000000 bl free
; 571 : free(pDescriptorInfo->pBufferPhyAddress);
00040 e594003c ldr r0, [r4, #0x3C]
00044 eb000000 bl free
; 572 : free(pDescriptorInfo);
00048 e1a00004 mov r0, r4
0004c eb000000 bl free
00050 e5953020 ldr r3, [r5, #0x20]
00054 e2877001 add r7, r7, #1
00058 e1570003 cmp r7, r3
0005c 3afffff2 bcc |$L38335|
00060 |$L38337|
; 573 : }
; 574 :
; 575 : free((void *)VirtAddr_Phantom_Buffer_Base_Address);
00060 e5950000 ldr r0, [r5]
00064 eb000000 bl free
; 576 :
; 577 : NumBuffers = 0;
; 578 :
; 579 : // Signal the ISR thread to shutdown
; 580 : SetEvent(hShutDown);
00068 e59f3024 ldr r3, [pc, #0x24]
0006c e3a02000 mov r2, #0
00070 e3a01003 mov r1, #3
00074 e5930000 ldr r0, [r3]
00078 e5852020 str r2, [r5, #0x20]
0007c eb000000 bl EventModify
; 581 :
; 582 : XllpUnlock(PI2C);
00080 e3a00058 mov r0, #0x58
00084 eb000000 bl XllpUnlock
; 583 :
; 584 : return TRUE;
00088 e3a00001 mov r0, #1
; 585 : }
0008c e8bd40f0 ldmia sp!, {r4 - r7, lr}
00090 e12fff1e bx lr
00094 |$L38817|
00094 00000000 DCD |hShutDown|
00098 00000000 DCD |MasterBufferList|
0009c 00000000 DCD |VirtAddr_Phantom_Buffer_Base_Address|
000a0 00000000 DCD |XllpCAMERA|
000a4 |$M38813|
ENDP ; |CameraShutdown|
EXPORT |CameraChangeCaptureFormat|
00000 AREA |.text| { |CameraChangeCaptureFormat| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraChangeCaptureFormat|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraChangeCaptureFormat| } ; comdat associative
|$T38825| DCD |$L38824|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraChangeCaptureFormat| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraChangeCaptureFormat| PROC
; 590 : {
00000 |$L38824|
00000 |$M38822|
; 591 : // TBD: call some real function
; 592 : return TRUE;
00000 e3a00001 mov r0, #1
; 593 : }
00004 e12fff1e bx lr
00008 |$M38823|
ENDP ; |CameraChangeCaptureFormat|
EXPORT |CameraStopDMATransfer|
00000 AREA |.text| { |CameraStopDMATransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraStopDMATransfer|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraStopDMATransfer| } ; comdat associative
|$T38832| DCD |$L38831|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraStopDMATransfer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CameraStopDMATransfer| PROC
; 598 : {
00000 |$L38831|
00000 |$M38829|
; 599 : // XllpCameraStopTransfer(&XllpCAMERA);
; 600 : }
00000 e12fff1e bx lr
00004 |$M38830|
ENDP ; |CameraStopDMATransfer|
EXPORT |getPhyAddress|
IMPORT |LockPages|
00000 AREA |.text| { |getPhyAddress| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$getPhyAddress|, PDATA, SELECTION=5, ASSOC=|.text| { |getPhyAddress| } ; comdat associative
|$T38844| DCD |$L38843|
DCD 0x40001a02
; Function compile flags: /Ogsy
00000 AREA |.text| { |getPhyAddress| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |getPhyAddress| PROC
; 604 : {
00000 |$L38843|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M38841|
00008 e1a06001 mov r6, r1
0000c e1a05000 mov r5, r0
; 605 : BOOL bReturnVal = TRUE;
; 606 : DWORD dwPageSize = UserKInfo[KINX_PAGESIZE];
; 607 : DWORD dwPageTableEntry;
; 608 : DWORD dwPageTablePart;
; 609 : DWORD dwOffsetInPage;
; 610 :
; 611 : /* query the page tables */
; 612 : if (LockPages (pdwVirtual, sizeof (DWORD), &dwPageTableEntry, LOCKFLAG_QUERY_ONLY) != TRUE)
00010 e3a03002 mov r3, #2
00014 e28d2000 add r2, sp, #0
00018 e3a01004 mov r1, #4
0001c e3a04001 mov r4, #1
00020 eb000000 bl LockPages
00024 e3500001 cmp r0, #1
; 613 : {
; 614 : bReturnVal = FALSE;
00028 13a04000 movne r4, #0
0002c 1a000009 bne |$cleanAndReturn$38356|
; 615 : goto cleanAndReturn;
; 616 : }
; 617 :
; 618 : /* shift left to make into a real address */
; 619 : dwPageTablePart = dwPageTableEntry << UserKInfo[KINX_PFN_SHIFT];
; 620 :
; 621 : /* figure out the offset in the page */
; 622 : dwOffsetInPage = ((DWORD) pdwVirtual) & (~UserKInfo[KINX_PFN_MASK]);
; 623 :
; 624 : /* combine the page table part and offset to create the address */
; 625 : *pdwPhysical = dwPageTablePart | dwOffsetInPage;
00030 e3a0300c mov r3, #0xC
00034 e2433c35 sub r3, r3, #0x35, 24
00038 e5933000 ldr r3, [r3]
0003c e3a02008 mov r2, #8
00040 e2422c35 sub r2, r2, #0x35, 24
00044 e59d1000 ldr r1, [sp]
00048 e5922000 ldr r2, [r2]
0004c e1c53003 bic r3, r5, r3
00050 e1833211 orr r3, r3, r1, lsl r2
00054 e5863000 str r3, [r6]
00058 |$cleanAndReturn$38356|
; 626 :
; 627 : cleanAndReturn:
; 628 :
; 629 : return (bReturnVal);
00058 e1a00004 mov r0, r4
; 630 : }
0005c e28dd004 add sp, sp, #4
00060 e8bd4070 ldmia sp!, {r4 - r6, lr}
00064 e12fff1e bx lr
00068 |$M38842|
ENDP ; |getPhyAddress|
EXPORT |CameraSubmitBuffer|
EXPORT |??_C@_1IG@MFJLAPLC@?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAl?$AAi?$AAs?$AAt?$AA?5?$AAh?$AAa?$AAd?$AA?5?$AAn?$AAu?$AAl?$AAl@| [ DATA ] ; `string'
00000 AREA |.text| { |CameraSubmitBuffer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CameraSubmitBuffer|, PDATA, SELECTION=5, ASSOC=|.text| { |CameraSubmitBuffer| } ; comdat associative
|$T38875| DCD |$L38874|
DCD 0x40009402
00000 AREA |.rdata| { |??_C@_1IG@MFJLAPLC@?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAl?$AAi?$AAs?$AAt?$AA?5?$AAh?$AAa?$AAd?$AA?5?$AAn?$AAu?$AAl?$AAl@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IG@MFJLAPLC@?$AAB?$AAu?$AAf?$AAf?$AAe?$AAr?$AA?5?$AAl?$AAi?$AAs?$AAt?$AA?5?$AAh?$AAa?$AAd?$AA?5?$AAn?$AAu?$AAl?$AAl@| DCB "B"
DCB 0x0, "u", 0x0, "f", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, " "
DCB 0x0, "l", 0x0, "i", 0x0, "s", 0x0, "t", 0x0, " ", 0x0, "h"
DCB 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "u", 0x0, "l"
DCB 0x0, "l", 0x0, " ", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, "r"
DCB 0x0, "y", 0x0, ".", 0x0, " ", 0x0, " ", 0x0, "S", 0x0, "u"
DCB 0x0, "b", 0x0, "m", 0x0, "i", 0x0, "t", 0x0, " ", 0x0, "b"
DCB 0x0, "u", 0x0, "f", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, ".", 0x0, " ", 0x0, " ", 0x0, "B", 0x0, "u", 0x0, "f"
DCB 0x0, "f", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "I", 0x0, "D"
DCB 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |CameraSubmitBuffer| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -