GD32可以通过选项字节来设置是否对Flash进行是否进行读写保护,FMC的保护状态有3种状态,一般使用的是低保护,低保护使能情况下,是不可以进行程序的下载和仿真调试,也不可以通过外部工具直接读取内部flash的程序。但是内部程序可以对flash进行操作,也可以通过内部程序进行选项字节的修改。
/* read protect configure */
#define FMC_NSPC ((uint16_t)0x5AA5U) /*!< no security protection */
#define FMC_LSPC ((uint16_t)0x44BBU) /*!< low security protection, any value except 0xA5 or 0xCC */
#define FMC_HSPC ((uint16_t)0x33CCU) /*!< high security protection */
在库函数中如何进行都保护的设置呢,可以通过程序进行控制,也可以通过GD-Link Programmer软件进行设置也可以通过程序设置
1、用GD-Link Programmer设置
这直接设置好然后reset芯片就可以了,设置的值可以参考
#define FMC_LSPC ((uint16_t)0x44BBU) /*!< low security protection, any value except 0xA5 or 0xCC */
2、通过程序设置
都保护使能
void System_Read_Protection_Enable(void)
{
if(ob_obstat_plevel_get() == OB_OBSTAT_PLEVEL_NO)
{
fmc_unlock();
ob_unlock();
ob_security_protection_config(FMC_LSPC);
ob_lock();
fmc_lock();
ob_reset();
}
}
都保护失能
void System_Read_Protection_Disable(void)
{
if(ob_obstat_plevel_get() == OB_OBSTAT_PLEVEL_LOW)
{
fmc_unlock();
ob_unlock();
ob_security_protection_config(FMC_NSPC);
ob_lock();
fmc_lock();
ob_reset();
}
}
读写保护可以直接通过外部指令通过串口等通信外设直接操作上边两个函数就可以 。