vb2002 发表于 5 天前

管eeprom和flash的空间分配问题.


因为咱ai的eeprom是用flash模拟出来的
比如我用ai8h8k64u

那我的flash空间是64k,这个无误
假设我在软件上设置eeprom空间为60K
那我理解成flash空间只剩4k了,还是说flash还是64k,eeprom也还是60k
或者是说,我flash空间用来64k中的30k后, 只要eeprom不用到超过30就对半分.
如果我用了flash64k中的50k, eeprom也用到50k,这样程序还能正常吗?

国芯人工智能 发表于 5 天前

关于AI8H8K64U芯片中EEPROM与Flash空间分配的问题,以下是专业说明:

AI8H8K64U是一款基于Flash存储的嵌入式AI芯片,其内部Flash容量为64KB。在该芯片中,EEPROM功能是通过Flash模拟实现的,因此两者在物理上共享同一块存储空间。

当您在软件中设置EEPROM空间为60KB时,意味着系统会预留60KB的Flash区域用于模拟EEPROM功能。此时,剩余可用于程序代码、数据存储等的Flash空间为64KB - 60KB = 4KB。因此,若您的程序或应用需要使用超过4KB的Flash空间,将可能导致存储冲突或程序无法正常运行。

需要注意的是,Flash空间并非按照“对半分”方式分配。EEPROM与程序代码的存储区域是相互独立的,但共享总容量。如果程序代码占用的Flash空间为50KB,而EEPROM也尝试占用50KB,则总占用量将达到100KB,远超芯片实际提供的64KB容量,这将导致系统异常甚至无法启动。

因此,建议合理规划Flash空间分配。通常情况下,EEPROM与程序代码应共同占用不超过64KB的总量。例如,若程序代码占用30KB,则EEPROM最多可分配34KB;若程序代码占用50KB,则EEPROM最多可分配14KB。确保两者之和不超过64KB,以保障系统稳定运行。

综上所述,EEPROM与Flash空间是共享的,设置EEPROM大小将直接影响可用程序空间。请根据实际需求合理配置,避免因空间不足导致功能异常。

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

DebugLab 发表于 5 天前

该型号是IAP型号,EEPROM区和CODE区可重叠
EEPROM大小仅可在下载时通过ISP软件设置,保存在系统区(用户无法访问)
EEPROM区可读写(IAP读写,MOVC只读)可执行(PC可寻址)
而不能设置EEPROM大小的非IAP型号,EEPROM区不可执行(PC不可寻址)
设置EEPROM大小的作用是:
1、设置IAP读写的初始地址,将不同的物理地址映射到从0开始的逻辑地址
(MOVC读是FLASH物理地址,所以设置不同的EEPROM大小,MOVC读的起始地址是不同的)
2、保护CODE区,避免IAP误操作擦除CODE区,FLASH的非EEPROM区无法通过IAP方式访问,仅支持MOVC只读
3、做用户ISP(bootloader)时,设置EEPROM大小覆盖用户APP区和用户EEPROM区,可以实现用户自定义的升级方式,
而用户ISP区可以位于设置的EEPROM区之外,防止误擦除,
这样仅可通过系统ISP区(用户无法访问)升级(以官方方式而非用户自定义方式)用户ISP程序,
这样即使使用用户ISP以用户自定义方式下载了错误的用户APP,也不会影响用户ISP的正常工作

vb2002 发表于 5 天前

DebugLab 发表于 2025-8-29 12:07
该型号是IAP型号,EEPROM区和CODE区可重叠
EEPROM大小仅可在下载时通过ISP软件设置,保存在系统区(用户无 ...

那就是,64k, 我用了,eeprom就不能用了, 我没用,eeprom就可以用
两者共享64k
页: [1]
查看完整版本: 管eeprom和flash的空间分配问题.