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

📄 xllp_camera.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 3 页
字号:
  00000		 |$L2339|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M2337|

; 379  :     XllpCISetFrameRate(camera_context->ci_reg_base, camera_context->frame_rate);

  00004	e590102c	 ldr         r1, [r0, #0x2C]
  00008	e590005c	 ldr         r0, [r0, #0x5C]
  0000c	eb000000	 bl          XllpCISetFrameRate

; 380  :     return;
; 381  : } 

  00010	e49de004	 ldr         lr, [sp], #4
  00014	e12fff1e	 bx          lr
  00018		 |$M2338|

			 ENDP  ; |XllpCameraSetCaptureFrameRate|

	EXPORT	|XllpCameraGetCaptureFrameRate|
	IMPORT	|XllpCIGetFrameRate|

  00000			 AREA	 |.text| { |XllpCameraGetCaptureFrameRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpCameraGetCaptureFrameRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraGetCaptureFrameRate| } ; comdat associative
|$T2348| DCD	|$L2347|
	DCD	0x40000701
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpCameraGetCaptureFrameRate| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpCameraGetCaptureFrameRate| PROC

; 385  : {

  00000		 |$L2347|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M2345|
  00004	e1a04000	 mov         r4, r0

; 386  :     camera_context->frame_rate = XllpCIGetFrameRate(camera_context->ci_reg_base);

  00008	e594005c	 ldr         r0, [r4, #0x5C]
  0000c	eb000000	 bl          XllpCIGetFrameRate
  00010	e584002c	 str         r0, [r4, #0x2C]

; 387  :     return;
; 388  : } 

  00014	e8bd4010	 ldmia       sp!, {r4, lr}
  00018	e12fff1e	 bx          lr
  0001c		 |$M2346|

			 ENDP  ; |XllpCameraGetCaptureFrameRate|

	EXPORT	|XllpCameraSetInterruptMask|
	IMPORT	|XllpCISetInterruptMask|

  00000			 AREA	 |.text| { |XllpCameraSetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpCameraSetInterruptMask|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraSetInterruptMask| } ; comdat associative
|$T2357| DCD	|$L2356|
	DCD	0x40000801
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpCameraSetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpCameraSetInterruptMask| PROC

; 398  : {

  00000		 |$L2356|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M2354|

; 399  :     // set CI interrupt
; 400  :     XllpCISetInterruptMask( camera_context->ci_reg_base, mask & XLLP_CI_CICR0_INTERRUPT_MASK );

  00004	e3a03fff	 mov         r3, #0xFF, 30
  00008	e590005c	 ldr         r0, [r0, #0x5C]
  0000c	e3833003	 orr         r3, r3, #3
  00010	e0011003	 and         r1, r1, r3
  00014	eb000000	 bl          XllpCISetInterruptMask

; 401  : }

  00018	e49de004	 ldr         lr, [sp], #4
  0001c	e12fff1e	 bx          lr
  00020		 |$M2355|

			 ENDP  ; |XllpCameraSetInterruptMask|

	EXPORT	|XllpCameraGetInterruptMask|
	IMPORT	|XllpCIGetInterruptMask|

  00000			 AREA	 |.text| { |XllpCameraGetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpCameraGetInterruptMask|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraGetInterruptMask| } ; comdat associative
|$T2367| DCD	|$L2366|
	DCD	0x40000501
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpCameraGetInterruptMask| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpCameraGetInterruptMask| PROC

; 405  : {

  00000		 |$L2366|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M2364|

; 406  :     // get CI mask
; 407  :     return ( XllpCIGetInterruptMask( camera_context->ci_reg_base ));

  00004	e590005c	 ldr         r0, [r0, #0x5C]
  00008	eb000000	 bl          XllpCIGetInterruptMask

; 408  : } 

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$M2365|

			 ENDP  ; |XllpCameraGetInterruptMask|

	EXPORT	|XllpCameraClearInterruptStatus|

  00000			 AREA	 |.text| { |XllpCameraClearInterruptStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpCameraClearInterruptStatus|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraClearInterruptStatus| } ; comdat associative
|$T2376| DCD	|$L2375|
	DCD	0x40000801
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpCameraClearInterruptStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpCameraClearInterruptStatus| PROC

; 412  : {

  00000		 |$L2375|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M2373|

; 413  :     XllpCIClearInterruptStatus( camera_context->ci_reg_base, (status & 0xFFFF) );   

  00004	e3a03cff	 mov         r3, #0xFF, 24
  00008	e590005c	 ldr         r0, [r0, #0x5C]
  0000c	e38330ff	 orr         r3, r3, #0xFF
  00010	e0011003	 and         r1, r1, r3
  00014	eb000000	 bl          XllpCIClearInterruptStatus

; 414  : }

  00018	e49de004	 ldr         lr, [sp], #4
  0001c	e12fff1e	 bx          lr
  00020		 |$M2374|

			 ENDP  ; |XllpCameraClearInterruptStatus|

	EXPORT	|XllpCameraInit|
	IMPORT	|OS_DmaAllocChannel|
	IMPORT	|XllpGpioSetDirectionIn|
	IMPORT	|XllpGpioSetDirectionOut|
	IMPORT	|XllpGpioSetOutput0|
	IMPORT	|XllpGpioSetAlternateFn|
	IMPORT	|XllpCIInit|

  00000			 AREA	 |.text| { |XllpCameraInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$XllpCameraInit|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraInit| } ; comdat associative
|$T2394| DCD	|$L2393|
	DCD	0x40005701
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |XllpCameraInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |XllpCameraInit| PROC

; 174  : {

  00000		 |$L2393|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004		 |$M2391|
  00004	e1a05000	 mov         r5, r0

; 175  :     XLLP_STATUS_T   status = XLLP_STATUS_SUCCESS;
; 176  :     P_XLLP_GPIO_T pGPIO = (P_XLLP_GPIO_T)camera_context->gpio_reg_base;
; 177  :     int i;
; 178  :     
; 179  :     // parameter check
; 180  :     if (camera_context->sensor_type > XLLP_CAMERA_TYPE_MAX)

  00008	e5953000	 ldr         r3, [r5]
  0000c	e5956058	 ldr         r6, [r5, #0x58]
  00010	e3530005	 cmp         r3, #5

; 181  :         return XLLP_STATUS_WRONG_PARAMETER; 

  00014	8a00004c	 bhi         |$L2095|

; 182  :     if (camera_context->capture_input_format > XLLP_CAMERA_IMAGE_FORMAT_MAX ||
; 183  :         camera_context->capture_output_format > XLLP_CAMERA_IMAGE_FORMAT_MAX)

  00018	e595301c	 ldr         r3, [r5, #0x1C]
  0001c	e3530012	 cmp         r3, #0x12
  00020	8a000049	 bhi         |$L2095|
  00024	e5953020	 ldr         r3, [r5, #0x20]
  00028	e3530012	 cmp         r3, #0x12
  0002c	8a000046	 bhi         |$L2095|

; 185  :         
; 186  :     // check the function dispatch table according to the sensor type
; 187  :     if ( !camera_context->camera_functions )

  00030	e5953064	 ldr         r3, [r5, #0x64]
  00034	e1b02003	 movs        r2, r3

; 188  :     	return XLLP_STATUS_WRONG_PARAMETER;

  00038	0a000043	 beq         |$L2095|

; 189  : 	if ( !camera_context->camera_functions->init ||     	
; 190  : 		 !camera_context->camera_functions->deinit ||
; 191  : 		 !camera_context->camera_functions->set_capture_format ||
; 192  : 		 !camera_context->camera_functions->start_capture ||
; 193  : 		 !camera_context->camera_functions->stop_capture )     	

  0003c	e5923000	 ldr         r3, [r2]
  00040	e3530000	 cmp         r3, #0
  00044	0a000040	 beq         |$L2095|
  00048	e5923004	 ldr         r3, [r2, #4]
  0004c	e3530000	 cmp         r3, #0
  00050	0a00003d	 beq         |$L2095|
  00054	e5923008	 ldr         r3, [r2, #8]
  00058	e3530000	 cmp         r3, #0
  0005c	0a00003a	 beq         |$L2095|
  00060	e592300c	 ldr         r3, [r2, #0xC]
  00064	e3530000	 cmp         r3, #0
  00068	0a000037	 beq         |$L2095|
  0006c	e5923010	 ldr         r3, [r2, #0x10]
  00070	e3530000	 cmp         r3, #0
  00074	0a000034	 beq         |$L2095|

; 194  :     	return XLLP_STATUS_WRONG_PARAMETER;
; 195  :     
; 196  :     camera_context->fifo0_transfer_size = camera_context->fifo1_transfer_size = camera_context->fifo2_transfer_size = 0;
; 197  : 	        
; 198  :     // gpio pins init
; 199  :     {
; 200  :         // the first entry is size
; 201  :         static const XLLP_UINT32_T lowpins[]= {12, 27, 114, 116, 115, 90, 91, 17, 12, 23, 26, 24, 25};
; 202  :         static const XLLP_UINT32_T inpins[] = {11, 27, 114, 116, 115, 90, 91, 17, 12, 26, 25, 24};
; 203  :         static const XLLP_UINT32_T outpins[] = {1, 23};
; 204  :         static const XLLP_UINT32_T altpins[] = {12, 27, 114, 116, 115, 90, 91, 17, 12, 23, 26, 25, 24};
; 205  :         static const XLLP_UINT32_T altfunc[] = {12,  3,   1,   1,   2,  3,  3,  2,  2,  1,  2,  1,  1};
; 206  :         // configure processor pins
; 207  :         //      Mux Pin         GPIO     Alt   Direction
; 208  :         //  CIF_DD[0]:  SSP_EXTCLK  27  alt3    in
; 209  :         //  CIF_DD[1]:  USIM_VS0    114 alt1    in
; 210  :         //  CIF_DD[2]:  USIM_DET    116 alt1    in
; 211  :         //  CIF_DD[3]:  USIM_EN     115 alt2    in
; 212  :         //  CIF_DD[4]:  nUSIM_RST   90  alt3    in
; 213  :         //  CIF_DD[5]:  USIM_CLK    91  alt3    in
; 214  :         //  CIF_DD[6]:  PWM1        17  alt2    in
; 215  :         //  CIF_DD[7]:  GPIO12      12  alt2    in
; 216  :         //  CIF_MCLK:   SSP_SCLK    23  alt1    out
; 217  :         //  CIF_PCLK:   SSP_RxD     26  alt2    in
; 218  :         //  CIF_LV:     SSP_TxD     25  alt1    in
; 219  :         //  CIF_FV:     SSP_SFRM    24  alt1    in
; 220  :         XllpGpioSetOutput0(pGPIO, (XLLP_UINT32_T*)lowpins);

  00078	e59f40d8	 ldr         r4, [pc, #0xD8]
  0007c	e3a03000	 mov         r3, #0
  00080	e1a00006	 mov         r0, r6
  00084	e28410ac	 add         r1, r4, #0xAC
  00088	e58530a8	 str         r3, [r5, #0xA8]
  0008c	e58530a4	 str         r3, [r5, #0xA4]
  00090	e58530a0	 str         r3, [r5, #0xA0]
  00094	eb000000	 bl          XllpGpioSetOutput0

; 221  :         XllpGpioSetDirectionIn (pGPIO, (XLLP_UINT32_T*)inpins); 

  00098	e2841014	 add         r1, r4, #0x14
  0009c	e1a00006	 mov         r0, r6
  000a0	eb000000	 bl          XllpGpioSetDirectionIn

; 222  :         XllpGpioSetDirectionOut(pGPIO, (XLLP_UINT32_T*)outpins);

  000a4	e1a01004	 mov         r1, r4
  000a8	e1a00006	 mov         r0, r6
  000ac	eb000000	 bl          XllpGpioSetDirectionOut

; 223  :         XllpGpioSetAlternateFn (pGPIO, (XLLP_UINT32_T*)altpins, (XLLP_UINT32_T*)altfunc);

  000b0	e2842044	 add         r2, r4, #0x44
  000b4	e2841078	 add         r1, r4, #0x78
  000b8	e1a00006	 mov         r0, r6
  000bc	eb000000	 bl          XllpGpioSetAlternateFn

; 224  :     }   
; 225  :         
; 226  :     // capture interface init
; 227  :     XllpCIInit(camera_context->ci_reg_base, camera_context->clk_reg_base);

  000c0	e5951050	 ldr         r1, [r5, #0x50]
  000c4	e595005c	 ldr         r0, [r5, #0x5C]
  000c8	eb000000	 bl          XllpCIInit

; 228  :     
; 229  :     // sensor init
; 230  :     status = camera_context->camera_functions->init(camera_context);    
; 231  :     if (status)

  000cc	e5953064	 ldr         r3, [r5, #0x64]
  000d0	e1a00005	 mov         r0, r5
  000d4	e5933000	 ldr         r3, [r3]
  000d8	e1a0e00f	 mov         lr, pc
  000dc	e12fff13	 bx          r3
  000e0	e3500000	 cmp         r0, #0
  000e4	1a000013	 bne         |$camera_init_err$2115|

; 232  :         goto camera_init_err;
; 233  :     
; 234  :     // dma channel allocation
; 235  : 	if (camera_context->dma_channels[0] == 0xFF)

  000e8	e5953068	 ldr         r3, [r5, #0x68]
  000ec	e35300ff	 cmp         r3, #0xFF
  000f0	1a00000a	 bne         |$L2119|

; 236  : 	{
; 237  : 		for(i=0; i<3; i++) {

  000f4	e3a04000	 mov         r4, #0
  000f8	e2856068	 add         r6, r5, #0x68
  000fc		 |$L2117|

; 238  : 			status = OS_DmaAllocChannel(&camera_context->dma_channels[i], XLLP_DMAC_CHANNEL_PRIORITY_HIGH);

  000fc	e3a01000	 mov         r1, #0
  00100	e1a00006	 mov         r0, r6
  00104	eb000000	 bl          OS_DmaAllocChannel
  00108	e3500000	 cmp         r0, #0

; 239  : 			if (status)

  0010c	1a000009	 bne         |$camera_init_err$2115|
  00110	e2844001	 add         r4, r4, #1
  00114	e3540003	 cmp         r4, #3
  00118	e2866004	 add         r6, r6, #4
  0011c	bafffff6	 blt         |$L2117|
  00120		 |$L2119|

; 240  : 				goto camera_init_err;
; 241  : 		}
; 242  : 	}
; 243  : 
; 244  :     // set frame rate
; 245  :     XllpCameraSetCaptureFrameRate(camera_context);

  00120	e595102c	 ldr         r1, [r5, #0x2C]
  00124	e595005c	 ldr         r0, [r5, #0x5C]
  00128	eb000000	 bl          XllpCISetFrameRate

; 246  : 
; 247  :     return XLLP_STATUS_SUCCESS;

  0012c	e3a00000	 mov         r0, #0

; 252  : }

  00130	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00134	e12fff1e	 bx          lr
  00138		 |$camera_init_err$2115|

; 248  :         
; 249  : camera_init_err:
; 250  :     XllpCameraDeInit(camera_context);

  00138	e1a00005	 mov         r0, r5
  0013c	eb000000	 bl          XllpCameraDeInit

; 251  :     return XLLP_STATUS_FAILURE; 

  00140	e3a00001	 mov         r0, #1

; 252  : }

  00144	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00148	e12fff1e	 bx          lr
  0014c		 |$L2095|

; 184  :         return XLLP_STATUS_WRONG_PARAMETER; 

  0014c	e3a00003	 mov         r0, #3

; 252  : }

  00150	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00154	e12fff1e	 bx          lr
  00158		 |$L2396|
  00158	00000000	 DCD         |?outpins@?2??XllpCameraInit@@9@9|
  0015c		 |$M2392|

			 ENDP  ; |XllpCameraInit|

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -