⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pxa27x_camera.cod

📁 以嵌入式处理器pxa270为硬件平台的wince系统摄像头驱动
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 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 + -