* uart issues on coldfire platform @ 2009-07-01 2:20 Lanttor 2009-07-01 6:30 ` Lanttor 2009-07-01 13:44 ` Matthew Lear 0 siblings, 2 replies; 5+ messages in thread From: Lanttor @ 2009-07-01 2:20 UTC (permalink / raw) To: linux-m68k Hi, I find one issue of UART on my coldfire platforms (mcf54451evb board). I use the linux-2.6.29, and use drivers/serial/mcf.c and drivers/serial/serial_core.c as my uart driver source. Following is my test steps -- run command: cat /proc/interrupts two times contiguously. [root@freescale /]# cat /proc/interrupts M5445X *90: 5099 UART* M5445X 96: 3130 timer0 M5445X 99: 0 timer3 M5445X 100: 1569 fec(TXF) M5445X 101: 0 fec(TXB) M5445X 102: 0 fec(TXFIFO) M5445X 103: 0 fec(TXCR) M5445X 104: 3098 fec(RXF) M5445X 105: 0 fec(RXB) M5445X 106: 41 fec(MII) M5445X 107: 0 fec(LC) M5445X 108: 0 fec(HBERR) M5445X 109: 0 fec(GRA) M5445X 110: 0 fec(EBERR) M5445X 111: 0 fec(BABT) M5445X 112: 0 fec(BABR) [root@freescale /]# cat /proc/interrupts M5445X *90: 5714 UART* M5445X 96: 3700 timer0 M5445X 99: 1 timer3 M5445X 100: 1574 fec(TXF) M5445X 101: 0 fec(TXB) M5445X 102: 0 fec(TXFIFO) M5445X 103: 0 fec(TXCR) M5445X 104: 3108 fec(RXF) M5445X 105: 0 fec(RXB) M5445X 106: 47 fec(MII) M5445X 107: 0 fec(LC) M5445X 108: 0 fec(HBERR) M5445X 109: 0 fec(GRA) M5445X 110: 0 fec(EBERR) M5445X 111: 0 fec(BABT) M5445X 112: 0 fec(BABR) I find that the interrupts for above operation is 5714 - 5099 = 605 Is it normal? (my opinion it's too much) I test it on the mcf5329 board, it has the same-like result (even more 605). Actually I don't modify any code of mcf.c and serial_core.c, but I don't know why so much interrupts are occurred through one operation? Regards, Lanttor ^ permalink raw reply [flat|nested] 5+ messages in thread
* uart issues on coldfire platform 2009-07-01 2:20 uart issues on coldfire platform Lanttor @ 2009-07-01 6:30 ` Lanttor 2009-07-02 0:40 ` [uClinux-dev] " Greg Ungerer 2009-07-01 13:44 ` Matthew Lear 1 sibling, 1 reply; 5+ messages in thread From: Lanttor @ 2009-07-01 6:30 UTC (permalink / raw) To: uclinux-dev; +Cc: linux-m68k > Hi, > > I find one issue of UART on my coldfire platforms (mcf54451evb board). > I use the linux-2.6.29, and use drivers/serial/mcf.c and > drivers/serial/serial_core.c as my uart driver source. > > Following is my test steps -- run command: cat /proc/interrupts two > times contiguously. > > [root@freescale /]# cat /proc/interrupts > M5445X *90: 5099 UART* > M5445X 96: 3130 timer0 > M5445X 99: 0 timer3 > M5445X 100: 1569 fec(TXF) > M5445X 101: 0 fec(TXB) > M5445X 102: 0 fec(TXFIFO) > M5445X 103: 0 fec(TXCR) > M5445X 104: 3098 fec(RXF) > M5445X 105: 0 fec(RXB) > M5445X 106: 41 fec(MII) > M5445X 107: 0 fec(LC) > M5445X 108: 0 fec(HBERR) > M5445X 109: 0 fec(GRA) > M5445X 110: 0 fec(EBERR) > M5445X 111: 0 fec(BABT) > M5445X 112: 0 fec(BABR) > [root@freescale /]# cat /proc/interrupts > M5445X *90: 5714 UART* > M5445X 96: 3700 timer0 > M5445X 99: 1 timer3 > M5445X 100: 1574 fec(TXF) > M5445X 101: 0 fec(TXB) > M5445X 102: 0 fec(TXFIFO) > M5445X 103: 0 fec(TXCR) > M5445X 104: 3108 fec(RXF) > M5445X 105: 0 fec(RXB) > M5445X 106: 47 fec(MII) > M5445X 107: 0 fec(LC) > M5445X 108: 0 fec(HBERR) > M5445X 109: 0 fec(GRA) > M5445X 110: 0 fec(EBERR) > M5445X 111: 0 fec(BABT) > M5445X 112: 0 fec(BABR) > > I find that the interrupts for above operation is 5714 - 5099 = 605 > Is it normal? (my opinion it's too much) > > I test it on the mcf5329 board, it has the same-like result (even more 605). > Actually I don't modify any code of mcf.c and serial_core.c, but I don't > know why so much interrupts are occurred through one operation? > > Regards, > Lanttor > > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [uClinux-dev] uart issues on coldfire platform 2009-07-01 6:30 ` Lanttor @ 2009-07-02 0:40 ` Greg Ungerer 2009-07-02 2:21 ` Lanttor 0 siblings, 1 reply; 5+ messages in thread From: Greg Ungerer @ 2009-07-02 0:40 UTC (permalink / raw) To: uClinux development list; +Cc: linux-m68k Hi Lanttor, Lanttor wrote: >> Hi, >> >> I find one issue of UART on my coldfire platforms (mcf54451evb board). >> I use the linux-2.6.29, and use drivers/serial/mcf.c and >> drivers/serial/serial_core.c as my uart driver source. >> >> Following is my test steps -- run command: cat /proc/interrupts two >> times contiguously. >> >> [root@freescale /]# cat /proc/interrupts >> M5445X *90: 5099 UART* >> M5445X 96: 3130 timer0 >> M5445X 99: 0 timer3 >> M5445X 100: 1569 fec(TXF) >> M5445X 101: 0 fec(TXB) >> M5445X 102: 0 fec(TXFIFO) >> M5445X 103: 0 fec(TXCR) >> M5445X 104: 3098 fec(RXF) >> M5445X 105: 0 fec(RXB) >> M5445X 106: 41 fec(MII) >> M5445X 107: 0 fec(LC) >> M5445X 108: 0 fec(HBERR) >> M5445X 109: 0 fec(GRA) >> M5445X 110: 0 fec(EBERR) >> M5445X 111: 0 fec(BABT) >> M5445X 112: 0 fec(BABR) >> [root@freescale /]# cat /proc/interrupts >> M5445X *90: 5714 UART* >> M5445X 96: 3700 timer0 >> M5445X 99: 1 timer3 >> M5445X 100: 1574 fec(TXF) >> M5445X 101: 0 fec(TXB) >> M5445X 102: 0 fec(TXFIFO) >> M5445X 103: 0 fec(TXCR) >> M5445X 104: 3108 fec(RXF) >> M5445X 105: 0 fec(RXB) >> M5445X 106: 47 fec(MII) >> M5445X 107: 0 fec(LC) >> M5445X 108: 0 fec(HBERR) >> M5445X 109: 0 fec(GRA) >> M5445X 110: 0 fec(EBERR) >> M5445X 111: 0 fec(BABT) >> M5445X 112: 0 fec(BABR) >> >> I find that the interrupts for above operation is 5714 - 5099 = 605 ^^^^^^^^^^^^^ 615 ? >> Is it normal? (my opinion it's too much) Most of the ColdFire UART blocks have no transmit FIFO, so you are going to get 1 interrupt per character. The above block has at least 500 characters in it (including white space). Then include the extra command prompt and you typing (receive interrupts) and I would figure that is going to come to around 600 interrupts. So, yes, that seems about right. Check the actual character count using: cat /proc/tty/driver/mcf >> I test it on the mcf5329 board, it has the same-like result (even more 605). >> Actually I don't modify any code of mcf.c and serial_core.c, but I don't >> know why so much interrupts are occurred through one operation? That is the price you pay with no data FIFO's in these UART cores. (Some of the ColdFire parts support DMA with the UART - the mcf driver doesn't currently use this though). Regards Greg ------------------------------------------------------------------------ Greg Ungerer -- Principal Engineer EMAIL: gerg@snapgear.com SnapGear Group, McAfee PHONE: +61 7 3435 2888 825 Stanley St, FAX: +61 7 3891 3630 Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [uClinux-dev] uart issues on coldfire platform 2009-07-02 0:40 ` [uClinux-dev] " Greg Ungerer @ 2009-07-02 2:21 ` Lanttor 0 siblings, 0 replies; 5+ messages in thread From: Lanttor @ 2009-07-02 2:21 UTC (permalink / raw) To: Greg Ungerer; +Cc: uClinux development list, linux-m68k, Jin Zhengxiong-R64188 Thanks Greg/Matt/Cris' reply. I know it's not the issue now :) > Most of the ColdFire UART blocks have no transmit FIFO, so you > are going to get 1 interrupt per character. The above block has > at least 500 characters in it (including white space). Then include > the extra command prompt and you typing (receive interrupts) and I > would figure that is going to come to around 600 interrupts. > So, yes, that seems about right. > > Check the actual character count using: > > cat /proc/tty/driver/mcf Indeed it is. The UART transmit Buffer in my board is 1 character size (no FIFO), only receiver has FIFO. I test command "cat /proc/tty/driver/mcf", the result is as follows: [root@freescale /]# cat /proc/tty/driver/mcf serinfo:1.0 driver revision: 0: uart:ColdFire UART mmio:0xFC060000 irq:90 tx:54821 rx:91 RTS|DTR|CD [root@freescale /]# cat /proc/interrupts M5445X 90: 55042 UART M5445X 96: 9962 timer M5445X 99: 2 timer M5445X 100: 3761 fec(TXF) M5445X 101: 0 fec(TXB) M5445X 102: 0 fec(TXFIFO) M5445X 103: 0 fec(TXCR) M5445X 104: 8169 fec(RXF) M5445X 105: 0 fec(RXB) M5445X 106: 110 fec(MII) M5445X 107: 0 fec(LC) M5445X 108: 0 fec(HBERR) M5445X 109: 0 fec(GRA) M5445X 110: 0 fec(EBERR) M5445X 111: 0 fec(BABT) M5445X 112: 0 fec(BABR) [root@freescale /]# cat /proc/tty/driver/mcf serinfo:1.0 driver revision: 0: uart:ColdFire UART mmio:0xFC060000 irq:90 tx:55603 rx:115 RTS|DTR|CD Thanks! Regards, Lanttor ------------------------------------------------------------------------ *From:* Greg Ungerer <gerg@snapgear.com> *Sent:* 07/02/2009 8:40:49 AM +0800 *To:* uClinux development list <uclinux-dev@uclinux.org> *CC:* linux-m68k@vger.kernel.org *Subject:* [uClinux-dev] uart issues on coldfire platform > Hi Lanttor, > > Lanttor wrote: >>> Hi, >>> >>> I find one issue of UART on my coldfire platforms (mcf54451evb board). >>> I use the linux-2.6.29, and use drivers/serial/mcf.c and >>> drivers/serial/serial_core.c as my uart driver source. >>> >>> Following is my test steps -- run command: cat /proc/interrupts two >>> times contiguously. >>> >>> [root@freescale /]# cat /proc/interrupts >>> M5445X *90: 5099 UART* >>> M5445X 96: 3130 timer0 >>> M5445X 99: 0 timer3 >>> M5445X 100: 1569 fec(TXF) >>> M5445X 101: 0 fec(TXB) >>> M5445X 102: 0 fec(TXFIFO) >>> M5445X 103: 0 fec(TXCR) >>> M5445X 104: 3098 fec(RXF) >>> M5445X 105: 0 fec(RXB) >>> M5445X 106: 41 fec(MII) >>> M5445X 107: 0 fec(LC) >>> M5445X 108: 0 fec(HBERR) >>> M5445X 109: 0 fec(GRA) >>> M5445X 110: 0 fec(EBERR) >>> M5445X 111: 0 fec(BABT) >>> M5445X 112: 0 fec(BABR) >>> [root@freescale /]# cat /proc/interrupts >>> M5445X *90: 5714 UART* >>> M5445X 96: 3700 timer0 >>> M5445X 99: 1 timer3 >>> M5445X 100: 1574 fec(TXF) >>> M5445X 101: 0 fec(TXB) >>> M5445X 102: 0 fec(TXFIFO) >>> M5445X 103: 0 fec(TXCR) >>> M5445X 104: 3108 fec(RXF) >>> M5445X 105: 0 fec(RXB) >>> M5445X 106: 47 fec(MII) >>> M5445X 107: 0 fec(LC) >>> M5445X 108: 0 fec(HBERR) >>> M5445X 109: 0 fec(GRA) >>> M5445X 110: 0 fec(EBERR) >>> M5445X 111: 0 fec(BABT) >>> M5445X 112: 0 fec(BABR) >>> >>> I find that the interrupts for above operation is 5714 - 5099 = 605 > ^^^^^^^^^^^^^ 615 ? > >>> Is it normal? (my opinion it's too much) > > Most of the ColdFire UART blocks have no transmit FIFO, so you > are going to get 1 interrupt per character. The above block has > at least 500 characters in it (including white space). Then include > the extra command prompt and you typing (receive interrupts) and I > would figure that is going to come to around 600 interrupts. > So, yes, that seems about right. > > Check the actual character count using: > > cat /proc/tty/driver/mcf > > >>> I test it on the mcf5329 board, it has the same-like result (even >>> more 605). >>> Actually I don't modify any code of mcf.c and serial_core.c, but I >>> don't >>> know why so much interrupts are occurred through one operation? > > That is the price you pay with no data FIFO's in these UART cores. > (Some of the ColdFire parts support DMA with the UART - the mcf > driver doesn't currently use this though). > > Regards > Greg > > > > ------------------------------------------------------------------------ > Greg Ungerer -- Principal Engineer EMAIL: gerg@snapgear.com > SnapGear Group, McAfee PHONE: +61 7 3435 2888 > 825 Stanley St, FAX: +61 7 3891 3630 > Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com > -- > To unsubscribe from this list: send the line "unsubscribe linux-m68k" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: uart issues on coldfire platform 2009-07-01 2:20 uart issues on coldfire platform Lanttor 2009-07-01 6:30 ` Lanttor @ 2009-07-01 13:44 ` Matthew Lear 1 sibling, 0 replies; 5+ messages in thread From: Matthew Lear @ 2009-07-01 13:44 UTC (permalink / raw) To: Lanttor; +Cc: linux-m68k Lanttor wrote: > Hi, > > I find one issue of UART on my coldfire platforms (mcf54451evb board). > I use the linux-2.6.29, and use drivers/serial/mcf.c and > drivers/serial/serial_core.c as my uart driver source. > > Following is my test steps -- run command: cat /proc/interrupts two > times contiguously. > > [root@freescale /]# cat /proc/interrupts > M5445X *90: 5099 UART* > M5445X 96: 3130 timer0 > M5445X 99: 0 timer3 > M5445X 100: 1569 fec(TXF) > M5445X 101: 0 fec(TXB) > M5445X 102: 0 fec(TXFIFO) > M5445X 103: 0 fec(TXCR) > M5445X 104: 3098 fec(RXF) > M5445X 105: 0 fec(RXB) > M5445X 106: 41 fec(MII) > M5445X 107: 0 fec(LC) > M5445X 108: 0 fec(HBERR) > M5445X 109: 0 fec(GRA) > M5445X 110: 0 fec(EBERR) > M5445X 111: 0 fec(BABT) > M5445X 112: 0 fec(BABR) > [root@freescale /]# cat /proc/interrupts > M5445X *90: 5714 UART* > M5445X 96: 3700 timer0 > M5445X 99: 1 timer3 > M5445X 100: 1574 fec(TXF) > M5445X 101: 0 fec(TXB) > M5445X 102: 0 fec(TXFIFO) > M5445X 103: 0 fec(TXCR) > M5445X 104: 3108 fec(RXF) > M5445X 105: 0 fec(RXB) > M5445X 106: 47 fec(MII) > M5445X 107: 0 fec(LC) > M5445X 108: 0 fec(HBERR) > M5445X 109: 0 fec(GRA) > M5445X 110: 0 fec(EBERR) > M5445X 111: 0 fec(BABT) > M5445X 112: 0 fec(BABR) > > I find that the interrupts for above operation is 5714 - 5099 = 605 > Is it normal? (my opinion it's too much) > > I test it on the mcf5329 board, it has the same-like result (even more 605). > Actually I don't modify any code of mcf.c and serial_core.c, but I don't > know why so much interrupts are occurred through one operation? By the looks of it, the driver is interrupting per character (ie per byte). If you copy half your output above into a text editor, and count the characters, including one byte per line end, you get 605. I can't speak for the driver implementation, but it sounds fair enough to me. Cheers, -- Matt ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-07-02 2:21 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-07-01 2:20 uart issues on coldfire platform Lanttor 2009-07-01 6:30 ` Lanttor 2009-07-02 0:40 ` [uClinux-dev] " Greg Ungerer 2009-07-02 2:21 ` Lanttor 2009-07-01 13:44 ` Matthew Lear
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox