📄 camif.txt
字号:
000654 e3a01440 MOV r1,#0x40000000
000658 e5810028 STR r0,[r1,#0x28]
;;;201 break;
00065c ea000014 B |L1.1716|
;;;202 case 11:
;;;203 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xd<<8);
|L1.1632|
000660 e3a00440 MOV r0,#0x40000000
000664 e5900028 LDR r0,[r0,#0x28]
000668 e3c00ef0 BIC r0,r0,#0xf00
00066c e3800ed0 ORR r0,r0,#0xd00
000670 e3a01440 MOV r1,#0x40000000
000674 e5810028 STR r0,[r1,#0x28]
;;;204 break;
000678 ea00000d B |L1.1716|
;;;205 case 12:
;;;206 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xe<<8);
|L1.1660|
00067c e3a00440 MOV r0,#0x40000000
000680 e5900028 LDR r0,[r0,#0x28]
000684 e3c00ef0 BIC r0,r0,#0xf00
000688 e3800ee0 ORR r0,r0,#0xe00
00068c e3a01440 MOV r1,#0x40000000
000690 e5810028 STR r0,[r1,#0x28]
;;;207 break;
000694 ea000006 B |L1.1716|
;;;208 case 13:
;;;209 rCLKDIVN=(rCLKDIVN&~(0xf<<8))|(0xf<<8);
|L1.1688|
000698 e3a00440 MOV r0,#0x40000000
00069c e5900028 LDR r0,[r0,#0x28]
0006a0 e3800ef0 ORR r0,r0,#0xf00
0006a4 e3a01440 MOV r1,#0x40000000
0006a8 e5810028 STR r0,[r1,#0x28]
;;;210 break;
0006ac ea000000 B |L1.1716|
;;;211 default:
;;;212 break;
|L1.1712|
0006b0 e1a00000 NOP
;;;213 }
;;;214
;;;215 CamReset();
|L1.1716|
0006b4 ebfffffe BL CamReset
;;;216 CameraModuleSetting();
0006b8 ebfffffe BL CameraModuleSetting
;;;217 Delay(10);
0006bc e3a0000a MOV r0,#0xa
0006c0 ebfffffe BL Delay
;;;218
;;;219 while(1) {
0006c4 e1a00000 NOP
|L1.1736|
0006c8 e1a00000 NOP
;;;220 CameraDisplayFunction();
0006cc ebfffffe BL CameraDisplayFunction
;;;221 Uart_Printf("\nSelect(-1 to exit): ");
0006d0 e28f0038 ADR r0,|L1.1808|
0006d4 ebfffffe BL _printf
;;;222 i = Uart_GetIntNum();
0006d8 ebfffffe BL Uart_GetIntNum
0006dc e1a04000 MOV r4,r0
;;;223 //Uart_Printf("IN:%d.\n\n", i);
;;;224 if(i==-1) break;
0006e0 e3740001 CMN r4,#1
0006e4 1a000000 BNE |L1.1772|
0006e8 ea000007 B |L1.1804|
;;;225
;;;226 if(i>=0 && (i<(sizeof(camera_function)/8)) )
|L1.1772|
0006ec e3540000 CMP r4,#0
0006f0 ba000004 BLT |L1.1800|
0006f4 e3540005 CMP r4,#5
0006f8 2a000002 BCS |L1.1800|
;;;227 ( (void (*)(void)) (camera_function[i][0]) )(); // execute selected function.
0006fc e51f1688 LDR r1,|L1.124|
000700 e7910184 LDR r0,[r1,r4,LSL #3]
000704 e12fff30 BLX r0
;;;228 }
|L1.1800|
000708 eaffffee B |L1.1736|
;;;229
;;;230 }
|L1.1804|
00070c e8bd8010 LDMFD sp!,{r4,pc}
|L1.1808|
000710 6c65530a DCB "\nSel"
000714 28746365 DCB "ect("
000718 7420312d DCB "-1 t"
00071c 7865206f DCB "o ex"
000720 3a297469 DCB "it):"
000724 00000020 DCB " \0\0\0"
ENDP
_CamCodecStopHw PROC
;;;382 void _CamCodecStopHw(void)
;;;383 {
000728 e3a00448 MOV r0,#0x48000000
;;;384 rCICOSCCTRL&=~CAM_CODEC_SACLER_START_BIT; //stop codec scaler.
00072c e5900058 LDR r0,[r0,#0x58]
000730 e3c00c80 BIC r0,r0,#0x8000
000734 e3a01448 MOV r1,#0x48000000
000738 e5810058 STR r0,[r1,#0x58]
;;;385 rCIIMGCPT&=~(CAM_CAMIF_GLOBAL_CAPTURE_ENABLE_BIT|CAM_CODEC_SCALER_CAPTURE_ENABLE_BIT); //stop capturing for codec scaler and global capture.
00073c e3a00448 MOV r0,#0x48000000
000740 e59000a0 LDR r0,[r0,#0xa0]
000744 e3c004c0 BIC r0,r0,#0xc0000000
000748 e3a01448 MOV r1,#0x48000000
00074c e58100a0 STR r0,[r1,#0xa0]
;;;386 }
000750 e12fff1e BX lr
ENDP
_CamCodecSetLastIrq PROC
;;;377 void _CamCodecSetLastIrq(void)
;;;378 {
000754 e3a00448 MOV r0,#0x48000000
;;;379 rCICOCTRL|=(1<<2); // Bit of LastIRQEn_Co is cleared automatically.
000758 e590004c LDR r0,[r0,#0x4c]
00075c e3800004 ORR r0,r0,#4
000760 e3a01448 MOV r1,#0x48000000
000764 e581004c STR r0,[r1,#0x4c]
;;;380 }
000768 e12fff1e BX lr
ENDP
CamCodecIsr PROC
;;;239 void __irq CamCodecIsr(void)
;;;240 {
00076c e92d501f STMFD sp!,{r0-r4,r12,lr}
000770 e24dd004 SUB sp,sp,#4
;;;241
;;;242 U32 completedFrameIndex;
;;;243
;;;244 ClearPending(BIT_CAMIF_CODEC);
000774 e3a00c80 MOV r0,#0x8000
000778 e59f1134 LDR r1,|L1.2228|
00077c e5810000 STR r0,[r1,#0]
000780 e1c10000 BIC r0,r1,r0
000784 e5900010 LDR r0,[r0,#0x10]
000788 e5810010 STR r0,[r1,#0x10]
00078c e1a00001 MOV r0,r1
000790 e5900010 LDR r0,[r0,#0x10]
;;;245 //Uart_Printf("0x%x, 0x%x\n", rCICOSTATUS&0xe0000000, rCIPRSTATUS&0xc0000000);
;;;246 switch(camCodecStatus) {
000794 e59f011c LDR r0,|L1.2232|
000798 e5900000 LDR r0,[r0,#0] ; camCodecStatus
00079c e3500005 CMP r0,#5
0007a0 908ff100 ADDLS pc,pc,r0,LSL #2
0007a4 ea00003b B |L1.2200|
0007a8 ea000014 B |L1.2048|
0007ac ea000003 B |L1.1984|
0007b0 ea000007 B |L1.2004|
0007b4 ea00000b B |L1.2024|
0007b8 ea000036 B |L1.2200|
0007bc ea000034 B |L1.2196|
;;;247 case CAM_STOP_ISSUED:
;;;248 _CamCodecSetLastIrq();
|L1.1984|
0007c0 ebfffffe BL _CamCodecSetLastIrq
;;;249 camCodecStatus=CAM_LASTIRQ_ISSUED;
0007c4 e3a00002 MOV r0,#2
0007c8 e59f10e8 LDR r1,|L1.2232|
0007cc e5810000 STR r0,[r1,#0] ; camCodecStatus
;;;250 break;
0007d0 ea000031 B |L1.2204|
;;;251 case CAM_LASTIRQ_ISSUED:
;;;252 _CamCodecStopHw();
|L1.2004|
0007d4 ebfffffe BL _CamCodecStopHw
;;;253 camCodecStatus=CAM_LAST_CAPTURING;
0007d8 e3a00003 MOV r0,#3
0007dc e59f10d4 LDR r1,|L1.2232|
0007e0 e5810000 STR r0,[r1,#0] ; camCodecStatus
;;;254 break;
0007e4 ea00002c B |L1.2204|
;;;255 case CAM_LAST_CAPTURING:
;;;256 camCodecStatus=CAM_STOPPED;
|L1.2024|
0007e8 e3a00004 MOV r0,#4
0007ec e59f10c4 LDR r1,|L1.2232|
0007f0 e5810000 STR r0,[r1,#0] ; camCodecStatus
;;;257 return;
;;;258 case CAM_STARTED:
;;;259 if(camTestMode&CAM_TEST_MODE_CODEC_POST) {
;;;260 if(camCodecCaptureCount>0) {
;;;261 camCodecDataValid=1;
;;;262 if((postProcessingDone==0) && (camCodecCaptureCount>1)) {
;;;263 Uart_Printf("ERROR:Post not completed yet.\n");
;;;264 }
;;;265 completedFrameIndex=(((rCICOSTATUS>>26)&0x3)+4-2)%4;
;;;266 PostStartProcessing(completedFrameIndex);
;;;267 }
;;;268 }
;;;269 else {
;;;270 if(camCodecCaptureCount>0) camCodecDataValid=1;
;;;271 }
;;;272 break;
;;;273 case CAM_CODEC_SCALER_BYPASS_STATE:
;;;274 break;
;;;275 default:
;;;276 break;
;;;277 }
;;;278
;;;279 camCodecCaptureCount++;
;;;280
;;;281 }
|L1.2036|
0007f4 e28dd004 ADD sp,sp,#4
0007f8 e8bd501f LDMFD sp!,{r0-r4,r12,lr}
0007fc e25ef004 SUBS pc,lr,#4
|L1.2048|
000800 e59f00b4 LDR r0,|L1.2236| ;259
000804 e5900000 LDR r0,[r0,#0] ;259 ; camTestMode
000808 e3100004 TST r0,#4 ;259
00080c 0a000018 BEQ |L1.2164| ;259
000810 e59f00a8 LDR r0,|L1.2240| ;260
000814 e5900000 LDR r0,[r0,#0] ;260 ; camCodecCaptureCount
000818 e3500000 CMP r0,#0 ;260
00081c 0a00001b BEQ |L1.2192| ;260
000820 e3a00001 MOV r0,#1 ;261
000824 e59f1098 LDR r1,|L1.2244| ;261
000828 e5810000 STR r0,[r1,#0] ;261 ; camCodecDataValid
00082c e59f0094 LDR r0,|L1.2248| ;262
000830 e5900000 LDR r0,[r0,#0] ;262 ; postProcessingDone
000834 e3500000 CMP r0,#0 ;262
000838 1a000005 BNE |L1.2132| ;262
00083c e59f007c LDR r0,|L1.2240| ;262
000840 e5900000 LDR r0,[r0,#0] ;262 ; camCodecCaptureCount
000844 e3500001 CMP r0,#1 ;262
000848 9a000001 BLS |L1.2132| ;262
00084c e28f0078 ADR r0,|L1.2252| ;263
000850 ebfffffe BL _printf ;263
|L1.2132|
000854 e3a00448 MOV r0,#0x48000000 ;265
000858 e5900064 LDR r0,[r0,#0x64] ;265
00085c e3a01002 MOV r1,#2 ;265
000860 e0810d20 ADD r0,r1,r0,LSR #26 ;265
000864 e2004003 AND r4,r0,#3 ;265
000868 e1a00004 MOV r0,r4 ;266
00086c ebfffffe BL PostStartProcessing ;266
000870 ea000006 B |L1.2192| ;266
|L1.2164|
000874 e59f0044 LDR r0,|L1.2240| ;270
000878 e5900000 LDR r0,[r0,#0] ;270 ; camCodecCaptureCount
00087c e3500000 CMP r0,#0 ;270
000880 0a000002 BEQ |L1.2192| ;270
000884 e3a00001 MOV r0,#1 ;270
000888 e59f1034 LDR r1,|L1.2244| ;270
00088c e5810000 STR r0,[r1,#0] ;270 ; camCodecDataValid
|L1.2192|
000890 ea000001 B |L1.2204| ;272
|L1.2196|
000894 ea000000 B |L1.2204| ;274
|L1.2200|
000898 e1a00000 NOP ;276
|L1.2204|
00089c e59f001c LDR r0,|L1.2240| ;279
0008a0 e5900000 LDR r0,[r0,#0] ;279 ; camCodecCaptureCount
0008a4 e2800001 ADD r0,r0,#1 ;279
0008a8 e59f1010 LDR r1,|L1.2240| ;279
0008ac e5810000 STR r0,[r1,#0] ;279 ; camCodecCaptureCount
0008b0 eaffffcf B |L1.2036|
|L1.2228|
0008b4 40200000 DCD 0x40200000
|L1.2232|
0008b8 0000000c DCD ||.bss$2|| + 12
|L1.2236|
0008bc 00000000 DCD ||.bss$2||
|L1.2240|
0008c0 00000004 DCD ||.bss$2|| + 4
|L1.2244|
0008c4 0000001c DCD ||.bss$2|| + 28
|L1.2248|
0008c8 00000000 DCD postProcessingDone
|L1.2252|
0008cc 4f525245 DCB "ERRO"
0008d0 6f503a52 DCB "R:Po"
0008d4 6e207473 DCB "st n"
0008d8 6320746f DCB "ot c"
0008dc 6c706d6f DCB "ompl"
0008e0 64657465 DCB "eted"
0008e4 74657920 DCB " yet"
0008e8 00000a2e DCB ".\n\0\0"
ENDP
_CamPviewStopHw PROC
;;;393 void _CamPviewStopHw(void)
;;;394 {
0008ec e3a00448 MOV r0,#0x48000000
;;;395 rCIPRSCCTRL&=~CAM_PVIEW_SACLER_START_BIT; //stop preview scaler.
0008f0 e590008c LDR r0,[r0,#0x8c]
0008f4 e3c00c80 BIC r0,r0,#0x8000
0008f8 e3a01448 MOV r1,#0x48000000
0008fc e581008c STR r0,[r1,#0x8c]
;;;396 rCIIMGCPT&=~(CAM_CAMIF_GLOBAL_CAPTURE_ENABLE_BIT|CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT); //stop capturing for preview scaler and global capture.
000900 e3a00448 MOV r0,#0x48000000
000904 e59000a0 LDR r0,[r0,#0xa0]
000908 e3c004a0 BIC r0,r0,#0xa0000000
00090c e3a01448 MOV r1,#0x48000000
000910 e58100a0 STR r0,[r1,#0xa0]
;;;397 }
000914 e12fff1e BX lr
ENDP
_CamPviewSetLastIrq PROC
;;;388 void _CamPviewSetLastIrq(void)
;;;389 {
000918 e3a00448 MOV r0,#0x48000000
;;;390 rCIPRCTRL|=(1<<2); // Bit of LastIRQEn_Pr is cleared automatically.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -