📄 xllp_camera.cod
字号:
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 + -