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

📄 xllp_camera.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 3 页
字号:

  00000		 |XllpCameraDeInit| PROC

; 255  : {

  00000		 |$L2279|
  00000	e92d41f0	 stmdb       sp!, {r4 - r8, lr}
  00004		 |$M2277|
  00004	e1a05000	 mov         r5, r0

; 256  :     XLLP_STATUS_T status;
; 257  :     int i;
; 258  :     
; 259  :     // free dma channel
; 260  :     for(i=0; i<3; i++)
; 261  : 	{
; 262  :         if (camera_context->dma_channels[i] != 0xFF) 
; 263  : 		{
; 264  :             OS_DmaFreeChannel(camera_context->dma_channels[i], CAMERA_DMA_DEVICE[i]);   
; 265  : 			camera_context->dma_channels[i] = 0xFF;

  00008	e59f3060	 ldr         r3, [pc, #0x60]
  0000c	e1a04005	 mov         r4, r5
  00010	e3a06003	 mov         r6, #3
  00014	e0437005	 sub         r7, r3, r5
  00018	e3a080ff	 mov         r8, #0xFF
  0001c		 |$L2126|
  0001c	e5940068	 ldr         r0, [r4, #0x68]
  00020	e35000ff	 cmp         r0, #0xFF
  00024	0a000002	 beq         |$L2127|
  00028	e7971004	 ldr         r1, [r7, +r4]
  0002c	eb000000	 bl          OS_DmaFreeChannel
  00030	e5848068	 str         r8, [r4, #0x68]
  00034		 |$L2127|
  00034	e2844004	 add         r4, r4, #4
  00038	e2566001	 subs        r6, r6, #1
  0003c	1afffff6	 bne         |$L2126|

; 266  : 		}
; 267  :     }
; 268  :     // deinit sensor
; 269  :     status = camera_context->camera_functions->deinit(camera_context);  

  00040	e5953064	 ldr         r3, [r5, #0x64]
  00044	e1a00005	 mov         r0, r5
  00048	e5933004	 ldr         r3, [r3, #4]
  0004c	e1a0e00f	 mov         lr, pc
  00050	e12fff13	 bx          r3

; 270  :     
; 271  :     // capture interface deinit
; 272  :     XllpCIDeInit(camera_context->ci_reg_base, camera_context->clk_reg_base);

  00054	e5951050	 ldr         r1, [r5, #0x50]
  00058	e1a04000	 mov         r4, r0
  0005c	e595005c	 ldr         r0, [r5, #0x5C]
  00060	eb000000	 bl          XllpCIDeInit

; 273  : 
; 274  :     return status;

  00064	e1a00004	 mov         r0, r4

; 275  : }

  00068	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  0006c	e12fff1e	 bx          lr
  00070		 |$L2282|
  00070	00000000	 DCD         |CAMERA_DMA_DEVICE|
  00074		 |$M2278|

			 ENDP  ; |XllpCameraDeInit|

	EXPORT	|XllpCameraSetCaptureFormat|
	IMPORT	|__rt_udiv|
	IMPORT	|XllpCISetImageFormat|
	IMPORT	|XllpCIConfigureMP|

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

  00000			 AREA	 |.pdata$$XllpCameraSetCaptureFormat|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraSetCaptureFormat| } ; comdat associative
|$T2297| DCD	|$L2296|
	DCD	0x40004d02
; Function compile flags: /Ogsy

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

  00000		 |XllpCameraSetCaptureFormat| PROC

; 285  : {

  00000		 |$L2296|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M2294|
  00008	e1a04000	 mov         r4, r0

; 286  :     XLLP_STATUS_T status;
; 287  : 
; 288  :     unsigned frame_size;
; 289  :     XLLP_CI_IMAGE_FORMAT ci_input_format, ci_output_format;
; 290  :     XLLP_CI_MP_TIMING timing;
; 291  :         
; 292  :     // set capture interface
; 293  :     if (camera_context->capture_input_format >  XLLP_CAMERA_IMAGE_FORMAT_MAX ||
; 294  :         camera_context->capture_output_format > XLLP_CAMERA_IMAGE_FORMAT_MAX )

  0000c	e594101c	 ldr         r1, [r4, #0x1C]
  00010	e3510012	 cmp         r1, #0x12
  00014	8a000041	 bhi         |$L2139|
  00018	e5942020	 ldr         r2, [r4, #0x20]
  0001c	e3520012	 cmp         r2, #0x12
  00020	8a00003e	 bhi         |$L2139|

; 296  :     ci_input_format = FORMAT_MAPPINGS[camera_context->capture_input_format];

  00024	e59f3104	 ldr         r3, [pc, #0x104]
  00028	e7931101	 ldr         r1, [r3, +r1, lsl #2]

; 297  :     ci_output_format = FORMAT_MAPPINGS[camera_context->capture_output_format];

  0002c	e7932102	 ldr         r2, [r3, +r2, lsl #2]

; 298  :     if (ci_input_format == XLLP_CI_INVALID_FORMAT || ci_output_format == XLLP_CI_INVALID_FORMAT)

  00030	e35100ff	 cmp         r1, #0xFF
  00034	0a000039	 beq         |$L2139|
  00038	e35200ff	 cmp         r2, #0xFF
  0003c	0a000037	 beq         |$L2139|

; 299  :         return XLLP_STATUS_WRONG_PARAMETER;
; 300  :     XllpCISetImageFormat(camera_context->ci_reg_base, ci_input_format, ci_output_format);

  00040	e594005c	 ldr         r0, [r4, #0x5C]
  00044	eb000000	 bl          XllpCISetImageFormat

; 301  :     timing.BFW = timing.BLW = 0;            
; 302  :     XllpCIConfigureMP(camera_context->ci_reg_base, camera_context->capture_width-1, camera_context->capture_height-1, &timing);

  00048	e5943008	 ldr         r3, [r4, #8]
  0004c	e5941004	 ldr         r1, [r4, #4]
  00050	e594005c	 ldr         r0, [r4, #0x5C]
  00054	e2432001	 sub         r2, r3, #1
  00058	e3a0e000	 mov         lr, #0
  0005c	e3a05000	 mov         r5, #0
  00060	e28d3000	 add         r3, sp, #0
  00064	e2411001	 sub         r1, r1, #1
  00068	e58de004	 str         lr, [sp, #4]
  0006c	e58d5000	 str         r5, [sp]
  00070	eb000000	 bl          XllpCIConfigureMP

; 303  :     
; 304  :     // set sensor setting
; 305  :     status = camera_context->camera_functions->set_capture_format(camera_context);

  00074	e5943064	 ldr         r3, [r4, #0x64]
  00078	e1a00004	 mov         r0, r4
  0007c	e5933008	 ldr         r3, [r3, #8]
  00080	e1a0e00f	 mov         lr, pc
  00084	e12fff13	 bx          r3
  00088	e3500000	 cmp         r0, #0

; 306  :     if (status)
; 307  :         return status;

  0008c	1a000024	 bne         |$L2132|

; 308  : 
; 309  :     // ring buffer init
; 310  :     switch(camera_context->capture_output_format) {

  00090	e5943020	 ldr         r3, [r4, #0x20]
  00094	e3530004	 cmp         r3, #4
  00098	3a000020	 bcc         |$L2139|
  0009c	e3a05000	 mov         r5, #0
  000a0	e3530005	 cmp         r3, #5
  000a4	9a00000d	 bls         |$L2147|
  000a8	e353000f	 cmp         r3, #0xF
  000ac	0a00000b	 beq         |$L2147|
  000b0	e3530010	 cmp         r3, #0x10
  000b4	1a000019	 bne         |$L2139|

; 317  :             break;
; 318  :         case XLLP_CAMERA_IMAGE_FORMAT_YCBCR422_PACKED:
; 319  :             frame_size = camera_context->capture_width * camera_context->capture_height * 2;
; 320  :             camera_context->fifo0_transfer_size = frame_size;
; 321  :             camera_context->fifo1_transfer_size = 0;
; 322  :             camera_context->fifo2_transfer_size = 0;
; 323  :             break;
; 324  :         case XLLP_CAMERA_IMAGE_FORMAT_YCBCR422_PLANAR:
; 325  :             frame_size = camera_context->capture_width * camera_context->capture_height * 2;

  000b8	e5942008	 ldr         r2, [r4, #8]
  000bc	e5943004	 ldr         r3, [r4, #4]
  000c0	e0030392	 mul         r3, r2, r3
  000c4	e1a0e083	 mov         lr, r3, lsl #1

; 326  :             camera_context->fifo0_transfer_size = frame_size / 2;

  000c8	e1a030ae	 mov         r3, lr, lsr #1

; 327  :             camera_context->fifo1_transfer_size = frame_size / 4;

  000cc	e1a0212e	 mov         r2, lr, lsr #2
  000d0	e58430a0	 str         r3, [r4, #0xA0]
  000d4	e58420a4	 str         r2, [r4, #0xA4]

; 328  :             camera_context->fifo2_transfer_size = frame_size / 4;

  000d8	e58420a8	 str         r2, [r4, #0xA8]

; 329  :             break;

  000dc	ea000006	 b           |$L2144|
  000e0		 |$L2147|

; 311  :         case XLLP_CAMERA_IMAGE_FORMAT_RGB555:
; 312  :         case XLLP_CAMERA_IMAGE_FORMAT_RGB565:
; 313  :             frame_size = camera_context->capture_width * camera_context->capture_height * 2;

  000e0	e5943004	 ldr         r3, [r4, #4]
  000e4	e5942008	 ldr         r2, [r4, #8]

; 314  :             camera_context->fifo0_transfer_size = frame_size;
; 315  :             camera_context->fifo1_transfer_size = 0;
; 316  :             camera_context->fifo2_transfer_size = 0;

  000e8	e58450a8	 str         r5, [r4, #0xA8]
  000ec	e58450a4	 str         r5, [r4, #0xA4]
  000f0	e0030392	 mul         r3, r2, r3
  000f4	e1a0e083	 mov         lr, r3, lsl #1
  000f8	e584e0a0	 str         lr, [r4, #0xA0]
  000fc		 |$L2144|

; 330  :         default:
; 331  :             return XLLP_STATUS_WRONG_PARAMETER;
; 332  :             break;
; 333  :     }
; 334  :     camera_context->block_size = frame_size;
; 335  :     camera_context->block_number = camera_context->buf_size / frame_size;

  000fc	e5941040	 ldr         r1, [r4, #0x40]
  00100	e1a0000e	 mov         r0, lr
  00104	e584e07c	 str         lr, [r4, #0x7C]
  00108	eb000000	 bl          __rt_udiv
  0010c	e5840078	 str         r0, [r4, #0x78]

; 336  :     camera_context->block_header = camera_context->block_tail = 0;
; 337  :     
; 338  :     return XLLP_STATUS_SUCCESS;

  00110	e3a00000	 mov         r0, #0
  00114	e5845084	 str         r5, [r4, #0x84]
  00118	e5845080	 str         r5, [r4, #0x80]
  0011c	ea000000	 b           |$L2132|
  00120		 |$L2139|

; 295  :         return XLLP_STATUS_WRONG_PARAMETER;

  00120	e3a00003	 mov         r0, #3
  00124		 |$L2132|

; 339  : }

  00124	e28dd008	 add         sp, sp, #8
  00128	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  0012c	e12fff1e	 bx          lr
  00130		 |$L2299|
  00130	00000000	 DCD         |FORMAT_MAPPINGS|
  00134		 |$M2295|

			 ENDP  ; |XllpCameraSetCaptureFormat|

	EXPORT	|XllpCameraCaptureStillImage|

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

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

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

  00000		 |XllpCameraCaptureStillImage| PROC

; 343  : {

  00000		 |$L2308|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M2306|

; 344  :     XLLP_STATUS_T status;
; 345  :     status = PrvStartCapture( camera_context, block_id, 1 );

  00004	e3a02001	 mov         r2, #1
  00008	eb000000	 bl          PrvStartCapture

; 346  :     return status;
; 347  : }

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

			 ENDP  ; |XllpCameraCaptureStillImage|

	EXPORT	|XllpCameraStartVideoCapture|

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

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

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

  00000		 |XllpCameraStartVideoCapture| PROC

; 351  : {

  00000		 |$L2319|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M2317|

; 352  :     XLLP_STATUS_T status;
; 353  :     status = PrvStartCapture( camera_context, block_id, 0 );

  00004	e3a02000	 mov         r2, #0
  00008	eb000000	 bl          PrvStartCapture

; 354  :     return status;
; 355  : }

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

			 ENDP  ; |XllpCameraStartVideoCapture|

	EXPORT	|XllpCameraStopVideoCapture|

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

  00000			 AREA	 |.pdata$$XllpCameraStopVideoCapture|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraStopVideoCapture| } ; comdat associative
|$T2332| DCD	|$L2331|
	DCD	0x40001101
; Function compile flags: /Ogsy

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

  00000		 |XllpCameraStopVideoCapture| PROC

; 359  : {

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

; 360  :     XLLP_STATUS_T status;
; 361  :     
; 362  :     // stop capture
; 363  :     status = camera_context->camera_functions->stop_capture(camera_context);    

  00008	e5943064	 ldr         r3, [r4, #0x64]
  0000c	e5933010	 ldr         r3, [r3, #0x10]
  00010	e1a0e00f	 mov         lr, pc
  00014	e12fff13	 bx          r3

; 364  : 
; 365  :     // stop dma
; 366  :     PrvStopDMATransfer(camera_context);

  00018	e5940068	 ldr         r0, [r4, #0x68]
  0001c	eb000000	 bl          OS_DmaStopTransfer
  00020	e5943020	 ldr         r3, [r4, #0x20]
  00024	e3530010	 cmp         r3, #0x10
  00028	1a000003	 bne         |$L2326|
  0002c	e594006c	 ldr         r0, [r4, #0x6C]
  00030	eb000000	 bl          OS_DmaStopTransfer
  00034	e5940070	 ldr         r0, [r4, #0x70]
  00038	eb000000	 bl          OS_DmaStopTransfer
  0003c		 |$L2326|

; 367  : 
; 368  :     return;
; 369  : }

  0003c	e8bd4010	 ldmia       sp!, {r4, lr}
  00040	e12fff1e	 bx          lr
  00044		 |$M2330|

			 ENDP  ; |XllpCameraStopVideoCapture|

	EXPORT	|XllpCameraSetCaptureFrameRate|
	IMPORT	|XllpCISetFrameRate|

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

  00000			 AREA	 |.pdata$$XllpCameraSetCaptureFrameRate|, PDATA, SELECTION=5, ASSOC=|.text| { |XllpCameraSetCaptureFrameRate| } ; comdat associative
|$T2340| DCD	|$L2339|
	DCD	0x40000601
; Function compile flags: /Ogsy

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

  00000		 |XllpCameraSetCaptureFrameRate| PROC

; 378  : {

⌨️ 快捷键说明

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