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

📄 2442lib.txt

📁 SMDK2442所有设备的驱动测试程序。运行monitor程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;481    	int hdivn=2, pdivn=0;
000a0c  e3a04002          MOV      r4,#2
000a10  e3a05000          MOV      r5,#0
;;;482    	
;;;483         // hdivn_val (FCLK:HCLK)ratio hdivn
;;;484         // 11           1:1       (0)
;;;485         // 12           1:2       (1)
;;;486         // 13           1:3       (3) 
;;;487         // 14           1:4       (2)
;;;488         // pdivn_val (HCLK:PCLK)ratio pdivn
;;;489         // 11           1:1       (0)
;;;490         // 12           1:2       (1)
;;;491    	switch(hdivn_val) {
000a14  e246000b          SUB      r0,r6,#0xb
000a18  e3500007          CMP      r0,#7
000a1c  908ff100          ADDLS    pc,pc,r0,LSL #2
000a20  ea000011          B        |L1.2668|
000a24  ea000006          B        |L1.2628|
000a28  ea000007          B        |L1.2636|
000a2c  ea000008          B        |L1.2644|
000a30  ea00000a          B        |L1.2656|
000a34  ea00000c          B        |L1.2668|
000a38  ea000006          B        |L1.2648|
000a3c  ea00000a          B        |L1.2668|
000a40  ea000007          B        |L1.2660|
;;;492    		case 11: hdivn=0; break;
                  |L1.2628|
000a44  e3a04000          MOV      r4,#0
000a48  ea000007          B        |L1.2668|
;;;493    		case 12: hdivn=1; break;
                  |L1.2636|
000a4c  e3a04001          MOV      r4,#1
000a50  ea000005          B        |L1.2668|
;;;494    		case 13:
;;;495    		case 16: hdivn=3; break;
                  |L1.2644|
000a54  e1a00000          NOP      
                  |L1.2648|
000a58  e3a04003          MOV      r4,#3
000a5c  ea000002          B        |L1.2668|
;;;496    		case 14: 
;;;497    		case 18: hdivn=2; break;
                  |L1.2656|
000a60  e1a00000          NOP      
                  |L1.2660|
000a64  e3a04002          MOV      r4,#2
000a68  e1a00000          NOP      
;;;498    	}
;;;499    	
;;;500    	switch(pdivn_val) {
                  |L1.2668|
000a6c  e357000b          CMP      r7,#0xb
000a70  0a000002          BEQ      |L1.2688|
000a74  e357000c          CMP      r7,#0xc
000a78  1a000004          BNE      |L1.2704|
000a7c  ea000001          B        |L1.2696|
;;;501    		case 11: pdivn=0; break;
                  |L1.2688|
000a80  e3a05000          MOV      r5,#0
000a84  ea000001          B        |L1.2704|
;;;502    		case 12: pdivn=1; break;
                  |L1.2696|
000a88  e3a05001          MOV      r5,#1
000a8c  e1a00000          NOP      
;;;503    	}
;;;504    	
;;;505    	//Uart_Printf("Clock division change [hdiv:%x, pdiv:%x]\n", hdivn, pdivn);
;;;506    	rCLKDIVN = (hdivn<<1) | pdivn;
                  |L1.2704|
000a90  e1850084          ORR      r0,r5,r4,LSL #1
000a94  e3a0144c          MOV      r1,#0x4c000000
000a98  e5810014          STR      r0,[r1,#0x14]
;;;507    	//Uart_Printf("rCLKDIVN:%x]\n", rCLKDIVN);
;;;508    
;;;509    	switch(hdivn_val) {
000a9c  e3560010          CMP      r6,#0x10
000aa0  0a000002          BEQ      |L1.2736|
000aa4  e3560012          CMP      r6,#0x12
000aa8  1a00000e          BNE      |L1.2792|
000aac  ea000006          B        |L1.2764|
;;;510    		case 16:		// when 1, HCLK=FCLK/6.
;;;511    			rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<8); 
                  |L1.2736|
000ab0  e3a0044c          MOV      r0,#0x4c000000
000ab4  e5900018          LDR      r0,[r0,#0x18]
000ab8  e3c00fc0          BIC      r0,r0,#0x300
000abc  e3800f40          ORR      r0,r0,#0x100
000ac0  e3a0144c          MOV      r1,#0x4c000000
000ac4  e5810018          STR      r0,[r1,#0x18]
;;;512    		break; 
000ac8  ea000006          B        |L1.2792|
;;;513    		case 18: 	// when 1, HCLK=FCLK/8.
;;;514    			rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9); 
                  |L1.2764|
000acc  e3a0044c          MOV      r0,#0x4c000000
000ad0  e5900018          LDR      r0,[r0,#0x18]
000ad4  e3c00fc0          BIC      r0,r0,#0x300
000ad8  e3800f80          ORR      r0,r0,#0x200
000adc  e3a0144c          MOV      r1,#0x4c000000
000ae0  e5810018          STR      r0,[r1,#0x18]
;;;515    		break;
000ae4  e1a00000          NOP      
;;;516    	}
;;;517    	//Uart_Printf("rCAMDIVN:%x]\n", rCAMDIVN);
;;;518    	
;;;519        if(hdivn!=0)
                  |L1.2792|
000ae8  e3540000          CMP      r4,#0
000aec  0a000001          BEQ      |L1.2808|
;;;520            MMU_SetAsyncBusMode();
000af0  ebfffffe          BL       MMU_SetAsyncBusMode
000af4  ea000000          B        |L1.2812|
;;;521        else 
;;;522            MMU_SetFastBusMode();
                  |L1.2808|
000af8  ebfffffe          BL       MMU_SetFastBusMode
;;;523    }
                  |L1.2812|
000afc  e8bd80f8          LDMFD    sp!,{r3-r7,pc}
                          ENDP

                  ChangeUPllValue PROC
;;;528    void ChangeUPllValue(int mdiv,int pdiv,int sdiv)
;;;529    {
000b00  e1a03600          MOV      r3,r0,LSL #12
;;;530        rUPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
000b04  e1833201          ORR      r3,r3,r1,LSL #4
000b08  e1833002          ORR      r3,r3,r2
000b0c  e3a0c44c          MOV      r12,#0x4c000000
000b10  e58c3008          STR      r3,[r12,#8]
;;;531    }
000b14  e1a0f00e          MOV      pc,lr
                          ENDP

                  malloc PROC
;;;538    //void *mallocPt=Image$$RW$$Limit;
;;;539    {
000b18  e1a01000          MOV      r1,r0
;;;540        void *returnPt = mallocPt;
000b1c  e59f0224          LDR      r0,|L1.3400|
000b20  e5902000          LDR      r2,[r0,#0]  ; mallocPt
;;;541    
;;;542        mallocPt = (int *)mallocPt+nbyte/4+((nbyte%4)>0); //To align 4byte
000b24  e1a00121          MOV      r0,r1,LSR #2
000b28  e59f3218          LDR      r3,|L1.3400|
000b2c  e5933000          LDR      r3,[r3,#0]  ; mallocPt
000b30  e0833100          ADD      r3,r3,r0,LSL #2
000b34  e3110003          TST      r1,#3
000b38  0a000001          BEQ      |L1.2884|
000b3c  e3a00001          MOV      r0,#1
000b40  ea000000          B        |L1.2888|
                  |L1.2884|
000b44  e3a00000          MOV      r0,#0
                  |L1.2888|
000b48  e0830100          ADD      r0,r3,r0,LSL #2
000b4c  e59f31f4          LDR      r3,|L1.3400|
000b50  e5830000          STR      r0,[r3,#0]  ; mallocPt
;;;543    
;;;544        if( (int)mallocPt > HEAPEND )
000b54  e59f01ec          LDR      r0,|L1.3400|
000b58  e5900000          LDR      r0,[r0,#0]  ; mallocPt
000b5c  e290c4bd          ADDS     r12,r0,#0xbd000000
000b60  a25cc8ff          SUBGES   r12,r12,#0xff0000
000b64  da000003          BLE      |L1.2936|
;;;545        {
;;;546            mallocPt = returnPt;
000b68  e59f01d8          LDR      r0,|L1.3400|
000b6c  e5802000          STR      r2,[r0,#0]  ; mallocPt
;;;547            return NULL;
000b70  e3a00000          MOV      r0,#0
;;;548        }
;;;549        return returnPt;
;;;550    }
                  |L1.2932|
000b74  e1a0f00e          MOV      pc,lr
                  |L1.2936|
000b78  e1a00002          MOV      r0,r2                 ;549
000b7c  eafffffc          B        |L1.2932|             ;549
                          ENDP

                  free PROC
;;;553    void free(void *pt)
;;;554    {
000b80  e59f11c0          LDR      r1,|L1.3400|
;;;555        mallocPt = pt;
000b84  e5810000          STR      r0,[r1,#0]  ; mallocPt
;;;556    }
000b88  e1a0f00e          MOV      pc,lr
                          ENDP

                  ChangeSromParameter PROC
;;;560     void ChangeSromParameter(char bank, char minacc)  // only for Tacc
;;;561    {
000b8c  e92d4070          STMFD    sp!,{r4-r6,lr}
000b90  e24dd020          SUB      sp,sp,#0x20
000b94  e1a05000          MOV      r5,r0
000b98  e1a06001          MOV      r6,r1
;;;562        int acc;
;;;563    
;;;564        //1000000/(hclk/1000000.)=Unit Period(ns)*1000
;;;565        acc = (int)(minacc*(HCLK/1000000.)/1000+0.5);	
000b9c  e1a00006          MOV      r0,r6
000ba0  ebfffffe          BL       _dflt
000ba4  e88d0003          STMIA    sp,{r0,r1}
000ba8  e28f0f67          ADR      r0,|L1.3404|
000bac  e890000c          LDMIA    r0,{r2,r3}
000bb0  e59d0000          LDR      r0,[sp,#0]
000bb4  ebfffffe          BL       _dmul
000bb8  e58d0008          STR      r0,[sp,#8]
000bbc  e58d100c          STR      r1,[sp,#0xc]
000bc0  e28f0f63          ADR      r0,|L1.3412|
000bc4  e890000c          LDMIA    r0,{r2,r3}
000bc8  e59d0008          LDR      r0,[sp,#8]
000bcc  ebfffffe          BL       _ddiv
000bd0  e58d0010          STR      r0,[sp,#0x10]
000bd4  e58d1014          STR      r1,[sp,#0x14]
000bd8  e59f017c          LDR      r0,|L1.3420|
000bdc  e890000c          LDMIA    r0,{r2,r3}
000be0  e59d0010          LDR      r0,[sp,#0x10]
000be4  ebfffffe          BL       _dadd
000be8  e58d0018          STR      r0,[sp,#0x18]
000bec  e58d101c          STR      r1,[sp,#0x1c]
000bf0  ebfffffe          BL       _dfix
000bf4  e1a04000          MOV      r4,r0
;;;566    
;;;567        if(acc<=1)
000bf8  e3540001          CMP      r4,#1
000bfc  ca000001          BGT      |L1.3080|
;;;568    		acc=0;    	
000c00  e3a04000          MOV      r4,#0
000c04  ea000020          B        |L1.3212|
;;;569        else if(acc==2)
                  |L1.3080|
000c08  e3540002          CMP      r4,#2
000c0c  1a000001          BNE      |L1.3096|
;;;570    	 	acc=1;
000c10  e3a04001          MOV      r4,#1
000c14  ea00001c          B        |L1.3212|
;;;571        else if(acc==3)
                  |L1.3096|
000c18  e3540003          CMP      r4,#3
000c1c  1a000001          BNE      |L1.3112|
;;;572    	 	acc=2;
000c20  e3a04002          MOV      r4,#2
000c24  ea000018          B        |L1.3212|
;;;573        else if(acc==4)
                  |L1.3112|
000c28  e3540004          CMP      r4,#4
000c2c  1a000001          BNE      |L1.3128|
;;;574    	 	acc=3;
000c30  e3a04003          MOV      r4,#3
000c34  ea000014          B        |L1.3212|
;;;575        else if((5<acc)&&(acc<=6))
                  |L1.3128|
000c38  e3540005          CMP      r4,#5
000c3c  da000003          BLE      |L1.3152|
000c40  e3540006          CMP      r4,#6
000c44  ca000001          BGT      |L1.3152|
;;;576       		acc=4;
000c48  e3a04004          MOV      r4,#4
000c4c  ea00000e          B        |L1.3212|
;;;577        else if((7<acc)&&(acc<=8))
                  |L1.3152|
000c50  e3540007          CMP      r4,#7
000c54  da000003          BLE      |L1.3176|
000c58  e3540008          CMP      r4,#8
000c5c  ca000001          BGT      |L1.3176|
;;;578    	 	acc=5;
000c60  e3a04005          MOV      r4,#5
000c64  ea000008          B        |L1.3212|
;;;579        else if((9<acc)&&(acc<=10))
                  |L1.3176|
000c68  e3540009          CMP      r4,#9
000c6c  da000003          BLE      |L1.3200|
000c70  e354000a          CMP      r4,#0xa
000c74  ca000001          BGT      |L1.3200|
;;;580       		acc=6;	
000c78  e3a04006          MOV      r4,#6
000c7c  ea000002          B        |L1.3212|
;;;581        else if(11<acc)
                  |L1.3200|
000c80  e354000b          CMP      r4,#0xb
000c84  da000000          BLE      |L1.3212|
;;;582    	 	acc=7;
000c88  e3a04007          MOV      r4,#7
;;;583    	
;;;584        switch(bank)
                  |L1.3212|
000c8c  e3550005          CMP      r5,#5
000c90  908ff105          ADDLS    pc,pc,r5,LSL #2
000c94  ea000029          B        |L1.3392|
000c98  ea000004          B        |L1.3248|
000c9c  ea000009          B        |L1.3272|
000ca0  ea00000e         

⌨️ 快捷键说明

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