AT32 F435简介1/N Security Library

news/2024/7/10 19:36:32 标签: 开源, AT32 F435

AT32 F435简介1/N Security Library

  • 1. 源由
  • 2. Security Library
  • 3. 总结
  • 4. 参考资料

1. 源由

  1. 对比STM32 F405进行AT32 F435 MCU的资料研读,期望获取更多差异化信息;
  2. 配合ChibiOS的porting工作,有理有据;
  3. 寻找AT32 F435的一些亮点功能和特性;

2. Security Library

随着越来越多的MCU应用程序需要复杂的算法和中间件解决方案,如何保护软件解决方案提供商开发的IP代码(如核心算法)已成为一个重要问题。

为了满足这一需求,AT32F435/437系列设计了一个安全库(sLib),用于保护重要的IP代码不被最终用户程序更改或读取。

  • 安全库(sLib)是由主内存中受到保护的代码定义区域。软件解决方案提供商将核心算法存储在sLib中以进行保护。

Security library (sLib) is a defined area protected by a code in the main memory. Software solution providers store core algorithms in sLib for protection. The rest of the area can be used for secondary development by end users.

  • 安全库包括只读区(SLIB_READ_ONLY)和指令区(SLIB_INSTRUCTION),可以部分或全部用作只读区或指令区。

Security library includes the read-only area (SLIB_READ_ONLY) and instruction area ((SLIB_INSTRUCTION), and it can be partially or completely used as the read-only area or instruction area.

  • 只读区域(SLIB_READ_ONLY)的数据可以通过I-Code和D-Code总线读取,但不能写入。

Data of the read-only area (SLIB_READ_ONLY) can be read by I-Code and D-Code buses but cannot be written.

  • 指令区中的程序代码(SLIB_instruction)只能由MCU通过I-Code总线获取(仅可执行),而不能通过DCode总线读取访问(包括ISP/ICP/调试模式或从内部RAM引导)来读取,通过读取数据来访问SLIB_ESTRUCTION操作将返回所有0xFF。

Program codes in the instruction area (SLIB_INSTRUCTION) can only be fetched by MCU through I-Code bus (only executable), and cannot be read by reading access through DCode bus (including ISP/ICP/debug mode or boot from internal RAM), for accessing SLIB_INSTRUCTION by reading data operation will return all 0xFF.

  • 除非键入了正确的代码,否则无法擦除安全库中的程序代码和数据。如果键入了错误的代码,在尝试写入或删除安全库代码时,FLASH_STS寄存器中的EPERR=1将发出警告消息。

Program codes and data in security library cannot be erased unless the correct code is keyed in. If a wrong code is keyed in, in an attempt of writing or deleting security library code, a warning message will be issued by EPPERR=1 in the FLASH_STS register.

  • 最终用户对主闪存的大规模擦除操作不会擦除安全库中的代码和数据。

Mass erase operation to the main Flash memory by end users will not erase the codes and data in security library.

  • 启用sLib后,用户还可以通过将先前定义的密码写入sLib_PWD_CLR寄存器来解锁sLib保护。禁用安全库保护后,MCU将擦除整个主存储器,包括sLib。因此,即使由软件解决方案提供商定义的代码被泄露,程序代码也受到保护以防止泄露。

After sLib is enabled, users can also unlock the sLib protection by writing the previously defined password in the SLIB_PWD_CLR register. After the security library protection is disabled, the MCU will erase the whole main memory, including the sLib. Therefore, the program codes are protected against leakage even if the code defined by the software solution provider is leaked.

注:具体使用方法,详见:AN0081_AT32F435_437_Security_Library_Application_Note

3. 总结

这是一个非常好的功能,该方法可以非常好的管控知识产权,前提条件是智能生产产线的建立和质量管控。

4. 参考资料

【1】Ardupilot开源飞控之ChibiOS简介
【2】ARTERY AT32F435
【3】ST STM32F405/415


http://www.niftyadmin.cn/n/5270182.html

相关文章

喜报丨迪捷软件入选2023年浙江省信息技术应用创新典型案例

12月6日,浙江省经信厅公示了2023年浙江省信息技术应用创新典型案例入围名单。本次案例征集活动,由浙江省经信厅、省密码管理局、工业和信息化部网络安全产业发展中心联合组织开展,共遴选出24个优秀典型解决方案,迪捷软件“基于全数…

Linux 操作系统 002-VMware Workstation的相关操作

Linux 操作系统 002-VMware Workstation的相关操作 本节关键字:Linux、VMware Workstation、克隆、快照、迁移、删除、VMware Tools安装、共享文件夹 本节相关指令: 设置网络连接方式:桥接模式、NAT模式、仅主机模式 桥接模式:…

TCP报文头(首部)详解

本篇文章基于 RFC 9293: Transmission Control Protocol (TCP) 对TCP报头进行讲解,部分内容会与旧版本有些许区别。 TCP协议传输的数据单元是报文段,一个报文段由TCP首部(报文头)和TCP数据两部分组成,其中TCP首部尤其重…

Sci. Rep. | 一个对任意分子体系实现准确且高效几何深度学习的通用框架

这篇工作是来自纽约城市大学/康奈尔医学院谢磊团队的一篇论文。作者提出了一个通用框架,PAMNet,可以对任意分子体系实现准确且高效的几何深度学习。在小分子性质、RNA三维结构以及蛋白质-配体结合亲和力的预测任务上,PAMNet在准确性和效率方面…

基于深度学习的人脸测距&社交距离过近警报系统

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 近年来,随着深度学习技术的快速发展,人脸识别技术在各个领域得到了广泛应用。其中,人脸测距和社交距离过近警报系统成为了人们…

HarmonyOS鸿蒙应用开发——数据持久化Preferences封装

文章目录 数据持久化简述基本使用与封装测试用例参考 数据持久化简述 数据持久化就是将内存数据通过文件或者数据库的方式保存到设备中。HarmonyOS提供两两种持久化方案: Preferences:主要用于保存一些配置信息,是通过文本的形式存储的&…

Google Scholar引用没有GB/T格式

想选择GB/T 参考文献格式,却无法找到这种引用方式。 1、GB/T 7714:(我国)国家标准的代号由大写汉语拼音字母构成。 强制性国家标准的代号为"GB",推荐性国家标准的代号为"GB/T"。 国家标准的编号由…

torch中张量与数据类型的介绍

PyTorch张量的定义介绍 PyTorch最基本的操作对象是张量,它表示一个多维数组,类似NumPy的数组,但是前者可以在GPU上加速计算 初始化张量 ttorch.tensor([1,2]) # 创建一个张量 print(t) t.dtype #打印t的数据类型为torch.int…