搜索
bottom↓
回复: 12

STM32如何判断烧录后的第一次上电?

[复制链接]

出100入0汤圆

发表于 2022-9-7 10:51:44 | 显示全部楼层 |阅读模式
我给STM32外接了一个EEPROM,用于存储上一次关机的配置。正常开机会先读取EEPROM中的参数,恢复上一次保存的配置。
但我希望用烧录器烧写程序后,第一次上电后对EEPROM进行清除,而不是读取之前的配置。
向坛友们求教,如何做到上电后判断是否为烧录后的第一次,而不是正常的断电重启?
谢谢了!

出100入0汤圆

 楼主| 发表于 2022-9-7 14:38:43 | 显示全部楼层
谢谢各位,暂时在flash中做了标志,目前可以用的。
之后有时间会考虑使用数据校验。

出0入25汤圆

发表于 2022-9-7 10:56:12 | 显示全部楼层
思路如下:

1.  无论何时读取 EEP rom  ,进行CRC 校验。 如果 校验不通过, 就 init eeprom parameters


2.  EEP 的参数 可以 在不同的 address 上保存3份,  如果 第一份 crc error , 则读取第二份,  如果 第二份 crc error ,则读取第三份。   如果 第三份 error 。 表示 是 新烧入的程序 ,在进行  pamameters 的init

出90入372汤圆

发表于 2022-9-7 11:05:25 | 显示全部楼层
烧录程序的同时用下载器往FLASH的固定地址写入一个标志位,第一次开机读取后再擦除这个标志位即可

出20入62汤圆

发表于 2022-9-7 11:08:42 | 显示全部楼层
看看芯片手册,一般这玩意没刷过,默认都是0xFF...

出90入372汤圆

发表于 2022-9-7 11:09:01 | 显示全部楼层
标志位文件可以用hex格式,指定好FLASH地址即可,脱机下载器可以一次同时将程序和这个hex的标志位烧录好,比较方便

出0入16汤圆

发表于 2022-9-7 11:10:20 | 显示全部楼层
EEPROM里面放一个标识用来判断是否是第一次写入,读出来不相等则认为第一次上电,然后做EEPROM参数初始化同时写入标识, 读出来如果相等则直接读取参数,
同时烧写新的更新程序可以对判断的标识位和默认参数进行修改,这样参数就能自动更新。这种判断的是EEPROM第一次使用。
如果只是判断单片机是否是被烧写,则可以读写片内Flash,烧录器烧写的时候把数据烧录进去,单片机第一次上电读取是否存在该数据然后擦除该数据则为第一次

出0入0汤圆

发表于 2022-9-7 11:17:21 | 显示全部楼层
本帖最后由 xzhiwei 于 2022-9-7 11:19 编辑

读取指定flash地址,如果是0xFF(说明是第一次)就写入flag,
其实如果数据不常写 直接用flash存数据就行了

出0入59汤圆

发表于 2022-9-7 12:13:34 | 显示全部楼层
rei1984 发表于 2022-9-7 10:56
思路如下:

1.  无论何时读取 EEP rom  ,进行CRC 校验。 如果 校验不通过, 就 init eeprom parameters
(引用自2楼)

CRC 存3份安全么? 我见过有网友是存16份备份的

出0入1209汤圆

发表于 2022-9-7 12:26:36 | 显示全部楼层
量产时烧2次 ,第一次的用测试固件做初始化动作。第二次的用正式固件,上电直接用。

出0入442汤圆

发表于 2022-9-7 12:31:36 来自手机 | 显示全部楼层
lz只是想知道是不是第一次烧录。。搞那么复杂干吗?烧固件时整片擦除,然后程序启动时简单读一个位置,为0xff时就擦flash然后置数。。

出105入79汤圆

发表于 2022-9-7 12:46:58 | 显示全部楼层
STM32 的 Flash 区放置一个标志,全片擦除后应该是0xffffffff。 可以用于第一次上电判断如果是0xfffffff就擦除eeprom,然后写为flash标志为0xAAAAAAA,

出3670入191汤圆

发表于 2022-9-7 18:45:39 | 显示全部楼层
用STM32的TAMPER功能不行吗?手册只介绍了它的能力,没讲应用场景,但是我觉得从它的内存地址中拿出一个位置来记录这个状态是完全没有问题的。

当然,我并没有实操过。楼主可以试试。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-30 12:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表