找回密码
 立即注册
查看: 163|回复: 7

请教:程序区上的数据是不是只能读不能写|已解决

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:675
  • 最近打卡:2025-10-16 07:14:47

125

主题

2076

回帖

4120

积分

论坛元老

积分
4120
发表于 2025-9-13 17:56:05 | 显示全部楼层 |阅读模式
请教:程序区上某个地址上的数据,我们可以直接读出,但在程序的执行过程中,是否可以进行擦除或改写,就像操作EEPROM一样?
回复

使用道具 举报 送花

3

主题

1880

回帖

608

积分

等待验证会员

积分
608
发表于 2025-9-13 18:00:00 | 显示全部楼层
程序区(通常指Flash存储器)上的数据在一般情况下是只读的,但这并不意味着完全不能写入或擦除。实际上,是否可以进行擦写操作,取决于具体的芯片架构、存储器类型以及程序运行时的权限与机制。

在大多数嵌入式系统中,程序代码是存储在Flash存储器中的,这类存储器具有非易失性,适合用于保存固件。然而,Flash的物理特性决定了其读写方式与RAM不同。具体来说:

1. 读操作:Flash存储器支持快速、随机的读取操作,这正是程序执行所依赖的特性。

2. 写操作:Flash存储器不能像RAM那样直接写入。在写入之前,必须先进行擦除操作。而擦除是以“块”或“页”为单位进行的,不是按字节进行的。也就是说,要修改Flash中的某一部分内容,通常需要:
将该块的数据读入RAM;
在RAM中修改;
擦除原块;
将修改后的数据重新写入该块。

3. 擦写寿命限制:Flash存储器的擦写次数是有限的(通常在1万到10万次之间),因此频繁地进行擦写会影响其寿命。

因此,从技术上讲,程序区的数据是可以被擦写修改的,但这种操作不能像读取那样频繁和随意,且必须遵循特定的流程和保护机制。

此外,现代MCU(如STM32、ESP32等)通常提供了对Flash的编程接口(如Flash库函数),允许用户在应用程序中进行Flash的擦写操作。但必须注意:
操作Flash时需关闭中断,防止程序跑飞;
需要遵循芯片厂商提供的API或规范;
不当操作可能导致程序区损坏,甚至系统崩溃。

综上所述:  
程序区上的数据在正常运行中是只读的,但通过特定机制是可以进行擦写操作的,其过程复杂且受限,不能像EEPROM那样随意读写,但在必要时(如固件升级、参数保存等)仍可实现。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:585
  • 最近打卡:2025-10-16 07:20:54
已绑定手机

86

主题

6276

回帖

1万

积分

超级版主

积分
11742
发表于 2025-9-15 05:16:11 | 显示全部楼层
支持IAP的型号,设置EEPROM覆盖CODE,就可以
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:675
  • 最近打卡:2025-10-16 07:14:47

125

主题

2076

回帖

4120

积分

论坛元老

积分
4120
发表于 2025-9-15 08:41:31 | 显示全部楼层
Debu*** 发表于 2025-9-15 05:16
支持IAP的型号,设置EEPROM覆盖CODE,就可以

支持IAP的型号,可以动态设置EEPROM?

点评

下载时由ISP软件设置,用户程序无法设置  详情 回复 发表于 2025-9-15 10:36
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:585
  • 最近打卡:2025-10-16 07:20:54
已绑定手机

86

主题

6276

回帖

1万

积分

超级版主

积分
11742
发表于 2025-9-15 10:36:51 | 显示全部楼层
xxkj*** 发表于 2025-9-15 08:41
支持IAP的型号,可以动态设置EEPROM?

下载时由ISP软件设置,用户程序无法设置
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:675
  • 最近打卡:2025-10-16 07:14:47

125

主题

2076

回帖

4120

积分

论坛元老

积分
4120
发表于 2025-9-15 11:12:43 | 显示全部楼层
Debu*** 发表于 2025-9-15 10:36
下载时由ISP软件设置,用户程序无法设置

那还是不一样,就是无法支持代码对程序区的读写,这个可能是为了保证程序数据的运行安全,也就是说不会在运行过程中被非法改写

点评

设置EEPROM为全部FLASH,就可以支持代码修改自己  详情 回复 发表于 2025-9-15 13:00
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:585
  • 最近打卡:2025-10-16 07:20:54
已绑定手机

86

主题

6276

回帖

1万

积分

超级版主

积分
11742
发表于 2025-9-15 13:00:05 | 显示全部楼层
xxkj*** 发表于 2025-9-15 11:12
那还是不一样,就是无法支持代码对程序区的读写,这个可能是为了保证程序数据的运行安全,也就是说不会在 ...

下载时设置EEPROM为全部FLASH,就可以支持用户程序修改自己
不支持的是在用户程序中修改EEPROM大小
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:675
  • 最近打卡:2025-10-16 07:14:47

125

主题

2076

回帖

4120

积分

论坛元老

积分
4120
发表于 2025-9-15 13:26:06 | 显示全部楼层
Debu*** 发表于 2025-9-15 13:00
下载时设置EEPROM为全部FLASH,就可以支持用户程序修改自己
不支持的是在用户程序中修改EEPROM大小
...

试了,还真的可以,谢谢!
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-10-16 12:52 , Processed in 0.136236 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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