📄 vlx_test.txt
字号:
; 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 + -