This is the mail archive of the ecos-bugs@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug 1001456] HAL misses Interrupt Clear-Pending Registers handling:wasted processing power


Please do not reply to this email. Use the web interface provided at:
http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001456

--- Comment #1 from Bernard Fouchà <bernard.fouche@kuantic.com> 2012-01-16 16:28:46 GMT ---
Confirmed with ser_16x5x.c. 

Test config: 2 uarts used, one at 115200, the other at 9600, very light serial
traffic. HW flow control activated on uart at 115200, no flow control on uart
at 9600. (did not checked yet if HW flow control is really operational yet)

I've added a counter of DSR calls, a counter of RX/TX chars and a counter of
DSR calls that do nothing:

1st run:

(gdb) print ser_dsr_dbg_rx
$1 = 1230
(gdb) print ser_dsr_dbg_tx
$2 = 49
(gdb) print ser_dsr_dbg_calls
$3 = 3483
(gdb) print ser_dsr_dbg_spurious
$4 = 2228

2nd run, hal_interrupt_clear_pending() called before reading Interrupt
Identification Register (two reads in my version of the DSR):

(gdb) print ser_dsr_dbg_rx
$1 = 1230
(gdb) print ser_dsr_dbg_tx
$2 = 49
(gdb) print ser_dsr_dbg_calls
$3 = 1867
(gdb) print ser_dsr_dbg_spurious
$4 = 668
(gdb)

Much better but still a gremlin to find and kill, counter of spurious ints must
be zero. Anyway the numbers speak by themselves.

-- 
Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]