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

📄 uart0.txt

📁 支持三星原产的S3C24A0开发板
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000c3c  3a5d7473          DCB      "st]:"
000c40  0000000a          DCB      "\n\0\0\0"
                  |L1.3140|
000c44  00000164          DCD      ||.constdata$1|| + 356
                  |L1.3144|
000c48  206f540a          DCB      "\nTo "
000c4c  74697571          DCB      "quit"
000c50  7270202c          DCB      ", pr"
000c54  20737365          DCB      "ess "
000c58  45544e45          DCB      "ENTE"
000c5c  656b2052          DCB      "R ke"
000c60  21212e79          DCB      "y.!!"
000c64  00000a21          DCB      "!\n\0\0"
                  |L1.3176|
000c68  00000000          DCD      Uart0_RxIntOrErr
                  |L1.3180|
000c6c  000a7325          DCB      "%s\n\0"
                          ENDP

                  Uart0_TxDmaDone PROC
;;;390    void __irq Uart0_TxDmaDone(void)
;;;391    {
000c70  e92d0003          STMFD    sp!,{r0,r1}
;;;392        rDMASKTRIG0=0x0;	// Stop Dma0
000c74  e3a00000          MOV      r0,#0
000c78  e59f10e0          LDR      r1,|L1.3424|
000c7c  e5810020          STR      r0,[r1,#0x20]
;;;393        isDone=0;
000c80  e3a00000          MOV      r0,#0
000c84  e59f10d8          LDR      r1,|L1.3428|
000c88  e5810000          STR      r0,[r1,#0]  ; isDone
;;;394    	// edited by junon
;;;395    	rINTSUBMSK|=(BIT_SUB_DMA0);
000c8c  e51f04c4          LDR      r0,|L1.2000|
000c90  e590001c          LDR      r0,[r0,#0x1c]
000c94  e3800780          ORR      r0,r0,#0x2000000
000c98  e51f14d0          LDR      r1,|L1.2000|
000c9c  e581001c          STR      r0,[r1,#0x1c]
;;;396    	rSUBSRCPND=(BIT_SUB_DMA0); // clear sub source pending bit	 
000ca0  e3a00780          MOV      r0,#0x2000000
000ca4  e1c11000          BIC      r1,r1,r0
000ca8  e5810018          STR      r0,[r1,#0x18]
;;;397        rINTMSK |= BIT_DMA; 
000cac  e1c10000          BIC      r0,r1,r0
000cb0  e5900008          LDR      r0,[r0,#8]
000cb4  e3800940          ORR      r0,r0,#0x100000
000cb8  e5810008          STR      r0,[r1,#8]
;;;398        ClearPending(BIT_DMA);
000cbc  e3a00940          MOV      r0,#0x100000
000cc0  e1c11000          BIC      r1,r1,r0
000cc4  e5810000          STR      r0,[r1,#0]
000cc8  e1c10000          BIC      r0,r1,r0
000ccc  e5900010          LDR      r0,[r0,#0x10]
000cd0  e5810010          STR      r0,[r1,#0x10]
000cd4  e1a00001          MOV      r0,r1
000cd8  e5900010          LDR      r0,[r0,#0x10]
;;;399    	// end junon
;;;400    }
000cdc  e8bd0003          LDMFD    sp!,{r0,r1}
000ce0  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Uart0_RxDmaOrErr PROC
;;;402    void __irq Uart0_RxDmaOrErr(void)
;;;403    {
000ce4  e92d500f          STMFD    sp!,{r0-r3,r12,lr}
;;;404        rINTSUBMSK|=(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);
000ce8  e51f0520          LDR      r0,|L1.2000|
000cec  e590001c          LDR      r0,[r0,#0x1c]
000cf0  e3800007          ORR      r0,r0,#7
000cf4  e51f152c          LDR      r1,|L1.2000|
000cf8  e581001c          STR      r0,[r1,#0x1c]
;;;405        if(rSUBSRCPND&BIT_SUB_ERR0) Uart_Printf("Error : UART0 Rx Interrupt is occured!!!\n");
000cfc  e1a00001          MOV      r0,r1
000d00  e5900018          LDR      r0,[r0,#0x18]
000d04  e3100004          TST      r0,#4
000d08  0a000002          BEQ      |L1.3352|
000d0c  e28f0054          ADR      r0,|L1.3432|
000d10  ebfffffe          BL       _printf
000d14  ea000000          B        |L1.3356|
;;;406        else __sub_Uart0_RxErrInt();
                  |L1.3352|
000d18  ebfffffe          BL       __sub_Uart0_RxErrInt
;;;407        
;;;408        ClearPending(BIT_UART0);
                  |L1.3356|
000d1c  e3a00b80          MOV      r0,#0x20000
000d20  e51f1558          LDR      r1,|L1.2000|
000d24  e5810000          STR      r0,[r1,#0]
000d28  e1c10000          BIC      r0,r1,r0
000d2c  e5900010          LDR      r0,[r0,#0x10]
000d30  e5810010          STR      r0,[r1,#0x10]
000d34  e1a00001          MOV      r0,r1
000d38  e5900010          LDR      r0,[r0,#0x10]
;;;409        rSUBSRCPND=(BIT_SUB_ERR0);	// Clear Sub int pending    
000d3c  e3a00004          MOV      r0,#4
000d40  e1c11000          BIC      r1,r1,r0
000d44  e5810018          STR      r0,[r1,#0x18]
;;;410        rINTSUBMSK&=~(BIT_SUB_ERR0);    
000d48  e1c10000          BIC      r0,r1,r0
000d4c  e590001c          LDR      r0,[r0,#0x1c]
000d50  e3c00004          BIC      r0,r0,#4
000d54  e581001c          STR      r0,[r1,#0x1c]
;;;411    }
000d58  e8bd500f          LDMFD    sp!,{r0-r3,r12,lr}
000d5c  e25ef004          SUBS     pc,lr,#4
                  |L1.3424|
000d60  40400000          DCD      0x40400000
                  |L1.3428|
000d64  00000014          DCD      ||.bss$2|| + 20
                  |L1.3432|
000d68  6f727245          DCB      "Erro"
000d6c  203a2072          DCB      "r : "
000d70  54524155          DCB      "UART"
000d74  78522030          DCB      "0 Rx"
000d78  746e4920          DCB      " Int"
000d7c  75727265          DCB      "erru"
000d80  69207470          DCB      "pt i"
000d84  636f2073          DCB      "s oc"
000d88  65727563          DCB      "cure"
000d8c  21212164          DCB      "d!!!"
000d90  0000000a          DCB      "\n\0\0\0"
                          ENDP

                  Uart0_RxDmaDone PROC
;;;413    void __irq Uart0_RxDmaDone(void)
;;;414    {
000d94  e92d0003          STMFD    sp!,{r0,r1}
;;;415        rDMASKTRIG0=0x0;	//DMA0 Channel Off
000d98  e3a00000          MOV      r0,#0
000d9c  e51f1044          LDR      r1,|L1.3424|
000da0  e5810020          STR      r0,[r1,#0x20]
;;;416        isDone=0;
000da4  e3a00000          MOV      r0,#0
000da8  e51f104c          LDR      r1,|L1.3428|
000dac  e5810000          STR      r0,[r1,#0]  ; isDone
;;;417        *(uart0RxStr+5)='\0';
000db0  e3a00000          MOV      r0,#0
000db4  e51f14e8          LDR      r1,|L1.2260|
000db8  e5911000          LDR      r1,[r1,#0]  ; uart0RxStr
000dbc  e5c10005          STRB     r0,[r1,#5]
;;;418    	// edited by junon
;;;419    	rINTSUBMSK|=(BIT_SUB_DMA0);
000dc0  e51f05f8          LDR      r0,|L1.2000|
000dc4  e590001c          LDR      r0,[r0,#0x1c]
000dc8  e3800780          ORR      r0,r0,#0x2000000
000dcc  e51f1604          LDR      r1,|L1.2000|
000dd0  e581001c          STR      r0,[r1,#0x1c]
;;;420    	rSUBSRCPND=(BIT_SUB_DMA0);				
000dd4  e3a00780          MOV      r0,#0x2000000
000dd8  e1c11000          BIC      r1,r1,r0
000ddc  e5810018          STR      r0,[r1,#0x18]
;;;421        rINTMSK|=(BIT_DMA);
000de0  e1c10000          BIC      r0,r1,r0
000de4  e5900008          LDR      r0,[r0,#8]
000de8  e3800940          ORR      r0,r0,#0x100000
000dec  e5810008          STR      r0,[r1,#8]
;;;422        ClearPending(BIT_DMA);
000df0  e3a00940          MOV      r0,#0x100000
000df4  e1c11000          BIC      r1,r1,r0
000df8  e5810000          STR      r0,[r1,#0]
000dfc  e1c10000          BIC      r0,r1,r0
000e00  e5900010          LDR      r0,[r0,#0x10]
000e04  e5810010          STR      r0,[r1,#0x10]
000e08  e1a00001          MOV      r0,r1
000e0c  e5900010          LDR      r0,[r0,#0x10]
;;;423    	// end junon
;;;424    }
000e10  e8bd0003          LDMFD    sp!,{r0,r1}
000e14  e25ef004          SUBS     pc,lr,#4
                          ENDP

                  Test_Uart0_Dma PROC
;;;426    void Test_Uart0_Dma(void)
;;;427    {
000e18  e92d4008          STMFD    sp!,{r3,lr}
;;;428        Uart_Port_Set(); 
000e1c  ebfffffe          BL       Uart_Port_Set
;;;429        Uart_Select(0);    
000e20  e3a00000          MOV      r0,#0
000e24  ebfffffe          BL       Uart_Select
;;;430        /*********** UART0 Tx test with DMA0 ***********/ 
;;;431        isDone=1;
000e28  e3a00001          MOV      r0,#1
000e2c  e51f10d0          LDR      r1,|L1.3428|
000e30  e5810000          STR      r0,[r1,#0]  ; isDone
;;;432        uart0TxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890->UART0 Tx Test by DMA0 is good!!!!\r\n";
000e34  e59f01fc          LDR      r0,|L1.4152|
000e38  e51f166c          LDR      r1,|L1.2004|
000e3c  e5810000          STR      r0,[r1,#0]  ; uart0TxStr
;;;433        Uart_Printf("\n[Uart channel 0 DMA0 Tx Test]\n");
000e40  e28f0f7d          ADR      r0,|L1.4156|
000e44  ebfffffe          BL       _printf
;;;434        Uart_TxEmpty(0);
000e48  e3a00000          MOV      r0,#0
000e4c  ebfffffe          BL       Uart_TxEmpty
;;;435        
;;;436        pISR_DMA=(unsigned)Uart0_TxDmaDone;
000e50  e59f0204          LDR      r0,|L1.4188|
000e54  e51f1244          LDR      r1,|L1.3096|
000e58  e5810f70          STR      r0,[r1,#0xf70]
;;;437    
;;;438        rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
000e5c  e3a00003          MOV      r0,#3
000e60  e51f19e4          LDR      r1,|L1.1156|
000e64  e5810000          STR      r0,[r1,#0]
;;;439        rUCON0 &= 0x400;	// For the PCLK <-> UCLK fuction    
000e68  e1c10000          BIC      r0,r1,r0
000e6c  e5900004          LDR      r0,[r0,#4]
000e70  e2000e40          AND      r0,r0,#0x400
000e74  e5810004          STR      r0,[r1,#4]
;;;440        rUCON0 |= (TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(2<<2)|(0);
000e78  e1a00001          MOV      r0,r1
000e7c  e5900004          LDR      r0,[r0,#4]
000e80  e3800008          ORR      r0,r0,#8
000e84  e5810004          STR      r0,[r1,#4]
;;;441        //Clock,Tx:Def,Rx:Def,Rx timeout:x,Rx error int:x,Loop-back:x,Send break:x,Tx:dma0,Rx:x
;;;442    
;;;443        /***DMA0 init***/
;;;444        rDISRC0=(U32)uart0TxStr;	// Start address
000e88  e51f06bc          LDR      r0,|L1.2004|
000e8c  e5900000          LDR      r0,[r0,#0]  ; uart0TxStr
000e90  e28114fc          ADD      r1,r1,#0xfc000000
000e94  e5810000          STR      r0,[r1,#0]
;;;445        rDISRCC0=(0<<1)|(0);		// AHB,Increment
000e98  e3a00000          MOV      r0,#0
000e9c  e1c11000          BIC      r1,r1,r0
000ea0  e5810004          STR      r0,[r1,#4]
;;;446        rDIDST0=(U32)UTXH0;			// Memory buffer Address
000ea4  e59f01b4          LDR      r0,|L1.4192|
000ea8  e0011000          AND      r1,r1,r0
000eac  e5810008          STR      r0,[r1,#8]
;;;447        rDIDSTC0=(1<<1)|(1);		// APB,Fixed
000eb0  e3a00003          MOV      r0,#3
000eb4  e1c11000          BIC      r1,r1,r0
000eb8  e581000c          STR      r0,[r1,#0xc]
;;;448        rDCON0=(1<<31)|(0<<30)|(1<<29)|(0<<28)|(0<<27)|(1<<24)|(1<<23)|(1<<22)|(0<<20)|strlen((char*)uart0TxStr);
000ebc  e51f06f0          LDR      r0,|L1.2004|
000ec0  e5900000          LDR      r0,[r0,#0]  ; uart0TxStr
000ec4  ebfffffe          BL       strlen
000ec8  e3800480          ORR      r0,r0,#0x80000000
000ecc  e3800587          ORR      r0,r0,#0x21c00000
000ed0  e51f1178          LDR      r1,|L1.3424|
000ed4  e5810010          STR      r0,[r1,#0x10]
;;;449        //handshake, sync PCLK, TC int, single tx, single service, Uart0, H/W request,auto-reload off, Byte size Tx, Tx count value
;;;450        rINTMSK=~(BIT_DMA);
000ed8  e3e00940          MVN      r0,#0x100000
000edc  e0811a80          ADD      r1,r1,r0,LSL #21
000ee0  e5810008          STR      r0,[r1,#8]
;;;451        rINTSUBMSK=~(BIT_SUB_DMA0); // added by junon
000ee4  e3e00780          MVN      r0,#0x2000000
000ee8  e0011000          AND      r1,r1,r0
000eec  e581001c          STR      r0,[r1,#0x1c]
;;;452        rDMASKTRIG0=(0<<2)|(1<<1)|(0);    //no-stop, DMA0 channel on, no-SW trigger 
000ef0  e3a00002          MOV      r0,#2
000ef4  e0811a00          ADD      r1,r1,r0,LSL #20
000ef8  e5810020          STR      r0,[r1,#0x20]
;;;453    
;;;454        while(isDone);
000efc  e1a00000          NOP      
                  |L1.3840|
000f00  e51f01a4          LDR      r0,|L1.3428|
000f04  e5900000          LDR      r0,[r0,#0]  ; isDone
000f08  e3500000          CMP      r0,#0
000f0c  1afffffb          BNE      |L1.3840|
;;;455    
;;;456        /*********** UART0 Rx test with DMA0 ***********/ 
;;;457        isDone=1;
000f10  e3a00001          MOV      r0,#1
000f14  e51f11b8          LDR      r1,|L1.3428|
000f18  e5810000          STR      r0,[r1,#0]  ; isDone
;;;458        uart0RxStr=(char *)UARTBUFFER;
000f1c  e3a00544          MOV      r0,#0x11000000
000f20  e51f1654          LDR      r1,|L1.2260|
000f24  e5810000          STR      r0,[r1,#0]  ; uart0RxStr
;;;459        Uart_Printf("\n[Uart channel 0 DMA0 Rx Test]\n");
000f28  e28f0f4d          ADR      r0,|L1.4196|
000f2c  ebfffffe          BL       _printf
;;;460        Uart_Printf("Type any five keys!!!\n");    
000f30  e28f0f53          ADR      r0,|L1.4228|
000f34  ebfffffe          BL       _printf
;;;461        Uart_Printf("Then you will see what you typed.\n");
000f38  e28f0f57          ADR      r0,|L1.4252|
000f3c  ebfffffe          BL       _printf
;;;462    
;;;463        pISR_DMA=(unsigned)Uart0_RxDmaDone;
000f40  e59f0178          LDR      r0,|L1.4288|
000f44  e51f1334          LDR      r1,|L1.3096|
000f48  e5810f70          STR      r0,[r1,#0xf70]
;;;464        pISR_UART0=(unsigned)Uart0_RxDmaOrErr;
000f4c  e59f0170          LDR      r0,|L1.4292|
000f50  e5810f64          STR      r0,[r1,#0xf64]
;;;465        
;;;466        rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);	// Normal,No parity,One stop bit, 8bit
000f54  e3a00003          MOV      r0,#3
000f58  e51f1adc          LDR      r1,|L1.1156|
000f5c  e5810000          STR      r0,[r1,#0]
;;;467        rUCON0 &= 0x400;	// For the PCLK <-> UCLK fuction    
000f60  e1c10000          BIC      r0,r1,r0
000f64  e5900004          LDR      r0,[r0,#4]
000f68  e2000e40          AND      r0,r0,#0x400
000f6c  e5810004          STR      r0,[r1,#4]
;;;468    

⌨️ 快捷键说明

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