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

📄 camif.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000928  4f525245          DCB      "ERRO"
00092c  6f503a52          DCB      "R:Po"
000930  6e207473          DCB      "st n"
000934  6320746f          DCB      "ot c"
000938  6c706d6f          DCB      "ompl"
00093c  64657465          DCB      "eted"
000940  74657920          DCB      " yet"
000944  00000a2e          DCB      ".\n\0\0"
                          ENDP

                  _CamPviewStopHw PROC
;;;400    void _CamPviewStopHw(void)
;;;401    {
000948  e3a00448          MOV      r0,#0x48000000
;;;402    	rCIPRSCCTRL&=~CAM_PVIEW_SACLER_START_BIT; //stop preview scaler.
00094c  e590008c          LDR      r0,[r0,#0x8c]
000950  e3c00c80          BIC      r0,r0,#0x8000
000954  e3a01448          MOV      r1,#0x48000000
000958  e581008c          STR      r0,[r1,#0x8c]
;;;403    	rCIIMGCPT&=~(CAM_CAMIF_GLOBAL_CAPTURE_ENABLE_BIT|CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT); //stop capturing for preview scaler and global capture.
00095c  e3a00448          MOV      r0,#0x48000000
000960  e59000a0          LDR      r0,[r0,#0xa0]
000964  e3c004a0          BIC      r0,r0,#0xa0000000
000968  e3a01448          MOV      r1,#0x48000000
00096c  e58100a0          STR      r0,[r1,#0xa0]
;;;404    }
000970  e12fff1e          BX       lr
                          ENDP

                  _CamPviewSetLastIrq PROC
;;;395    void _CamPviewSetLastIrq(void)
;;;396    {
000974  e3a00448          MOV      r0,#0x48000000
;;;397    	rCIPRCTRL|=(1<<2); // Bit of LastIRQEn_Pr is cleared automatically.
000978  e5900080          LDR      r0,[r0,#0x80]
00097c  e3800004          ORR      r0,r0,#4
000980  e3a01448          MOV      r1,#0x48000000
000984  e5810080          STR      r0,[r1,#0x80]
;;;398    }
000988  e12fff1e          BX       lr
                          ENDP

                  CamPviewIsr PROC
;;;290    void __irq CamPviewIsr(void)
;;;291    {
00098c  e92d501f          STMFD    sp!,{r0-r4,r12,lr}
000990  e24dd004          SUB      sp,sp,#4
;;;292    	U32 completedFrameIndex;
;;;293    
;;;294    	ClearPending(BIT_CAMIF_PREVIEW);
000994  e3a00a40          MOV      r0,#0x40000
000998  e51f1090          LDR      r1,|L1.2320|
00099c  e5810000          STR      r0,[r1,#0]
0009a0  e1c10000          BIC      r0,r1,r0
0009a4  e5900010          LDR      r0,[r0,#0x10]
0009a8  e5810010          STR      r0,[r1,#0x10]
0009ac  e1a00001          MOV      r0,r1
0009b0  e5900010          LDR      r0,[r0,#0x10]
;;;295    	completedFrameIndex=(((rCIPRSTATUS>>26)&0x3)+4-2)%4;
0009b4  e3a00448          MOV      r0,#0x48000000
0009b8  e5900098          LDR      r0,[r0,#0x98]
0009bc  e3a01002          MOV      r1,#2
0009c0  e0810d20          ADD      r0,r1,r0,LSR #26
0009c4  e2004003          AND      r4,r0,#3
;;;296    	//Uart_Printf("0x%x, 0x%x, %d\n", rCICOSTATUS&0xe0000000, rCIPRSTATUS&0xc0000000, completedFrameIndex);
;;;297    	switch(camPviewStatus) {
0009c8  e59f011c          LDR      r0,|L1.2796|
0009cc  e5900000          LDR      r0,[r0,#0]  ; camPviewStatus
0009d0  e3500000          CMP      r0,#0
0009d4  0a000016          BEQ      |L1.2612|
0009d8  e3500001          CMP      r0,#1
0009dc  0a000004          BEQ      |L1.2548|
0009e0  e3500002          CMP      r0,#2
0009e4  0a000007          BEQ      |L1.2568|
0009e8  e3500003          CMP      r0,#3
0009ec  1a000035          BNE      |L1.2760|
0009f0  ea000009          B        |L1.2588|
;;;298    		case CAM_STOP_ISSUED:
;;;299    			_CamPviewSetLastIrq();
                  |L1.2548|
0009f4  ebfffffe          BL       _CamPviewSetLastIrq
;;;300    			camPviewStatus=CAM_LASTIRQ_ISSUED;    	
0009f8  e3a00002          MOV      r0,#2
0009fc  e59f10e8          LDR      r1,|L1.2796|
000a00  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;301    			break;
000a04  ea000032          B        |L1.2772|
;;;302    		case CAM_LASTIRQ_ISSUED:
;;;303    			_CamPviewStopHw();
                  |L1.2568|
000a08  ebfffffe          BL       _CamPviewStopHw
;;;304    			camPviewStatus=CAM_LAST_CAPTURING;    	
000a0c  e3a00003          MOV      r0,#3
000a10  e59f10d4          LDR      r1,|L1.2796|
000a14  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;305    			break;			
000a18  ea00002d          B        |L1.2772|
;;;306    		case CAM_LAST_CAPTURING:
;;;307    			camPviewStatus=CAM_STOPPED;
                  |L1.2588|
000a1c  e3a00004          MOV      r0,#4
000a20  e59f10c4          LDR      r1,|L1.2796|
000a24  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;308    			return;
;;;309    		case CAM_STARTED:
;;;310    			if(camTestMode&CAM_TEST_MODE_PVIEW_POST) {
;;;311    				if(camPviewCaptureCount >0) {					
;;;312    					camPviewDataValid=1;
;;;313    					if(postProcessingDone==0 && camPviewCaptureCount>1) {
;;;314    						Uart_Printf("ERROR:Post not completed yet.\n");
;;;315    					}
;;;316    					completedFrameIndex=(((rCIPRSTATUS>>26)&0x3)+4-2)%4;
;;;317    					PostStartProcessing(completedFrameIndex);
;;;318    				}
;;;319    			}
;;;320    			else {				
;;;321    				if(camPviewCaptureCount>0) camPviewDataValid=1;
;;;322    			}
;;;323    			break;
;;;324    		default:
;;;325    			Uart_Printf("dummy\n");
;;;326    			break;			
;;;327    	}		
;;;328    	camPviewCaptureCount++;	
;;;329    }
                  |L1.2600|
000a28  e28dd004          ADD      sp,sp,#4
000a2c  e8bd501f          LDMFD    sp!,{r0-r4,r12,lr}
000a30  e25ef004          SUBS     pc,lr,#4
                  |L1.2612|
000a34  e51f0124          LDR      r0,|L1.2328|          ;310
000a38  e5900000          LDR      r0,[r0,#0]            ;310  ; camTestMode
000a3c  e3100008          TST      r0,#8                 ;310
000a40  0a000018          BEQ      |L1.2728|             ;310
000a44  e59f00a4          LDR      r0,|L1.2800|          ;311
000a48  e5900000          LDR      r0,[r0,#0]            ;311  ; camPviewCaptureCount
000a4c  e3500000          CMP      r0,#0                 ;311
000a50  0a00001b          BEQ      |L1.2756|             ;311
000a54  e3a00001          MOV      r0,#1                 ;312
000a58  e59f1094          LDR      r1,|L1.2804|          ;312
000a5c  e5810000          STR      r0,[r1,#0]            ;312  ; camPviewDataValid
000a60  e51f0144          LDR      r0,|L1.2340|          ;313
000a64  e5900000          LDR      r0,[r0,#0]            ;313  ; postProcessingDone
000a68  e3500000          CMP      r0,#0                 ;313
000a6c  1a000005          BNE      |L1.2696|             ;313
000a70  e59f0078          LDR      r0,|L1.2800|          ;313
000a74  e5900000          LDR      r0,[r0,#0]            ;313  ; camPviewCaptureCount
000a78  e3500001          CMP      r0,#1                 ;313
000a7c  9a000001          BLS      |L1.2696|             ;313
000a80  e24f0f58          ADR      r0,|L1.2344|          ;314
000a84  ebfffffe          BL       _printf               ;314
                  |L1.2696|
000a88  e3a00448          MOV      r0,#0x48000000        ;316
000a8c  e5900098          LDR      r0,[r0,#0x98]         ;316
000a90  e3a01002          MOV      r1,#2                 ;316
000a94  e0810d20          ADD      r0,r1,r0,LSR #26      ;316
000a98  e2004003          AND      r4,r0,#3              ;316
000a9c  e1a00004          MOV      r0,r4                 ;317
000aa0  ebfffffe          BL       PostStartProcessing   ;317
000aa4  ea000006          B        |L1.2756|             ;317
                  |L1.2728|
000aa8  e59f0040          LDR      r0,|L1.2800|          ;321
000aac  e5900000          LDR      r0,[r0,#0]            ;321  ; camPviewCaptureCount
000ab0  e3500000          CMP      r0,#0                 ;321
000ab4  0a000002          BEQ      |L1.2756|             ;321
000ab8  e3a00001          MOV      r0,#1                 ;321
000abc  e59f1030          LDR      r1,|L1.2804|          ;321
000ac0  e5810000          STR      r0,[r1,#0]            ;321  ; camPviewDataValid
                  |L1.2756|
000ac4  ea000002          B        |L1.2772|             ;323
                  |L1.2760|
000ac8  e28f0028          ADR      r0,|L1.2808|          ;325
000acc  ebfffffe          BL       _printf               ;325
000ad0  e1a00000          NOP                            ;326
                  |L1.2772|
000ad4  e59f0014          LDR      r0,|L1.2800|          ;328
000ad8  e5900000          LDR      r0,[r0,#0]            ;328  ; camPviewCaptureCount
000adc  e2800001          ADD      r0,r0,#1              ;328
000ae0  e59f1008          LDR      r1,|L1.2800|          ;328
000ae4  e5810000          STR      r0,[r1,#0]            ;328  ; camPviewCaptureCount
000ae8  eaffffce          B        |L1.2600|
                  |L1.2796|
000aec  00000010          DCD      ||.bss$2|| + 16
                  |L1.2800|
000af0  00000008          DCD      ||.bss$2|| + 8
                  |L1.2804|
000af4  00000020          DCD      ||.bss$2|| + 32
                  |L1.2808|
000af8  6d6d7564          DCB      "dumm"
000afc  00000a79          DCB      "y\n\0\0"
                          ENDP

                  CamCaptureStart PROC
;;;340    void CamCaptureStart(U32 mode)
;;;341    { 
000b00  e3100440          TST      r0,#0x40000000
;;;342        
;;;343    	if(mode&CAM_CODEC_SCALER_CAPTURE_ENABLE_BIT) {
000b04  0a000007          BEQ      |L1.2856|
;;;344    		camCodecStatus=CAM_STARTED;
000b08  e3a01000          MOV      r1,#0
000b0c  e51f2200          LDR      r2,|L1.2324|
000b10  e5821000          STR      r1,[r2,#0]  ; camCodecStatus
;;;345    		rCICOSCCTRL|=CAM_CODEC_SACLER_START_BIT;
000b14  e3a01448          MOV      r1,#0x48000000
000b18  e5911058          LDR      r1,[r1,#0x58]
000b1c  e3811c80          ORR      r1,r1,#0x8000
000b20  e3a02448          MOV      r2,#0x48000000
000b24  e5821058          STR      r1,[r2,#0x58]
;;;346    	}
;;;347    	
;;;348    	if(mode&CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT) {
                  |L1.2856|
000b28  e3100580          TST      r0,#0x20000000
000b2c  0a000007          BEQ      |L1.2896|
;;;349    		camPviewStatus=CAM_STARTED;
000b30  e3a01000          MOV      r1,#0
000b34  e51f2050          LDR      r2,|L1.2796|
000b38  e5821000          STR      r1,[r2,#0]  ; camPviewStatus
;;;350    		rCIPRSCCTRL|=CAM_PVIEW_SACLER_START_BIT;
000b3c  e3a01448          MOV      r1,#0x48000000
000b40  e591108c          LDR      r1,[r1,#0x8c]
000b44  e3811c80          ORR      r1,r1,#0x8000
000b48  e3a02448          MOV      r2,#0x48000000
000b4c  e582108c          STR      r1,[r2,#0x8c]
;;;351    	}
;;;352        
;;;353    	rCIIMGCPT|=CAM_CAMIF_GLOBAL_CAPTURE_ENABLE_BIT|mode;
                  |L1.2896|
000b50  e3a01448          MOV      r1,#0x48000000
000b54  e59110a0          LDR      r1,[r1,#0xa0]
000b58  e1811000          ORR      r1,r1,r0
000b5c  e3811480          ORR      r1,r1,#0x80000000
000b60  e3a02448          MOV      r2,#0x48000000
000b64  e58210a0          STR      r1,[r2,#0xa0]
;;;354    }
000b68  e12fff1e          BX       lr
                          ENDP

                  CamCaptureStop PROC
;;;356    void CamCaptureStop(void)
;;;357    {
000b6c  e3a00001          MOV      r0,#1
;;;358    	camCodecStatus=CAM_STOP_ISSUED;
000b70  e51f1264          LDR      r1,|L1.2324|
000b74  e5810000          STR      r0,[r1,#0]  ; camCodecStatus
;;;359    	camPviewStatus=CAM_STOP_ISSUED;
000b78  e3a00001          MOV      r0,#1
000b7c  e51f1098          LDR      r1,|L1.2796|
000b80  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;360    }
000b84  e12fff1e          BX       lr
                          ENDP

                  SetCAMClockDivider PROC
;;;450    void SetCAMClockDivider(int divn)
;;;451    {
000b88  e3a01440          MOV      r1,#0x40000000
;;;452        rCLKDIVN= (rCLKDIVN & ~(0xf<<8))|(divn<<8);    
000b8c  e5911028          LDR      r1,[r1,#0x28]
000b90  e3c11ef0          BIC      r1,r1,#0xf00
000b94  e1811400          ORR      r1,r1,r0,LSL #8
000b98  e3a02440          MOV      r2,#0x40000000
000b9c  e5821028          STR      r1,[r2,#0x28]
;;;453    }
000ba0  e12fff1e          BX       lr
                          ENDP

                  CalculatePrescalerRatioShift PROC
;;;677    void CalculatePrescalerRatioShift(U32 SrcSize, U32 DstSize, U32 *ratio,U32 *shift)
;;;678    {
000ba4  e92d41f0          STMFD    sp!,{r4-r8,lr}
000ba8  e1a04000          MOV      r4,r0
000bac  e1a05001          MOV      r5,r1
000bb0  e1a06002          MOV      r6,r2
000bb4  e1a07003          MOV      r7,r3
;;;679    	if(SrcSize>=64*DstSize) {
000bb8  e1540305          CMP      r4,r5,LSL #6
000bbc  3a000008          BCC      |L1.3044|
;;;680    		Uart_Printf("ERROR: out of the prescaler range: SrcSize/DstSize = %d(< 64)\n",SrcSize/DstSize);
000bc0  e1a01004          MOV      r1,r4
000bc4  e1a00005          MOV      r0,r5
000bc8  ebfffffe          BL       __rt_udiv
000bcc  e1a08000          MOV      r8,r0
000bd0  e1a01000          MOV      r1,r0
000bd4  e28f00a8          ADR      r0,|L1.3204|
000bd8  ebfffffe          BL       _printf
;;;681    		while(1);
000bdc  e1a00000          NOP      
                  |L1.3040|
000be0  eafffffe          B        |L1.3040|
;;;682    	}
;;;683    	else if(SrcSize>=32*DstSize) {
                  |L1.3044|
000be4  e1540285          CMP      r4,r5,LSL #5
000be8  3a000004          BCC      |L1.3072|
;;;684    		*ratio=32;
000bec  e3a00020          MOV      r0,#0x20
000bf0  e5860000          STR      r0,[r6,#0]
;;;685    		*shift=5;
000bf4  e3a00005          MOV      r0,#5
000bf8  e5870000          STR      r0,[r7,#0]
000bfc  ea00001f          B        |L1.3200|
;;;686    	}
;;;687    	else if(SrcSize>=16*DstSize) {
                  |L1.3072|
000c00  e1540205          CMP      r4,r5,LSL #4
000c04  3a000004          BCC      |L1.3100|
;;;688    		*ratio=16;
000c08  e3a00010          MOV      r0,#0x10
000c0c  e5860000          STR      r0,[r6,#0]

⌨️ 快捷键说明

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