基于海思soc的智能产品开发(mcu读保护的设置)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

对于市场上的产品,除了电路之外,软件保护也是非常重要的一个环节。要是自己辛辛苦苦写的软件,被竞争对手轻易地读取出来,那样造成的损失就太大了。所以不光是soc上面的程序要做好保护,对于mcu上面的程序也要做好保护。

一般来说,soc涉及到soc、ddr、emmc,copy的成本比较高。但是mcu不一样,mcu的电路通常都不太复杂,因此对于mcu内部的程序一定要注意好版权保护。这个时候一般有几种办法解决。

1、直接采用芯片公司的读保护代码

考虑到程序被改写的情况,一般的mcu厂家都会提供读保护的代码,这份代码去和各个厂家或者经销商咨询即可。基本原理就是通过判断flash某一个地址的数据有没有被改写,来添加相关的内容。如果没有被改写,那么就进入读保护的状态。如果已经被改写了,那么默认当前已经是读保护的状态了。

复制代码
void FLASH_MainFlash_ReadProtection_Sample(void)
{
    uint16_t RDP = *((volatile uint16_t *)(0x1FFFF800));

    printf("\r\nTest %s", __FUNCTION__);

    /* Main flash block read protection */
    if (RDP == 0x5AA5)
    {
        printf("\r\nFLASH not read protected, perform protection actions...");

        FLASH_Unlock();
        FLASH_EraseOptionBytes();
        FLASH_ProgramOptionHalfWord(0x1FFFF800, 0x807F);
        FLASH_Lock();

        PLATFORM_DelayMS(100);

        NVIC_SystemReset();
    }
    else
    {
        printf("\r\nFlash read protected!!!");
    }

    while (1)
    {
        PLATFORM_LED_Toggle(LED1);
        PLATFORM_DelayMS(100);
    }
}

采用了读保护之后,也是可以通过st-link utility工具解除读保护,只不过这个时候程序就被擦除了,也能达到保护固件的效果。

2、复用芯片的swclk和swdio

这个时候如果不希望swclk和swdio被使用,那么可以把指定的端口映射成其他的功能。同样经过这一步骤之后,swclk和swdio一般也就没有办法使用了。所以从另外一个角度说,尽量不要使用swclk和swdio这两个pin去做其他的事情。

3、编写校验码

如果对上面的两种方法还不是很放心,那么可以通过使用uid的方法,生成唯一的校验码。这样退一万步说,有人通过jtag、jlink拿到了镜像,也不可以在其他设备上面运行起来,这也是保护自己的一种方法。

4、怎么退出读保护

有的时候,我们希望能够退出读保护,这个时候就会留一些后门,让当前的镜像退出读保护的状态。这些后门,包括但不限于按键、串口、网络、boot和app分开等等。当然,对于这些后门,一定要缩小范围,不然被竞争对手知道了,就比较麻烦了。

5、sop8读保护下的程序开发

有些mcu的pin脚比较少,特别是swclk和swdio会和其他的pin复用。因此建议,开发的时候可以选用pin脚比较多的mcu进行开发。等到开发没有什么问题的时候,最后烧录到sop8上面,不然很多时候,我们会发现烧录只能烧录一次,会比较麻烦。

此外sop上面的资源比较少,想要做成bootloader+app的形式也比较麻烦,因此使用的时候一定要非常小心。不然芯片被频繁的吹下来、焊接上去,也是一件很无奈的事情。

6、没有一种加密是一劳永逸的

实际开发中,我们所做的只是尽量提高破解的时间成本,但事实上没有一种方法是一劳永逸的。所以我们要尽可能隔一段时间改进一下加密方法,这样才能最大程度保护自己的程序没有被人 copy掉。

相关推荐
HUI-4746 小时前
EG1135|SSOP‑16 同步整流降压控制器,大功率外置 MOS 降压优选
单片机·嵌入式硬件·硬件工程
单片机仿真设计7 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
国科安芯7 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
新晨单片机设计8 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
AOI小白新手上路9 小时前
江科协51单片机16-1 DA数模转换实验(PWM 呼吸灯)
单片机·嵌入式硬件·51单片机
hongmai6668889 小时前
告别Wi-Fi,专注Mesh:ESP32-H2-MINI-1U-H2S模组规格与应用
单片机·嵌入式硬件·物联网·5g·h.265
Yiran_G9 小时前
BLE通信距离怎么判断?从发射功率、PHY到天线设计分析
单片机·嵌入式硬件
女神下凡9 小时前
芯参谋(11): 各种存储芯片电路设计
开发语言·嵌入式硬件
HUI-47410 小时前
EG5101|TSSOP‑24 数字算法电流模式同步降压控制器,高性能数字化电源方案
单片机·嵌入式硬件
亿道电子Emdoor10 小时前
【Altium】DWG文件修改图层颜色问题
嵌入式硬件·硬件工程