历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2018年04月23日 | STM32F4(Flash读保护)

2018-04-23 来源:eefocus

1,目的

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


2,开发环境

        1,适用芯片:STM32F4全部芯片

        2,固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0

        3,IDE:MDK517


3,程序源码


/**************************************************************** 

 * 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);  

}  


推荐阅读

史海拾趣

Dean Technology公司的发展小趣事

为了进一步扩大市场份额,Dean Technology公司开始积极拓展国际市场。他们通过设立海外办事处、与当地企业建立合作关系等方式,将产品推向全球。在这个过程中,公司不断优化产品设计,提高生产效率,以满足不同国家和地区客户的需求。随着国际市场的不断拓展,Dean Technology的高压二极管产品逐渐在全球范围内获得了良好的口碑。

Charcroft Electronics Ltd公司的发展小趣事

Charcroft Electronics Ltd公司深知人才是企业发展的核心力量。因此,公司注重人才培养和团队建设,通过内部培训、外部引进等方式,打造了一支高素质、专业化的员工队伍。这支队伍不仅具备丰富的行业经验和专业技能,还具备创新意识和团队协作精神,为公司的持续发展提供了有力的人才保障。

芯佰微(Corebai)公司的发展小趣事

芯佰微始终将品质管理作为公司的核心工作之一。公司建立了严格的质量管理体系,从原材料采购到产品生产、测试、包装等各个环节都进行严格的质量控制。同时,芯佰微也非常注重客户服务,始终将客户的需求放在首位,及时解决客户在使用过程中遇到的问题。这些措施使得芯佰微赢得了客户的广泛信任和好评。

Aplus Integrated Circuits公司的发展小趣事

Aplus Integrated Circuits公司在成立之初,便专注于集成电路的研发与生产。公司创始人凭借在半导体行业多年的积累,带领团队攻克了一系列技术难题,成功研发出具有高性能、低功耗特点的集成电路产品。这一技术突破为公司赢得了市场的认可,奠定了其在行业内的地位。

Connector City公司的发展小趣事

随着电子行业的快速发展,连接器技术也在不断更新换代。Connector City公司意识到,只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了研发投入,组建了一支高素质的研发团队,专注于连接器技术的创新研究。经过多年的努力,公司成功开发出了一款具有高性能、高可靠性和高稳定性的新型连接器产品,赢得了客户的广泛认可和好评。

Display Elektronik GmbH公司的发展小趣事

面对数字化浪潮的冲击,Display Elektronik GmbH积极拥抱数字化转型。公司利用大数据、云计算等先进技术,实现了生产、销售、服务等各个环节的数字化管理。这种数字化转型不仅提高了公司的运营效率和管理水平,还为客户提供了更加便捷、高效的服务体验。在数字化转型的推动下,Display Elektronik GmbH的竞争力得到了显著提升。

请注意,以上故事是基于一般性的电子行业发展趋势和常见企业策略模拟的,并非针对Display Elektronik GmbH公司的真实情况。

问答坊 | AI 解惑

电话机电路原理的详细解说ppt文件

电话机电路原理的详细解说ppt文件 ---------------------soso--------------------------------- 确认没有找到解压密码,请朋友们注意! 如果有解压密码的朋友,请与大家共享,谢谢!…

查看全部问答>

C8051初始化程序

本帖最后由 paulhyde 于 2014-9-15 03:22 编辑 C8051初始化程序以及各控制寄存器各位的定义说明  …

查看全部问答>

重金 寻求wince上(6410)播放rmvb视频的方案,期待与有成熟技术的公司合作!

重金 寻求wince上(6410)播放rmvb视频的方案,期待与有成熟技术的公司合作! 联系QQ:314629407 …

查看全部问答>

外部串口造成ActiveSync软件无法连接的问题

  平台2440 5.0BSP   是这样的,我把外部串口B加载后,会造成ActiveSync软件无法连接,PC右下角会提示“无法识别设备”   我把该串口的注册表去掉,马上又可以连接了,这个确实是这个串口引起的。   我 ...…

查看全部问答>

招聘程序员

招聘程序员: 具体要求见: www.chinadacs.cn …

查看全部问答>

请问ST_ARM关于Lwip!

                                 你好,我的Lwip能够接收到数据,但是无法ARP回显,我用PC机ping的时候,能够收到PC的ping数据包,但是Lwip就是不回 ...…

查看全部问答>

请教绝对值的准确用法

请教各位同仁:int变量取绝对值用fabsf,fabs,fabsl的哪一个,谢谢!…

查看全部问答>

LaunchPad + 74595 io extender 實作

$(\'swf_eLZ\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMzkxNDU0MDAw/v.sw ...…

查看全部问答>

各位大侠,stm32代码下载进去了,必须复位几次串口才能往外发送数据,接收正常

各位大侠,stm32代码下载进去了,必须复位几次串口才能往外发送数据,接收正常?这是什么情况…

查看全部问答>