<?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>i.MX ProcessorsのトピックRe: Boot ROM API on IMXRT1176</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1486404#M192309</link>
    <description>&lt;P&gt;I think I found the answer.&amp;nbsp; Poking around the ROM, the pointer after the documented address 0x0021_001C, address 0x0021_0020 points to a structure that seems to line up with the documented ROM Vector table (the first byte is 0xDD).&amp;nbsp; Calling the RVT entries for enter(), get_version(), and report_status() return values that seem to make sense.&amp;nbsp; However, calling enter() followed by runBootloader() still results in the same hang, so apparently my theory that the ROM was uninitialized was wrong.&amp;nbsp; It turns out that calling the RVT entry for failsafe() puts me at the same loop as runBootloader, so perhaps I just mis-interpreted what that entry does.&amp;nbsp; In any case, with this information it looks like I may be able to proceed with updating the fuse shadows and testing the boot process.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 07 Jul 2022 20:12:50 GMT</pubDate>
    <dc:creator>ericklein</dc:creator>
    <dc:date>2022-07-07T20:12:50Z</dc:date>
    <item>
      <title>Boot ROM API on IMXRT1176</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1473848#M191482</link>
      <description>&lt;P&gt;I am trying to invoke the ROM boot after changing values in the fuse shadow memory as suggested in one of the security app notes.&amp;nbsp; If I do it in the debugger, the ROM ends up in an endless loop after loading R0 with what appears to be the version of the OCOPT.&amp;nbsp; &amp;nbsp;Looking at IMXRT117X Security Reference, there isn't an entry point for initializing the ROM, and none for getting events like some of the other chips have.&amp;nbsp; Has anyone had success with this?&amp;nbsp; Should one of the registers have an error code as well?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ericklein_0-1655232269475.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/183328iBAC49F1B596632BB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="ericklein_0-1655232269475.png" alt="ericklein_0-1655232269475.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Jun 2022 18:55:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1473848#M191482</guid>
      <dc:creator>ericklein</dc:creator>
      <dc:date>2022-06-14T18:55:32Z</dc:date>
    </item>
    <item>
      <title>Re: Boot ROM API on IMXRT1176</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1473938#M191485</link>
      <description>&lt;P&gt;Hi,&lt;BR /&gt;Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.&lt;BR /&gt;To be honest, I'm not very clear with your question, whether you can describe a testing process of replicating the phenomenon.&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt;Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jun 2022 00:21:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1473938#M191485</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2022-06-15T00:21:25Z</dc:date>
    </item>
    <item>
      <title>Re: Boot ROM API on IMXRT1176</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1474543#M191522</link>
      <description>&lt;P&gt;I am calling the runBootloader() API as described in section 10.13.3 of the i.MX RT1170 Processor Reference Manual Rev. 1.&amp;nbsp; My code is pasted below.&amp;nbsp; As you can see, had to blow the BT_FUSE_SEL fuse to get this to work when not run from the debugger.&amp;nbsp; My goal is to be able to set the SRK hash in the fuse shadow before calling the ROM to test my boot code.&lt;/P&gt;&lt;P&gt;When run from the debugger, the debugger goes straight to the start address, bypassing the ROM.&amp;nbsp; I assume that is why it gets stuck in the ROM code, as I show in the original post.&lt;/P&gt;&lt;P&gt;Since posting I found the High Assurance Boot Version 4 Application Programming Interface Reference Manual.&amp;nbsp; I assume, based on its features that the RT1170 is HAB4, even though I can not find a manual that explicitly states that.&amp;nbsp; Much of the HAB4 document seems to line up with the RT1170 security reference, but the API part does not, nor does it seem to match what I see in the ROM vector table.&lt;/P&gt;&lt;P&gt;I feel like I am missing an important piece here and hope you can help me find it.&lt;/P&gt;&lt;P&gt;(looks like I don't have permission to paste pictures for some reason now, so here is the messy text paste of the code)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;typedef struct BootloaderTree&lt;BR /&gt;{&lt;BR /&gt;void (*runBootloader)(const uint32_t *arg);&lt;BR /&gt;uint32_t version;&lt;BR /&gt;const char *copyright;&lt;BR /&gt;// const flexspi_nor_flash_driver_t *flexspiNorDriver;&lt;BR /&gt;} bootloader_tree_t;&lt;/P&gt;&lt;P&gt;uint32_t __attribute__((section(".secure_ram_data"))) arg;&lt;BR /&gt;uint32_t __attribute__((section(".secure_ram_data"))) first;&lt;/P&gt;&lt;P&gt;static void testBoot()&lt;BR /&gt;{&lt;BR /&gt;#if 0&lt;BR /&gt;if (SCB_CCR_IC_Msk == (SCB_CCR_IC_Msk &amp;amp; SCB-&amp;gt;CCR))&lt;BR /&gt;{&lt;BR /&gt;SCB_DisableICache();&lt;BR /&gt;}&lt;BR /&gt;if (SCB_CCR_DC_Msk == (SCB_CCR_DC_Msk &amp;amp; SCB-&amp;gt;CCR))&lt;BR /&gt;{&lt;BR /&gt;SCB_DisableDCache();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;ARM_MPU_Disable();&lt;/P&gt;&lt;P&gt;OCOTP_Init(OCOTP, 0);&lt;BR /&gt;uint32_t version = OCOTP_GetVersion(OCOTP);&lt;BR /&gt;printf("Version=%d\n", version);&lt;/P&gt;&lt;P&gt;// Blow BT_FUSE_SEL to ignore pads for boot config (can't just update in shadow since SRC uses it)&lt;BR /&gt;uint32_t addr = ((0x960 - 0x800) &amp;gt;&amp;gt; 4);&lt;BR /&gt;status_t otpStatus = OCOTP_WriteFuseShadowRegister(OCOTP, addr, 0x10);&lt;BR /&gt;printf("optStatus=%d\n", otpStatus);&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;// try to set the SRK HASH in shadow&lt;BR /&gt;// *((uint32_t*)0x40CACB00) = 0x12345678;&lt;/P&gt;&lt;P&gt;const uint32_t romApiPtr = 0x21001c;&lt;BR /&gt;bootloader_tree_t *blTree = *((bootloader_tree_t**)romApiPtr);&lt;BR /&gt;arg = 0xEB000000;&lt;/P&gt;&lt;P&gt;(*(blTree-&amp;gt;runBootloader))(&amp;amp;arg);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;int main(int argc, char **argv)&lt;BR /&gt;{&lt;BR /&gt;if (first != 0xBADCAFE)&lt;BR /&gt;{&lt;BR /&gt;first = 0xBADCAFE;&lt;BR /&gt;testBoot();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jun 2022 14:32:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1474543#M191522</guid>
      <dc:creator>ericklein</dc:creator>
      <dc:date>2022-06-15T14:32:23Z</dc:date>
    </item>
    <item>
      <title>Re: Boot ROM API on IMXRT1176</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1474896#M191537</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;Thanks for your reply.&lt;BR /&gt;According to your clarification, it seems to you want to use the ROM API to initiate a HAB secure boot manually, there's no similar application, unfortunately, I've zero experience with it, however, to implement the HAB secure boot, the SRK table should contain 8 words.&lt;BR /&gt;Lastly, I'd like to apply for further support via the &lt;A href="https://www.nxp.com/support/support/nxp-engineering-services:SW-SUPPORT" target="_self"&gt;NXP professional services&lt;/A&gt;.&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt;Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;</description>
      <pubDate>Thu, 16 Jun 2022 01:53:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1474896#M191537</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2022-06-16T01:53:38Z</dc:date>
    </item>
    <item>
      <title>Re: Boot ROM API on IMXRT1176</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1477515#M191754</link>
      <description>&lt;P&gt;Perhaps my initial post was too specific.&amp;nbsp; I am mainly just looking for the address of the ROM APIs on the RT1176.&amp;nbsp; &amp;nbsp;In section 4.5 of the High Assurance Boot Version 4 Application Programming Interface Reference Manual it says:&lt;/P&gt;&lt;P&gt;"The ROM Vector Table consists of a Header followed by a list of addresses as described further below.&amp;nbsp; For details on the location of the please refer to the System Boot chapter of the relevant NXP processor reference manual."&lt;/P&gt;&lt;P&gt;The only location in noted the RT1170 reference manual is 0x0021_001C but its layout does not match what is described in the HAB API manual, and it only includes the single runBootloader() entry point.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 21 Jun 2022 14:31:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1477515#M191754</guid>
      <dc:creator>ericklein</dc:creator>
      <dc:date>2022-06-21T14:31:36Z</dc:date>
    </item>
    <item>
      <title>Re: Boot ROM API on IMXRT1176</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1477743#M191766</link>
      <description>&lt;P&gt;Hi,&lt;BR /&gt;Thanks for your reply and clarification.&lt;BR /&gt;All RT series MCUs only support the below struct of the ROM APIs.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeremyzhou_0-1655860568679.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/184114i249D68051B03D1A7/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jeremyzhou_0-1655860568679.png" alt="jeremyzhou_0-1655860568679.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Hope this is clear.&lt;BR /&gt;Have a great day,&lt;BR /&gt;TIC&lt;/P&gt;
&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt;Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;</description>
      <pubDate>Wed, 22 Jun 2022 01:16:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1477743#M191766</guid>
      <dc:creator>jeremyzhou</dc:creator>
      <dc:date>2022-06-22T01:16:28Z</dc:date>
    </item>
    <item>
      <title>Re: Boot ROM API on IMXRT1176</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1486404#M192309</link>
      <description>&lt;P&gt;I think I found the answer.&amp;nbsp; Poking around the ROM, the pointer after the documented address 0x0021_001C, address 0x0021_0020 points to a structure that seems to line up with the documented ROM Vector table (the first byte is 0xDD).&amp;nbsp; Calling the RVT entries for enter(), get_version(), and report_status() return values that seem to make sense.&amp;nbsp; However, calling enter() followed by runBootloader() still results in the same hang, so apparently my theory that the ROM was uninitialized was wrong.&amp;nbsp; It turns out that calling the RVT entry for failsafe() puts me at the same loop as runBootloader, so perhaps I just mis-interpreted what that entry does.&amp;nbsp; In any case, with this information it looks like I may be able to proceed with updating the fuse shadows and testing the boot process.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Jul 2022 20:12:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Boot-ROM-API-on-IMXRT1176/m-p/1486404#M192309</guid>
      <dc:creator>ericklein</dc:creator>
      <dc:date>2022-07-07T20:12:50Z</dc:date>
    </item>
  </channel>
</rss>

