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

📄 vlx_test.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-errors .\err\vlx_test.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
                          CODE32

                          AREA ||.text||, CODE, READONLY

                  VlcEngine PROC
;;;739    void VlcEngine(PIMAGE420 pDctqCoeff,PQINFO pQInfo,U32 vlcDataAddr,U32 mode)
;;;740    {
                  |L1.0|
000000  e92d4010          STMFD    sp!,{r4,lr}
;;;741        U32 opUnit;
;;;742    
;;;743        rVLC_CON1=VLX_SOFT_RESET;  //VLX soft-reset should be done only at frame start.
000004  e3a0ec40          MOV      lr,#0x4000
000008  e59f40fc          LDR      r4,|L1.268|
00000c  e584e010          STR      lr,[r4,#0x10]
;;;744        rVLC_CON1=0;    
000010  e3a0e000          MOV      lr,#0
000014  e584e010          STR      lr,[r4,#0x10]
;;;745    
;;;746        vlxDone=0;
000018  e3a0e000          MOV      lr,#0
00001c  e59f40ec          LDR      r4,|L1.272|
000020  e584e000          STR      lr,[r4,#0]  ; vlxDone
;;;747    
;;;748        opUnit=(pDctqCoeff->imageWidth/16)*(pDctqCoeff->imageHeight/16);
000024  e590e010          LDR      lr,[r0,#0x10]
000028  e1a0e22e          MOV      lr,lr,LSR #4
00002c  e5904014          LDR      r4,[r0,#0x14]
000030  e1a04224          MOV      r4,r4,LSR #4
000034  e00c0e94          MUL      r12,r4,lr
;;;749    
;;;750        rVLX_FRAMESTARTY=pDctqCoeff->yStartAddr;
000038  e590e004          LDR      lr,[r0,#4]
00003c  e59f40c8          LDR      r4,|L1.268|
000040  e584e004          STR      lr,[r4,#4]
;;;751        rVLX_FRAMESTARTCB=pDctqCoeff->cbStartAddr;
000044  e590e008          LDR      lr,[r0,#8]
000048  e584e008          STR      lr,[r4,#8]
;;;752        rVLX_FRAMESTARTCR=pDctqCoeff->crStartAddr;
00004c  e590e00c          LDR      lr,[r0,#0xc]
000050  e584e00c          STR      lr,[r4,#0xc]
;;;753            
;;;754        rVLC_CON1=VLC_DCTQ_ZIGZAG_SCAN |(pDctqCoeff->imageWidth<<0);
000054  e590e010          LDR      lr,[r0,#0x10]
000058  e38eed60          ORR      lr,lr,#0x1800
00005c  e584e010          STR      lr,[r4,#0x10]
;;;755        rVLC_CON2=(U32)pQInfo;
000060  e1a0e004          MOV      lr,r4
000064  e58e1014          STR      r1,[lr,#0x14]
;;;756        rVLC_CON3=vlcDataAddr;
000068  e1a0e004          MOV      lr,r4
00006c  e58e2018          STR      r2,[lr,#0x18]
;;;757        rVLC_CON4=0x0;
000070  e3a0e000          MOV      lr,#0
000074  e584e01c          STR      lr,[r4,#0x1c]
;;;758        
;;;759        rVLD_CON1=0x0;
000078  e3a0e000          MOV      lr,#0
00007c  e584e020          STR      lr,[r4,#0x20]
;;;760        
;;;761        rVLX_COMMON1= VLX_ON|VLX_ENCODE_MODE|VLX_INT_ENABLE|VLX_USE_MARKER_BIT|
000080  e59fe08c          LDR      lr,|L1.276|
000084  e18ee48c          ORR      lr,lr,r12,LSL #9
000088  e584e000          STR      lr,[r4,#0]
;;;762    		  VLX_FRAME_START|VLX_START|(opUnit<<9);
;;;763        rVLX_COMMON1= VLX_ON|VLX_ENCODE_MODE|VLX_INT_ENABLE|VLX_USE_MARKER_BIT|
00008c  e3e0e000          MVN      lr,#0
000090  e584e000          STR      lr,[r4,#0]
;;;764        	  	  ~VLX_FRAME_START|~VLX_START|(opUnit<<9);
;;;765    }
000094  e8bd8010          LDMFD    sp!,{r4,pc}
                          ENDP

                  VlxIsr PROC
;;;853    void __irq VlxIsr(void)
;;;854    {
000098  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;855    	printf("4= %08x\n",rVLX_OUT1);
00009c  e59f0068          LDR      r0,|L1.268|
0000a0  e590002c          LDR      r0,[r0,#0x2c]
0000a4  e1a01000          MOV      r1,r0
0000a8  e28f0068          ADR      r0,|L1.280|
0000ac  ebfffffe          BL       printf
;;;856    
;;;857        rSUBSRCPND |= BIT_SUB_VLX;
0000b0  e59f006c          LDR      r0,|L1.292|
0000b4  e5900018          LDR      r0,[r0,#0x18]
0000b8  e3800740          ORR      r0,r0,#0x1000000
0000bc  e59f1060          LDR      r1,|L1.292|
0000c0  e5810018          STR      r0,[r1,#0x18]
;;;858        ClearPending(BIT_VLX_SPI1);	
0000c4  e3a00580          MOV      r0,#0x20000000
0000c8  e1c11000          BIC      r1,r1,r0
0000cc  e5810000          STR      r0,[r1,#0]
0000d0  e1c10000          BIC      r0,r1,r0
0000d4  e5900010          LDR      r0,[r0,#0x10]
0000d8  e5810010          STR      r0,[r1,#0x10]
0000dc  e1a00001          MOV      r0,r1
0000e0  e5900010          LDR      r0,[r0,#0x10]
;;;859    	printf("5= %08x\n",rVLX_OUT1);
0000e4  e2810692          ADD      r0,r1,#0x9200000
0000e8  e590002c          LDR      r0,[r0,#0x2c]
0000ec  e1a01000          MOV      r1,r0
0000f0  e28f0030          ADR      r0,|L1.296|
0000f4  ebfffffe          BL       printf
;;;860    
;;;861        vlxDone=1;
0000f8  e3a00001          MOV      r0,#1
0000fc  e59f100c          LDR      r1,|L1.272|
000100  e5810000          STR      r0,[r1,#0]  ; vlxDone
;;;862        //printf("{v}");
;;;863    }
000104  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000108  e25ef004          SUBS     pc,lr,#4
                  |L1.268|
00010c  49400000          DCD      0x49400000
                  |L1.272|
000110  00000000          DCD      ||.bss$2||
                  |L1.276|
000114  0020003d          DCD      0x0020003d
                  |L1.280|
000118  25203d34          DCB      "4= %"
00011c  0a783830          DCB      "08x\n"
000120  00000000          DCB      "\0\0\0\0"
                  |L1.292|
000124  40200000          DCD      0x40200000
                  |L1.296|
000128  25203d35          DCB      "5= %"
00012c  0a783830          DCB      "08x\n"
000130  00000000          DCB      "\0\0\0\0"
                          ENDP

                  VlxInitIsr PROC
;;;867    void VlxInitIsr(void)
;;;868    {
000134  e59f031c          LDR      r0,|L1.1112|
;;;869        pISR_VLX_SPI1=(U32)VlxIsr;
000138  e59f131c          LDR      r1,|L1.1116|
00013c  e5810f94          STR      r0,[r1,#0xf94]
;;;870        rINTSUBMSK &= ~BIT_SUB_VLX;
000140  e51f0024          LDR      r0,|L1.292|
000144  e590001c          LDR      r0,[r0,#0x1c]
000148  e3c00740          BIC      r0,r0,#0x1000000
00014c  e51f1030          LDR      r1,|L1.292|
000150  e581001c          STR      r0,[r1,#0x1c]
;;;871        rINTMSK&=~BIT_VLX_SPI1;
000154  e1a00001          MOV      r0,r1
000158  e5900008          LDR      r0,[r0,#8]
00015c  e3c00580          BIC      r0,r0,#0x20000000
000160  e5810008          STR      r0,[r1,#8]
;;;872    }
000164  e12fff1e          BX       lr
                          ENDP

                  VlcConfig4Dctq PROC
;;;708    void VlcConfig4Dctq(U32 imgXsize,U32 vlcDataAddr,U32 opUnit,U32 mode)
;;;709    {
000168  e52de004          STR      lr,[sp,#-4]!
;;;710        vlxDone=0;
00016c  e3a0c000          MOV      r12,#0
000170  e51fe068          LDR      lr,|L1.272|
000174  e58ec000          STR      r12,[lr,#0]  ; vlxDone
;;;711    
;;;712        //VLC needs soft-reset before starting a new operation.
;;;713        rVLC_CON1=VLX_SOFT_RESET;
000178  e3a0cc40          MOV      r12,#0x4000
00017c  e51fe078          LDR      lr,|L1.268|
000180  e58ec010          STR      r12,[lr,#0x10]
;;;714        rVLC_CON1=0;    
000184  e3a0c000          MOV      r12,#0
000188  e1cee00c          BIC      lr,lr,r12
00018c  e58ec010          STR      r12,[lr,#0x10]
;;;715        
;;;716        rVLC_CON1=VLC_DCTQ_ZIGZAG_SCAN|VLC_FROM_DCTQ|(imgXsize<<0);
000190  e380cd70          ORR      r12,r0,#0x1c00
000194  e58ec010          STR      r12,[lr,#0x10]
;;;717        rVLC_CON2=0x0;	
000198  e3a0c000          MOV      r12,#0
00019c  e1cee00c          BIC      lr,lr,r12
0001a0  e58ec014          STR      r12,[lr,#0x14]
;;;718        rVLC_CON3=vlcDataAddr;
0001a4  e1cec00c          BIC      r12,lr,r12
0001a8  e58c1018          STR      r1,[r12,#0x18]
;;;719        //rVLC_CON3 = 0x12000000;
;;;720        rVLC_CON4=0x0;
0001ac  e3a0c000          MOV      r12,#0
0001b0  e1cee00c          BIC      lr,lr,r12
0001b4  e58ec01c          STR      r12,[lr,#0x1c]
;;;721    
;;;722        rVLD_CON1=0x0;   //??
0001b8  e3a0c000          MOV      r12,#0
0001bc  e1cee00c          BIC      lr,lr,r12
0001c0  e58ec020          STR      r12,[lr,#0x20]
;;;723    
;;;724        rVLX_COMMON1= VLX_ON|VLX_ENCODE_MODE|VLX_INT_ENABLE|VLX_USE_MARKER_BIT|
0001c4  e59fc294          LDR      r12,|L1.1120|
0001c8  e18cc482          ORR      r12,r12,r2,LSL #9
0001cc  e58ec000          STR      r12,[lr,#0]
;;;725        	  	  (opUnit<<9)|
;;;726        	  	  (0<<6);  //intra_dc_vlc_thr=0 => use intra DC VLC for entire VOP
;;;727    }
0001d0  e49df004          LDR      pc,[sp],#4
                          ENDP

                  TestVlx PROC
;;;73     void TestVlx(void)
;;;74     {
0001d4  e92d43f0          STMFD    sp!,{r4-r9,lr}
0001d8  e24dd07c          SUB      sp,sp,#0x7c
;;;75         IMAGE420 currImage;  //no-padded image YCbCr420
;;;76         IMAGE420 prevImage;  //padded image YCbCr420 
;;;77         IMAGE420 refImage;   //padded image YCbCr420
;;;78         IMAGE420 refImage2;  //padded image YCbCr420
;;;79         IMAGE420 dctqCoeff;  //no-padded, the size is twice than currImage.
;;;80         IMAGE420 dctqCoeff2; //no-padded, the size is twice than currImage.
;;;81         PQINFO pQInfo;
;;;82     
;;;83         U32 *pVlcData;
;;;84         U32 *pt;
;;;85         
;;;86         U32 qinfoMode;
;;;87         U32 dctq2VlcMode;
;;;88     
;;;89         U32 imageWidth=FIMV_IMAGE_WIDTH;  
0001dc  e3a05f58          MOV      r5,#0x160
;;;90         U32 imageHeight=FIMV_IMAGE_HEIGHT; 
0001e0  e3a07f48          MOV      r7,#0x120
;;;91         
;;;92         U32 freeBufStartAddr=_NONCACHE_STARTADDRESS;	
0001e4  e3a00544          MOV      r0,#0x11000000
0001e8  e58d0004          STR      r0,[sp,#4]
;;;93     
;;;94         int i;
;;;95         int j,k; //for debug
;;;96     
;;;97     
;;;98         dctqDone = 0; vlxDone =0;
0001ec  e3a00000          MOV      r0,#0
0001f0  e59f126c          LDR      r1,|L1.1124|
0001f4  e5810000          STR      r0,[r1,#0]  ; dctqDone
0001f8  e3a00000          MOV      r0,#0
0001fc  e51f10f4          LDR      r1,|L1.272|
000200  e5810000          STR      r0,[r1,#0]  ; vlxDone
;;;99        printf("clkdiv  %08x\n", rCLKDIVN);
000204  e3a00440          MOV      r0,#0x40000000
000208  e5900028          LDR      r0,[r0,#0x28]
00020c  e1a01000          MOV      r1,r0
000210  e28f0f94          ADR      r0,|L1.1128|
000214  ebfffffe          BL       printf
;;;100       rCLKDIVN |= ( 1<<4);
000218  e3a00440          MOV      r0,#0x40000000
00021c  e5900028          LDR      r0,[r0,#0x28]
000220  e3800010          ORR      r0,r0,#0x10
000224  e3a01440          MOV      r1,#0x40000000
000228  e5810028          STR      r0,[r1,#0x28]
;;;101       printf("clkdiv  %08x\n", rCLKDIVN);
00022c  e3a00440          MOV      r0,#0x40000000
000230  e5900028          LDR      r0,[r0,#0x28]
000234  e1a01000          MOV      r1,r0
000238  e28f0f8a          ADR      r0,|L1.1128|
00023c  ebfffffe          BL       printf
;;;102    	
;;;103        printf("[DCTQ->VLC->VLD test]\n");
000240  e28f0f8c          ADR      r0,|L1.1144|
000244  ebfffffe          BL       printf
;;;104    
;;;105        printf("Select VLC mode: 1) DCTQ->VLC    2) DCTQ->Mem->VLC :");
000248  e28f0f90          ADR      r0,|L1.1168|
00024c  ebfffffe          BL       printf
;;;106        dctq2VlcMode=(getchar()=='1')?1:0;
000250  ebfffffe          BL       getchar
000254  e3500031          CMP      r0,#0x31
000258  1a000001          BNE      |L1.612|
00025c  e3a00001          MOV      r0,#1
000260  ea000000          B        |L1.616|
                  |L1.612|
000264  e3a00000          MOV      r0,#0
                  |L1.616|
000268  e1a09000          MOV      r9,r0
;;;107        printf("%s\n", dctq2VlcMode ? "1\n":"2\n" );
00026c  e3590000          CMP      r9,#0
000270  0a000001          BEQ      |L1.636|
000274  e28f0f93          ADR      r0,|L1.1224|
000278  ea000000          B        |L1.640|
                  |L1.636|
00027c  e28f0f92          ADR      r0,|L1.1228|
                  |L1.640|
000280  e1a01000          MOV      r1,r0
000284  e28f0f91          ADR      r0,|L1.1232|
000288  ebfffffe          BL       printf
;;;108        	
;;;109        printf("Test Image size:%s\n",(FIMVTEST_IMAGE_SIZE==QCIF) ? "QCIF":
00028c  e28f1f90          ADR      r1,|L1.1236|
000290  e28f0f90          ADR      r0,|L1.1240|
000294  ebfffffe          BL       printf
;;;110        				    (FIMVTEST_IMAGE_SIZE==CIF)  ? "CIF" :
;;;111    				    (FIMVTEST_IMAGE_SIZE==VGA)  ? "VGA" :	
;;;112    				    (FIMVTEST_IMAGE_SIZE==PQVGA)? "PQVGA":"Unknown");		
;;;113    
;;;114        printf("Select QINFO mode: 1)intra  2)intra_inter_0_2_4 3)intra_inter_01_45\n"
000298  e59f024c          LDR      r0,|L1.1260|
00029c  ebfffffe          BL       printf
;;;115        	       "                   4)inter\n"); 
;;;116        switch(getchar())

⌨️ 快捷键说明

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