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

📄 camif.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;689    		*shift=4;
000c10  e3a00004          MOV      r0,#4
000c14  e5870000          STR      r0,[r7,#0]
000c18  ea000018          B        |L1.3200|
;;;690    	}
;;;691    	else if(SrcSize>=8*DstSize) {
                  |L1.3100|
000c1c  e1540185          CMP      r4,r5,LSL #3
000c20  3a000004          BCC      |L1.3128|
;;;692    		*ratio=8;
000c24  e3a00008          MOV      r0,#8
000c28  e5860000          STR      r0,[r6,#0]
;;;693    		*shift=3;
000c2c  e3a00003          MOV      r0,#3
000c30  e5870000          STR      r0,[r7,#0]
000c34  ea000011          B        |L1.3200|
;;;694    	}
;;;695    	else if(SrcSize>=4*DstSize) {
                  |L1.3128|
000c38  e1540105          CMP      r4,r5,LSL #2
000c3c  3a000004          BCC      |L1.3156|
;;;696    		*ratio=4;
000c40  e3a00004          MOV      r0,#4
000c44  e5860000          STR      r0,[r6,#0]
;;;697    		*shift=2;
000c48  e3a00002          MOV      r0,#2
000c4c  e5870000          STR      r0,[r7,#0]
000c50  ea00000a          B        |L1.3200|
;;;698    	}
;;;699    	else if(SrcSize>=2*DstSize) {
                  |L1.3156|
000c54  e1540085          CMP      r4,r5,LSL #1
000c58  3a000004          BCC      |L1.3184|
;;;700    		*ratio=2;
000c5c  e3a00002          MOV      r0,#2
000c60  e5860000          STR      r0,[r6,#0]
;;;701    		*shift=1;
000c64  e3a00001          MOV      r0,#1
000c68  e5870000          STR      r0,[r7,#0]
000c6c  ea000003          B        |L1.3200|
;;;702    	}
;;;703    	else {
;;;704    		*ratio=1;
                  |L1.3184|
000c70  e3a00001          MOV      r0,#1
000c74  e5860000          STR      r0,[r6,#0]
;;;705    		*shift=0;
000c78  e3a00000          MOV      r0,#0
000c7c  e5870000          STR      r0,[r7,#0]
;;;706    	}    	
;;;707    }
                  |L1.3200|
000c80  e8bd81f0          LDMFD    sp!,{r4-r8,pc}
                  |L1.3204|
000c84  4f525245          DCB      "ERRO"
000c88  6f203a52          DCB      "R: o"
000c8c  6f207475          DCB      "ut o"
000c90  68742066          DCB      "f th"
000c94  72702065          DCB      "e pr"
000c98  61637365          DCB      "esca"
000c9c  2072656c          DCB      "ler "
000ca0  676e6172          DCB      "rang"
000ca4  53203a65          DCB      "e: S"
000ca8  69536372          DCB      "rcSi"
000cac  442f657a          DCB      "ze/D"
000cb0  69537473          DCB      "stSi"
000cb4  3d20657a          DCB      "ze ="
000cb8  28642520          DCB      " %d("
000cbc  3436203c          DCB      "< 64"
000cc0  00000a29          DCB      ")\n\0\0"
                          ENDP

                  CalculateBurstSize PROC
;;;631    void CalculateBurstSize(U32 hSize,U32 *mainBurstSize,U32 *remainedBurstSize)
;;;632    {
000cc4  e1a0cd00          MOV      r12,r0,LSL #26
;;;633    	U32 tmp;	
;;;634    	tmp=(hSize/4)%16;
000cc8  e1a03e2c          MOV      r3,r12,LSR #28
;;;635    	switch(tmp) {
000ccc  e3530000          CMP      r3,#0
000cd0  0a000004          BEQ      |L1.3304|
000cd4  e3530004          CMP      r3,#4
000cd8  0a000007          BEQ      |L1.3324|
000cdc  e3530008          CMP      r3,#8
000ce0  1a00000f          BNE      |L1.3364|
000ce4  ea000009          B        |L1.3344|
;;;636    		case 0:
;;;637    			*mainBurstSize=16;
                  |L1.3304|
000ce8  e3a0c010          MOV      r12,#0x10
000cec  e581c000          STR      r12,[r1,#0]
;;;638    			*remainedBurstSize=16;
000cf0  e3a0c010          MOV      r12,#0x10
000cf4  e582c000          STR      r12,[r2,#0]
;;;639    			break;
000cf8  ea000026          B        |L1.3480|
;;;640    		case 4:
;;;641    			*mainBurstSize=16;
                  |L1.3324|
000cfc  e3a0c010          MOV      r12,#0x10
000d00  e581c000          STR      r12,[r1,#0]
;;;642    			*remainedBurstSize=4;
000d04  e3a0c004          MOV      r12,#4
000d08  e582c000          STR      r12,[r2,#0]
;;;643    			break;
000d0c  ea000021          B        |L1.3480|
;;;644    		case 8:
;;;645    			*mainBurstSize=16;
                  |L1.3344|
000d10  e3a0c010          MOV      r12,#0x10
000d14  e581c000          STR      r12,[r1,#0]
;;;646    			*remainedBurstSize=8;
000d18  e3a0c008          MOV      r12,#8
000d1c  e582c000          STR      r12,[r2,#0]
;;;647    			break;
000d20  ea00001c          B        |L1.3480|
;;;648    		default: 
;;;649    			tmp=(hSize/4)%8;
                  |L1.3364|
000d24  e1a0cd80          MOV      r12,r0,LSL #27
000d28  e1a03eac          MOV      r3,r12,LSR #29
;;;650    			switch(tmp) {
000d2c  e3530000          CMP      r3,#0
000d30  0a000002          BEQ      |L1.3392|
000d34  e3530004          CMP      r3,#4
000d38  1a00000a          BNE      |L1.3432|
000d3c  ea000004          B        |L1.3412|
;;;651    				case 0:
;;;652    					*mainBurstSize=8;
                  |L1.3392|
000d40  e3a0c008          MOV      r12,#8
000d44  e581c000          STR      r12,[r1,#0]
;;;653    					*remainedBurstSize=8;
000d48  e3a0c008          MOV      r12,#8
000d4c  e582c000          STR      r12,[r2,#0]
;;;654    					break;
000d50  ea00000f          B        |L1.3476|
;;;655    				case 4:
;;;656    					*mainBurstSize=8;
                  |L1.3412|
000d54  e3a0c008          MOV      r12,#8
000d58  e581c000          STR      r12,[r1,#0]
;;;657    					*remainedBurstSize=4;
000d5c  e3a0c004          MOV      r12,#4
000d60  e582c000          STR      r12,[r2,#0]
;;;658    				default:
000d64  e1a00000          NOP      
;;;659    					*mainBurstSize=4;
                  |L1.3432|
000d68  e3a0c004          MOV      r12,#4
000d6c  e581c000          STR      r12,[r1,#0]
;;;660    					tmp=(hSize/4)%4;
000d70  e1a0ce00          MOV      r12,r0,LSL #28
000d74  e1a03f2c          MOV      r3,r12,LSR #30
;;;661    					*remainedBurstSize= (tmp) ? tmp: 4;
000d78  e3530000          CMP      r3,#0
000d7c  0a000001          BEQ      |L1.3464|
000d80  e1a0c003          MOV      r12,r3
000d84  ea000000          B        |L1.3468|
                  |L1.3464|
000d88  e3a0c004          MOV      r12,#4
                  |L1.3468|
000d8c  e582c000          STR      r12,[r2,#0]
;;;662    					break;
000d90  e1a00000          NOP      
;;;663    			}
;;;664    			break;
                  |L1.3476|
000d94  e1a00000          NOP      
;;;665    	}		    	    		
;;;666    }
                  |L1.3480|
000d98  e12fff1e          BX       lr
                          ENDP

                  CamInit PROC
;;;466    			U32 WinHorOffset, U32 WinVerOffset,  U32 CoFrameBuffer, U32 PrFrameBuffer)
;;;467    {
000d9c  e92d4fff          STMFD    sp!,{r0-r11,lr}
000da0  e24dd04c          SUB      sp,sp,#0x4c
000da4  e1a04000          MOV      r4,r0
000da8  e1a05001          MOV      r5,r1
000dac  e1a09002          MOV      r9,r2
;;;468    	U32 WinOfsEn;
;;;469    	U32 divisor, multiplier;
;;;470    	U32 MainBurstSizeY, RemainedBurstSizeY, MainBurstSizeC, RemainedBurstSizeC, MainBurstSizeRGB, RemainedBurstSizeRGB;
;;;471    	U32 H_Shift, V_Shift, PreHorRatio, PreVerRatio, MainHorRatio, MainVerRatio;
;;;472    	U32 SrcWidth, SrcHeight;
;;;473    	U32 OrgSrcWidth, OrgSrcHeight;
;;;474    	U32 ScaleUp_H_Co, ScaleUp_V_Co, ScaleUp_H_Pr, ScaleUp_V_Pr;
;;;475    
;;;476    	//constraint for size setting is checked here.........
;;;477    
;;;478    	//constant for calculating codec dma address
;;;479    	if(camCodecOutput)
000db0  e51f0978          LDR      r0,|L1.1088|
000db4  e5900000          LDR      r0,[r0,#0]  ; camCodecOutput
000db8  e3500000          CMP      r0,#0
000dbc  0a000001          BEQ      |L1.3528|
;;;480    		divisor=2; //CCIR-422
000dc0  e3a08002          MOV      r8,#2
000dc4  ea000000          B        |L1.3532|
;;;481    	else
;;;482    		divisor=4; //CCIR-420
                  |L1.3528|
000dc8  e3a08004          MOV      r8,#4
;;;483    		
;;;484    	//constant for calculating preview dma address
;;;485    	if(camPviewOutput)
                  |L1.3532|
000dcc  e51f098c          LDR      r0,|L1.1096|
000dd0  e5900000          LDR      r0,[r0,#0]  ; camPviewOutput
000dd4  e3500000          CMP      r0,#0
000dd8  0a000002          BEQ      |L1.3560|
;;;486    		multiplier=4;
000ddc  e3a02004          MOV      r2,#4
000de0  e58d2044          STR      r2,[sp,#0x44]
000de4  ea000001          B        |L1.3568|
;;;487    	else
;;;488    		multiplier=2;
                  |L1.3560|
000de8  e3a02002          MOV      r2,#2
000dec  e58d2044          STR      r2,[sp,#0x44]
;;;489    	
;;;490    	if(WinHorOffset==0 && WinVerOffset==0)
                  |L1.3568|
000df0  e59d0080          LDR      r0,[sp,#0x80]
000df4  e59d1084          LDR      r1,[sp,#0x84]
000df8  e1900001          ORRS     r0,r0,r1
000dfc  1a000002          BNE      |L1.3596|
;;;491    		WinOfsEn=0;
000e00  e3a00000          MOV      r0,#0
000e04  e58d0048          STR      r0,[sp,#0x48]
000e08  ea000001          B        |L1.3604|
;;;492    	else
;;;493    		WinOfsEn=1;
                  |L1.3596|
000e0c  e3a00001          MOV      r0,#1
000e10  e58d0048          STR      r0,[sp,#0x48]
;;;494    
;;;495    	switch(CAMSIZE) {
                  |L1.3604|
000e14  e51f0934          LDR      r0,|L1.1256|
000e18  e5900000          LDR      r0,[r0,#0]  ; CAMSIZE
000e1c  e3500fa0          CMP      r0,#0x280
000e20  0a000006          BEQ      |L1.3648|
000e24  e3500fc8          CMP      r0,#0x320
000e28  0a000007          BEQ      |L1.3660|
000e2c  e3500e48          CMP      r0,#0x480
000e30  0a000008          BEQ      |L1.3672|
000e34  e3500e64          CMP      r0,#0x640
000e38  1a00000c          BNE      |L1.3696|
000e3c  ea000008          B        |L1.3684|
;;;496    		case VGA_XSIZE:
;;;497    			OrgSrcWidth=VGA_XSIZE;
                  |L1.3648|
000e40  e3a0afa0          MOV      r10,#0x280
;;;498    			OrgSrcHeight=VGA_YSIZE;
000e44  e3a0bf78          MOV      r11,#0x1e0
;;;499    			break;
000e48  ea00000b          B        |L1.3708|
;;;500    		case SVGA_XSIZE:
;;;501    			OrgSrcWidth=SVGA_XSIZE;
                  |L1.3660|
000e4c  e3a0afc8          MOV      r10,#0x320
;;;502    			OrgSrcHeight=SVGA_YSIZE;
000e50  e3a0bf96          MOV      r11,#0x258
;;;503    			break;
000e54  ea000008          B        |L1.3708|
;;;504    		case MEGA1_XSIZE:			
;;;505    			OrgSrcWidth=MEGA1_XSIZE;
                  |L1.3672|
000e58  e3a0ae48          MOV      r10,#0x480
;;;506    			OrgSrcHeight=MEGA1_YSIZE;
000e5c  e3a0bfd8          MOV      r11,#0x360
;;;507    			break;
000e60  ea000005          B        |L1.3708|
;;;508    		case MEGA2_XSIZE:
;;;509    			OrgSrcWidth=MEGA2_XSIZE;
                  |L1.3684|
000e64  e3a0ae64          MOV      r10,#0x640
;;;510    			OrgSrcHeight=MEGA2_YSIZE;
000e68  e3a0be4b          MOV      r11,#0x4b0
;;;511    			break;
000e6c  ea000002          B        |L1.3708|
;;;512    		default:
;;;513    			OrgSrcWidth=VGA_XSIZE;
                  |L1.3696|
000e70  e3a0afa0          MOV      r10,#0x280
;;;514    			OrgSrcHeight=VGA_YSIZE;
000e74  e3a0bf78          MOV      r11,#0x1e0
;;;515    			break;
000e78  e1a00000          NOP      
;;;516    	}		
;;;517    		
;;;518    
;;;519    	SrcWidth=OrgSrcWidth-2*WinHorOffset;
                  |L1.3708|
000e7c  e59d0080          LDR      r0,[sp,#0x80]
000e80  e04a6080          SUB      r6,r10,r0,LSL #1
;;;520    	SrcHeight=OrgSrcHeight-2*WinVerOffset;
000e84  e59d1084          LDR      r1,[sp,#0x84]
000e88  e04b7081          SUB      r7,r11,r1,LSL #1
;;;521    
;;;522    	if(SrcWidth<=CoDstWidth) ScaleUp_H_Co=1;
000e8c  e1560004          CMP      r6,r4
000e90  8a000002          BHI      |L1.3744|
000e94  e3a00001          MOV  

⌨️ 快捷键说明

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