supernan 发表于 2022-11-25 20:47

如何写保护?

STM32F105RB,使用的是HAL库,参照论坛里的方法,添加读保护、写保护代码。在j-link烧写时,提示 有读保护 或 写保护。但 依然可以烧写。
在STM32F4系列的说明手册里,有提到 写保护。OB_RDP_LEVEL_2。该级别,完全禁止。但这个常数在F1系列的标准库里没有定义(F1库里只有LEVEL_0和LEVEL_1),我参照这个值定义到代码里,似乎不起作用。

请问各位,是如何禁止 F1系列再次烧写的?

chuxh 发表于 2022-11-25 20:54

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

supernan 发表于 2022-11-25 20:56

/OB_RDP_LEVEL_2,在标准库里没有。我参照STM32F4的库,搬过来的。#define OB_RDP_LEVEL_2    ((uint8_t)0xCC)(~病急乱投医)。
//开启写保护,即:禁止写入;
                OptionsBytesStruct.OptionType         = OPTIONBYTE_WRP;
                OptionsBytesStruct.WRPState         = OB_WRPSTATE_ENABLE;
                OptionsBytesStruct.WRPPage            = FLASH_PAGE_TO_BE_PROTECTED;
                OptionsBytesStruct.RDPLevel                = OB_RDP_LEVEL_2;    //   OB_RDP_LEVEL_1
                if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK)
                {
                        return 1;
                }

heweibig 发表于 2022-11-25 20:58

标准库是
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);//使能相应接口的时钟,以及RCC_APB2Periph_AFIO

GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//完全禁用SWD及JTAG
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);   
更多操作

huangchui 发表于 2022-11-25 21:00

用JLINK自带的烧写软件加密;

wyjie 发表于 2022-11-25 21:02

HAL库是

    __HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();             //
    __HAL_RCC_GPIOF_CLK_ENABLE();               //


/* JTAG-DP Disabled and SW-DP Disabled */
__HAL_AFIO_REMAP_SWJ_DISABLE();         //完全禁用SWD及JTAG
    __HAL_AFIO_REMAP_SWJ_NOJTAG();            //禁用JTAG

chenho 发表于 2022-11-25 21:03

产生的副作用
在禁用掉相应的接口方式后,即不能再使用这种方式下载程序了。因此会出现很多人遇到的:“”RAM check failed at :“”或者“NO M-Cortex”.

遇到这个状况,需要再次下载程序,有如下三种办法:

如果只禁用的JTAG,可以用SWD模式下载程序进去。
更多操作

supernan 发表于 2022-11-25 21:05


你这不 是 stm32f1xx_hal_flash_ex.h 这个里面定义的吧?

supernan 发表于 2022-11-25 21:07

文件里,没搜到你给的这几个呢?

liliang9554 发表于 2022-11-25 21:09

这个是需要自己实现。
你用图形化的cubeMX工具看看那几个引脚可以设置成其他功能不。

supernan 发表于 2022-11-25 21:13

刚接触STM32,还没入门。折腾不了这么高端的东西。

jlyuan 发表于 2022-12-1 19:23

防止STM32再次烧写,你有什么妙招么?

supernan 发表于 2022-12-1 19:28

普通烧写烧写,破译工具烧写、芯片引脚搭接烧写等高难度的暂不考虑

supernan 发表于 2022-12-1 19:30

就是用来别人改不了程序?

zhanghqi 发表于 2022-12-1 19:34


如果只是怕别人误操作下程序啥的,flash loader 下程序的时候里面有个写保护,点了就可以了。

supernan 发表于 2022-12-1 19:36

对,就是防止他人修改程序……但我的代码,目前只能达到 重新烧写时 提示有写保护,但依然可以烧写……

supernan 发表于 2022-12-1 19:38

如何禁止STM32再烧写……我期望达到的是不能直接再次烧写

jiahy 发表于 2022-12-1 19:40

F1系列是个例外,它不支持2级保护。若二级保护后不再支持后续的调试接口的烧写或编程了。

shimx 发表于 2022-12-1 19:43

F1系列虽不支持2级保护,但你读保护后想再编程,里面代码是会被清除的。

supernan 发表于 2022-12-1 19:46


对,我就是想达到:不再烧写或编程。
页: [1] 2
查看完整版本: 如何写保护?