<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>ColdFire/68K Microcontrollers and Processorsのトピックdisabling all interrupts on mcf5282</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/disabling-all-interrupts-on-mcf5282/m-p/125743#M269</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using mcf5282 coldfire on the evaluation board DNP/EVB6 Board Revision 1.2.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to simulate a 48VDC-communication-bus which consists of signals with the length of 5 and 15µs. For Linux not to interact while sending a sequence of signals I want to disable all interrupts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This is what I'm trying:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. save Interrupt Mask Register into a variable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. disable all interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. send signal&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4. write saved variable back to IMR&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Im using the m68k-elf-gcc for compilation of my c-code, which is attached to this post. This is how I compile:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m68k-elf-gcc -Wall -m5307 mbus.c -o mbus -Wl,-elf2flt -lc&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Compiles nice but when I try to run my executable on the coldfire I get just one message:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;memory fault.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you have an idea about what I'm doing wrong?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Maybe you have a hint for me. I'd appreciate it very much.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Jakob&lt;/SPAN&gt;&lt;P&gt;Message Edited by jjw on &lt;SPAN class="date_text"&gt;2007-03-09&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;04:16 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Message Edited by jjw on &lt;SPAN class="date_text"&gt;2007-03-09&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;04:19 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fcommunity_files%2FCFCOMM%2Fmsg1975_mbus.c" rel="nofollow" target="_blank"&gt;mbus.c&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fcommunity_files%2FCFCOMM%2Fmsg1975_mbus.h" rel="nofollow" target="_blank"&gt;mbus.h&lt;/A&gt;&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by t.dowe on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-09-02&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;05:13 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 10 Mar 2007 00:13:32 GMT</pubDate>
    <dc:creator>jjw</dc:creator>
    <dc:date>2007-03-10T00:13:32Z</dc:date>
    <item>
      <title>disabling all interrupts on mcf5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/disabling-all-interrupts-on-mcf5282/m-p/125743#M269</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using mcf5282 coldfire on the evaluation board DNP/EVB6 Board Revision 1.2.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to simulate a 48VDC-communication-bus which consists of signals with the length of 5 and 15µs. For Linux not to interact while sending a sequence of signals I want to disable all interrupts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This is what I'm trying:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. save Interrupt Mask Register into a variable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. disable all interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3. send signal&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4. write saved variable back to IMR&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Im using the m68k-elf-gcc for compilation of my c-code, which is attached to this post. This is how I compile:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;m68k-elf-gcc -Wall -m5307 mbus.c -o mbus -Wl,-elf2flt -lc&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Compiles nice but when I try to run my executable on the coldfire I get just one message:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;memory fault.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you have an idea about what I'm doing wrong?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Maybe you have a hint for me. I'd appreciate it very much.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Jakob&lt;/SPAN&gt;&lt;P&gt;Message Edited by jjw on &lt;SPAN class="date_text"&gt;2007-03-09&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;04:16 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Message Edited by jjw on &lt;SPAN class="date_text"&gt;2007-03-09&lt;/SPAN&gt;&lt;SPAN class="time_text"&gt;04:19 PM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fcommunity_files%2FCFCOMM%2Fmsg1975_mbus.c" rel="nofollow" target="_blank"&gt;mbus.c&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.freescale.com%2Ffiles%2Fcommunity_files%2FCFCOMM%2Fmsg1975_mbus.h" rel="nofollow" target="_blank"&gt;mbus.h&lt;/A&gt;&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by t.dowe on&lt;/SPAN&gt; &lt;SPAN class="local-date"&gt;2009-09-02&lt;/SPAN&gt; &lt;SPAN class="local-time"&gt;05:13 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 10 Mar 2007 00:13:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/disabling-all-interrupts-on-mcf5282/m-p/125743#M269</guid>
      <dc:creator>jjw</dc:creator>
      <dc:date>2007-03-10T00:13:32Z</dc:date>
    </item>
    <item>
      <title>Re: disabling all interrupts on mcf5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/disabling-all-interrupts-on-mcf5282/m-p/125744#M270</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;First of all, use the debugger to discover which instruction caused the error.&lt;BR /&gt;&lt;BR /&gt;Second, you might have better luck enabling/disabling all interrupts by manipulating the SR instead:&lt;BR /&gt;&lt;BR /&gt;MOVE.W SR,D1&lt;BR /&gt;MOVE.W D1,D0 ; Save a copy&lt;BR /&gt;ORI.W #$0700,D1 ; Disable all interrupts&lt;BR /&gt;MOVE.W D1,SR&lt;BR /&gt;; Copy of original SR is in D0&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 10 Mar 2007 02:57:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/disabling-all-interrupts-on-mcf5282/m-p/125744#M270</guid>
      <dc:creator>DaveRahardja</dc:creator>
      <dc:date>2007-03-10T02:57:28Z</dc:date>
    </item>
    <item>
      <title>Re: disabling all interrupts on mcf5282</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/disabling-all-interrupts-on-mcf5282/m-p/125745#M271</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;DIV&gt;Hi&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;To add to the previous post,&amp;nbsp;you probably want to change the cpu target you have invoked for gcc from -m5307 to -m528x so that the compiler knows which version of the instruction set to use - although it is unlikely to be the cause of your problem.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Secondly, if you want to disable interrupts, then the way to do that is to modify the CPU's status register to mask them. Use something like the assembler in the previous post, which you can make inline if you wish. Here is an assembler function that you can call from C easily:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;SPAN class="msg_source_code"&gt;&lt;SPAN class="text_smallest"&gt;Code:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;PRE&gt;/********************************************************************//* * From mcf52xx_lo.s * * This routines changes the IPL to the value passed into the routine. * It also returns the old IPL value back. * * Calling convention from C: *   old_ipl = asm_set_ipl(new_ipl); * * Note that only the least significant three bits of the passed * value are used. */asm_set_ipl:_asm_set_ipl:    link    A6,#-8    movem.l D6-D7,(SP)    move.w  SR,D7       /* current sr    */    move.l  D7,D0       /* prepare return value  */    andi.l  #0x0700,D0  /* mask out IPL  */    lsr.l   #8,D0       /* IPL   */    move.l  8(A6),D6    /* get argument  */    andi.l  #0x07,D6        /* least significant three bits  */    lsl.l   #8,D6       /* move over to make mask    */    andi.l  #0x0000F8FF,D7  /* zero out current IPL  */    or.l    D6,D7           /* place new IPL in sr   */    move.w  D7,SR    movem.l (SP),D6-D7    lea     8(SP),SP    unlk    A6    rts&lt;/PRE&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Finally, a memory fault exception will occur when you attempt to read or write to memory that is not configured for read/write access, or the CPU tries to execute code from an address that is not configured as executable.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Cheers,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Paul.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 11 Mar 2007 01:14:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/disabling-all-interrupts-on-mcf5282/m-p/125745#M271</guid>
      <dc:creator>mccPaul</dc:creator>
      <dc:date>2007-03-11T01:14:26Z</dc:date>
    </item>
  </channel>
</rss>

