首页 > 编程语言 >H7-TOOL自制Flash读写保护算法系列,为凌欧LKS32MC45x/MC05x/MC08x制作使能和解除算法,支持在线烧录和脱机烧录使用2024-12-15

H7-TOOL自制Flash读写保护算法系列,为凌欧LKS32MC45x/MC05x/MC08x制作使能和解除算法,支持在线烧录和脱机烧录使用2024-12-15

时间:2024-12-16 12:42:19浏览次数:3  
标签:LKS32MC45x -- TOOL Flash 烧录 保护 算法

说明:

很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。

实际上当前已经发布的TOOL版本,已经自制很多了,比如已经支持的兆易创新大部分型号,新唐的大部分型号等。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持。

近期已经自制了STM32H7全系列,N32G003,N32G031,  STM32U5全系列和凌欧LKS32MC03X,复旦微FM33LE系列

这次为凌欧的LKS32MC45x,LKS32MC05x,LKS32MC08x提供Flash保护支持

实现效果:

从2.27版本开始将正式带此支持,支持解除和使能。这款芯片没有选项字节的概念,是通过Flash末尾的4字节来解除和使能(LKS32MC45x通过末尾16个字节)。

解除保护已经在TOOL上位机集成:

写保护的时候,大家可以TOOL的滚码常量功能,将Flash末尾设置非0xFFFF FFFF数值即可,比如我这里使用LKS32MC45x的256KB容量Flash,设置地址0x0003FFF0开始的16个字节为0x0000 0000,就可以使能保护。

省事些,直接配置末尾4个为0即可


实现代码和原理

通过H7-TOOL的LUA小程序就可以方便的实现保护解除,不需要自制算法文件。

对应的代码如下,这个不需要用户去管,已经封装到TOOL里面了,这里给大家分享是方便大家了解:

--芯片专有的解除保护函数
function MCU_RemoveProtect(void)
    --MCU_ProgOptionBytes(OB_SECURE_OFF)
 
    for j = 1, 2, 1 do
        -- SYS_PROTECT = 0x7a83 开启写使能
        if (pg_write32(0x400198A8, 0x7a83) == 0) then
            --print("pg_write32(0x400000A8, 0x7a83)")
        end
 
        -- clock 192M
        -- SYS_AFE_REGB = 0 Sel RC
        if (pg_write32(0x4001983C, 0) == 0) then
            --print("pg_write32(0x400000D0, 0x8FCA)")
        end
 
        -- RC 12MHz ON, XTAL OFF, PLLPDN使能,XTALPDN关闭,RCHPD开
        -- SYS_AFE_REGA = ((1<<1)|(0<<6)|(1<<7)) 
        if (pg_write32(0x40019838, ((1<<1)|(0<<6)|(1<<7))) == 0) then
            --print("pg_write32(0x400000D0, 0x8FCA)")
        end
 
        --SYS_CLK_CFG = (0xFF|(1<<8)) 192M
        if (pg_write32(0x40019880, (0xFF|(1<<8))) == 0) then
            --print("pg_write32(0x400000D0, 0x8FCA)")
        end 
        --delayms(100)
 
        -- SYS_FLSE = 0x8FCA,写入密钥,解除擦除保护
        if (pg_write32(0x400198D0, 0x8FCA) == 0) then
            --print("pg_write32(0x400000D0, 0x8FCA)")
        end
 
        -- FSMC_ICFG |= BIT31
        pg_write32(0x4001A080, 0x80000000)
 
        --delayms(50) 
 
        -- SYS_CLK_CFG = 0x000001FF 48MHz
        --if (pg_write32(0x40000080, 0x000001FF) == 0) then
        --  --print("pg_write32(0x40000080, 0x000001FF)")
        --end
 
        -- FSMC_IDIV 
        pg_write32(0x4001A09C, 0x54004022)
 
        --delayms(50) 
 
        -- FSMC_ADDR = adr; 擦除最后一个扇区
        pg_write32(0x4001A084, 0x0003FC00)
 
        -- FLASH_ERASE = 0x7654DCBA 触发 On-Chip FLASH 擦除操作
        pg_write32(0x4001A090, 0x7654DCBA)
 
        -- FSMC_REDY
        pg_read32(0x4001A098)
        delayms(50) 
        pg_read32(0x4001A098)
 
        --  FSMC_ICFG &= ~BIT31
        pg_write32(0x4001A080, 0x00000000)
 
        -- SYS_FLSE = 0
        pg_write32(0x400198D0, 0)
 
        -- SYS_PROTECT = 0x0;  关闭写使能
        if (pg_write32(0x400198A8, 0) == 0) then
            --print("pg_write32(0x400000A8, 0x7a83)")
        end
 
        delayms(200)
    end
 
--pg_enter_debug()
end

 

标签:LKS32MC45x,--,TOOL,Flash,烧录,保护,算法
From: https://www.cnblogs.com/armfly/p/18609829

相关文章

  • 前端算法小白日刷三题13
    今天主要学归并排序、快速排序和二分查找归并排序//归并排序functionmergeSort(arr){if(arr.length<2)returnarr;letmid=Math.floor(arr.length/2)//letleft=arr.slice(0,mid)//letright=arr.slice(mid)function......
  • 算法之数组
    数组二分查找给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。题解:如果等于nums[middle],返回middle;否则返回left或者low。 移除元素在排序数组中查找target的开始位置和结束位置。二分法不可能会......
  • 算法之链表
    链表移除链表元素对于链表来说,删除头节点和中间节点具体操作不一样是因为想要删除一个中间节点,必须要知道该节点的前一个节点,而头节点没有前一个节点。  使用虚拟头节点,统一节点的删除操作,用一个虚拟头节点的next指向head,这个链表中的每个元素都会有前一个节点,从而对所有节点......
  • 当前,inux中的内存页面调度算法
    用户:请详细介绍,目前linux中内存页面调度算法的相关信息讯飞星火:Linux内存页面调度算法是操作系统内存管理中的核心组件之一,它负责在有限的物理内存资源中高效地管理不同进程的页面,以减少页面置换的频率并提高系统性能。以下是对Linux内存页面调度算法的详细介绍:###1.概述Lin......
  • 计算机毕业设计项目源码 大数据深度学习 基于聚类算法实现的二手房价分析及可视化系统
    标题:基于聚类算法实现的二手房价分析及可视化系统基于聚类算法实现的二手房价分析及可视化系统可以具备以下主要功能:数据采集与预处理:从各大二手房平台抓取房源信息,包括房价、面积、房型、位置等属性。数据清洗,处理缺失值、异常值和重复数据。数据标准化和归一化,以便于后......
  • 计算机毕设源码 大数据深度学习 基于聚类算法实现的房屋数据分析及可视化系统
    标题:基于聚类算法实现的房屋数据分析及可视化系统基于聚类算法的房屋数据分析及可视化系统主要功能可以包括以下几个方面:数据采集与预处理:收集房屋销售相关的数据,如房屋价格、面积、房间数量、位置、建造年份等。数据清洗,处理缺失值、异常值,进行标准化或归一化。聚类分析......
  • 毕业设计:python车牌识别系统 CNN算法 卷积神经网络网络 深度学习 tensorflow(源码)✅
    python车牌识别系统CNN算法卷积神经网络网络深度学习tensorflow(源码)1、项目介绍技术栈:Python语言、CNN算法、tensorflow和keras、深度学习、opencv、pyqt5图形界面2、项目界面(1)上传图像进行车牌识别1(2)上传图像进行车牌识别2(3)上传图像进行车牌识别3(4)上传视......
  • 毕业设计:NBA球员数据分析及预测系统+可视化 +Flask框架 篮球数据分析 时间序列预测算
    毕业设计:NBA球员数据分析及预测系统+可视化+Flask框架篮球数据分析时间序列预测算法大数据毕业设计✅1、项目介绍NBA球员数据分析及预测系统技术栈Python语言、Flask框架、requests爬虫、statsmodels中的ARIMA时间序列预测算法、Echarts可视化2、项目界面(1)球员数......
  • 【数据结构与算法】Java描述:JDK17新增常用特性
    前言:从springboot3.0开始,已经不支持JDK8了。参考资料,来自官方博客:https://spring.io/blog/2022/01/20/spring-boot-3-0-0-m1-is-nowavailable?spm=a2c6h.12873639.article-detail.24.766d46b40LM1IV从3.0开始,转变为JDK17。JDK17是LTS(长期支持版),可以免费商用到2029......
  • 【初阶数据结构和算法】八大排序算法之插入排序(直接插入排序、希尔排序及其对比)
    文章目录一、常见排序算法分类一、直接插入排序二、希尔排序三、直接插入排序和希尔排序性能对比一、常见排序算法分类   常见的排序算法有八种,我们简单盘点一下插入排序:直接插入排序、希尔排序选择排序:直接选择排序、堆排序交换排序:冒泡排序、快排希尔排序计数......