Jlink使用技巧之

您所在的位置:网站首页 查看郑州市地图 Jlink使用技巧之

Jlink使用技巧之

#Jlink使用技巧之| 来源: 网络整理| 查看: 265

吃水不忘挖井人:

(1条消息) STM32F4(Flash读保护)_stm32f4读保护_XinLiBK的博客-CSDN博客

        在实际的产品发布中,如果不对储存在单片机Flash中的程序做一些保护的话,就有可能被一些不法公司,通过仿真器(J-Link,ST-Link等)把Flash中的程序读取回来,得到bin文件或hex文件,然后去山寨产品。所以我们需要对程序进行保护,一种比较简单可靠的方法就是把Flash设置成读保护。

1. 读保护函数及解除读保护函数体

/**************************************************************** * Function: Flash_EnableReadProtection * Description: Enable the read protection of user flash area. * Input: * Output: * Return: 1: Read Protection successfully enable * 2: Error: Flash read unprotection failed *****************************************************************/ uint32_t Flash_EnableReadProtection(void) { /* Returns the FLASH Read Protection level. */ if( FLASH_OB_GetRDP() == RESET ) { /* Unlock the Option Bytes */ FLASH_OB_Unlock(); /* Sets the read protection level. */ FLASH_OB_RDPConfig(OB_RDP_Level_1); /* Start the Option Bytes programming process. */ if (FLASH_OB_Launch() != FLASH_COMPLETE) { /* Disable the Flash option control register access (recommended to protect the option Bytes against possible unwanted operations) */ FLASH_OB_Lock(); /* Error: Flash read unprotection failed */ return (2); } /* Disable the Flash option control register access (recommended to protect the option Bytes against possible unwanted operations) */ FLASH_OB_Lock(); /* Read Protection successfully enable */ return (1); } /* Read Protection successfully enable */ return (1); } /**************************************************************** * Function: Flash_DisableReadProtection * Description: Disable the read protection of user flash area. * Input: * Output: * Return: 1: Read Protection successfully disable * 2: Error: Flash read unprotection failed *****************************************************************/ uint32_t Flash_DisableReadProtection(void) { /* Returns the FLASH Read Protection level. */ if( FLASH_OB_GetRDP() != RESET ) { /* Unlock the Option Bytes */ FLASH_OB_Unlock(); /* Sets the read protection level. */ FLASH_OB_RDPConfig(OB_RDP_Level_0); /* Start the Option Bytes programming process. */ if (FLASH_OB_Launch() != FLASH_COMPLETE) { /* Disable the Flash option control register access (recommended to protect the option Bytes against possible unwanted operations) */ FLASH_OB_Lock(); /* Error: Flash read unprotection failed */ return (2); } /* Disable the Flash option control register access (recommended to protect the option Bytes against possible unwanted operations) */ FLASH_OB_Lock(); /* Read Protection successfully disable */ return (1); } /* Read Protection successfully disable */ return (1); }

2. 函数的声明;

3. 添加固件库函数:stm32f4xx_flash.c

4.  在调用文件内进行外部函数声明:

extern uint32_t Flash_EnableReadProtection(void); extern uint32_t Flash_DisableReadProtection(void);

5. 一般通过串口进行调用。

6. 调用Flash_EnableReadProtection(void)后,没有测试是否能读出来;

  调用Flash_DisableReadProtection(void);后,串口工作不正常,下电后上电也不正常,重新下载程序后正常。

  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3