[APM32F0]

关于APM32F072FLASH选项字节写保护及其解锁写保护

[复制链接]
2287|23
手机看帖
扫描二维码
随时随地手机跟帖
BDW杜兰特|  楼主 | 2022-7-19 10:12 | 显示全部楼层 |阅读模式
#有奖活动# #申请原创# #技术资源# 本人有幸得到一块APM32F072VBT6的开发板。本次就进行测试。在开发当中,我们经常会碰到一些关于FLASH写保护及其解锁问题。那么本期就介绍一下关于FLASH的写保护及其解锁功能。写保护能够保证我们的代码不被别人所随意修改,开启写保护后,程序将无法下载,无法进行FLASH的编程及其擦除,有效的保护了我们FLASH当中的的数据。废话不多少,参考代码放在下方。本次代码是在原有的官方提供的FLASH例程进行了修改编写。我将原有官方的主函数代码注释掉了。换成了自己的。
void Delay(void);
uint32_t return_value;
int main(void)
{
         APM_MINI_COMInit(COM2);
        if((FMC_ReadOptionByteWriteProtection()&0x08) == 0x08 )
        {
                FMC_Unlock();
                FMC_UnlockOptionByte();
                FMC_EraseOptionByte();
                FMC_EnableWriteProtection(FMC_WRP_PAGE_2_3);
                FMC_LockOptionByte();
                FMC_Lock();
                NVIC_SystemReset();               
        }
        FMC_Unlock();
        return_value = FMC_ProgramWord(0x8003000,0x12345678);
        if(return_value == FMC_STATE_WRP_ERR)
   {
                 while(1);
         
         }
         
        FMC_Lock();
         
       
//    uint32_t addr ;

//    APM_MINI_COMInit(COM2);

//    /** Unlock Flash for Clear or Write*/
//    FMC_Unlock();

//    /** Set address*/
//    addr = 0x08007C40;

//    /** Reset Page data*/
//    FMC_ErasePage(addr);

//    /** Read Address data*/
//    printf("After Erase,       addr value = 0x%08x\r\n", *(volatile uint32_t*)addr);

//    /** Write data in address*/
//    FMC_ProgramWord(addr, 0x55555555);

//    /** Read data again*/
//    printf("After ProgramWord, addr value = 0x%08x\r\n", *(volatile uint32_t*)addr);

//    /** Lock Flash*/
//    FMC_Lock();

    for (;;)
    {

    }
}


写保护后我们无法用仿真器进行代码的下载,下载会一直报错。无法烧录程序。所以我们需要进行解锁FLASH。本人用的是JLINK解锁。首先将BOOT0和BOOT1的跳帽都置0,否则连接不是JLINK设备。将BOOT区置0后在选择设备的时候我们选择STM32072VBT6,选着和极海对应的ST同系列(注意:如果不选择ST的同系列下面的解锁步骤将无法实行)。选择好设备之后连接JLINK。只要我们选择ST的同系列JLINK当中的target当中的unsecure chip就会变黑,就可以进行点击解锁芯片。图片如下图当中。解锁完成可以正常下载程序。

使用特权

评论回复
skyred| | 2022-8-8 21:10 | 显示全部楼层
这不是jflash么

使用特权

评论回复
weifeng90| | 2022-8-8 21:17 | 显示全部楼层
学到一招,谢谢分享。

使用特权

评论回复
onlycook| | 2022-8-9 15:55 | 显示全部楼层
学到一招,感谢分享

使用特权

评论回复
lajdfla001| | 2022-8-16 10:31 | 显示全部楼层
这个不错,可以知道写保护和读保护的区别了。

使用特权

评论回复
udaidfa002| | 2022-8-16 11:00 | 显示全部楼层
这个确实不错,感觉学会了很多事情。

使用特权

评论回复
robertesth| | 2022-8-16 20:11 | 显示全部楼层
选项字节写保护怎么操作?  

使用特权

评论回复
hilahope| | 2022-8-16 21:18 | 显示全部楼层
使用stlink可以解锁吗   

使用特权

评论回复
lihuami| | 2022-8-17 16:37 | 显示全部楼层
了解一下。   

使用特权

评论回复
selongli| | 2022-8-18 17:44 | 显示全部楼层
可以代码加密吗  

使用特权

评论回复
wangdezhi| | 2022-8-19 22:43 | 显示全部楼层
APM32F072FLASH最大擦写次数是多少呢   

使用特权

评论回复
usysm| | 2022-8-20 19:35 | 显示全部楼层
为什么会写保护呢?   

使用特权

评论回复
BDW杜兰特|  楼主 | 2022-8-26 11:09 | 显示全部楼层
wangdezhi 发表于 2022-8-19 22:43
APM32F072FLASH最大擦写次数是多少呢

10000次以上

使用特权

评论回复
BDW杜兰特|  楼主 | 2022-8-26 11:09 | 显示全部楼层
usysm 发表于 2022-8-20 19:35
为什么会写保护呢?

写保护防止其它人刷新你FLASH当中的固件

使用特权

评论回复
BDW杜兰特|  楼主 | 2022-8-26 11:10 | 显示全部楼层
hilahope 发表于 2022-8-16 21:18
使用stlink可以解锁吗

没有试过,极海比较推荐JLINK

使用特权

评论回复
BDW杜兰特|  楼主 | 2022-8-26 11:11 | 显示全部楼层
robertesth 发表于 2022-8-16 20:11
选项字节写保护怎么操作?

我上面这个代码就是,可以复制下来直接替换极海例程的MAIN.C函数

使用特权

评论回复
BDW杜兰特|  楼主 | 2022-8-26 11:15 | 显示全部楼层

072不支持国密,加密的话就读写保护。

使用特权

评论回复
MessageRing| | 2022-10-4 20:38 | 显示全部楼层
感觉可以

使用特权

评论回复
AloneKaven| | 2022-11-4 21:32 | 显示全部楼层
选项字节写保护怎么操作?

使用特权

评论回复
Undshing| | 2023-1-3 16:09 | 显示全部楼层
使用stlink可以解锁吗   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

22

帖子

0

粉丝