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

📄 camif.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000c00  e3a00002          MOV      r0,#2
000c04  e5860000          STR      r0,[r6,#0]
;;;688    		*shift=1;
000c08  e3a00001          MOV      r0,#1
000c0c  e5870000          STR      r0,[r7,#0]
000c10  ea000003          B        |L1.3108|
;;;689    	}
;;;690    	else {
;;;691    		*ratio=1;
                  |L1.3092|
000c14  e3a00001          MOV      r0,#1
000c18  e5860000          STR      r0,[r6,#0]
;;;692    		*shift=0;
000c1c  e3a00000          MOV      r0,#0
000c20  e5870000          STR      r0,[r7,#0]
;;;693    	}    	
;;;694    }
                  |L1.3108|
000c24  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                  |L1.3112|
000c28  4f525245          DCB      "ERRO"
000c2c  6f203a52          DCB      "R: o"
000c30  6f207475          DCB      "ut o"
000c34  68742066          DCB      "f th"
000c38  72702065          DCB      "e pr"
000c3c  61637365          DCB      "esca"
000c40  2072656c          DCB      "ler "
000c44  676e6172          DCB      "rang"
000c48  53203a65          DCB      "e: S"
000c4c  69536372          DCB      "rcSi"
000c50  442f657a          DCB      "ze/D"
000c54  69537473          DCB      "stSi"
000c58  3d20657a          DCB      "ze ="
000c5c  28642520          DCB      " %d("
000c60  3436203c          DCB      "< 64"
000c64  00000a29          DCB      ")\n\0\0"
                          ENDP

                  CalculateBurstSize PROC
;;;618    void CalculateBurstSize(U32 hSize,U32 *mainBurstSize,U32 *remainedBurstSize)
;;;619    {
000c68  e1a0cd00          MOV      r12,r0,LSL #26
;;;620    	U32 tmp;	
;;;621    	tmp=(hSize/4)%16;
000c6c  e1a03e2c          MOV      r3,r12,LSR #28
;;;622    	switch(tmp) {
000c70  e3530000          CMP      r3,#0
000c74  0a000004          BEQ      |L1.3212|
000c78  e3530004          CMP      r3,#4
000c7c  0a000007          BEQ      |L1.3232|
000c80  e3530008          CMP      r3,#8
000c84  1a00000f          BNE      |L1.3272|
000c88  ea000009          B        |L1.3252|
;;;623    		case 0:
;;;624    			*mainBurstSize=16;
                  |L1.3212|
000c8c  e3a0c010          MOV      r12,#0x10
000c90  e581c000          STR      r12,[r1,#0]
;;;625    			*remainedBurstSize=16;
000c94  e3a0c010          MOV      r12,#0x10
000c98  e582c000          STR      r12,[r2,#0]
;;;626    			break;
000c9c  ea000026          B        |L1.3388|
;;;627    		case 4:
;;;628    			*mainBurstSize=16;
                  |L1.3232|
000ca0  e3a0c010          MOV      r12,#0x10
000ca4  e581c000          STR      r12,[r1,#0]
;;;629    			*remainedBurstSize=4;
000ca8  e3a0c004          MOV      r12,#4
000cac  e582c000          STR      r12,[r2,#0]
;;;630    			break;
000cb0  ea000021          B        |L1.3388|
;;;631    		case 8:
;;;632    			*mainBurstSize=16;
                  |L1.3252|
000cb4  e3a0c010          MOV      r12,#0x10
000cb8  e581c000          STR      r12,[r1,#0]
;;;633    			*remainedBurstSize=8;
000cbc  e3a0c008          MOV      r12,#8
000cc0  e582c000          STR      r12,[r2,#0]
;;;634    			break;
000cc4  ea00001c          B        |L1.3388|
;;;635    		default: 
;;;636    			tmp=(hSize/4)%8;
                  |L1.3272|
000cc8  e1a0cd80          MOV      r12,r0,LSL #27
000ccc  e1a03eac          MOV      r3,r12,LSR #29
;;;637    			switch(tmp) {
000cd0  e3530000          CMP      r3,#0
000cd4  0a000002          BEQ      |L1.3300|
000cd8  e3530004          CMP      r3,#4
000cdc  1a00000a          BNE      |L1.3340|
000ce0  ea000004          B        |L1.3320|
;;;638    				case 0:
;;;639    					*mainBurstSize=8;
                  |L1.3300|
000ce4  e3a0c008          MOV      r12,#8
000ce8  e581c000          STR      r12,[r1,#0]
;;;640    					*remainedBurstSize=8;
000cec  e3a0c008          MOV      r12,#8
000cf0  e582c000          STR      r12,[r2,#0]
;;;641    					break;
000cf4  ea00000f          B        |L1.3384|
;;;642    				case 4:
;;;643    					*mainBurstSize=8;
                  |L1.3320|
000cf8  e3a0c008          MOV      r12,#8
000cfc  e581c000          STR      r12,[r1,#0]
;;;644    					*remainedBurstSize=4;
000d00  e3a0c004          MOV      r12,#4
000d04  e582c000          STR      r12,[r2,#0]
;;;645    				default:
000d08  e1a00000          NOP      
;;;646    					*mainBurstSize=4;
                  |L1.3340|
000d0c  e3a0c004          MOV      r12,#4
000d10  e581c000          STR      r12,[r1,#0]
;;;647    					tmp=(hSize/4)%4;
000d14  e1a0ce00          MOV      r12,r0,LSL #28
000d18  e1a03f2c          MOV      r3,r12,LSR #30
;;;648    					*remainedBurstSize= (tmp) ? tmp: 4;
000d1c  e3530000          CMP      r3,#0
000d20  0a000001          BEQ      |L1.3372|
000d24  e1a0c003          MOV      r12,r3
000d28  ea000000          B        |L1.3376|
                  |L1.3372|
000d2c  e3a0c004          MOV      r12,#4
                  |L1.3376|
000d30  e582c000          STR      r12,[r2,#0]
;;;649    					break;
000d34  e1a00000          NOP      
;;;650    			}
;;;651    			break;
                  |L1.3384|
000d38  e1a00000          NOP      
;;;652    	}		    	    		
;;;653    }
                  |L1.3388|
000d3c  e12fff1e          BX       lr
                          ENDP

                  CamInit PROC
;;;458    			U32 WinHorOffset, U32 WinVerOffset,  U32 CoFrameBuffer, U32 PrFrameBuffer)
;;;459    {
000d40  e92d4fff          STMFD    sp!,{r0-r11,lr}
000d44  e24dd04c          SUB      sp,sp,#0x4c
000d48  e1a04000          MOV      r4,r0
000d4c  e1a05001          MOV      r5,r1
000d50  e1a09002          MOV      r9,r2
;;;460    	U32 WinOfsEn;
;;;461    	U32 divisor, multiplier;
;;;462    	U32 MainBurstSizeY, RemainedBurstSizeY, MainBurstSizeC, RemainedBurstSizeC, MainBurstSizeRGB, RemainedBurstSizeRGB;
;;;463    	U32 H_Shift, V_Shift, PreHorRatio, PreVerRatio, MainHorRatio, MainVerRatio;
;;;464    	U32 SrcWidth, SrcHeight;
;;;465    	U32 OrgSrcWidth, OrgSrcHeight;
;;;466    	U32 ScaleUp_H_Co, ScaleUp_V_Co, ScaleUp_H_Pr, ScaleUp_V_Pr;
;;;467    
;;;468    	//constraint for size setting is checked here.........
;;;469    
;;;470    	//constant for calculating codec dma address
;;;471    	if(camCodecOutput)
000d54  e51f0964          LDR      r0,|L1.1016|
000d58  e5900000          LDR      r0,[r0,#0]  ; camCodecOutput
000d5c  e3500000          CMP      r0,#0
000d60  0a000001          BEQ      |L1.3436|
;;;472    		divisor=2; //CCIR-422
000d64  e3a08002          MOV      r8,#2
000d68  ea000000          B        |L1.3440|
;;;473    	else
;;;474    		divisor=4; //CCIR-420
                  |L1.3436|
000d6c  e3a08004          MOV      r8,#4
;;;475    		
;;;476    	//constant for calculating preview dma address
;;;477    	if(camPviewOutput)
                  |L1.3440|
000d70  e51f0978          LDR      r0,|L1.1024|
000d74  e5900000          LDR      r0,[r0,#0]  ; camPviewOutput
000d78  e3500000          CMP      r0,#0
000d7c  0a000002          BEQ      |L1.3468|
;;;478    		multiplier=4;
000d80  e3a02004          MOV      r2,#4
000d84  e58d2044          STR      r2,[sp,#0x44]
000d88  ea000001          B        |L1.3476|
;;;479    	else
;;;480    		multiplier=2;
                  |L1.3468|
000d8c  e3a02002          MOV      r2,#2
000d90  e58d2044          STR      r2,[sp,#0x44]
;;;481    	
;;;482    	if(WinHorOffset==0 && WinVerOffset==0)
                  |L1.3476|
000d94  e59d0080          LDR      r0,[sp,#0x80]
000d98  e59d1084          LDR      r1,[sp,#0x84]
000d9c  e1900001          ORRS     r0,r0,r1
000da0  1a000002          BNE      |L1.3504|
;;;483    		WinOfsEn=0;
000da4  e3a00000          MOV      r0,#0
000da8  e58d0048          STR      r0,[sp,#0x48]
000dac  ea000001          B        |L1.3512|
;;;484    	else
;;;485    		WinOfsEn=1;
                  |L1.3504|
000db0  e3a00001          MOV      r0,#1
000db4  e58d0048          STR      r0,[sp,#0x48]
;;;486    
;;;487    	switch(CAMSIZE) {
                  |L1.3512|
000db8  e51f0934          LDR      r0,|L1.1164|
000dbc  e5900000          LDR      r0,[r0,#0]  ; CAMSIZE
000dc0  e3500fa0          CMP      r0,#0x280
000dc4  0a000004          BEQ      |L1.3548|
000dc8  e3500e48          CMP      r0,#0x480
000dcc  0a000005          BEQ      |L1.3560|
000dd0  e3500e7d          CMP      r0,#0x7d0
000dd4  1a000009          BNE      |L1.3584|
000dd8  ea000005          B        |L1.3572|
;;;488    		case VGA_XSIZE:
;;;489    			OrgSrcWidth=VGA_XSIZE;
                  |L1.3548|
000ddc  e3a0afa0          MOV      r10,#0x280
;;;490    			OrgSrcHeight=VGA_YSIZE;
000de0  e3a0bf78          MOV      r11,#0x1e0
;;;491    			break;
000de4  ea000008          B        |L1.3596|
;;;492    		case MEGA1_XSIZE:
;;;493    			OrgSrcWidth=MEGA1_XSIZE;
                  |L1.3560|
000de8  e3a0ae48          MOV      r10,#0x480
;;;494    			OrgSrcHeight=MEGA1_YSIZE;
000dec  e3a0bfd8          MOV      r11,#0x360
;;;495    			break;
000df0  ea000005          B        |L1.3596|
;;;496    		case MEGA2_XSIZE:
;;;497    			OrgSrcWidth=MEGA2_XSIZE;
                  |L1.3572|
000df4  e3a0ae7d          MOV      r10,#0x7d0
;;;498    			OrgSrcHeight=MEGA2_YSIZE;
000df8  e3a0bfd8          MOV      r11,#0x360
;;;499    			break;
000dfc  ea000002          B        |L1.3596|
;;;500    		default:
;;;501    			OrgSrcWidth=VGA_XSIZE;
                  |L1.3584|
000e00  e3a0afa0          MOV      r10,#0x280
;;;502    			OrgSrcHeight=VGA_YSIZE;
000e04  e3a0bf78          MOV      r11,#0x1e0
;;;503    			break;
000e08  e1a00000          NOP      
;;;504    	}		
;;;505    		
;;;506    
;;;507    	SrcWidth=OrgSrcWidth-2*WinHorOffset;
                  |L1.3596|
000e0c  e59d0080          LDR      r0,[sp,#0x80]
000e10  e04a6080          SUB      r6,r10,r0,LSL #1
;;;508    	SrcHeight=OrgSrcHeight-2*WinVerOffset;
000e14  e59d1084          LDR      r1,[sp,#0x84]
000e18  e04b7081          SUB      r7,r11,r1,LSL #1
;;;509    
;;;510    	if(SrcWidth<=CoDstWidth) ScaleUp_H_Co=1;
000e1c  e1560004          CMP      r6,r4
000e20  8a000002          BHI      |L1.3632|
000e24  e3a00001          MOV      r0,#1
000e28  e58d0010          STR      r0,[sp,#0x10]
000e2c  ea000001          B        |L1.3640|
;;;511    	else ScaleUp_H_Co=0;		
                  |L1.3632|
000e30  e3a00000          MOV      r0,#0
000e34  e58d0010          STR      r0,[sp,#0x10]
;;;512    
;;;513    	if(SrcHeight<=CoDstHeight) ScaleUp_V_Co=1;
                  |L1.3640|
000e38  e1570005          CMP      r7,r5
000e3c  8a000002          BHI      |L1.3660|
000e40  e3a01001          MOV      r1,#1
000e44  e58d100c          STR      r1,[sp,#0xc]
000e48  ea000001          B        |L1.3668|
;;;514    	else ScaleUp_V_Co=0;		
                  |L1.3660|
000e4c  e3a01000          MOV      r1,#0
000e50  e58d100c          STR      r1,[sp,#0xc]
;;;515    
;;;516    	if(SrcWidth<=PrDstWidth) ScaleUp_H_Pr=1;
                  |L1.3668|
000e54  e1560009          CMP      r6,r9
000e58  8a000002          BHI      |L1.3688|
000e5c  e3a01001          MOV      r1,#1
000e60  e58d1008          STR      r1,[sp,#8]
000e64  ea000001          B        |L1.3696|
;;;517    	else ScaleUp_H_Pr=0;		
                  |L1.3688|
000e68  e3a01000          MOV      r1,#0
000e6c  e58d1008          STR      r1,[sp,#8]
;;;518    
;;;519    	if(SrcHeight<=PrDstHeight) ScaleUp_V_Pr=1;
                  |L1.3696|
000e70  e59d3058          LDR      r3,[sp,#0x58]
000e74  e1570003          CMP      r7,r3
000e78  8a000002          BHI      |L1.3720|
000e7c  e3a01001          MOV      r1,#1
000e80  e58d1004          STR      r1,[sp,#4]
000e84  ea000001          B        |L1.3728|
;;;520    	else ScaleUp_V_Pr=0;		
                  |L1.3720|
000e88  e3a01000          MOV      r1,#0
000e8c  e58d1004          STR      r1,[sp,#4]
;;;521    
;;;522    	rCISRCFMT=(CAM_ITU601<<31)|(0

⌨️ 快捷键说明

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