你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

可以将某个函数从flash删除,而不死机吗?

[复制链接]
a707083746 提问时间:2020-6-1 19:48 /
芯片:STM32F103C8
我把一个函数定位到单独的一页上,读flash判断函数还存在时才调用这个函数。
在特定的条件下,把这一页擦除,重启后进入 HardFault_Handler() 中断。
有没有可能删除这个函数了,程序还能运行呢?
<
收藏 评论18 发布时间:2020-6-1 19:48

举报

18个回答
a707083746 回答时间:2020-6-1 20:17:50
只修改一个字节没死机~~
wenyangzeng 回答时间:2020-6-1 20:58:43
代码的校验和就会出错而死机。
toofree 回答时间:2020-6-2 12:12:07
建议看一下汇编代码,STM32指令是32位的,有可能一个或几个32位数地构成一条指令。
你改一个字节,有可能不是关键的数据。有可能程序没有执行到这条指令,或者执行到这条指令了,但是只是个参数,而不是命令,而没有影响程序运行。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

MrJiu 回答时间:2020-6-2 13:04:54
删除Flash,我经常这么干啊,因为要保持一些数据到flash上去,没出现什么死机现行。。。我感觉是函数保存问题,而且,还涉及到变量问题。。。总之,没你想得那么简单

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

a707083746 回答时间:2020-6-3 13:46:52
wenyangzeng 发表于 2020-6-1 20:58
代码的校验和就会出错而死机。

那交换两个字节的位置可能就不死机了
a707083746 回答时间:2020-6-3 13:49:00
toofree 发表于 2020-6-2 12:12
建议看一下汇编代码,STM32指令是32位的,有可能一个或几个32位数地构成一条指令。
你改一个字节,有可能不 ...

我把代码删除以后,就没有去调用,它应该不会执行吧
a707083746 回答时间:2020-6-3 13:51:20
MrJiu 发表于 2020-6-2 13:04
删除Flash,我经常这么干啊,因为要保持一些数据到flash上去,没出现什么死机现行。。。我感觉是函数保存问 ...

我这个确实是想当然了。我是想在第一次上电时执行这个函数,然后把它从flash删除掉,之后不去调用它。
回答时间:2020-6-3 15:23:28
理论上是可以的,通过判断指定地址的内容是否不为空。或者不为全FF。但是在工程中需要将这部分代码写入到指定的FLASH地址。需要考虑使用芯片的空间分布情况。有的芯片分区少,一个区的地址是128或者256。这样使用会不会感觉到浪费?

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

a707083746 回答时间:2020-6-3 16:18:05
安 发表于 2020-6-3 15:23
理论上是可以的,通过判断指定地址的内容是否不为空。或者不为全FF。但是在工程中需要将这部分代码写入到指 ...

我已经把这部分代码指定到flash尾部单独的一页了,并且没占满一页,一页1024字节。

#pragma arm section code=".ARM.__at_0x0800F000"
//函数
#pragma arm section        code
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版