历史上的今天
返回首页

历史上的今天

今天是:2026年01月12日(星期一)

正在发生

2023年01月12日 | STM32 MCU内置的一些主要硬件安全属性

2023-01-12 来源:zhihu

对于功能安全,ST MCU从芯片内置的硬件安全属性,经过认证的软件自检库和完备的安全文档三个层面来支持STM32用户在系统级进行开发,达到要求的功能安全等级。

下表中列出了STM32MCU内置的一些主要硬件安全属性。下面我们一起来看看这些属性在功能安全中的用处。

双看门狗:独立看门狗和窗口看门狗

看门狗是我们常用到的针对CPU运行状态监测的手段之一。它本质上就是一个定时器,启动之后,需要不断的去刷新(我们通常把这个动作叫做“喂狗”),否则当看门狗的定时器减到规定的值后,就会引起系统复位。我们可以利用它来检测程序是否跑飞,并通过芯片复位,来让系统恢复到正常状态。

STM32 MCU提供两个看门狗,独立看门狗和窗口看门狗。

从独立看门狗的名字可以看出,它的特点是拥有独立于系统时钟的时钟。独立看门狗使用LSI时钟,这样使得它与系统时钟分离开,即使系统时钟出现故障,独立看门狗也能正常工作。 独立看门狗还支持“硬件看门狗”功能,通过选项字使能该功能后,MCU只要一上电,就会启动运行,开启对系统的保护。

窗口看门狗使用的是系统时钟,它的特点是必须在一个窗口时间内完成“喂狗”的动作,否则就会引起系统复位,所以窗口看门狗对“喂狗”的要求更精确了。

窗口看门狗还有一个EWI(early wakeup interrupt)的功能, 这个功能使能后,可以在窗口看门狗引起系统复位之前,先产生一个EWI中断,在这个中断里,给了系统软件一个机会去完成一些必要的安全动作或者数据保存的工作。

部分MCU系列的窗口看门狗也支持“硬件看门狗”的功能。

独立看门狗和窗口看门狗都支持在调试模式下“冻结”计数,以及在低功耗模式下继续工作的功能。

看门狗可以用在内核检测,时钟检测和电源检测中。

电源监测

关于电源检测,STM32MCU的可编程电压监测(PVD),模拟电压监测(AVD)和电池电压监测等功能可以用来检测VDD,VDDA和电池电压是否在正常的电压范围内。

时钟安全系统CSS

关于时钟的检测,MCU内部的时钟安全系统(CSS)可以用来检测外部高速时钟(HSE)和外部低速时钟(LSE)是否丢失。

当检测到HSE时钟丢失后,CSS可以触发定时器的“刹车”功能和系统中断,并自动切换到内部高速时钟,软件可以根据这些触发的事件,制定相应的保护措施。

LSE是RTC的时钟源,当检测到LSE丢失后,RTC不能再使用LSE时钟源,并产生CSS中断,在中断中需要将RTC切换到其他时钟源。

CSS只能检测时钟是否丢失。对于时钟存在但发生偏移的情况,可以通过下图所示的时钟交叉测试来进行检测。

该测试利用了MCU的TIMER模块的输入捕获功能,LSI时钟内部连接到TIMER的一个输入捕获通道,当分别使用HSE或者HSI作为计数时钟时,通过检测LSI的频率是否在正常范围内,从而间接的检测了HSE/HSI的频率。

不同STM32系列用到TIMER模块不一样,具体请查看相应的参考手册。

SRAM奇偶校验位

部分STM32系列支持带奇偶校验的SRAM。

奇偶校验可以用来检测SRAM的瞬时和永久性故障。比如由于电磁干扰导致的SRAM中的数据错误。由于奇偶校验的检测原理,使得它只能检测出奇数个的比特位错误,并且也不能对错误数据进行纠正。

STM32 MCU带奇偶校验的SRAM每个字节增加了一位奇偶校验位,所以SRAM的数据总线是36位。在对SRAM进行写操作时,硬件自动计算并存储奇偶校验;当进行读操作时,硬件自动进行校验。

如果检测到错误,会立刻产生不可屏蔽中断(NMI),并且可以配置成可以触发定时器的“刹车”功能。

硬件ECC

ECC全称Error Checking and Correcting,是一种错误检查和纠正的技术。跟奇偶校验一样,它也需要额外的空间来存储校验码。比奇偶校验更强的是,ECC可以做到单比特位错误校正和双比特位错误检测。对于由于电磁干扰等原因造成的内存瞬时故障或者永久性故障,ECC都可以检测。

ECC检测在读操作时进行,当检测到一个比特位的错误时,读出来的数据就是已经纠正后的数据,当检测到两个比特位的错误时,ECC无法纠正,但是可以告诉应用程序该位置的数据有错。

STM32部分MCU系列(STM32H7/L4/G0/G4/L5)支持Flash ECC,现在只有H7支持SRAM ECC和Cache ECC。

当检测到单比特/双比特ECC错误时,出错地址会被自动保存到寄存器中(需要使能该功能),并且可以通过寄存器配置产生对应的错误中断。

检测到双比特错误时,还将触发NMI中断,并可以将出错信号连接到TIMER的“刹车”功能。

请参考AN5342了解更多关于ECC的操作细节。

硬件CRC

在Flash自检的程序中会用到CRC来检测Flash内容的完整性。其检测思路一般是:在程序编译完成后,计算整个程序的CRC值(第一次计算CRC值),然后将这个CRC值添加到可执行文件末尾。再将带有CRC校验值的可执行文件烧录到MCU中。在程序启动后,由程序中的自检代码重新根据当前Flash里内容(不包括预存的CRC校验值)计算一次CRC值(第二次计算CRC值),再与之前预先计算并烧录到Flash中的CRC校验值(第一次计算的值)进行比较,如果一致就通过检测。

第二次计算CRC值的时候是由运行在MCU中的自检程序完成的,这部分工作可以利用软件代码完成,也可以利用MCU的硬件CRC完成。STM32的全系列都提供了硬件CRC的功能,默认使用CRC32多项式0x4C11DB7。

请参考AN4187了解更多关于CRC的使用细节。

存储器保护单元MPU

存储器保护单元MPU是Cortex-M内部的组件。Cortex-M0不支持MPU,所以除了基于Cortex-M0内核的STM32F0以外,其他STM32产品都支持存储器保护单元 (MPU)。

MPU可以用来设置部分数据只能被一些特权任务访问或者是只读;可以将SRAM空间定义为“不可执行代码”,从而防止注入攻击代码;可以用来检测堆栈溢出和数组越界;还可以通过MPU设置存储器的缓冲,缓存,共享等属性。

在功能安全的应用中,我们可以利用MPU来对安全相关的关键数据进行隔离,从而防止其被其他程序意外修改。

关于MPU的使用细节,请参考AN4838。

其他

除了前面介绍的这些硬件的功能外,还有:GPIO,Timer,比较器等外设的寄存器锁定功能,可以配置参数不会被软件意外修改;定时器PWM输出的“刹车”功能,它的目的是保护由PWM信号驱动的功率开关,就是当系统出现故障时,可以触发该功能,关闭PWM输出,保证系统处于安全状态。而触发“刹车”功能的输入信号,既可以是来自MCU内部的系统级故障(比如CSS检测到的时钟失效,SRAM的奇偶校验错误等),也可以是连接到特定引脚的外部信号。不同的STM32系列支持的输入信号来源不同,具体使用请见相应的参考手册。

部分STM32系列还支持“内核进入lockup状态”作为“刹车”功能的触发源。关于“内核进入lockup状态”是指,当MCU已经因为出错进入fault中断后,在fault中断服务程序中又触犯了fault条件,这时就会进入lockup状态。

还有一些外设比如串口,I2C,CAN等,也内置有协议错误检测,CRC校验等功能,可以用于该外设使用过程中的安全检测。

STM32内置安全属性还很多,这里就不一一列举了。

请参考各个STM32系列的安全手册,来获取详细的信息。


推荐阅读

史海拾趣

Hisetec Electronic Co Ltd公司的发展小趣事

背景:随着环保意识的增强,消费者对电子产品的环保要求也越来越高。Hisetec Electronic Co Ltd公司积极响应这一趋势,将绿色环保理念融入产品设计、生产和回收的全过程。

发展:公司投入大量资金研发环保材料和生产工艺,确保产品从源头到终端都符合环保标准。同时,公司还建立了完善的电子废弃物回收体系,对废旧电子产品进行拆解、分类和再利用。这些举措不仅赢得了消费者的信任和支持,还推动了整个电子行业的绿色升级。

兵字(BingZi)公司的发展小趣事

为了进一步提升公司的管理水平和市场竞争力,兵字公司决定进行企业规范化和市场化运作。公司建立了完善的管理体系和运营机制,优化了业务流程和组织结构,提高了工作效率和响应速度。同时,兵字公司还积极引进外部投资和战略合作伙伴,为公司的发展注入了新的活力和动力。

Euroquartz公司的发展小趣事

Euroquartz自创立之初,就将产品质量和客户满意度置于公司运营的核心。为了确保这一点,公司引入了完整的AS9100 Rev D质量体系,并通过了相应的认证。这一体系要求Euroquartz在制造程序和可追溯性方面保持完整的记录,审批机关会定期进行审核,确保品质始终如一。这种对品质的执着追求,为Euroquartz赢得了客户的信赖,也为公司的发展奠定了坚实的基础。

ETC1公司的发展小趣事

万集科技是ETC行业中另一家知名的企业。公司专注于ETC设备的研发、生产和销售,以及ETC系统的集成与服务。在市场拓展方面,万集科技采取了多元化的策略,不仅与国内众多高速公路管理机构建立了合作关系,还积极开拓海外市场。通过不断的市场拓展和品牌建设,万集科技逐渐成为了ETC行业中的佼佼者。

ABB Group公司的发展小趣事

华铭智能是一家在ETC领域具有深厚技术积累的企业。为了推动ETC行业的发展,华铭智能积极寻求跨界合作的机会。公司与多家汽车制造商、智能交通系统提供商等建立了紧密的合作关系,共同研发和推广ETC技术。通过跨界合作,华铭智能不仅拓展了自身的业务范围,还推动了ETC技术在更多领域的应用。

Boundary Devices公司的发展小趣事

近年来,电子行业面临着诸多变革和挑战,如物联网的快速发展、人工智能的崛起等。面对这些变革,Boundary Devices积极调整战略,加强在物联网和人工智能领域的研发投入,推出了一系列符合市场趋势的新产品。同时,公司还加强与高校和研究机构的合作,共同推动电子行业的创新与发展。

问答坊 | AI 解惑

高速数据传输问题

请问一下数字电路高手,PCBlay out 高速信号应注意那些问题? 2.我有一块硬盘的板,从USB的输入端D+到芯片的输入端为0.3R正常吗?…

查看全部问答>

世界最大LED工程竣工阿联酋(有图有真相)

据国外媒体报道,如果你认为你邻居的假日灯光秀太过明亮奢华的话,那么等到你看到最近在阿联酋阿布扎比竣工的世界上最大的LED工程,你可能就会改变自己的看法了。雅斯酒店(Yas Hotel)由纽约渐近线建筑事务所(asymptote architecture)设计,而照明则 ...…

查看全部问答>

一道测试题 教你一个终身受用的小哲理

replyreload += \',\' + 305362;在一个暴风雨的晚上,你开着一辆车,经过一个车站。 有三个人正在焦急的等公共汽车。 一个是快要临死的老人,他需要马上去医院。 一个是医生,他曾救过你的命,你做梦都想报答他。 还有一个女人/男人,她/他是你 ...…

查看全部问答>

华为模拟电路讲义

华为模拟电路讲义,,很好奥。。 需要的话下下来看看吧。。…

查看全部问答>

电子设计比赛要点

本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 电子设计比赛要点1、不要追求高精尖,要通。电赛时间有限,与其花时间去弄自己没接触过的东西,不如把自己已经学到的东西弄透。对大部分人来讲,如果之前没有接触DSP、FPGA、ARM之类高端的控制器,可 ...…

查看全部问答>

LTIB介绍和安装(三)

3.运行ltibcd到ltib安装到的目录,这个是在上面install过程中让你选择的。然后:./ltib即可运行,第一次运行,实际上就是启动build image的工作,最后会调用编译器等工具连构建出最终内核image和文件系统image。这个过程可能出现错误(但我没碰到) ...…

查看全部问答>

alsa驱动不能初始化硬件

在用alsa的应用程序测试开发板上的音频放音的时候,下面的函数出错了:         /* Write the parameters to the driver */         rc= snd_pcm_hw_params(handle,params);       &nbs ...…

查看全部问答>

RC500的问题,tx1和tx2怎么检测不出信号??有做过的给点帮助~~

最近做个读卡器的东西,用的51单片机+RC500 。目前参考了一些网上资料,编写了初始化和发送部分程序,往 txcontronle 写0x03 ,怎么没有信号发出?? 有用过的朋友给点提示??…

查看全部问答>

WIFI 测试

我现在有一个 Media server 项目,要加WIFI,目前我已有用VIA Usb wifi 模块的公版lay 到我的系统中,我怕我的嵌入式系统会干扰到RF 信号,想测试RF的一些简单参数,但我因是新手,不知要怎么测。请达人帮忙。测WIFI 要测哪些参数,我有安捷伦的频 ...…

查看全部问答>

来电子工程世界两年有余

第一次来电子工程世界是我学长推荐的,因为里面有我们学校的一个小模块:淮安信息职业技术学院。没事也会去踩踩! 很感谢电子工程世界,让我学到了不少东西,没事的时候我喜欢泡在里面当个守望者 (不发言型的!水平低怕误导人家),看大侠们发帖 ...…

查看全部问答>