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

📄 camif.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
00091c  e5900080          LDR      r0,[r0,#0x80]
000920  e3800004          ORR      r0,r0,#4
000924  e3a01448          MOV      r1,#0x48000000
000928  e5810080          STR      r0,[r1,#0x80]
;;;391    }
00092c  e12fff1e          BX       lr
                          ENDP

                  CamPviewIsr PROC
;;;283    void __irq CamPviewIsr(void)
;;;284    {
000930  e92d501f          STMFD    sp!,{r0-r4,r12,lr}
000934  e24dd004          SUB      sp,sp,#4
;;;285    	U32 completedFrameIndex;
;;;286    
;;;287    	ClearPending(BIT_CAMIF_PREVIEW);
000938  e3a00a40          MOV      r0,#0x40000
00093c  e51f1090          LDR      r1,|L1.2228|
000940  e5810000          STR      r0,[r1,#0]
000944  e1c10000          BIC      r0,r1,r0
000948  e5900010          LDR      r0,[r0,#0x10]
00094c  e5810010          STR      r0,[r1,#0x10]
000950  e1a00001          MOV      r0,r1
000954  e5900010          LDR      r0,[r0,#0x10]
;;;288    	completedFrameIndex=(((rCIPRSTATUS>>26)&0x3)+4-2)%4;
000958  e3a00448          MOV      r0,#0x48000000
00095c  e5900098          LDR      r0,[r0,#0x98]
000960  e3a01002          MOV      r1,#2
000964  e0810d20          ADD      r0,r1,r0,LSR #26
000968  e2004003          AND      r4,r0,#3
;;;289    	//Uart_Printf("0x%x, 0x%x, %d\n", rCICOSTATUS&0xe0000000, rCIPRSTATUS&0xc0000000, completedFrameIndex);
;;;290    	switch(camPviewStatus) {
00096c  e59f011c          LDR      r0,|L1.2704|
000970  e5900000          LDR      r0,[r0,#0]  ; camPviewStatus
000974  e3500000          CMP      r0,#0
000978  0a000016          BEQ      |L1.2520|
00097c  e3500001          CMP      r0,#1
000980  0a000004          BEQ      |L1.2456|
000984  e3500002          CMP      r0,#2
000988  0a000007          BEQ      |L1.2476|
00098c  e3500003          CMP      r0,#3
000990  1a000035          BNE      |L1.2668|
000994  ea000009          B        |L1.2496|
;;;291    		case CAM_STOP_ISSUED:
;;;292    			_CamPviewSetLastIrq();
                  |L1.2456|
000998  ebfffffe          BL       _CamPviewSetLastIrq
;;;293    			camPviewStatus=CAM_LASTIRQ_ISSUED;    	
00099c  e3a00002          MOV      r0,#2
0009a0  e59f10e8          LDR      r1,|L1.2704|
0009a4  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;294    			break;
0009a8  ea000032          B        |L1.2680|
;;;295    		case CAM_LASTIRQ_ISSUED:
;;;296    			_CamPviewStopHw();
                  |L1.2476|
0009ac  ebfffffe          BL       _CamPviewStopHw
;;;297    			camPviewStatus=CAM_LAST_CAPTURING;    	
0009b0  e3a00003          MOV      r0,#3
0009b4  e59f10d4          LDR      r1,|L1.2704|
0009b8  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;298    			break;			
0009bc  ea00002d          B        |L1.2680|
;;;299    		case CAM_LAST_CAPTURING:
;;;300    			camPviewStatus=CAM_STOPPED;
                  |L1.2496|
0009c0  e3a00004          MOV      r0,#4
0009c4  e59f10c4          LDR      r1,|L1.2704|
0009c8  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;301    			return;
;;;302    		case CAM_STARTED:
;;;303    			if(camTestMode&CAM_TEST_MODE_PVIEW_POST) {
;;;304    				if(camPviewCaptureCount >0) {					
;;;305    					camPviewDataValid=1;
;;;306    					if(postProcessingDone==0 && camPviewCaptureCount>1) {
;;;307    						Uart_Printf("ERROR:Post not completed yet.\n");
;;;308    					}
;;;309    					completedFrameIndex=(((rCIPRSTATUS>>26)&0x3)+4-2)%4;
;;;310    					PostStartProcessing(completedFrameIndex);
;;;311    				}
;;;312    			}
;;;313    			else {				
;;;314    				if(camPviewCaptureCount>0) camPviewDataValid=1;
;;;315    			}
;;;316    			break;
;;;317    		default:
;;;318    			Uart_Printf("dummy\n");
;;;319    			break;			
;;;320    	}		
;;;321    	camPviewCaptureCount++;	
;;;322    }
                  |L1.2508|
0009cc  e28dd004          ADD      sp,sp,#4
0009d0  e8bd501f          LDMFD    sp!,{r0-r4,r12,lr}
0009d4  e25ef004          SUBS     pc,lr,#4
                  |L1.2520|
0009d8  e51f0124          LDR      r0,|L1.2236|          ;303
0009dc  e5900000          LDR      r0,[r0,#0]            ;303  ; camTestMode
0009e0  e3100008          TST      r0,#8                 ;303
0009e4  0a000018          BEQ      |L1.2636|             ;303
0009e8  e59f00a4          LDR      r0,|L1.2708|          ;304
0009ec  e5900000          LDR      r0,[r0,#0]            ;304  ; camPviewCaptureCount
0009f0  e3500000          CMP      r0,#0                 ;304
0009f4  0a00001b          BEQ      |L1.2664|             ;304
0009f8  e3a00001          MOV      r0,#1                 ;305
0009fc  e59f1094          LDR      r1,|L1.2712|          ;305
000a00  e5810000          STR      r0,[r1,#0]            ;305  ; camPviewDataValid
000a04  e51f0144          LDR      r0,|L1.2248|          ;306
000a08  e5900000          LDR      r0,[r0,#0]            ;306  ; postProcessingDone
000a0c  e3500000          CMP      r0,#0                 ;306
000a10  1a000005          BNE      |L1.2604|             ;306
000a14  e59f0078          LDR      r0,|L1.2708|          ;306
000a18  e5900000          LDR      r0,[r0,#0]            ;306  ; camPviewCaptureCount
000a1c  e3500001          CMP      r0,#1                 ;306
000a20  9a000001          BLS      |L1.2604|             ;306
000a24  e24f0f58          ADR      r0,|L1.2252|          ;307
000a28  ebfffffe          BL       _printf               ;307
                  |L1.2604|
000a2c  e3a00448          MOV      r0,#0x48000000        ;309
000a30  e5900098          LDR      r0,[r0,#0x98]         ;309
000a34  e3a01002          MOV      r1,#2                 ;309
000a38  e0810d20          ADD      r0,r1,r0,LSR #26      ;309
000a3c  e2004003          AND      r4,r0,#3              ;309
000a40  e1a00004          MOV      r0,r4                 ;310
000a44  ebfffffe          BL       PostStartProcessing   ;310
000a48  ea000006          B        |L1.2664|             ;310
                  |L1.2636|
000a4c  e59f0040          LDR      r0,|L1.2708|          ;314
000a50  e5900000          LDR      r0,[r0,#0]            ;314  ; camPviewCaptureCount
000a54  e3500000          CMP      r0,#0                 ;314
000a58  0a000002          BEQ      |L1.2664|             ;314
000a5c  e3a00001          MOV      r0,#1                 ;314
000a60  e59f1030          LDR      r1,|L1.2712|          ;314
000a64  e5810000          STR      r0,[r1,#0]            ;314  ; camPviewDataValid
                  |L1.2664|
000a68  ea000002          B        |L1.2680|             ;316
                  |L1.2668|
000a6c  e28f0028          ADR      r0,|L1.2716|          ;318
000a70  ebfffffe          BL       _printf               ;318
000a74  e1a00000          NOP                            ;319
                  |L1.2680|
000a78  e59f0014          LDR      r0,|L1.2708|          ;321
000a7c  e5900000          LDR      r0,[r0,#0]            ;321  ; camPviewCaptureCount
000a80  e2800001          ADD      r0,r0,#1              ;321
000a84  e59f1008          LDR      r1,|L1.2708|          ;321
000a88  e5810000          STR      r0,[r1,#0]            ;321  ; camPviewCaptureCount
000a8c  eaffffce          B        |L1.2508|
                  |L1.2704|
000a90  00000010          DCD      ||.bss$2|| + 16
                  |L1.2708|
000a94  00000008          DCD      ||.bss$2|| + 8
                  |L1.2712|
000a98  00000020          DCD      ||.bss$2|| + 32
                  |L1.2716|
000a9c  6d6d7564          DCB      "dumm"
000aa0  00000a79          DCB      "y\n\0\0"
                          ENDP

                  CamCaptureStart PROC
;;;333    void CamCaptureStart(U32 mode)
;;;334    { 
000aa4  e3100440          TST      r0,#0x40000000
;;;335        
;;;336    	if(mode&CAM_CODEC_SCALER_CAPTURE_ENABLE_BIT) {
000aa8  0a000007          BEQ      |L1.2764|
;;;337    		camCodecStatus=CAM_STARTED;
000aac  e3a01000          MOV      r1,#0
000ab0  e51f2200          LDR      r2,|L1.2232|
000ab4  e5821000          STR      r1,[r2,#0]  ; camCodecStatus
;;;338    		rCICOSCCTRL|=CAM_CODEC_SACLER_START_BIT;
000ab8  e3a01448          MOV      r1,#0x48000000
000abc  e5911058          LDR      r1,[r1,#0x58]
000ac0  e3811c80          ORR      r1,r1,#0x8000
000ac4  e3a02448          MOV      r2,#0x48000000
000ac8  e5821058          STR      r1,[r2,#0x58]
;;;339    	}
;;;340    	
;;;341    	if(mode&CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT) {
                  |L1.2764|
000acc  e3100580          TST      r0,#0x20000000
000ad0  0a000007          BEQ      |L1.2804|
;;;342    		camPviewStatus=CAM_STARTED;
000ad4  e3a01000          MOV      r1,#0
000ad8  e51f2050          LDR      r2,|L1.2704|
000adc  e5821000          STR      r1,[r2,#0]  ; camPviewStatus
;;;343    		rCIPRSCCTRL|=CAM_PVIEW_SACLER_START_BIT;
000ae0  e3a01448          MOV      r1,#0x48000000
000ae4  e591108c          LDR      r1,[r1,#0x8c]
000ae8  e3811c80          ORR      r1,r1,#0x8000
000aec  e3a02448          MOV      r2,#0x48000000
000af0  e582108c          STR      r1,[r2,#0x8c]
;;;344    	}
;;;345        
;;;346    	rCIIMGCPT|=CAM_CAMIF_GLOBAL_CAPTURE_ENABLE_BIT|mode;
                  |L1.2804|
000af4  e3a01448          MOV      r1,#0x48000000
000af8  e59110a0          LDR      r1,[r1,#0xa0]
000afc  e1811000          ORR      r1,r1,r0
000b00  e3811480          ORR      r1,r1,#0x80000000
000b04  e3a02448          MOV      r2,#0x48000000
000b08  e58210a0          STR      r1,[r2,#0xa0]
;;;347    }
000b0c  e12fff1e          BX       lr
                          ENDP

                  CamCaptureStop PROC
;;;349    void CamCaptureStop(void)
;;;350    {
000b10  e3a00001          MOV      r0,#1
;;;351    	camCodecStatus=CAM_STOP_ISSUED;
000b14  e51f1264          LDR      r1,|L1.2232|
000b18  e5810000          STR      r0,[r1,#0]  ; camCodecStatus
;;;352    	camPviewStatus=CAM_STOP_ISSUED;
000b1c  e3a00001          MOV      r0,#1
000b20  e51f1098          LDR      r1,|L1.2704|
000b24  e5810000          STR      r0,[r1,#0]  ; camPviewStatus
;;;353    }
000b28  e12fff1e          BX       lr
                          ENDP

                  SetCAMClockDivider PROC
;;;442    void SetCAMClockDivider(int divn)
;;;443    {
000b2c  e3a01440          MOV      r1,#0x40000000
;;;444        rCLKDIVN= (rCLKDIVN & ~(0xf<<8))|(divn<<8);    
000b30  e5911028          LDR      r1,[r1,#0x28]
000b34  e3c11ef0          BIC      r1,r1,#0xf00
000b38  e1811400          ORR      r1,r1,r0,LSL #8
000b3c  e3a02440          MOV      r2,#0x40000000
000b40  e5821028          STR      r1,[r2,#0x28]
;;;445    }
000b44  e12fff1e          BX       lr
                          ENDP

                  CalculatePrescalerRatioShift PROC
;;;664    void CalculatePrescalerRatioShift(U32 SrcSize, U32 DstSize, U32 *ratio,U32 *shift)
;;;665    {
000b48  e92d41f0          STMFD    sp!,{r4-r8,lr}
000b4c  e1a04000          MOV      r4,r0
000b50  e1a05001          MOV      r5,r1
000b54  e1a06002          MOV      r6,r2
000b58  e1a07003          MOV      r7,r3
;;;666    	if(SrcSize>=64*DstSize) {
000b5c  e1540305          CMP      r4,r5,LSL #6
000b60  3a000008          BCC      |L1.2952|
;;;667    		Uart_Printf("ERROR: out of the prescaler range: SrcSize/DstSize = %d(< 64)\n",SrcSize/DstSize);
000b64  e1a01004          MOV      r1,r4
000b68  e1a00005          MOV      r0,r5
000b6c  ebfffffe          BL       __rt_udiv
000b70  e1a08000          MOV      r8,r0
000b74  e1a01000          MOV      r1,r0
000b78  e28f00a8          ADR      r0,|L1.3112|
000b7c  ebfffffe          BL       _printf
;;;668    		while(1);
000b80  e1a00000          NOP      
                  |L1.2948|
000b84  eafffffe          B        |L1.2948|
;;;669    	}
;;;670    	else if(SrcSize>=32*DstSize) {
                  |L1.2952|
000b88  e1540285          CMP      r4,r5,LSL #5
000b8c  3a000004          BCC      |L1.2980|
;;;671    		*ratio=32;
000b90  e3a00020          MOV      r0,#0x20
000b94  e5860000          STR      r0,[r6,#0]
;;;672    		*shift=5;
000b98  e3a00005          MOV      r0,#5
000b9c  e5870000          STR      r0,[r7,#0]
000ba0  ea00001f          B        |L1.3108|
;;;673    	}
;;;674    	else if(SrcSize>=16*DstSize) {
                  |L1.2980|
000ba4  e1540205          CMP      r4,r5,LSL #4
000ba8  3a000004          BCC      |L1.3008|
;;;675    		*ratio=16;
000bac  e3a00010          MOV      r0,#0x10
000bb0  e5860000          STR      r0,[r6,#0]
;;;676    		*shift=4;
000bb4  e3a00004          MOV      r0,#4
000bb8  e5870000          STR      r0,[r7,#0]
000bbc  ea000018          B        |L1.3108|
;;;677    	}
;;;678    	else if(SrcSize>=8*DstSize) {
                  |L1.3008|
000bc0  e1540185          CMP      r4,r5,LSL #3
000bc4  3a000004          BCC      |L1.3036|
;;;679    		*ratio=8;
000bc8  e3a00008          MOV      r0,#8
000bcc  e5860000          STR      r0,[r6,#0]
;;;680    		*shift=3;
000bd0  e3a00003          MOV      r0,#3
000bd4  e5870000          STR      r0,[r7,#0]
000bd8  ea000011          B        |L1.3108|
;;;681    	}
;;;682    	else if(SrcSize>=4*DstSize) {
                  |L1.3036|
000bdc  e1540105          CMP      r4,r5,LSL #2
000be0  3a000004          BCC      |L1.3064|
;;;683    		*ratio=4;
000be4  e3a00004          MOV      r0,#4
000be8  e5860000          STR      r0,[r6,#0]
;;;684    		*shift=2;
000bec  e3a00002          MOV      r0,#2
000bf0  e5870000          STR      r0,[r7,#0]
000bf4  ea00000a          B        |L1.3108|
;;;685    	}
;;;686    	else if(SrcSize>=2*DstSize) {
                  |L1.3064|
000bf8  e1540085          CMP      r4,r5,LSL #1
000bfc  3a000004          BCC      |L1.3092|
;;;687    		*ratio=2;

⌨️ 快捷键说明

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