<?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>topic Re: k20 not enabling interrupts after transfer from bootloader in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447565#M62941</link>
    <description>&lt;P&gt;So I added an __EI() statement at the end of Cpu.c but that did not fix the problem.&amp;nbsp; I thought that the __set_BASEPRI statement enabled the interrupts??&lt;/P&gt;</description>
    <pubDate>Fri, 22 Apr 2022 03:12:03 GMT</pubDate>
    <dc:creator>waynewilburn</dc:creator>
    <dc:date>2022-04-22T03:12:03Z</dc:date>
    <item>
      <title>k20 not enabling interrupts after transfer from bootloader</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447515#M62938</link>
      <description>&lt;P&gt;I have a custom bootloader that was designed for the KL16 and I have ported it to the K20.&amp;nbsp; I used Processor Expert (KDS) to design both versions of the code.&amp;nbsp; My bootloader is at address 0x0000 and the application is at 0x3000.&lt;/P&gt;&lt;P&gt;The code in the bootloader that actually does the jump is:&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;void Execute_JumpToApplication( void )&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;{&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;__DI();&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;SCB_VTOR = (uint32_t)APPLIC_BASE_ADDR;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;uint32_t startup; &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;startup = ((uint32_t*)APPLIC_BASE_ADDR)[0];&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;__set_SP(startup); &lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;startup = ((uint32_t*)APPLIC_BASE_ADDR)[1];&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;((void(*)(void))startup)();&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;When I load my application with a debugger, interrupts are enabled correctly.&amp;nbsp; When I transfer control from my bootloader, interrupts do not appear to be enabled.&amp;nbsp; Even my timer interrupt does not work.&amp;nbsp; Here is the initialization code from Cpu.c.&amp;nbsp; I have commented most of the initialization functions.&amp;nbsp; Only TI1_Init() and BitsIOLdd1_Init() remain.&amp;nbsp; All of my interrupt code was set to priority 8.&amp;nbsp; Any suggestions with how to proceed?&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;void PE_low_level_init(void)&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;{&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;#ifdef PEX_RTOS_INIT&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PEX_RTOS_INIT(); /* Initialization of the selected RTOS. Macro is defined by the RTOS component. */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;#endif&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* Initialization of the SIM module */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* Initialization of the RCM module */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* RCM_RPFW: RSTFLTSEL=0 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;RCM_RPFW &amp;amp;= (uint8_t)~(uint8_t)(RCM_RPFW_RSTFLTSEL(0x1F));&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* RCM_RPFC: RSTFLTSS=0,RSTFLTSRW=0 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;RCM_RPFC &amp;amp;= (uint8_t)~(uint8_t)(&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;RCM_RPFC_RSTFLTSS_MASK |&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;RCM_RPFC_RSTFLTSRW(0x03)&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* Initialization of the FTFL_FlashConfig module */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* Initialization of the PMC module */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* PMC_REGSC: ACKISO=0,BGBE=0 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_REGSC &amp;amp;= (uint8_t)~(uint8_t)(&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_REGSC_ACKISO_MASK |&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_REGSC_BGBE_MASK&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* PMC_LVDSC1: LVDACK=1,LVDIE=0,LVDRE=1,LVDV=0 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC1 = (uint8_t)((PMC_LVDSC1 &amp;amp; (uint8_t)~(uint8_t)(&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC1_LVDIE_MASK |&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC1_LVDV(0x03)&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;)) | (uint8_t)(&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC1_LVDACK_MASK |&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC1_LVDRE_MASK&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;));&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* PMC_LVDSC2: LVWACK=1,LVWIE=0,LVWV=0 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC2 = (uint8_t)((PMC_LVDSC2 &amp;amp; (uint8_t)~(uint8_t)(&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC2_LVWIE_MASK |&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC2_LVWV(0x03)&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;)) | (uint8_t)(&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;PMC_LVDSC2_LVWACK_MASK&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;));&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* SMC_PMPROT: ??=0,??=0,AVLP=0,??=0,ALLS=0,??=0,AVLLS=0,??=0 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;SMC_PMPROT = 0x00U; /* Setup Power mode protection register */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* Common initialization of the CPU registers */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* NVICIP8: PRI8=0 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;NVICIP8 = NVIC_IP_PRI8(0x00);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* GPIOD_PDDR: PDD&amp;amp;=~0x40 */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;GPIOD_PDDR &amp;amp;= (uint32_t)~(uint32_t)(GPIO_PDDR_PDD(0x40));&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### Asynchro serial "DebugUART" init code ... */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//DebugUART_Init();&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### InternalI2C "Vpi" init code ... */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//Vpi_Init();&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### BitIO_LDD "BitIoLdd1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//(void)BitIoLdd1_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### IntFLASH "FLASH" init code ... */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//FLASH_Init();&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### GPIO_LDD "BitsIoLdd1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;(void)BitsIoLdd1_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### BitIO_LDD "BitIoLdd2" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//(void)BitIoLdd2_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### BitIO_LDD "BitIoLdd3" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//(void)BitIoLdd3_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### BitIO_LDD "BitIoLdd4" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//(void)BitIoLdd4_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### ExtInt_LDD "ExtIntLdd1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//(void)ExtIntLdd1_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### ADC "TempADC" init code ... */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//TempADC_Init();&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### SPIMaster_LDD "SPI_LDD" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;//(void)SPI_LDD_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* ### TimerInt_LDD "TI1" component auto initialization. Auto initialization feature can be disabled by component property "Auto initialization". */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;(void)TI1_Init(NULL);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;/* Enable interrupts of the given priority level */&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;__set_BASEPRI(0U);&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 01:50:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447515#M62938</guid>
      <dc:creator>waynewilburn</dc:creator>
      <dc:date>2022-04-22T01:50:02Z</dc:date>
    </item>
    <item>
      <title>Re: k20 not enabling interrupts after transfer from bootloader</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447547#M62939</link>
      <description>&lt;P&gt;It seems that global IRQ is disabled in bootloader and it is not enabled again in application.&lt;/P&gt;
&lt;P&gt;Global IRQ is enabled by default, that's why you can debug application only properly&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 02:47:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447547#M62939</guid>
      <dc:creator>jay_heng</dc:creator>
      <dc:date>2022-04-22T02:47:52Z</dc:date>
    </item>
    <item>
      <title>Re: k20 not enabling interrupts after transfer from bootloader</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447565#M62941</link>
      <description>&lt;P&gt;So I added an __EI() statement at the end of Cpu.c but that did not fix the problem.&amp;nbsp; I thought that the __set_BASEPRI statement enabled the interrupts??&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 03:12:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447565#M62941</guid>
      <dc:creator>waynewilburn</dc:creator>
      <dc:date>2022-04-22T03:12:03Z</dc:date>
    </item>
    <item>
      <title>Re: k20 not enabling interrupts after transfer from bootloader</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447603#M62942</link>
      <description>&lt;P&gt;No, BASEPRI only sets the base priority of interrupts to be masked, see &lt;A href="https://mcuoneclipse.com/2016/08/14/arm-cortex-m-interrupts-and-freertos-part-1/" target="_blank"&gt;https://mcuoneclipse.com/2016/08/14/arm-cortex-m-interrupts-and-freertos-part-1/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Erich&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 05:15:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447603#M62942</guid>
      <dc:creator>ErichStyger</dc:creator>
      <dc:date>2022-04-22T05:15:58Z</dc:date>
    </item>
    <item>
      <title>Re: k20 not enabling interrupts after transfer from bootloader</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447916#M62947</link>
      <description>&lt;P&gt;So I’ve tried both __EI() and __enable_interrupt() at the end of low_level_init and neither work&lt;/P&gt;</description>
      <pubDate>Fri, 22 Apr 2022 15:33:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/k20-not-enabling-interrupts-after-transfer-from-bootloader/m-p/1447916#M62947</guid>
      <dc:creator>waynewilburn</dc:creator>
      <dc:date>2022-04-22T15:33:32Z</dc:date>
    </item>
  </channel>
</rss>

