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

📄 userlib.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
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 + -