<?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>Vybrid ProcessorsのトピックPreventing a CPU core from accessing peripheral registers</title>
    <link>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240937#M628</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Vybrid Experts!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is it possible to prevent a specific CPU (the Cortex-M4 for instance) from accessing peripheral registers? I'm aware that there is hardware supported semaphore engine integrated in Vybrid, but if a software is not using the semaphore programming model / the semaphore engine, it looks to me that it is not possible to prevent a CPU from accessing GPIOs or other peripherals (in a case of a software accident / wrong pointers for instance) by hardware.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please confirm?&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Andreas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 17 Jan 2014 07:40:28 GMT</pubDate>
    <dc:creator>andreasgoergner</dc:creator>
    <dc:date>2014-01-17T07:40:28Z</dc:date>
    <item>
      <title>Preventing a CPU core from accessing peripheral registers</title>
      <link>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240937#M628</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear Vybrid Experts!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is it possible to prevent a specific CPU (the Cortex-M4 for instance) from accessing peripheral registers? I'm aware that there is hardware supported semaphore engine integrated in Vybrid, but if a software is not using the semaphore programming model / the semaphore engine, it looks to me that it is not possible to prevent a CPU from accessing GPIOs or other peripherals (in a case of a software accident / wrong pointers for instance) by hardware.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Could you please confirm?&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Andreas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jan 2014 07:40:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240937#M628</guid>
      <dc:creator>andreasgoergner</dc:creator>
      <dc:date>2014-01-17T07:40:28Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing a CPU core from accessing peripheral registers</title>
      <link>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240938#M629</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I didn't touch M4 core yet, but A5 MMU allows disabling and/or remapping accesses to specific blocks of addresses. Minimum block size is 4kB. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jan 2014 09:34:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240938#M629</guid>
      <dc:creator>kef2</dc:creator>
      <dc:date>2014-01-17T09:34:20Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing a CPU core from accessing peripheral registers</title>
      <link>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240939#M630</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is possible with the &lt;STRONG&gt;CSU&lt;/STRONG&gt; functionality.&amp;nbsp; Note that this is an ALL or nothing for the entire GPIO logic (all ports!).&amp;nbsp; The cortex-M4 is &lt;STRONG&gt;M0&lt;/STRONG&gt; and &lt;STRONG&gt;M1&lt;/STRONG&gt; on the NIC bus with the CSU protecting a &lt;STRONG&gt;S1&lt;/STRONG&gt; partition including the GPIO functionality.&amp;nbsp; The M4 and all it's &lt;A href="http://en.wikipedia.org/wiki/DMA_attack"&gt;controlled DMA peripherals&lt;/A&gt; (bus masters) should be marked as 'non-secure' or normal.&amp;nbsp; The &lt;STRONG&gt;CSU&lt;/STRONG&gt; will then prevent any access to the GPIOs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is unfortunate that the Vybrid designers grouped all of the GPIO ports together in the same address space.&amp;nbsp; It would be very convenient to have some banks as critical and others as non-critical.&amp;nbsp; For instance PORT-A never modified by A5 and PORT-D never modified by the M4.&amp;nbsp; They have tried to make the GPIO interface possible to use in the AMP design, but they did not protect against malicious software (whether intentional or not).&amp;nbsp; The &lt;STRONG&gt;CSU&lt;/STRONG&gt; has bits that will &lt;STRONG&gt;lock&lt;/STRONG&gt; a setup and prevent any software from changing the permission.&amp;nbsp; For the other AIPS peripherals, they all have separate 4k register sections and can be individually protected.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, if you allow the M4 to access the USB0, then in theory you can program the USB0 to DMA memory from the GPIO register bank.&amp;nbsp; So you would make the USB and M4 &lt;EM&gt;bus master&lt;/EM&gt; ports both 'normal' or non-secure.&amp;nbsp; Similarly, the &lt;STRONG&gt;TZASC&lt;/STRONG&gt; can carve up memory to ensure that the M4 never steps on A5 critical memory (and vice-versa).&amp;nbsp; &lt;STRONG&gt;TZASC&lt;/STRONG&gt; is to partition/protect memory and the &lt;STRONG&gt;CSU&lt;/STRONG&gt; is to protect peripherals.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; The &lt;STRONG&gt;CSU&lt;/STRONG&gt; and &lt;STRONG&gt;TZASC&lt;/STRONG&gt; is documented in the security manual.&amp;nbsp; Although you can also get some &lt;STRONG&gt;TZASC&lt;/STRONG&gt; documents from ARM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 17 Jan 2014 22:52:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240939#M630</guid>
      <dc:creator>billpringlemeir</dc:creator>
      <dc:date>2014-01-17T22:52:54Z</dc:date>
    </item>
    <item>
      <title>Re: Preventing a CPU core from accessing peripheral registers</title>
      <link>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240940#M631</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Bill,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good information!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Andreas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 Jan 2014 10:03:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Vybrid-Processors/Preventing-a-CPU-core-from-accessing-peripheral-registers/m-p/240940#M631</guid>
      <dc:creator>andreasgoergner</dc:creator>
      <dc:date>2014-01-20T10:03:29Z</dc:date>
    </item>
  </channel>
</rss>

