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

📄 camif.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
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 + -