📄 me_test.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\me_test.err -O0 -asm -g+ -cpu 5TEJ -fs -Wd -Ec -I.\include "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
MeEngine PROC
;;;50 void MeEngine(PIMAGE420 pCurrImage,PIMAGE420 pPrevImage,PME_VECTOR pMeVector,U32 mode)
;;;51 {
|L1.0|
000000 e92d47f0 STMFD sp!,{r4-r10,lr}
000004 e1a04000 MOV r4,r0
000008 e1a05001 MOV r5,r1
00000c e1a08002 MOV r8,r2
000010 e1a0a003 MOV r10,r3
;;;52 U32 opUnit;
;;;53 U32 m;
;;;54 U32 n;
;;;55
;;;56 if( (pCurrImage->type != IMAGE420_NO_PADDED) ||
000014 e5940018 LDR r0,[r4,#0x18]
000018 e3500001 CMP r0,#1
00001c 1a000002 BNE |L1.44|
;;;57 (pPrevImage->type != IMAGE420_PADDED))
000020 e5950018 LDR r0,[r5,#0x18]
000024 e3500000 CMP r0,#0
000028 0a000001 BEQ |L1.52|
;;;58 {
;;;59 printf("ERROR:MeEngine:incorrect image format!\n");
|L1.44|
00002c e28f006c ADR r0,|L1.160|
000030 ebfffffe BL printf
;;;60 }
;;;61
;;;62
;;;63 m=pCurrImage->imageWidth/16;
|L1.52|
000034 e5940010 LDR r0,[r4,#0x10]
000038 e1a06220 MOV r6,r0,LSR #4
;;;64 n=pCurrImage->imageHeight/16;
00003c e5940014 LDR r0,[r4,#0x14]
000040 e1a07220 MOV r7,r0,LSR #4
;;;65
;;;66 meDone=0;
000044 e3a00000 MOV r0,#0
000048 e59f1078 LDR r1,|L1.200|
00004c e5810000 STR r0,[r1,#0] ; meDone
;;;67
;;;68 rME_CFSA=pCurrImage->yStartAddr;
000050 e5940004 LDR r0,[r4,#4]
000054 e59f1070 LDR r1,|L1.204|
000058 e5810000 STR r0,[r1,#0]
;;;69 rME_PFSA=pPrevImage->yStartAddr;
00005c e5950004 LDR r0,[r5,#4]
000060 e5810004 STR r0,[r1,#4]
;;;70 rME_MVSA=(U32)pMeVector;
000064 e1a00001 MOV r0,r1
000068 e5808008 STR r8,[r0,#8]
;;;71
;;;72 opUnit=(m)*(n);
00006c e0090697 MUL r9,r7,r6
;;;73 //printf("ME engine: opUnit=%d, m=%d, n=%d\n",opUnit,m,n);
;;;74
;;;75
;;;76 #if (FIMV20== TRUE)
;;;77 //rME_CNFG=ME_FAST_MODE_DISABLE | (0x10<<16) | opUnit; //0x10 is recommended for ME_FAST_MODE
;;;78 rME_CNFG=ME_FAST_MODE_ENABLE | (0x7f<<16) | opUnit; //0x10 is recommended for ME_FAST_MODE
000070 e3890740 ORR r0,r9,#0x1000000
000074 e380087f ORR r0,r0,#0x7f0000
000078 e5810014 STR r0,[r1,#0x14]
;;;79
;;;80 rME_IMGFMT=((n-1)<<8) | ((m-1)<<0);
00007c e2460001 SUB r0,r6,#1
000080 e2471001 SUB r1,r7,#1
000084 e1800401 ORR r0,r0,r1,LSL #8
000088 e59f103c LDR r1,|L1.204|
00008c e5810018 STR r0,[r1,#0x18]
;;;81
;;;82 rME_CMND=ME_ROUND_BIT_1 | ME_4MV_MODE | ME_MPEG4_MODE |ME_OP_START |ME_FRAME_START |
000090 e59f0038 LDR r0,|L1.208|
000094 e1c11000 BIC r1,r1,r0
000098 e581000c STR r0,[r1,#0xc]
;;;83 ME_INT_REQ_CLEAR;
;;;84 #else
;;;85 rME_CMND = 0x0000c60b; //396MB
;;;86 #endif
;;;87 }
00009c e8bd87f0 LDMFD sp!,{r4-r10,pc}
|L1.160|
0000a0 4f525245 DCB "ERRO"
0000a4 654d3a52 DCB "R:Me"
0000a8 69676e45 DCB "Engi"
0000ac 693a656e DCB "ne:i"
0000b0 726f636e DCB "ncor"
0000b4 74636572 DCB "rect"
0000b8 616d6920 DCB " ima"
0000bc 66206567 DCB "ge f"
0000c0 616d726f DCB "orma"
0000c4 000a2174 DCB "t!\n\0"
|L1.200|
0000c8 00000000 DCD ||.bss$2||
|L1.204|
0000cc 48800000 DCD 0x48800000
|L1.208|
0000d0 0003000b DCD 0x0003000b
ENDP
MeEngineGob PROC
;;;94 void MeEngineGob(PIMAGE420 pCurrImage,PIMAGE420 pPrevImage,PME_VECTOR pMeVector,U32 opUnit,U32 mode)
;;;95 {
0000d4 e92d47f0 STMFD sp!,{r4-r10,lr}
0000d8 e1a04000 MOV r4,r0
0000dc e1a06001 MOV r6,r1
0000e0 e1a07002 MOV r7,r2
0000e4 e1a08003 MOV r8,r3
0000e8 e59d5020 LDR r5,[sp,#0x20]
;;;96 U32 m;
;;;97 U32 n;
;;;98
;;;99 if( (pCurrImage->type != IMAGE420_NO_PADDED) ||
0000ec e5940018 LDR r0,[r4,#0x18]
0000f0 e3500001 CMP r0,#1
0000f4 1a000002 BNE |L1.260|
;;;100 (pPrevImage->type != IMAGE420_PADDED))
0000f8 e5960018 LDR r0,[r6,#0x18]
0000fc e3500000 CMP r0,#0
000100 0a000001 BEQ |L1.268|
;;;101 {
;;;102 printf("ERROR:MeEngine:incorrect image format!\n");
|L1.260|
000104 e24f006c ADR r0,|L1.160|
000108 ebfffffe BL printf
;;;103 }
;;;104
;;;105 m=pCurrImage->imageWidth/16;
|L1.268|
00010c e5940010 LDR r0,[r4,#0x10]
000110 e1a09220 MOV r9,r0,LSR #4
;;;106 n=pCurrImage->imageHeight/16;
000114 e5940014 LDR r0,[r4,#0x14]
000118 e1a0a220 MOV r10,r0,LSR #4
;;;107 meDone=0;
00011c e3a00000 MOV r0,#0
000120 e51f1060 LDR r1,|L1.200|
000124 e5810000 STR r0,[r1,#0] ; meDone
;;;108
;;;109 if(mode & ME_FRAME_START_MODE)
000128 e3150001 TST r5,#1
00012c 0a00000d BEQ |L1.360|
;;;110 {
;;;111
;;;112 rME_CFSA=pCurrImage->yStartAddr;
000130 e5940004 LDR r0,[r4,#4]
000134 e51f1070 LDR r1,|L1.204|
000138 e5810000 STR r0,[r1,#0]
;;;113 rME_PFSA=pPrevImage->yStartAddr;
00013c e5960004 LDR r0,[r6,#4]
000140 e5810004 STR r0,[r1,#4]
;;;114 rME_MVSA=(U32)pMeVector;
000144 e1a00001 MOV r0,r1
000148 e5807008 STR r7,[r0,#8]
;;;115
;;;116 rME_CNFG=ME_FAST_MODE_DISABLE | (0x10<<16) | opUnit; //0x10 is recommended for ME_FAST_MODE
00014c e3880940 ORR r0,r8,#0x100000
000150 e5810014 STR r0,[r1,#0x14]
;;;117
;;;118 rME_IMGFMT=((n-1)<<8) | ((m-1)<<0);
000154 e2490001 SUB r0,r9,#1
000158 e24a1001 SUB r1,r10,#1
00015c e1800401 ORR r0,r0,r1,LSL #8
000160 e51f109c LDR r1,|L1.204|
000164 e5810018 STR r0,[r1,#0x18]
;;;119 }
;;;120 #if FIMV20
;;;121 rME_CMND=ME_ROUND_BIT_1 |
|L1.360|
000168 e3150001 TST r5,#1
00016c 0a000001 BEQ |L1.376|
000170 e51f00a8 LDR r0,|L1.208|
000174 ea000000 B |L1.380|
|L1.376|
000178 e59f0068 LDR r0,|L1.488|
|L1.380|
00017c e51f10b8 LDR r1,|L1.204|
000180 e581000c STR r0,[r1,#0xc]
;;;122 ME_4MV_MODE |
;;;123 ME_MPEG4_MODE |
;;;124 ME_OP_START |
;;;125 ((mode & ME_FRAME_START_MODE)?ME_FRAME_START:0) |
;;;126 ME_INT_REQ_CLEAR;
;;;127 #else
;;;128 rME_CMND=ME_ROUND_BIT_1 |
;;;129 ME_4MV_MODE |
;;;130 ME_MPEG4_MODE |
;;;131 ME_OP_START |
;;;132 ((mode & ME_FRAME_START_MODE)?ME_FRAME_START:0) |
;;;133 ME_INT_REQ_CLEAR |
;;;134 (opUnit<<7)|(0<<5);
;;;135 #endif
;;;136 }
000184 e8bd87f0 LDMFD sp!,{r4-r10,pc}
ENDP
MeIsr PROC
;;;141 void __irq MeIsr(void)
;;;142 {
000188 e92d501f STMFD sp!,{r0-r4,r12,lr}
00018c e24dd004 SUB sp,sp,#4
;;;143 U32 e_optime=0;
000190 e3a04000 MOV r4,#0
;;;144 ClearPending(BIT_ME);
000194 e3a00f40 MOV r0,#0x100
000198 e59f104c LDR r1,|L1.492|
00019c e5810000 STR r0,[r1,#0]
0001a0 e1c10000 BIC r0,r1,r0
0001a4 e5900010 LDR r0,[r0,#0x10]
0001a8 e5810010 STR r0,[r1,#0x10]
0001ac e1a00001 MOV r0,r1
0001b0 e5900010 LDR r0,[r0,#0x10]
;;;145 e_optime = mtimer_stop();
0001b4 ebfffffe BL mtimer_stop
0001b8 e1a04000 MOV r4,r0
;;;146 printf("me= %d\n", e_optime*16);
0001bc e1a01204 MOV r1,r4,LSL #4
0001c0 e28f0028 ADR r0,|L1.496|
0001c4 ebfffffe BL printf
;;;147 meDone=1;
0001c8 e3a00001 MOV r0,#1
0001cc e51f110c LDR r1,|L1.200|
0001d0 e5810000 STR r0,[r1,#0] ; meDone
;;;148
;;;149 //rME_CMND=rME_CMND & ~(ME_FRAME_START|ME_OP_START) | (ME_INT_REQ_CLEAR);
;;;150 printf("{me}");
0001d4 e28f001c ADR r0,|L1.504|
0001d8 ebfffffe BL printf
;;;151 }
0001dc e28dd004 ADD sp,sp,#4
0001e0 e8bd501f LDMFD sp!,{r0-r4,r12,lr}
0001e4 e25ef004 SUBS pc,lr,#4
|L1.488|
0001e8 00030009 DCD 0x00030009
|L1.492|
0001ec 40200000 DCD 0x40200000
|L1.496|
0001f0 203d656d DCB "me= "
0001f4 000a6425 DCB "%d\n\0"
|L1.504|
0001f8 7d656d7b DCB "{me}"
0001fc 00000000 DCB "\0\0\0\0"
ENDP
MeInitIsr PROC
;;;156 void MeInitIsr(void)
;;;157 {
000200 e59f001c LDR r0,|L1.548|
;;;158 pISR_ME=(U32)MeIsr;
000204 e59f101c LDR r1,|L1.552|
000208 e5810f40 STR r0,[r1,#0xf40]
;;;159
;;;160 rINTMSK&=~BIT_ME;
00020c e51f0028 LDR r0,|L1.492|
000210 e5900008 LDR r0,[r0,#8]
000214 e3c00f40 BIC r0,r0,#0x100
000218 e51f1034 LDR r1,|L1.492|
00021c e5810008 STR r0,[r1,#8]
;;;161 }
000220 e12fff1e BX lr
|L1.548|
000224 00000000 DCD MeIsr
|L1.552|
000228 13fff000 DCD 0x13fff000
ENDP
AREA ||.bss||, NOINIT, ALIGN=2
meDone
||.bss$2||
% 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -