📄 camif.txt
字号:
000658 e3800e90 ORR r0,r0,#0x900
00065c e3a01440 MOV r1,#0x40000000
000660 e5810028 STR r0,[r1,#0x28]
;;;199 break;
000664 ea000029 B |L1.1808|
;;;200 case 8:
;;;201 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xa<<8);
|L1.1640|
000668 e3a00440 MOV r0,#0x40000000
00066c e5900028 LDR r0,[r0,#0x28]
000670 e3c00ef0 BIC r0,r0,#0xf00
000674 e3800ea0 ORR r0,r0,#0xa00
000678 e3a01440 MOV r1,#0x40000000
00067c e5810028 STR r0,[r1,#0x28]
;;;202 break;
000680 ea000022 B |L1.1808|
;;;203 case 9:
;;;204 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xb<<8);
|L1.1668|
000684 e3a00440 MOV r0,#0x40000000
000688 e5900028 LDR r0,[r0,#0x28]
00068c e3c00ef0 BIC r0,r0,#0xf00
000690 e3800eb0 ORR r0,r0,#0xb00
000694 e3a01440 MOV r1,#0x40000000
000698 e5810028 STR r0,[r1,#0x28]
;;;205 break;
00069c ea00001b B |L1.1808|
;;;206 case 10:
;;;207 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xc<<8);
|L1.1696|
0006a0 e3a00440 MOV r0,#0x40000000
0006a4 e5900028 LDR r0,[r0,#0x28]
0006a8 e3c00ef0 BIC r0,r0,#0xf00
0006ac e3800ec0 ORR r0,r0,#0xc00
0006b0 e3a01440 MOV r1,#0x40000000
0006b4 e5810028 STR r0,[r1,#0x28]
;;;208 break;
0006b8 ea000014 B |L1.1808|
;;;209 case 11:
;;;210 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xd<<8);
|L1.1724|
0006bc e3a00440 MOV r0,#0x40000000
0006c0 e5900028 LDR r0,[r0,#0x28]
0006c4 e3c00ef0 BIC r0,r0,#0xf00
0006c8 e3800ed0 ORR r0,r0,#0xd00
0006cc e3a01440 MOV r1,#0x40000000
0006d0 e5810028 STR r0,[r1,#0x28]
;;;211 break;
0006d4 ea00000d B |L1.1808|
;;;212 case 12:
;;;213 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xe<<8);
|L1.1752|
0006d8 e3a00440 MOV r0,#0x40000000
0006dc e5900028 LDR r0,[r0,#0x28]
0006e0 e3c00ef0 BIC r0,r0,#0xf00
0006e4 e3800ee0 ORR r0,r0,#0xe00
0006e8 e3a01440 MOV r1,#0x40000000
0006ec e5810028 STR r0,[r1,#0x28]
;;;214 break;
0006f0 ea000006 B |L1.1808|
;;;215 case 13:
;;;216 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xf<<8);
|L1.1780|
0006f4 e3a00440 MOV r0,#0x40000000
0006f8 e5900028 LDR r0,[r0,#0x28]
0006fc e3800ef0 ORR r0,r0,#0xf00
000700 e3a01440 MOV r1,#0x40000000
000704 e5810028 STR r0,[r1,#0x28]
;;;217 break;
000708 ea000000 B |L1.1808|
;;;218 default:
;;;219 break;
|L1.1804|
00070c e1a00000 NOP
;;;220 }
;;;221
;;;222 CamReset();
|L1.1808|
000710 ebfffffe BL CamReset
;;;223 CameraModuleSetting();
000714 ebfffffe BL CameraModuleSetting
;;;224 Delay(10);
000718 e3a0000a MOV r0,#0xa
00071c ebfffffe BL Delay
;;;225
;;;226 while(1) {
000720 e1a00000 NOP
|L1.1828|
000724 e1a00000 NOP
;;;227 CameraDisplayFunction();
000728 ebfffffe BL CameraDisplayFunction
;;;228 Uart_Printf("\nSelect(-1 to exit): ");
00072c e28f0038 ADR r0,|L1.1900|
000730 ebfffffe BL _printf
;;;229 i = Uart_GetIntNum();
000734 ebfffffe BL Uart_GetIntNum
000738 e1a04000 MOV r4,r0
;;;230 //Uart_Printf("IN:%d.\n\n", i);
;;;231 if(i==-1) break;
00073c e3740001 CMN r4,#1
000740 1a000000 BNE |L1.1864|
000744 ea000007 B |L1.1896|
;;;232
;;;233 if(i>=0 && (i<(sizeof(camera_function)/8)) )
|L1.1864|
000748 e3540000 CMP r4,#0
00074c ba000004 BLT |L1.1892|
000750 e3540005 CMP r4,#5
000754 2a000002 BCS |L1.1892|
;;;234 ( (void (*)(void)) (camera_function[i][0]) )(); // execute selected function.
000758 e51f16e4 LDR r1,|L1.124|
00075c e7910184 LDR r0,[r1,r4,LSL #3]
000760 e12fff30 BLX r0
;;;235 }
|L1.1892|
000764 eaffffee B |L1.1828|
;;;236
;;;237 }
|L1.1896|
000768 e8bd8010 LDMFD sp!,{r4,pc}
|L1.1900|
00076c 6c65530a DCB "\nSel"
000770 28746365 DCB "ect("
000774 7420312d DCB "-1 t"
000778 7865206f DCB "o ex"
00077c 3a297469 DCB "it):"
000780 00000020 DCB " \0\0\0"
ENDP
_CamCodecStopHw PROC
;;;389 void _CamCodecStopHw(void)
;;;390 {
000784 e3a00448 MOV r0,#0x48000000
;;;391 rCICOSCCTRL&=~CAM_CODEC_SACLER_START_BIT; //stop codec scaler.
000788 e5900058 LDR r0,[r0,#0x58]
00078c e3c00c80 BIC r0,r0,#0x8000
000790 e3a01448 MOV r1,#0x48000000
000794 e5810058 STR r0,[r1,#0x58]
;;;392 rCIIMGCPT&=~(CAM_CAMIF_GLOBAL_CAPTURE_ENABLE_BIT|CAM_CODEC_SCALER_CAPTURE_ENABLE_BIT); //stop capturing for codec scaler and global capture.
000798 e3a00448 MOV r0,#0x48000000
00079c e59000a0 LDR r0,[r0,#0xa0]
0007a0 e3c004c0 BIC r0,r0,#0xc0000000
0007a4 e3a01448 MOV r1,#0x48000000
0007a8 e58100a0 STR r0,[r1,#0xa0]
;;;393 }
0007ac e12fff1e BX lr
ENDP
_CamCodecSetLastIrq PROC
;;;384 void _CamCodecSetLastIrq(void)
;;;385 {
0007b0 e3a00448 MOV r0,#0x48000000
;;;386 rCICOCTRL|=(1<<2); // Bit of LastIRQEn_Co is cleared automatically.
0007b4 e590004c LDR r0,[r0,#0x4c]
0007b8 e3800004 ORR r0,r0,#4
0007bc e3a01448 MOV r1,#0x48000000
0007c0 e581004c STR r0,[r1,#0x4c]
;;;387 }
0007c4 e12fff1e BX lr
ENDP
CamCodecIsr PROC
;;;246 void __irq CamCodecIsr(void)
;;;247 {
0007c8 e92d501f STMFD sp!,{r0-r4,r12,lr}
0007cc e24dd004 SUB sp,sp,#4
;;;248
;;;249 U32 completedFrameIndex;
;;;250
;;;251 ClearPending(BIT_CAMIF_CODEC);
0007d0 e3a00c80 MOV r0,#0x8000
0007d4 e59f1134 LDR r1,|L1.2320|
0007d8 e5810000 STR r0,[r1,#0]
0007dc e1c10000 BIC r0,r1,r0
0007e0 e5900010 LDR r0,[r0,#0x10]
0007e4 e5810010 STR r0,[r1,#0x10]
0007e8 e1a00001 MOV r0,r1
0007ec e5900010 LDR r0,[r0,#0x10]
;;;252 //Uart_Printf("0x%x, 0x%x\n", rCICOSTATUS&0xe0000000, rCIPRSTATUS&0xc0000000);
;;;253 switch(camCodecStatus) {
0007f0 e59f011c LDR r0,|L1.2324|
0007f4 e5900000 LDR r0,[r0,#0] ; camCodecStatus
0007f8 e3500005 CMP r0,#5
0007fc 908ff100 ADDLS pc,pc,r0,LSL #2
000800 ea00003b B |L1.2292|
000804 ea000014 B |L1.2140|
000808 ea000003 B |L1.2076|
00080c ea000007 B |L1.2096|
000810 ea00000b B |L1.2116|
000814 ea000036 B |L1.2292|
000818 ea000034 B |L1.2288|
;;;254 case CAM_STOP_ISSUED:
;;;255 _CamCodecSetLastIrq();
|L1.2076|
00081c ebfffffe BL _CamCodecSetLastIrq
;;;256 camCodecStatus=CAM_LASTIRQ_ISSUED;
000820 e3a00002 MOV r0,#2
000824 e59f10e8 LDR r1,|L1.2324|
000828 e5810000 STR r0,[r1,#0] ; camCodecStatus
;;;257 break;
00082c ea000031 B |L1.2296|
;;;258 case CAM_LASTIRQ_ISSUED:
;;;259 _CamCodecStopHw();
|L1.2096|
000830 ebfffffe BL _CamCodecStopHw
;;;260 camCodecStatus=CAM_LAST_CAPTURING;
000834 e3a00003 MOV r0,#3
000838 e59f10d4 LDR r1,|L1.2324|
00083c e5810000 STR r0,[r1,#0] ; camCodecStatus
;;;261 break;
000840 ea00002c B |L1.2296|
;;;262 case CAM_LAST_CAPTURING:
;;;263 camCodecStatus=CAM_STOPPED;
|L1.2116|
000844 e3a00004 MOV r0,#4
000848 e59f10c4 LDR r1,|L1.2324|
00084c e5810000 STR r0,[r1,#0] ; camCodecStatus
;;;264 return;
;;;265 case CAM_STARTED:
;;;266 if(camTestMode&CAM_TEST_MODE_CODEC_POST) {
;;;267 if(camCodecCaptureCount>0) {
;;;268 camCodecDataValid=1;
;;;269 if((postProcessingDone==0) && (camCodecCaptureCount>1)) {
;;;270 Uart_Printf("ERROR:Post not completed yet.\n");
;;;271 }
;;;272 completedFrameIndex=(((rCICOSTATUS>>26)&0x3)+4-2)%4;
;;;273 PostStartProcessing(completedFrameIndex);
;;;274 }
;;;275 }
;;;276 else {
;;;277 if(camCodecCaptureCount>0) camCodecDataValid=1;
;;;278 }
;;;279 break;
;;;280 case CAM_CODEC_SCALER_BYPASS_STATE:
;;;281 break;
;;;282 default:
;;;283 break;
;;;284 }
;;;285
;;;286 camCodecCaptureCount++;
;;;287
;;;288 }
|L1.2128|
000850 e28dd004 ADD sp,sp,#4
000854 e8bd501f LDMFD sp!,{r0-r4,r12,lr}
000858 e25ef004 SUBS pc,lr,#4
|L1.2140|
00085c e59f00b4 LDR r0,|L1.2328| ;266
000860 e5900000 LDR r0,[r0,#0] ;266 ; camTestMode
000864 e3100004 TST r0,#4 ;266
000868 0a000018 BEQ |L1.2256| ;266
00086c e59f00a8 LDR r0,|L1.2332| ;267
000870 e5900000 LDR r0,[r0,#0] ;267 ; camCodecCaptureCount
000874 e3500000 CMP r0,#0 ;267
000878 0a00001b BEQ |L1.2284| ;267
00087c e3a00001 MOV r0,#1 ;268
000880 e59f1098 LDR r1,|L1.2336| ;268
000884 e5810000 STR r0,[r1,#0] ;268 ; camCodecDataValid
000888 e59f0094 LDR r0,|L1.2340| ;269
00088c e5900000 LDR r0,[r0,#0] ;269 ; postProcessingDone
000890 e3500000 CMP r0,#0 ;269
000894 1a000005 BNE |L1.2224| ;269
000898 e59f007c LDR r0,|L1.2332| ;269
00089c e5900000 LDR r0,[r0,#0] ;269 ; camCodecCaptureCount
0008a0 e3500001 CMP r0,#1 ;269
0008a4 9a000001 BLS |L1.2224| ;269
0008a8 e28f0078 ADR r0,|L1.2344| ;270
0008ac ebfffffe BL _printf ;270
|L1.2224|
0008b0 e3a00448 MOV r0,#0x48000000 ;272
0008b4 e5900064 LDR r0,[r0,#0x64] ;272
0008b8 e3a01002 MOV r1,#2 ;272
0008bc e0810d20 ADD r0,r1,r0,LSR #26 ;272
0008c0 e2004003 AND r4,r0,#3 ;272
0008c4 e1a00004 MOV r0,r4 ;273
0008c8 ebfffffe BL PostStartProcessing ;273
0008cc ea000006 B |L1.2284| ;273
|L1.2256|
0008d0 e59f0044 LDR r0,|L1.2332| ;277
0008d4 e5900000 LDR r0,[r0,#0] ;277 ; camCodecCaptureCount
0008d8 e3500000 CMP r0,#0 ;277
0008dc 0a000002 BEQ |L1.2284| ;277
0008e0 e3a00001 MOV r0,#1 ;277
0008e4 e59f1034 LDR r1,|L1.2336| ;277
0008e8 e5810000 STR r0,[r1,#0] ;277 ; camCodecDataValid
|L1.2284|
0008ec ea000001 B |L1.2296| ;279
|L1.2288|
0008f0 ea000000 B |L1.2296| ;281
|L1.2292|
0008f4 e1a00000 NOP ;283
|L1.2296|
0008f8 e59f001c LDR r0,|L1.2332| ;286
0008fc e5900000 LDR r0,[r0,#0] ;286 ; camCodecCaptureCount
000900 e2800001 ADD r0,r0,#1 ;286
000904 e59f1010 LDR r1,|L1.2332| ;286
000908 e5810000 STR r0,[r1,#0] ;286 ; camCodecCaptureCount
00090c eaffffcf B |L1.2128|
|L1.2320|
000910 40200000 DCD 0x40200000
|L1.2324|
000914 0000000c DCD ||.bss$2|| + 12
|L1.2328|
000918 00000000 DCD ||.bss$2||
|L1.2332|
00091c 00000004 DCD ||.bss$2|| + 4
|L1.2336|
000920 0000001c DCD ||.bss$2|| + 28
|L1.2340|
000924 00000000 DCD postProcessingDone
|L1.2344|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -