📄 userlib.txt
字号:
000c30 e92d4008 STMFD sp!,{r3,lr}
;;;355 if(cmd2%4) cmd2=(cmd2/4)*4;
000c34 e51f06a0 LDR r0,|L1.1436|
000c38 e5900000 LDR r0,[r0,#0] ; cmd2
000c3c e3100003 TST r0,#3
000c40 0a000005 BEQ |L1.3164|
000c44 e51f06b0 LDR r0,|L1.1436|
000c48 e5900000 LDR r0,[r0,#0] ; cmd2
000c4c e1a00120 MOV r0,r0,LSR #2
000c50 e1a00100 MOV r0,r0,LSL #2
000c54 e51f16c0 LDR r1,|L1.1436|
000c58 e5810000 STR r0,[r1,#0] ; cmd2
;;;356 Uart_Printf(" [%08xh:%08xh]\n", cmd2, *(U32 *)cmd2);
|L1.3164|
000c5c e51f06c8 LDR r0,|L1.1436|
000c60 e5900000 LDR r0,[r0,#0] ; cmd2
000c64 e5902000 LDR r2,[r0,#0]
000c68 e51f06d4 LDR r0,|L1.1436|
000c6c e5901000 LDR r1,[r0,#0] ; cmd2
000c70 e28f0004 ADR r0,|L1.3196|
000c74 ebfffffe BL Uart_Printf
;;;357 }
000c78 e8bd8008 LDMFD sp!,{r3,pc}
|L1.3196|
000c7c 255b2020 DCB " [%"
000c80 68783830 DCB "08xh"
000c84 3830253a DCB ":%08"
000c88 0a5d6878 DCB "xh]\n"
000c8c 00000000 DCB "\0\0\0\0"
ENDP
user_delay PROC
;;;359 void user_delay(unsigned int cnt)
;;;360 {
000c90 e3a02000 MOV r2,#0
;;;361 int i, j;
;;;362
;;;363 for(j=0; j<cnt; j++)
|L1.3220|
000c94 e1520000 CMP r2,r0
000c98 2a000008 BCS |L1.3264|
000c9c ea000001 B |L1.3240|
|L1.3232|
000ca0 e2822001 ADD r2,r2,#1
000ca4 eafffffa B |L1.3220|
;;;364 for(i=0; i<500; i++);
|L1.3240|
000ca8 e3a01000 MOV r1,#0
|L1.3244|
000cac e3510f7d CMP r1,#0x1f4
000cb0 aa000001 BGE |L1.3260|
000cb4 e2811001 ADD r1,r1,#1
000cb8 eafffffb B |L1.3244|
|L1.3260|
000cbc eafffff7 B |L1.3232|
;;;365 }
|L1.3264|
000cc0 e1a0f00e MOV pc,lr
ENDP
Calc_Clock PROC
;;;381 void Calc_Clock(int print_msg)
;;;382 {
000cc4 e92d4ff1 STMFD sp!,{r0,r4-r11,lr}
000cc8 e24dd028 SUB sp,sp,#0x28
;;;383 unsigned int mpll_val, sval, lcd_clk_val, tmpi;
;;;384
;;;385 // Get MPS value from register.
;;;386 mpll_val = rMPLLCON;
000ccc e3a0044c MOV r0,#0x4c000000
000cd0 e5900004 LDR r0,[r0,#4]
000cd4 e1a05000 MOV r5,r0
;;;387 Mdiv = (mpll_val&(0xff<<12))>>12;
000cd8 e1a00605 MOV r0,r5,LSL #12
000cdc e1a00c20 MOV r0,r0,LSR #24
000ce0 e59f14d0 LDR r1,|L1.4536|
000ce4 e5810000 STR r0,[r1,#0] ; Mdiv
;;;388 Pdiv = (mpll_val&(0x3f<<4))>>4;
000ce8 e1a00b05 MOV r0,r5,LSL #22
000cec e1a00d20 MOV r0,r0,LSR #26
000cf0 e59f14c4 LDR r1,|L1.4540|
000cf4 e5810000 STR r0,[r1,#0] ; Pdiv
;;;389 Sdiv = (mpll_val&0x3);
000cf8 e2050003 AND r0,r5,#3
000cfc e59f14bc LDR r1,|L1.4544|
000d00 e5810000 STR r0,[r1,#0] ; Sdiv
;;;390
;;;391 // Get HDIVN, PDIVN value from register.
;;;392 Hdivn = ((rCLKDIVN&0x6)>>1);
000d04 e3a0044c MOV r0,#0x4c000000
000d08 e5900014 LDR r0,[r0,#0x14]
000d0c e1a00e80 MOV r0,r0,LSL #29
000d10 e1a00f20 MOV r0,r0,LSR #30
000d14 e59f14a8 LDR r1,|L1.4548|
000d18 e5810000 STR r0,[r1,#0] ; Hdivn
;;;393 Pdivn = (rCLKDIVN&1);
000d1c e3a0044c MOV r0,#0x4c000000
000d20 e5900014 LDR r0,[r0,#0x14]
000d24 e2000001 AND r0,r0,#1
000d28 e59f1498 LDR r1,|L1.4552|
000d2c e5810000 STR r0,[r1,#0] ; Pdivn
;;;394
;;;395
;;;396 // Get the HCLK and PCLK ratio
;;;397 switch(Hdivn) {
000d30 e59f048c LDR r0,|L1.4548|
000d34 e5900000 LDR r0,[r0,#0] ; Hdivn
000d38 e3500000 CMP r0,#0
000d3c 0a000006 BEQ |L1.3420|
000d40 e3500001 CMP r0,#1
000d44 0a000008 BEQ |L1.3436|
000d48 e3500002 CMP r0,#2
000d4c 0a00000a BEQ |L1.3452|
000d50 e3500003 CMP r0,#3
000d54 1a000010 BNE |L1.3484|
000d58 ea00000b B |L1.3468|
;;;398 case 0: Hclk_Ratio=1; break;
|L1.3420|
000d5c e3a00001 MOV r0,#1
000d60 e59f1464 LDR r1,|L1.4556|
000d64 e5810000 STR r0,[r1,#0] ; Hclk_Ratio
000d68 ea00000b B |L1.3484|
;;;399 case 1: Hclk_Ratio=2; break;
|L1.3436|
000d6c e3a00002 MOV r0,#2
000d70 e59f1454 LDR r1,|L1.4556|
000d74 e5810000 STR r0,[r1,#0] ; Hclk_Ratio
000d78 ea000007 B |L1.3484|
;;;400 case 2: Hclk_Ratio=4; break;
|L1.3452|
000d7c e3a00004 MOV r0,#4
000d80 e59f1444 LDR r1,|L1.4556|
000d84 e5810000 STR r0,[r1,#0] ; Hclk_Ratio
000d88 ea000003 B |L1.3484|
;;;401 case 3: Hclk_Ratio=3; break;
|L1.3468|
000d8c e3a00003 MOV r0,#3
000d90 e59f1434 LDR r1,|L1.4556|
000d94 e5810000 STR r0,[r1,#0] ; Hclk_Ratio
000d98 e1a00000 NOP
;;;402 }
;;;403 switch(Pdivn) {
|L1.3484|
000d9c e59f0424 LDR r0,|L1.4552|
000da0 e5900000 LDR r0,[r0,#0] ; Pdivn
000da4 e3500000 CMP r0,#0
000da8 0a000002 BEQ |L1.3512|
000dac e3500001 CMP r0,#1
000db0 1a000008 BNE |L1.3544|
000db4 ea000003 B |L1.3528|
;;;404 case 0: Pclk_Ratio=1; break;
|L1.3512|
000db8 e3a00001 MOV r0,#1
000dbc e59f140c LDR r1,|L1.4560|
000dc0 e5810000 STR r0,[r1,#0] ; Pclk_Ratio
000dc4 ea000003 B |L1.3544|
;;;405 case 1: Pclk_Ratio=2; break;
|L1.3528|
000dc8 e3a00002 MOV r0,#2
000dcc e59f13fc LDR r1,|L1.4560|
000dd0 e5810000 STR r0,[r1,#0] ; Pclk_Ratio
000dd4 e1a00000 NOP
;;;406 }
;;;407
;;;408 tmpi = rCAMDIVN&(3<<8);
|L1.3544|
000dd8 e3a0044c MOV r0,#0x4c000000
000ddc e5900018 LDR r0,[r0,#0x18]
000de0 e2006fc0 AND r6,r0,#0x300
;;;409 if(tmpi!=0) {
000de4 e3560000 CMP r6,#0
000de8 0a00000c BEQ |L1.3616|
;;;410 if(Hclk_Ratio==3 || Hclk_Ratio==4)
000dec e59f03d8 LDR r0,|L1.4556|
000df0 e5900000 LDR r0,[r0,#0] ; Hclk_Ratio
000df4 e3500003 CMP r0,#3
000df8 0a000003 BEQ |L1.3596|
000dfc e59f03c8 LDR r0,|L1.4556|
000e00 e5900000 LDR r0,[r0,#0] ; Hclk_Ratio
000e04 e3500004 CMP r0,#4
000e08 1a000004 BNE |L1.3616|
;;;411 Hclk_Ratio *= 2;
|L1.3596|
000e0c e59f03b8 LDR r0,|L1.4556|
000e10 e5900000 LDR r0,[r0,#0] ; Hclk_Ratio
000e14 e1a00080 MOV r0,r0,LSL #1
000e18 e59f13ac LDR r1,|L1.4556|
000e1c e5810000 STR r0,[r1,#0] ; Hclk_Ratio
;;;412 }
;;;413
;;;414 // Get sval for calc Fout.
;;;415 //sval=(int)pow(2,Sdiv);
;;;416 switch(Sdiv) {
|L1.3616|
000e20 e59f0398 LDR r0,|L1.4544|
000e24 e5900000 LDR r0,[r0,#0] ; Sdiv
000e28 e3500000 CMP r0,#0
000e2c 0a000006 BEQ |L1.3660|
000e30 e3500001 CMP r0,#1
000e34 0a000006 BEQ |L1.3668|
000e38 e3500002 CMP r0,#2
000e3c 0a000006 BEQ |L1.3676|
000e40 e3500003 CMP r0,#3
000e44 1a000008 BNE |L1.3692|
000e48 ea000005 B |L1.3684|
;;;417 case 0: sval = 1; break;
|L1.3660|
000e4c e3a04001 MOV r4,#1
000e50 ea000007 B |L1.3700|
;;;418 case 1: sval = 2; break;
|L1.3668|
000e54 e3a04002 MOV r4,#2
000e58 ea000005 B |L1.3700|
;;;419 case 2: sval = 4; break;
|L1.3676|
000e5c e3a04004 MOV r4,#4
000e60 ea000003 B |L1.3700|
;;;420 case 3: sval = 8; break;
|L1.3684|
000e64 e3a04008 MOV r4,#8
000e68 ea000001 B |L1.3700|
;;;421 default: sval = 0; break;
|L1.3692|
000e6c e3a04000 MOV r4,#0
000e70 e1a00000 NOP
;;;422 }
;;;423
;;;424 // Calc Fclk, Hclk, Pclk
;;;425 #if CPU2442A==TRUE
;;;426 Fclk=(U32)( (((float)Mdiv+8)*FIN*2.0)/( ((float)Pdiv+2)*(float)sval) ); // pll2188x.
|L1.3700|
000e74 e59f033c LDR r0,|L1.4536|
000e78 e5900000 LDR r0,[r0,#0] ; Mdiv
000e7c ebfffffe BL _ffltu
000e80 e1a09000 MOV r9,r0
000e84 e3a01441 MOV r1,#0x41000000
000e88 ebfffffe BL _fadd
000e8c e1a08000 MOV r8,r0
000e90 e59f133c LDR r1,|L1.4564|
000e94 ebfffffe BL _fmul
000e98 e1a07000 MOV r7,r0
000e9c ebfffffe BL _f2d
000ea0 e98d0003 STMIB sp,{r0,r1}
000ea4 e28f0fcb ADR r0,|L1.4568|
000ea8 e890000c LDMIA r0,{r2,r3}
000eac e59d0004 LDR r0,[sp,#4]
000eb0 ebfffffe BL _dmul
000eb4 e58d0014 STR r0,[sp,#0x14]
000eb8 e58d1018 STR r1,[sp,#0x18]
000ebc e59f02f8 LDR r0,|L1.4540|
000ec0 e5900000 LDR r0,[r0,#0] ; Pdiv
000ec4 ebfffffe BL _ffltu
000ec8 e1a0a000 MOV r10,r0
000ecc e3a01440 MOV r1,#0x40000000
000ed0 ebfffffe BL _fadd
000ed4 e1a08000 MOV r8,r0
000ed8 e1a00004 MOV r0,r4
000edc ebfffffe BL _ffltu
000ee0 e1a09000 MOV r9,r0
000ee4 e1a01008 MOV r1,r8
000ee8 ebfffffe BL _fmul
000eec e1a07000 MOV r7,r0
000ef0 ebfffffe BL _f2d
000ef4 e58d000c STR r0,[sp,#0xc]
000ef8 e58d1010 STR r1,[sp,#0x10]
000efc e59d2014 LDR r2,[sp,#0x14]
000f00 e59d3018 LDR r3,[sp,#0x18]
000f04 ebfffffe BL _drdiv
000f08 e58d001c STR r0,[sp,#0x1c]
000f0c e58d1020 STR r1,[sp,#0x20]
000f10 ebfffffe BL _dfixu
000f14 e59f12c4 LDR r1,|L1.4576|
000f18 e5810000 STR r0,[r1,#0] ; Fclk
;;;427 #else
;;;428 Fclk=(U32)( (((float)Mdiv+8)*FIN)/( ((float)Pdiv+2)*(float)sval) ); // pll2115x
;;;429 #endif
;;;430
;;;431 Hclk =(U32)( ((float)Fclk/(float)Hclk_Ratio) );
000f1c e59f02bc LDR r0,|L1.4576|
000f20 e5900000 LDR r0,[r0,#0] ; Fclk
000f24 ebfffffe BL _ffltu
000f28 e1a08000 MOV r8,r0
000f2c e59f0298 LDR r0,|L1.4556|
000f30 e5900000 LDR r0,[r0,#0] ; Hclk_Ratio
000f34 ebfffffe BL _ffltu
000f38 e1a09000 MOV r9,r0
000f3c e1a01008 MOV r1,r8
000f40 ebfffffe BL _frdiv
000f44 e1a07000 MOV r7,r0
000f48 ebfffffe BL _ffixu
000f4c e59f1290 LDR r1,|L1.4580|
000f50 e5810000 STR r0,[r1,#0] ; Hclk
;;;432 Pclk = (U32)( (((float)Fclk/(float)Hclk_Ratio)/(float)Pclk_Ratio));
000f54 e59f0284 LDR r0,|L1.4576|
000f58 e5900000 LDR r0,[r0,#0] ; Fclk
000f5c ebfffffe BL _ffltu
000f60 e1a0a000 MOV r10,r0
000f64 e59f0260 LDR r0,|L1.4556|
000f68 e5900000 LDR r0,[r0,#0] ; Hclk_Ratio
000f6c ebfffffe BL _ffltu
000f70 e1a0b000 MOV r11,r0
000f74 e1a0100a MOV r1,r10
000f78 ebfffffe BL _frdiv
000f7c e1a08000 MOV r8,r0
000f80 e59f0248 LDR r0,|L1.4560|
000f84 e5900000 LDR r0,[r0,#0] ; Pclk_Ratio
000f88 ebfffffe BL _ffltu
000f8c e1a09000 MOV r9,r0
000f90 e1a01008 MOV r1,r8
000f94 ebfffffe BL _frdiv
000f98 e1a07000 MOV r7,r0
000f9c ebfffffe BL _ffixu
000fa0 e59f1240 LDR r1,|L1.4584|
000fa4 e5810000 STR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -