public inbox for ecos-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug 1001439] New: can_lpc2xxx.c: CYGOPT_DEVS_CAN_CAN_LPC2XXX_LUT_ERR_SUPP problems
@ 2012-01-03 11:20 bugzilla-daemon
  2012-01-05 13:03 ` [Bug 1001439] " bugzilla-daemon
  0 siblings, 1 reply; 3+ messages in thread
From: bugzilla-daemon @ 2012-01-03 11:20 UTC (permalink / raw)
  To: ecos-bugs

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

           Summary: can_lpc2xxx.c:
                    CYGOPT_DEVS_CAN_CAN_LPC2XXX_LUT_ERR_SUPP problems
           Product: eCos
           Version: CVS
          Platform: Other (please specify)
        OS/Version: Cortex-M
            Status: UNCONFIRMED
          Severity: minor
          Priority: low
         Component: CAN
        AssignedTo: unassigned@bugs.ecos.sourceware.org
        ReportedBy: bernard.fouche@kuantic.com
                CC: ecos-bugs@ecos.sourceware.org
             Class: Advice Request


In function lpc2xxx_can_DSR():

...
#if CYGINT_IO_CAN_CHANNELS > 1
    cyg_uint8 i = 0;
    while (lpc2xxx_global_can_info.active_channels[i])
#endif // CYGINT_IO_CAN_CHANNELS > 1
    {
        cyg_uint32   icr;
        can_channel *chan = LPC2XXX_GET_CAN_CHANNEL(lpc2xxx_global_can_info,
i++);
        CAN_DECLARE_INFO(chan);

        HAL_READ_UINT32(CAN_CTRL_ICR(info), icr);      // this read clears ICR
#ifdef CYGOPT_DEVS_CAN_LPC2XXX_LUT_ERR_SUPP
        // Set ICR_LUT_ERR flag only for controller which cause LUT error
        if ((luterr_chan0 == i) || (luterr_chan1 == i))
...

1) 'i' is declared only if more than one CAN channel. 'i' is referenced always
if CYGOPT_DEVS_CAN_LPC2XXX_LUT_ERR_SUPP is defined.

2) On MCU counting CAN channels from 0: 'i++' is performed at beginning of
while(...), and if CYGOPT_DEVS_CAN_LPC2XXX_LUT_ERR_SUPP is defined,
luterr_chan[0/1] are compared to 'i': the LUT fault won't be reported to the
correct CAN channel for such MCUs (luterr_chan[0/1] have values directly
provided by the hardware). can_accfilt_lpc2xxx.c has macro
LPC2XXX_CAN_FIRST_IN_LUT that could be moved to can_lpc2xxx.h to help solve
this.

-- 
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.


^ permalink raw reply	[flat|nested] 3+ messages in thread
* [Bug 1001439] New: can_lpc2xxx.c: CYGOPT_DEVS_CAN_CAN_LPC2XXX_LUT_ERR_SUPP problems
@ 2012-01-03 11:20 bugzilla-daemon
  0 siblings, 0 replies; 3+ messages in thread
From: bugzilla-daemon @ 2012-01-03 11:20 UTC (permalink / raw)
  To: unassigned

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

           Summary: can_lpc2xxx.c:
                    CYGOPT_DEVS_CAN_CAN_LPC2XXX_LUT_ERR_SUPP problems
           Product: eCos
           Version: CVS
          Platform: Other (please specify)
        OS/Version: Cortex-M
            Status: UNCONFIRMED
          Severity: minor
          Priority: low
         Component: CAN
        AssignedTo: unassigned@bugs.ecos.sourceware.org
        ReportedBy: bernard.fouche@kuantic.com
                CC: ecos-bugs@ecos.sourceware.org
             Class: Advice Request


In function lpc2xxx_can_DSR():

...
#if CYGINT_IO_CAN_CHANNELS > 1
    cyg_uint8 i = 0;
    while (lpc2xxx_global_can_info.active_channels[i])
#endif // CYGINT_IO_CAN_CHANNELS > 1
    {
        cyg_uint32   icr;
        can_channel *chan = LPC2XXX_GET_CAN_CHANNEL(lpc2xxx_global_can_info,
i++);
        CAN_DECLARE_INFO(chan);

        HAL_READ_UINT32(CAN_CTRL_ICR(info), icr);      // this read clears ICR
#ifdef CYGOPT_DEVS_CAN_LPC2XXX_LUT_ERR_SUPP
        // Set ICR_LUT_ERR flag only for controller which cause LUT error
        if ((luterr_chan0 == i) || (luterr_chan1 == i))
...

1) 'i' is declared only if more than one CAN channel. 'i' is referenced always
if CYGOPT_DEVS_CAN_LPC2XXX_LUT_ERR_SUPP is defined.

2) On MCU counting CAN channels from 0: 'i++' is performed at beginning of
while(...), and if CYGOPT_DEVS_CAN_LPC2XXX_LUT_ERR_SUPP is defined,
luterr_chan[0/1] are compared to 'i': the LUT fault won't be reported to the
correct CAN channel for such MCUs (luterr_chan[0/1] have values directly
provided by the hardware). can_accfilt_lpc2xxx.c has macro
LPC2XXX_CAN_FIRST_IN_LUT that could be moved to can_lpc2xxx.h to help solve
this.

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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-01-05 13:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-03 11:20 [Bug 1001439] New: can_lpc2xxx.c: CYGOPT_DEVS_CAN_CAN_LPC2XXX_LUT_ERR_SUPP problems bugzilla-daemon
2012-01-05 13:03 ` [Bug 1001439] " bugzilla-daemon
  -- strict thread matches above, loose matches on Subject: below --
2012-01-03 11:20 [Bug 1001439] New: " bugzilla-daemon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).