跟着AIoT商场的开展,MCU承当的运算度越来越杂乱,推进着MCU功用不断提高,部分高功用MCU能够支撑AI深度学习。曩昔因为MCU功用和安全等原因,大部分算法需在服务器完结后再下传到终端履行,边际核算的开展,许多中心算法可在终端完结,大大提高了功率。因而,怎么维护开发者开发出来的中心算法等知识产权代码,便成为微控制器使用中一项很重要的课题。在MCU开发中,咱们常用的加密办法主要有以下几种:
● 经过设置特定装备寄存器
● 添加外部加密芯片
● 程序固件加密
● UID校验加密
这些加密办法装备通常在擦除flash时都会随芯片而被擦除,并且下流客户除非拿到计划商的源代码或许库(.LIB),不然无法进行进行二次开发。但就算只供给库(.LIB)给客户进行二次开发,中心算法也就走漏了,导致计划商即便仅修正简略的LED灯指示功用,也有必要从头编译完好 BIN 档给客户,无法快速扩展客户群。
雅特力科技AT32系列MCU从规划之初便考虑了这一重要需求,全系列芯片均供给了安全库区(security library,简称sLib)的功用。计划商经过将中心算法代码烧录在MCU特定的sLib区域,以防止重要的代码被歹意修正或读取,并可将芯片供给给终端客户在剩下空白空间进行二次开发,且经过调试东西进行整片擦除时,不会将维护区sLib里的中心代码擦除去,添加了开发的灵活性。
■ 安全库区sLib使用原理
下图1是包括安全库区的主闪存区映射示意图,安全库区的程序代码能够很容易地被终端用户调用并履行,但不能直接被读取,因而到达维护的功用。安全库区的规模巨细是以页(Page)为单位做设定,每一页的巨细依不同类型而不同。安全库区的程序代码及数据,除非输入正确的暗码,不然无法被擦除。
图1 安全库区在主闪存区映射
■ 安全库区启用
默许状态下,安全库区设定寄存器始终是不可读且被写维护。要想对安全库区设定寄存器进行写操作,首要要对安全库区设定寄存器解锁,对SLIB_KEYR寄存器写入指定数值,然后指定的寄存器设定要维护的区域和安全区域暗码。
■ 安全库区维护免除
当安全库区的维护功用被发动后,能够透过在SLIB_PSW寄存器写入从前设置的暗码来
免除维护功用。当免除安全库区的维护时,芯片将会履行主闪存的整片擦除(包括安全库区的内容)。因而即便算法计划商设置的暗码被走漏,也不会有程序代码外泄的疑虑。
■ 烧录办法
1. 计划商和终端用户代码别离烧录:计划商先烧录sLib代码到MCU,然后终端用户再烧录使用代码到MCU;
2. 计划商和终端用户代码兼并烧录:计划商的sLib代码和终端用户的使用代码整合到一个离线项目工程中,经过雅特力的离线烧录东西AT-Link一次下载到MCU。能够依据终究需求装备各种参数,比方约束下载次数、项目文件绑定AT-Link、下载完结后敞开RDP等;
■ 安全库区使用事例
在智能扫地机范畴,途径规划是衡量扫地机功用的重要目标之一,同步定位与建图(simultaneous localization and mapping,SLAM)是完成扫地机高度智能化的关键技能。SLAM技能让扫地机在不知道的环境中,能够使用一种或多种传感器对周围环境进行勘探,树立相应的地图,一起定位自身在地图中的方位。扫地机厂商或计划商可将SLAM算法放置在sLib维护区,并供给函数接口供使用程序调用。下图2为计划商在实践项目中的使用示意图。
图2 使用示意图
■ 安全库区其他用处:
除了维护计划商软件,供给下流客户二次开发之外,还具备下列用处:
● 维护产品公司中心算法: 中心算法由公司特定人员开发,完结后烧录到安全库区,再交由其他人员调用开发,防止离任职工带走公司中心技能;
● 维护出厂参数: 为防止软件晋级时将产品出厂参数也擦除,能够将出厂数据放在安全库区,没有暗码时无法擦除出厂参数;
安全库具体使用办法及典范程序,请参阅雅特力官网使用笔记F403A_sLib:http://www.arterytek.com/html/product/product_AT32F403A.jsp?t=1587549382043