<?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>S12 / MagniV MicrocontrollersのトピックRe: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668724#M14068</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Team,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am handling machine exception in&amp;nbsp; software as shown below.&lt;/P&gt;&lt;P&gt;interrupt 5 void ECC_ISR(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Log the DTC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; __asm(JMP 0x00FFFFFC );&amp;nbsp;&amp;nbsp; /* I am not able to jump to reset vector */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Vector 0 is mapped to _Startup&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I believe something gone wrong with startup stack initialization as shown below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_EXTERN_C void _Startup(void) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD S, #__SEG_END_SSTACK-1&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initialize SP */&lt;BR /&gt;#ifdef __ALIGN_STACK_OPT__&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TFR S, D6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* align SP to 4*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AND D6, #-4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TFR D6, S&lt;BR /&gt;#endif&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DoZeroOut();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DoCopyDown();&lt;BR /&gt;#ifdef __cplusplus&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__static_init();&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;main();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void DoZeroOut(void) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD D6, _startupData.nofZeroOuts&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BEQ end&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* nothing to do */ &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD X, _startupData.pZeroOut&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;zeroOutLoop:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD Y,&amp;nbsp; (0,X)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* X points to the first range */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD D7, (3,X)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* D7 holds size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;doZeroOut:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLR.b (Y+)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DBNE D7, doZeroOut&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LEA X, (7,X)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DBNE D6, zeroOutLoop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void DoCopyDown(void) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD Y, _startupData.toCopyDownBeg&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BEQ end&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* the pointer is NULL */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;nextItemLoop:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD D6, (Y+)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* load the size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BEQ end&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD X, (Y+)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* load the destination */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;copyLoop:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MOV.b (Y+), (X+)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* copy the data */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DBNE D6, copyLoop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BRA nextItemLoop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;In Machine exception handler I am not able to jump to reset vector address 0x00FFFFFC .&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How I&amp;nbsp; can&amp;nbsp; make it work ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please suggest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank You very much.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;charudatta&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 14 Jul 2017 06:11:46 GMT</pubDate>
    <dc:creator>charudattaingal</dc:creator>
    <dc:date>2017-07-14T06:11:46Z</dc:date>
    <item>
      <title>Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668722#M14066</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Team,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From machine exception ( interrupt vector 5 ) handler we are jumping to reset vector address 0x00FFFFFC.&lt;/P&gt;&lt;P&gt;this will again generate the machine exception interrupt for number of time and application control is stuck in it.&lt;/P&gt;&lt;P&gt;Application control is not jumping to address 0x00FFFFFC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Requesting help for the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &amp;amp; Regards,&lt;/P&gt;&lt;P&gt;Charudatta&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Jul 2017 13:40:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668722#M14066</guid>
      <dc:creator>charudattaingal</dc:creator>
      <dc:date>2017-07-13T13:40:38Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668723#M14067</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I’m not sure I understand.&amp;nbsp; &lt;/P&gt;&lt;P&gt;In general, a machine exception is triggered upon an illegal memory access or due to a double-bit ECC error. It is not possible to return to the application and the MCU recovers through the reset.&lt;/P&gt;&lt;P&gt;Please check MMCEC registers which hold information about the cause of the machine exception.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Jul 2017 20:02:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668723#M14067</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2017-07-13T20:02:33Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668724#M14068</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Team,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am handling machine exception in&amp;nbsp; software as shown below.&lt;/P&gt;&lt;P&gt;interrupt 5 void ECC_ISR(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Log the DTC */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; __asm(JMP 0x00FFFFFC );&amp;nbsp;&amp;nbsp; /* I am not able to jump to reset vector */&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Vector 0 is mapped to _Startup&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I believe something gone wrong with startup stack initialization as shown below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_EXTERN_C void _Startup(void) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD S, #__SEG_END_SSTACK-1&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* initialize SP */&lt;BR /&gt;#ifdef __ALIGN_STACK_OPT__&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TFR S, D6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* align SP to 4*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AND D6, #-4&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TFR D6, S&lt;BR /&gt;#endif&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DoZeroOut();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DoCopyDown();&lt;BR /&gt;#ifdef __cplusplus&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__static_init();&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;main();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void DoZeroOut(void) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD D6, _startupData.nofZeroOuts&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BEQ end&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* nothing to do */ &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD X, _startupData.pZeroOut&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;zeroOutLoop:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD Y,&amp;nbsp; (0,X)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* X points to the first range */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD D7, (3,X)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* D7 holds size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;doZeroOut:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CLR.b (Y+)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DBNE D7, doZeroOut&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LEA X, (7,X)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DBNE D6, zeroOutLoop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static void DoCopyDown(void) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;__asm {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD Y, _startupData.toCopyDownBeg&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BEQ end&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* the pointer is NULL */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;nextItemLoop:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD D6, (Y+)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* load the size */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BEQ end&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LD X, (Y+)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* load the destination */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;copyLoop:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;MOV.b (Y+), (X+)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* copy the data */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;DBNE D6, copyLoop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;BRA nextItemLoop&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;end:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;In Machine exception handler I am not able to jump to reset vector address 0x00FFFFFC .&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How I&amp;nbsp; can&amp;nbsp; make it work ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please suggest.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank You very much.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;charudatta&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Jul 2017 06:11:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668724#M14068</guid>
      <dc:creator>charudattaingal</dc:creator>
      <dc:date>2017-07-14T06:11:46Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668725#M14069</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;First, S12Z has a 16-bit CPU so it takes only 16-bit wide addresses. So this is probably the reason you get another machine exception.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The MCU goes through the reset vector at the end of Reset sequence, it is an entry point for an application.&lt;/P&gt;&lt;P&gt;Startup() function (see starts12z.c) is stored at the reset vector address.&lt;/P&gt;&lt;P&gt;So you can call the function and then the application will go through initialization.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;// declaration
extern _Startup();
// jump to the address stored in the reset vector
_Startup();&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But this will not restart the MCU.&lt;/P&gt;&lt;P&gt;There are only five reset sources. See Table 1-11 (Reset Sources and Vector Locations).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There are two possible options:&lt;/P&gt;&lt;P&gt;You can force COP reset&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;CPMUCOP = 0x01; &amp;nbsp;&amp;nbsp;&amp;nbsp;// Initialize COP watchdog, unless it is already initialized.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Note: CPMUCOP is write-once register
CPMUARMCOP = 0x00; // Write any value except 0x55 or 0xAA cause MCU reset&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or you can use a GPIO pin connected to the reset pin externally.&lt;/P&gt;&lt;P&gt;In the machine exception, you can set it as output and pull the reset pin down.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Jul 2017 11:47:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668725#M14069</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2017-07-14T11:47:39Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668726#M14070</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Daniel,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At this time we can not change the hardware design.&lt;/P&gt;&lt;P&gt;cop reset is not working for us due to some boot loader and application sync issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there any way to jump on reset vector address 0x00FFFFFC from application. ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &amp;amp; Regards,&lt;/P&gt;&lt;P&gt;Charudatta&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Jul 2017 13:28:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668726#M14070</guid>
      <dc:creator>charudattaingal</dc:creator>
      <dc:date>2017-07-18T13:28:11Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668727#M14071</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Charudatta,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Two things:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;While a vector-table entry is 4-byte aligned, only three bytes are actually used. The first byte is just padding. For the reset-vector this means the address of the program-start is in 0xFFFFFD..0xFFFFFF.&lt;/LI&gt;&lt;LI&gt;The "JMP" instruction needs the location of the jump target. This is not the reset-vector address, but its content.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, in order to jump to the program-start, change your code to this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __asm(JMP [0xFFFFFD]);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HTH,&lt;/P&gt;&lt;P&gt;MJW&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Jul 2017 14:50:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668727#M14071</guid>
      <dc:creator>MJW</dc:creator>
      <dc:date>2017-07-20T14:50:18Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668728#M14072</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Daniel,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't understand why a reset is necessary to recover from a Machine Exception.&lt;/P&gt;&lt;P&gt;Some situations&amp;nbsp;are&amp;nbsp;not so critical&amp;nbsp;(e.g. double ECC error in EEPROM), and in these cases generating a reset is very brutal.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My understanding is that S21Z behaves similarly&amp;nbsp;as PPC e200 cores in this situation: the&amp;nbsp;Program Counter and the Machine states (CCR) are saved in 2 special purpose registers. The exception handler should then save these registers and other status (General Purpose Reg) in the stack, so that a RTI would allow to come back to the state before the ECC error has been seen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is my understanding correct ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Oct 2017 14:48:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668728#M14072</guid>
      <dc:creator>yvesbriant</dc:creator>
      <dc:date>2017-10-03T14:48:26Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to Reset vector from machine exception ISR for S12ZVL Micro</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668729#M14073</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Yves, &lt;/P&gt;&lt;P&gt;The meachine exception is decribed in Chapter 7.3.3 of &lt;A href="https://www.nxp.com/docs/en/reference-manual/S12ZCPU_RM_V1.pdf"&gt;CPU S12Z RM&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;"Software is expected to re-initialize the system when a machine exception occurs."&lt;/P&gt;&lt;P&gt;But the MMC module stores Program Counter in MMCPC registers.&lt;/P&gt;&lt;P&gt;So theoretically it is possible, I haven't tried it though.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Oct 2017 08:37:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Jump-to-Reset-vector-from-machine-exception-ISR-for-S12ZVL-Micro/m-p/668729#M14073</guid>
      <dc:creator>danielmartynek</dc:creator>
      <dc:date>2017-10-04T08:37:15Z</dc:date>
    </item>
  </channel>
</rss>

