Re: MCF547X bus error
nop head <[email protected]> Wed, 11 Mar 2009 12:52:48 +0000
| Newsgroups | gmane.comp.hardware.motorola.microcontrollers.coldfire |
|---|---|
| Message-ID | <[email protected]> |
--001636c9245745eda20464d7584e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Dave, Sorry, my last reply was rubbish. The spare chip select will of course terminate the cycle, but only for one duff region. Chris 2009/3/11 nop head <[email protected]> > Hi Dave, > The memories are not contiguous due to being different sizes, etc, so > there are lots of gaps to cover. 68K chip selects were again more useful > because you could overlap them and the one with the highest priority > overides the others. It doesn't seem to be the same on Coldfire. The 53 > manual says overlapping chip selects cause both to be asserted and the cycle > defualting to 32 bit unterminated, so not useful. The 54 manual does not > mention what happens with overlaps. > > An interrupt on its own will not free the bus. You have to pulse TA to > terminate the hung cycle, but there may be multiple cycles queued up before > the interrupt is serviced, so you have to give a TA for all of them. > > Regards, Chris > > 2009/3/11 David A Perreault <[email protected]> > > How about enableing a spare chip select to cover all the space not covered >> by your responding memories. Then tie the spare chip select back to an >> interrupt. >> >> Dave >> >> >> nop head wrote: >> >>> Is it me or are Freescale making it harder and harder to make a robust >>> system? >>> >>> I need to stop illegal accesses hanging the system. 15 years ago we had a >>> 68340 with a bus error timer that terminated any bad cycles and caused an >>> exception. Before that a simple counter on the BERR pin did the same thing. >>> >>> A couple of years ago we moved to MCF537X. To get the same functionality >>> we had to add an external bus timer which generated a TA and a level 7 >>> interrupt if it saw a TS with no following FBCSn. >>> >>> With the MC547X I find that it does not generate ALE for cycles that miss >>> the Flex Bus chip select range, so my only option seems to be an external >>> watchdog timer which, when it times out generates a TA pulse and an >>> interrupt. A not insignificant amount of logic and design time that could be >>> done much better inside the core with a trivial amount of silicon. >>> >>> It does have three watchdog timers on the XL Bus, but they don't seem to >>> be of any use for this situation. What would cause an XL bus timeout? >>> >>> There is also a watchdog timer in the SIU, which misleadingly is shown as >>> a separate timer, but is actually GPT0. But that only seems to generate a >>> reset, making debugging the problem impossible. >>> >>> Even with an interrupt it will be very difficult to pinpoint the errant >>> instruction. I thought I could use the MMU to help me, but I find that when >>> the MMU is enabled I lose the default cache settings. My default is no >>> caching for I/O and I have two data ACR settings, one for write through >>> non-volatile memory sections and another for buffered copy back for DRAM. So >>> am I right in thinking that with the MMU enabled I have to have one of the >>> data ACRs set to no caching for the I/O addresses leaving me with only one >>> other type of data cache mode? >>> >>> Is it really this hard or have I missed something in the manual? >>> >>> >>> >>> [email protected] Send a post to the list. >>> [email protected] Join the list. [email protected] the list in digest mode. >>> [email protected] Leave the list. >>> >> >> --- >> [email protected] Send a post to the list. >> [email protected] Join the list. >> [email protected] Join the list in digest mode. >> [email protected] Leave the list. >> >> > --001636c9245745eda20464d7584e Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Dave,<br>=A0Sorry, my last reply was rubbish. The spare chip select will of= course terminate the cycle, but only for one duff region.<br><br>Chris<br>= <br><div class=3D"gmail_quote">2009/3/11 nop head <span dir=3D"ltr"><<a = href=3D"mailto:[email protected]">[email protected]</a>></sp= an><br> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Dave,<br>=A0 T= he memories are not contiguous due to being different sizes, etc, so there = are lots of gaps to cover. 68K chip selects were again more useful because = you could overlap them and the one with the highest priority overides the o= thers. It doesn't seem to be the same on Coldfire. The 53 manual says o= verlapping chip selects cause both to be asserted and the cycle defualting = to 32 bit unterminated, so not useful. The 54 manual does not mention what = happens with overlaps.<br> <br>An interrupt on its own will not free the bus. You have to pulse TA to = terminate the hung cycle, but there may be multiple cycles queued up before= the interrupt is serviced, so you have to give a TA for all of them.<br> <br>Regards, Chris<br><br><div class=3D"gmail_quote">2009/3/11 David A Perr= eault <span dir=3D"ltr"><<a href=3D"mailto:[email protected]" target=3D= "_blank">[email protected]</a>></span><div><div></div><div class=3D"h5"= ><br> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> How about enableing a spare chip select to cover all the space not covered = by your responding memories. Then tie the spare chip select back to an inte= rrupt.<br> <br> Dave<br> <br> <br> nop head wrote:<br> <blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, = 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><= div> Is it me or are Freescale making it harder and harder to make a robust syst= em?<br> <br> I need to stop illegal accesses hanging the system. 15 years ago we had a 6= 8340 with a bus error timer that terminated any bad cycles and caused an ex= ception. Before that a simple counter on the BERR pin did the same thing.<b= r> <br> A couple of years ago we moved to MCF537X. To get the same functionality we= had to add an external bus timer which generated a TA and a level 7 interr= upt if it saw a TS with no following FBCSn.<br> <br> With the MC547X I find that it does not generate ALE for cycles that miss t= he Flex Bus chip select range, so my only option seems to be an external wa= tchdog timer which, when it times out generates a TA pulse and an interrupt= . A not insignificant amount of logic and design time that could be done mu= ch better inside the core with a trivial amount of silicon.<br> <br> It does have three watchdog timers on the XL Bus, but they don't seem t= o be of any use for this situation. What would cause an XL bus timeout?<br> <br> There is also a watchdog timer in the SIU, which misleadingly is shown as a= separate timer, but is actually GPT0. But that only seems to generate a re= set, making debugging the problem impossible.<br> <br> Even with an interrupt it will be very difficult to pinpoint the errant ins= truction. I thought I could use the MMU to help me, but I find that when th= e MMU is enabled I lose the default cache settings. My default is no cachin= g for I/O and I have two data ACR settings, one for write through non-volat= ile memory sections and another for buffered copy back for DRAM. So am I ri= ght in thinking that with the MMU enabled I have to have one of the data AC= Rs set to no caching for =A0the I/O addresses leaving me with only one othe= r type of data cache mode?<br> <br> Is it really this hard or have I missed something in the manual?<br> <br> <br> <br> </div></div><a href=3D"mailto:[email protected]" target=3D"_blank">cold= [email protected]</a> Send a post to the list. <a href=3D"mailto:coldfire-j= [email protected]" target=3D"_blank">[email protected]</a> Join the= list. <a href=3D"mailto:[email protected]" target=3D"_blank">co= [email protected]</a> Join the list in digest mode. <a href=3D"mai= lto:[email protected]" target=3D"_blank">coldfire-leave@wildrice.= com</a> Leave the list. <br> </blockquote> <br> ---<br> <a href=3D"mailto:[email protected]" target=3D"_blank">coldfire@wildric= e.com</a> =A0 =A0 =A0 =A0 =A0 =A0 =A0Send a post to the list.<br> <a href=3D"mailto:[email protected]" target=3D"_blank">coldfire-jo= [email protected]</a> =A0 =A0 =A0 =A0Join the list.<br> <a href=3D"mailto:[email protected]" target=3D"_blank">coldfire-= [email protected]</a> =A0 =A0Join the list in digest mode.<br> <a href=3D"mailto:[email protected]" target=3D"_blank">coldfire-l= [email protected]</a> =A0 =A0 Leave the list.<br> <br> </blockquote></div></div></div><br> </blockquote></div><br> [email protected]=09Send a post to the list. [email protected]=09Join the list. [email protected]=09Join the list in digest mode. [email protected]=09Leave the list. --001636c9245745eda20464d7584e--