本帖最后由 mxkw0514 于 2022-3-21 00:00 编辑
核心算法或许能增加一个嵌入式应用产品的竞争力,既然如此,这个算法肯定是不会对外公布的,也就会将其保护起来,如何保护呢?最近申请到了AT-START-F425开发板,有幸体验一番。该开发板搭载了雅特力自行研发的安全库—sLIB(Security Library),这个特性非常实用,面向于方案商和实际客户。方案商根据客户需求,开发了相关算法,并将其烧录到Flash中的某个划分好的区域(安全区),该区域在其后的每次客户程序下载后都不可擦除,除非输入正确的密码,安全区中的具体内容客户不可知,却能够根据符号定义文件调用该算法进行二次开发。AT-START-F425开发板如下所示:
AT-START-F425开发板实物图
AT-START-F425开发板的单片机型号是AT32FR8T7,该单片机的FLASH大小是64K,也不算太大,符合常规使用。官方提供了一组例程—at32f425_slib_demo,该例程包含了两个工程(project_l0和project_l1),其中project_l0是”开发商“的,project_l1是面向客户的,当然我们都能使用,也能看到里面的具体内容,就当作有这两个假想的人存在。开放商根据客户的要求研发了一个数字低通滤波器的算法(project_l0),并将该算法写进程序,封装在单片机FLASH的4—19扇区(安全区),并将该批芯片移交给客户,客户在已有的基础上进行应用(project_l2),完成某一产品。其实意图如下所示:
FLAH分区示意图
FLAH安全区配置开发商利用雅特力ICP工具将project_l0.hex下载进AT32FR8T7(在下载前设置好了密码:0x55665566),以后关于其数字低通滤波器滤波器的那部分算法将留在单片机中的安全区内,其后,客户(或者其他人员)将二次开发的程序下载进AT32FR8T7,只能擦除FLASH中非安全区内容,除非其知道密码,才能利用ICP工具将FLASH安全区内容擦除。ICP工具如下图所示:
ICP工具
雅特力自研的sLIB安全库是一个实用的特性,其提供的at32f425_slib_demo例程及其里面的说明文档很清晰的展示了sLIB安全库的使用。不过在学习这个例程过程中还是出了点小插曲,我原本以为是单片机的某一个引脚输入不同频率正弦波的混合信号,然后该低通滤波算法滤除高频信号,再将结果与参考结果进行阈值比较,并将结果通过LED灯的现象展示出来。但是我找了好久也没有看到GPIO口的配置,后来才发现那个混频信号作为一个已知的数组放在一个文件,不过这也无关紧要了。
工程功能图
为了试验一下该sLIB安全库的作用,我对AT-START-F425开发板下载了complementary_signals例程程序,发现PWM互补输出完全没有起作用,究其原因,是0x08001000-0x08005000安全扇区里面的内容没有被删除,而我在输入错误的密码前提下也无法利用ICP工具将安全区内容删除,所以该安全区保护得还可以。那么究竟怎么才能删除安全片区得内容呢?当然是输入正确得密码了,具体操作如下所示:
安全区内容删除操作
|