【NUCLEO-L552ZE测评】-1: Start from TrustZone
<div class='showpostmsg'> 本帖最后由 MianQi 于 2020-12-21 17:32 编辑<p>按照STM32 L5系列的介绍,这款芯片的最大亮点是启用了M33内核,最显著的特色是TZ(TrustZone)的出现。</p>
<p> </p>
<p>TrustZone,我把它译作:可信区。这是一种STM32提供的安全(secure)机制,但是,对这里所说的“安全”要有正确的理解。我的理解是:“安全”分框架安全和内容安全。内容安全,说的是私密性,靠加密实现——无论软件或硬件加密;框架安全,说的是健壮性,靠隔离(isolate)实现,至少STM32在M33的TrustZone里是这么做地。</p>
<p> </p>
<p>那所谓的“隔离”是什么意思呢?它指的是,一个系统里有确定的部分,有不太确定或者不确定的部分。确定的部分指的是常规的、通用的、已经定形了的部分,基本上可以认为是没有bug地;不确定的部分指的是实验或者试验性质的、有可能是拷贝(fork)来的,可能含有bug地。对这两部的“隔离”,意味着,可信区的对象可以访问或者调用不可信区的对象,反之不行,类似于硬件电路里的基于二极管的极性保护(个人理解)。</p>
<p> </p>
<p>那可信区与不可信区由谁来划分呢?用户。</p>
<p> </p>
<p>下面通过一个例子来演示一下TZ(TrustZone)的用法。需要说明的是,我是在Ubuntu 20.04.1 LTS上运行STM32CubeIDE,这里的界面布局跟Windows版有很大的不同,我将逐一用截图显示每一步的设置在哪里。</p>
<p> </p>
<p>首先看一下,在Ubuntu上安装了STM32CubeIDE之后的icon界面:</p>
<p></p>
<p> </p>
<p>启动IDE:</p>
<p></p>
<p> </p>
<p>初次运行STM32CubeIDE的预安装界面:</p>
<p></p>
<p> </p>
<p>新建一个STM32项目:</p>
<p></p>
<p> </p>
<p>选板子:</p>
<p></p>
<p> </p>
<p>最下边一个:</p>
<p></p>
<p> </p>
<p>这个时候要把板子插上:</p>
<p><br />
设置项目名称和工程路径:</p>
<p></p>
<p> </p>
<p>注意:勾选“Enable TrustZone”:</p>
<p></p>
<p> </p>
<p>下载固件:</p>
<p></p>
<p> </p>
<p>初步设置完成:</p>
<p></p>
<p> </p>
<p>设置GPIO:</p>
<p>在GPIO中选择“show all”,才会出现PG8/PG7:</p>
<p></p>
<p> </p>
<p>在“Connectivity”中选择“LPUART1”:</p>
<p></p>
<p> </p>
<p>设置为“Cortex-M33 non secure”:</p>
<p></p>
<p> </p>
<p>将设置为:Asynchronous,波特率设置为:115200。(这个时候要注意输入法的切换,如果还是汉语输入,将会是:115200)</p>
<p></p>
<p> </p>
<p>在“Clock Configuration”中,将APB1配置为55MHz。注意是peripheral clocks,而不是Timer clocks.</p>
<p></p>
<p> </p>
<p>在“Secutity”中配置“GTZC”:</p>
<p></p>
<p> </p>
<p>上述的截图位置跟windows下几乎都不相同(这里假设示例中的截图取自windows版的STM32CubeIDE)但是功能的设置是完全一样地——当然还有一处不同,就是当我参照这个教程的时候(https://www.stmcu.com.cn/ecosystem/chip/chipfamily-STM32L5-4),最后一步是“EXTI 14 line 14 interrupt”,而不是“13”。</p>
<p></p>
<p> </p>
<p>在“NVIC Settings”中设置“Global TrustZone controller global interrupt”使能:</p>
<p></p>
<p> </p>
<p>接下来的一部出现了问题:示例中用的是“EXTI line 13 interrupt”,而在我这里的界面中只有“EXTI line 14 interrupt””:</p>
<p></p>
<p>实际上,这是我这里的测试中发现的唯一一处跟示例中真正的不同,对接下来代码的使用有什么影响,且看下一帖:【NUCLEO-L552ZE测评】-2: Stay in TrustZone。</p>
<p> </p>
<p>在现有的状态下点击生成代码:</p>
<p></p>
<p> </p>
<p>这是现在的项目目录:</p>
<p></p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p><strong><a href="https://bbs.eeworld.com.cn/elecplay/content/153" target="_blank">ST新品NUCLEO-L552ZE-Q(Cortex-M33)</a></strong></p>
<p>汇总贴:<a href="https://bbs.eeworld.com.cn/thread-1152571-1-1.html" target="_blank">https://bbs.eeworld.com.cn/thread-1152571-1-1.html</a></p>
<p>trustzone 听着很安全,没用过,不知道麻不麻烦难不难。</p>
<p>从目前了解的情况来看,不麻烦,也不难,但对于这个“安全”的认识要恰如其分——这里说的“安全”,有限度的“分隔”,而非“加密”。“分隔”通过硬件实施,用软件设置,在使用的过程中可以动态调用。</p>
页:
[1]