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

📄 mstick.txt

📁 s3c24a0固件测试代码 ? ? ? ? ?啊 
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000298  e59f0068          LDR      r0,|L1.776|
00029c  e590001c          LDR      r0,[r0,#0x1c]
0002a0  e3800040          ORR      r0,r0,#0x40
0002a4  e59f105c          LDR      r1,|L1.776|
0002a8  e581001c          STR      r0,[r1,#0x1c]
;;;822    		rSUBSRCPND = BIT_SUB_IrDA;
0002ac  e3a00040          MOV      r0,#0x40
0002b0  e1c11000          BIC      r1,r1,r0
0002b4  e5810018          STR      r0,[r1,#0x18]
;;;823    		ClearPending(BIT_IrDA_MSTICK);
0002b8  e3a00540          MOV      r0,#0x10000000
0002bc  e1c11000          BIC      r1,r1,r0
0002c0  e5810000          STR      r0,[r1,#0]
0002c4  e1c10000          BIC      r0,r1,r0
0002c8  e5900010          LDR      r0,[r0,#0x10]
0002cc  e5810010          STR      r0,[r1,#0x10]
0002d0  e1a00001          MOV      r0,r1
0002d4  e5900010          LDR      r0,[r0,#0x10]
;;;824    		IrDA_Sub_Irq();
0002d8  ebfffffe          BL       IrDA_Sub_Irq
;;;825    		rINTSUBMSK &= ~BIT_SUB_IrDA;
0002dc  e59f0024          LDR      r0,|L1.776|
0002e0  e590001c          LDR      r0,[r0,#0x1c]
0002e4  e3c00040          BIC      r0,r0,#0x40
0002e8  e59f1018          LDR      r1,|L1.776|
0002ec  e581001c          STR      r0,[r1,#0x1c]
0002f0  ea000001          B        |L1.764|
;;;826    	}
;;;827    	else {
;;;828    		Uart_Printf("IrDA_Mstick Interupt Error!\n");
                  |L1.756|
0002f4  e28f002c          ADR      r0,|L1.808|
0002f8  ebfffffe          BL       _printf
;;;829    	}
;;;830    }
                  |L1.764|
0002fc  e28dd004          ADD      sp,sp,#4
000300  e8bd501f          LDMFD    sp!,{r0-r4,r12,lr}
000304  e25ef004          SUBS     pc,lr,#4
                  |L1.776|
000308  40200000          DCD      0x40200000
                  |L1.780|
00030c  4e0a0a0a          DCB      "\n\n\nN"
000310  6120746f          DCB      "ot a"
000314  776f6c6c          DCB      "llow"
000318  69206465          DCB      "ed i"
00031c  7265746e          DCB      "nter"
000320  74707572          DCB      "rupt"
000324  00000a0a          DCB      "\n\n\0\0"
                  |L1.808|
000328  41447249          DCB      "IrDA"
00032c  74734d5f          DCB      "_Mst"
000330  206b6369          DCB      "ick "
000334  65746e49          DCB      "Inte"
000338  74707572          DCB      "rupt"
00033c  72724520          DCB      " Err"
000340  0a21726f          DCB      "or!\n"
000344  00000000          DCB      "\0\0\0\0"
                          ENDP

                  Init_IrDA_Mstick_Irq PROC
;;;507    void Init_IrDA_Mstick_Irq(void)
;;;508    {
000348  e59f017c          LDR      r0,|L1.1228|
;;;509    	// Interrupt enable for memory stick insert interrupt.
;;;510    	pISR_IrDA_MSTICK = (int)IrDA_Mstick_Irq;	// Set interrupt service routine.
00034c  e59f117c          LDR      r1,|L1.1232|
000350  e5810f90          STR      r0,[r1,#0xf90]
;;;511    	
;;;512    	rINTMSK &= ~BIT_IrDA_MSTICK;	// Enable IrDA/Memory stick interrupt.
000354  e51f0054          LDR      r0,|L1.776|
000358  e5900008          LDR      r0,[r0,#8]
00035c  e3c00540          BIC      r0,r0,#0x10000000
000360  e51f1060          LDR      r1,|L1.776|
000364  e5810008          STR      r0,[r1,#8]
;;;513    	rINTSUBMSK &= ~BIT_SUB_MSTICK;
000368  e1a00001          MOV      r0,r1
00036c  e590001c          LDR      r0,[r0,#0x1c]
000370  e3c00080          BIC      r0,r0,#0x80
000374  e581001c          STR      r0,[r1,#0x1c]
;;;514    }
000378  e12fff1e          BX       lr
                          ENDP

                  Init_Mstick_Host PROC
;;;438    void Init_Mstick_Host(U32 Mstick_Freq)
;;;439    {
00037c  e92d41fc          STMFD    sp!,{r2-r8,lr}
000380  e1a05000          MOV      r5,r0
;;;440    	int div_val=8;
000384  e3a04008          MOV      r4,#8
;;;441    
;;;442    	// Find Mstick Frequency division value.
;;;443    	for(div_val=0; div_val<3; div_val++) {
000388  e3a04000          MOV      r4,#0
                  |L1.908|
00038c  e3540003          CMP      r4,#3
000390  aa000011          BGE      |L1.988|
000394  ea000001          B        |L1.928|
                  |L1.920|
000398  e2844001          ADD      r4,r4,#1
00039c  eafffffa          B        |L1.908|
;;;444    		if(((float)PCLK/(float)(1<<div_val))<=(float)Mstick_Freq) {
                  |L1.928|
0003a0  e3a01001          MOV      r1,#1
0003a4  e1a00411          MOV      r0,r1,LSL r4
0003a8  ebfffffe          BL       _fflt
0003ac  e1a08000          MOV      r8,r0
0003b0  e59f111c          LDR      r1,|L1.1236|
0003b4  ebfffffe          BL       _frdiv
0003b8  e1a06000          MOV      r6,r0
0003bc  e1a00005          MOV      r0,r5
0003c0  ebfffffe          BL       _ffltu
0003c4  e1a07000          MOV      r7,r0
0003c8  e1a01006          MOV      r1,r6
0003cc  ebfffffe          BL       _fcmpge
0003d0  3a000000          BCC      |L1.984|
;;;445    			break;
0003d4  ea000000          B        |L1.988|
;;;446    		}
;;;447    	}
                  |L1.984|
0003d8  eaffffee          B        |L1.920|
;;;448    	Uart_Printf("[PCLK:%dHz], [div_val:%d]\n", PCLK, div_val);
                  |L1.988|
0003dc  e1a02004          MOV      r2,r4
0003e0  e59f10f0          LDR      r1,|L1.1240|
0003e4  e28f00f0          ADR      r0,|L1.1244|
0003e8  ebfffffe          BL       _printf
;;;449    	Uart_Printf("[MSTICK clk:%10.2fMHz]\n", (PCLK/(float)(1<<div_val))/1000000);
0003ec  e3a01001          MOV      r1,#1
0003f0  e1a00411          MOV      r0,r1,LSL r4
0003f4  ebfffffe          BL       _fflt
0003f8  e1a08000          MOV      r8,r0
0003fc  e59f10d0          LDR      r1,|L1.1236|
000400  ebfffffe          BL       _frdiv
000404  e1a07000          MOV      r7,r0
000408  e59f10e8          LDR      r1,|L1.1272|
00040c  ebfffffe          BL       _fdiv
000410  e1a06000          MOV      r6,r0
000414  ebfffffe          BL       _f2d
000418  e88d0003          STMIA    sp,{r0,r1}
00041c  e1a02001          MOV      r2,r1
000420  e1a01000          MOV      r1,r0
000424  e28f00d0          ADR      r0,|L1.1276|
000428  ebfffffe          BL       printf
;;;450    
;;;451    	rCLKCON = (rCLKCON & ~(3<<16)) | (1<<70) | (1<<16);	// SD clock off, Mstick clock on 
00042c  e3a00440          MOV      r0,#0x40000000
000430  e5900020          LDR      r0,[r0,#0x20]
000434  e3c00bc0          BIC      r0,r0,#0x30000
000438  e3800b40          ORR      r0,r0,#0x10000
00043c  e3a01440          MOV      r1,#0x40000000
000440  e5810020          STR      r0,[r1,#0x20]
;;;452    	Uart_Printf("rCLKCON:%x\b", rCLKCON);
000444  e3a00440          MOV      r0,#0x40000000
000448  e5900020          LDR      r0,[r0,#0x20]
00044c  e1a01000          MOV      r1,r0
000450  e28f00bc          ADR      r0,|L1.1300|
000454  ebfffffe          BL       _printf
;;;453    	rMSPRE = CLK_EN | div_val;	// 1/4
000458  e3840004          ORR      r0,r4,#4
00045c  e59f10bc          LDR      r1,|L1.1312|
000460  e5810000          STR      r0,[r1,#0]
;;;454    	// PRE_EN [2]	: Prescaler control, 0:Disable, 1:Enable.
;;;455    	// PRE_VAL[1:0]	: Prescaler value, 00:1/1, 01:1/2, 10:1/4, 11:1/8
;;;456    
;;;457    	rMSFINTCON = DISABLE;
000464  e3a00000          MOV      r0,#0
000468  e1c11000          BIC      r1,r1,r0
00046c  e5810004          STR      r0,[r1,#4]
;;;458    	// FIFO interrupt control, 0:only for XINT, 1:FIFO interrupt enablel
;;;459    
;;;460    
;;;461    	// Reset Mstick host.
;;;462    	rCTRL_STA = 1<<15;
000470  e3a00c80          MOV      r0,#0x8000
000474  e1811000          ORR      r1,r1,r0
000478  e5810004          STR      r0,[r1,#4]
;;;463    	Delay(100);		// unit: 100us.
00047c  e3a00064          MOV      r0,#0x64
000480  ebfffffe          BL       Delay
;;;464    	rCTRL_STA = 0<<15;
000484  e3a00000          MOV      r0,#0
000488  e51f1388          LDR      r1,|L1.264|
00048c  e5810004          STR      r0,[r1,#4]
;;;465    	Delay(100);
000490  e3a00064          MOV      r0,#0x64
000494  ebfffffe          BL       Delay
;;;466    	
;;;467    	rCTRL_STA = 0<<15 | 0<<14 | 1<<13 | 0<<12 | 0<<11 | 7<<8;
000498  e3a00d9c          MOV      r0,#0x2700
00049c  e51f139c          LDR      r1,|L1.264|
0004a0  e5810004          STR      r0,[r1,#4]
;;;468    	// RST[15]		: Internal logic reset. 0:clear reset, 1:reset
;;;469    	// PWS[14]		: Power save mode, 0:normal mode, 1:Power save mode.
;;;470    	// SIEN[13]		: Serial interface enable/disable. 0:disable, 1:enable.
;;;471    	// Reserved[12]	: SBZ.
;;;472    	// NOCRC[11]	: INT_CRC enable/disable. 0:enable, 1:disable.
;;;473    	// BSYCNT[10:8]	: Busy timeout count. timeout time = BSYCNT*4+2[pclks].
;;;474    	// INT_STA[7]	: interrupt status. 0:No interrupt, 1:interrupt generated
;;;475    	// DRQ_STA[6]	: DMA request. 0:Not request, 1:requested.
;;;476    	// reserved[5:4]
;;;477    	// RBE_STA[3]	: Receive buffer empty(1:empty)
;;;478    	// RBF_STA[2]	: Receive buffer full(1:full)
;;;479    	// TBE_STA[1]	: Transmit buffer empty(1:empty)
;;;480    	// TBF_STA[0]	: Transmit buffer full(1:full)
;;;481    	
;;;482    	rINS_CON = 1<<12;
0004a4  e3a00d40          MOV      r0,#0x1000
0004a8  e1c11000          BIC      r1,r1,r0
0004ac  e5810010          STR      r0,[r1,#0x10]
;;;483    	// INS_EN[12]		: INS port enable. 0:disbale, 1:enable.
;;;484    	// INS_STA[4](R)	: INS port status. 0:High(No insert), 1:Low(Insert).
;;;485    
;;;486    	rINTCTRL_STA = 1<<15 | 0<<14 | 1<<13;
0004b0  e3a00ca0          MOV      r0,#0xa000
0004b4  e1c110c0          BIC      r1,r1,r0,ASR #1
0004b8  e581000c          STR      r0,[r1,#0xc]
;;;487    	// INT_EN[15]		: Memory stick Interrupt enable/ disable control0 = Disable 1 = Enable
;;;488    	// TR_INTEN[14]		: Data transfer interrupt enable/ disable control0 = Disable 1 = Enable
;;;489    	// INS_INTEN[13]	: Insertion interrupt enable/ disable control0 = Disable 1 = Enable
;;;490    	// Reserved[12:8]
;;;491    	// INT_P_END(R)[7]	: Protocol end interrupt status(INT_P_END)0 = In progress 1 = Complete
;;;492    	// INT_SIF(R)[6]	: Serial interface receive interrupt status0 = No interrupt 1 = Receive interrupt
;;;493    	// INT_TR(R)[5]		: Data transfer request interrupt status0 = No request 1 = Request data transfer
;;;494    	// INT_INS(R)[4]	: Insertion interrupt status 0 = No insertion 1 = Insertion
;;;495    	// Reserved[3:2]
;;;496    	// INT_CRC(R)[1]	: INT_CRC error interrupt status0 = No CRC error 1 = Occurred CRC error
;;;497    	// INT_TOE(R)[0]	: Busy timeout error interrupt status0 = No timeout error 1 = Occurred timeout error
;;;498    
;;;499    
;;;500    	rACMD_CON = 0<<15 | 0<<14;
0004bc  e3a00000          MOV      r0,#0
0004c0  e1c11000          BIC      r1,r1,r0
0004c4  e5810014          STR      r0,[r1,#0x14]
;;;501    	// ATPC_EN[15]		: Auto command operation enable/ disable control0 = Disable 1 = Enable
;;;502    	// POL[14]			: Loading polarity control of the serial data input0 = Rising edge 1 = Falling edge
;;;503    
;;;504    }
0004c8  e8bd81fc          LDMFD    sp!,{r2-r8,pc}
                  |L1.1228|
0004cc  00000000          DCD      IrDA_Mstick_Irq
                  |L1.1232|
0004d0  13fff000          DCD      0x13fff000
                  |L1.1236|
0004d4  4c428cb0          DCD      0x4c428cb0
                  |L1.1240|
0004d8  030a32c0          DCD      0x030a32c0
                  |L1.1244|
0004dc  4c43505b          DCB      "[PCL"
0004e0  64253a4b          DCB      "K:%d"
0004e4  2c5d7a48          DCB      "Hz],"
0004e8  69645b20          DCB      " [di"
0004ec  61765f76          DCB      "v_va"
0004f0  64253a6c          DCB      "l:%d"
0004f4  00000a5d          DCB      "]\n\0\0"
                  |L1.1272|
0004f8  49742400          DCD      0x49742400
                  |L1.1276|
0004fc  54534d5b          DCB      "[MST"
000500  204b4349          DCB      "ICK "
000504  3a6b6c63          DCB      "clk:"
000508  2e303125          DCB      "%10."
00050c  484d6632          DCB      "2fMH"
000510  000a5d7a          DCB      "z]\n\0"
                  |L1.1300|
000514  4b4c4372          DCB      "rCLK"
000518  3a4e4f43          DCB      "CON:"
00051c  00087825          DCB      "%x\b\0"
                  |L1.1312|
000520  46100000          DCD      0x46100000
                          ENDP

                  Ch32_MEMORY_STICK PROC
;;;67     void Ch32_MEMORY_STICK(void)
;;;68     {
000524  e92d4010          STMFD    sp!,{r4,lr}
;;;69     	int i;
;;;70     
;;;71     	Uart_Printf("\nStart Mstick_Main...\n");
000528  e28f009c          ADR      r0,|L1.1484|
00052c  ebfffffe          BL       _printf
;;;72     
;;;73     	
;;;74     	Uart_Printf("Mstick Host init.\n");
000530  e28f00ac          ADR      r0,|L1.1508|
000534  ebfffffe          BL       _printf
;;;75     	Init_Mstick_Host(MSTICK_CLK);
000538  e59f00b8          LDR      r0,|L1.1528|
00053c  ebfffffe          BL       Init_Mstick_Host
;;;76     
;;;77     
;;;78     	Uart_Printf("Mstick Irq init.\n");
000540  e28f00b4          ADR      r0,|L1.1532|
000544  ebfffffe          BL       _printf
;;;79     	Init_IrDA_Mstick_Irq();
000548  ebfffffe          BL       Init_IrDA_Mstick_Irq
;;;80     
;;;81     
;;;82     	Uart_Printf("Insert Memory stick\n");
00054c  e28f00bc          ADR      r0,|L1.1552|
000550  ebfffffe          BL       _printf
;;;83     	// Wait until memory stick is inserted.
;;;84     	do {
000554  e1a00000          NOP      
;;;85     		Uart_Printf(".");
                  |L1.1368|
000558  e28f00c8          ADR      r0,|L1.1576|
00055c  ebfffffe          BL       _printf
;;;86     		Delay(5000);
000560  e59f00c4          LDR      r0,|L1.1580|
000564  ebfffffe          BL       Delay
;;;87     	} while(Stick_Ins==0);
000568  e51f03e8          LDR      r0,|L1.392|
00056c  e5900000          LDR      r0,[r0,#0]  ; Stick_Ins
000570  e3500000          CMP      r0,#0
000574  0afffff7          BEQ      |L1.1368|

⌨️ 快捷键说明

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