cms79ft738烧写器如何设置芯片读保护

cms79ft738烧写器如何设置芯片读保护,第1张

单片机

STM32-对芯片启动读保护,实现加密(详解)

STM32可以对存储在flash上的程序进蠢掘橡行读保护.

启动读保护后,用户就不能再读写程序了.

所以,在烧写程序之前,需要程序调用关闭读保护.关闭读保护后,会自动清空flash上的程序

头文件位于:#include "stm32f10x_flash.h"

启动保护,用在main()函数初始化时调用:

void Set_Protect(void) //启动保护

{

if(FLASH_GetReadOutProtectionStatus() != SET)

{

FLASH_Unlock()//解锁

FLASH_ReadOutProtection(ENABLE)

FLASH_Lock()//上锁

}

}

注意:

当代码第一次调用Set_Protect()函数启动读保护时。

期间不能再次调用Off_Protect()函数关闭读保护,需要重新断电带旁才能关闭读保护(因为散巧Flash状态启动读保护后,不能立即设置Status=1)

关闭读保护,在串口接收某个有效数据或按下某个按键时,调用:

void Off_Protect(void) //关闭保护

{

if(FLASH_GetReadOutProtectionStatus() != RESET)

{

FLASH_Unlock()//不解锁FALSH也可设置读保护

FLASH_ReadOutProtection(DISABLE)

FLASH_Lock()//上锁

}

}

运行测试

1.第一步,下载程序

2.下载成功后,再次烧写程序,校验是否启动读保护(因为启动读保护后,不能进行读写程序了)

3.通过ST-LINK Utility工具尝试连接芯片,发现确实不能读数据了

然后只要代码调用Off_Protect()函数,便可以取消保护了

在肆睁码kernel2.4.20下面:

include <linux/spinlock.h>

spinlock_t mysiglock = SPIN_LOCK_UNLOCKED

unsigned int flags

然后:

spin_lock_irqsave(&mysiglock,flags)

spin_unlock_irqrestore(&mysiglock,flags)

可以编译,但连接的裂哪时候kernel.o时说:早宽

undefined reference to 'local_irq_save'

任何类型都可以,一般用一个object类型就够了.

lock中是一个锁变量,当一个线程运行到这里时散瞎昌,会先看看括号中的变冲扒量是否被其他线程占用,如果有人占用,就会等待知道这个对象被释放神乎。因此是什么就无所谓了。

此外.NET中还有更复杂的锁机制,有兴趣的话,可以查看MSDN关于多线程编程的部分,由于东西较多就不在这里写了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8239582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存