当前位置: 首页 > news >正文

day13 flash

1. 存储器的概念

        存储器指的是若干个存储单元的集合,每个存储单元都可以存储若干个二进制数,为了方便的操作存储单元,就为每个存储单元都分配了地址,就可以通过寻址来访问存储单元。

        由于计算机的处理的数据量较大,并且运算速度都很快,就要求存储器的容量更大,并且存取数据的速度更快。

2. 存储器的分类

一般存储器按照功能划分可以分为两种:  只读存储器(ROM)      随机存储器(RAM)

只读存储器(ROM):内容只能读出不能写入
◦ 掩模ROM
◦ 可编程ROM(PROM)
◦ 可擦除PROM(EPROM)
◦ 电可擦除PROM(EEPROM)
◦ 闪存(Flash Memory)

随机存取存储器(RAM):可以随机读写,存取时间与存储位置无关
◦ 静态RAM(SRAM)
◦ 动态RAM(DRAM)

2.1只读存储区

只读存储器也被称为ROM(Read Only Memory),在正常工作时只可以读取数据,不能随意修改ROM中的数据。为了提供工作效率以及降低成本,所以只读存储器也经历几个阶段的发展:ROM ---> PROM--->EPROM--->EEPROM--->Flash

优点:结构简单,并且掉电不丢失                                     缺点:只适用于固定数据的存储

1. 掩模ROM(MASK ROM)

  • 时间:1950年代

  • 特点数据在制造时固化,不可修改,灵活性差。

  • 应用:早期计算机、游戏卡带等固定程序存储15。

2. 可编程ROM(PROM)

  • 时间:1956年(由华裔科学家周文俊发明)

  • 特点允许用户编程一次,但无法擦除,写错则报废。

  • 应用:导弹制导系统、工业控制设备15。

3. 可擦除可编程ROM(EPROM)

  • 时间:1971年(英特尔推出C1702)

  • 特点可通过紫外线擦除并重新编程,但需要专用设备。

  • 应用:早期微控制器、嵌入式系统开发16。

4. 电可擦除可编程ROM(EEPROM)

  • 时间:1972年(日本电工实验室发明)

  • 特点支持电擦除,无需紫外线,可逐字节修改。

  • 应用:BIOS存储、参数配置存储18。

5. 闪存(Flash Memory)

  • 时间:1980年(舛冈富士雄发明)

  • 特点

    • NOR Flash:支持随机访问,适合存储代码(如BIOS)。

    • NAND Flash:高密度、低成本,适用于大容量存储(如SSD、U盘)。

  • 应用:智能手机、固态硬盘、SD卡等18。

2.2随机存储器

        随机存储器也称随机读/写存储器,简称RAM。在RAM工作时可以随时从任何一个指定地址读出数据,也可以随时将数据写人任何一个指定的存储单元中去。它的最大优点是读写方便,使用灵活。但是它也存在数据易失性的缺点(即一旦停电以后所存储的数据将随之丢失)。RAM又分为静态随机存储器SRAM和动态随机存储器DRAM两大类。

3. 内部Flash使用

STM32F407芯片内部的Flash容量具有512KB,必须要了解内部flash内存分布,如下图所示

需要注意:该芯片只有3128KB的扇区可以使用,对扇区进行访问或者擦除时,需要计算出扇区的起始地址以及结束地址。

另外,用户程序一般都是下载到Flash闪存空间中的,一般从Flash闪存的扇区0开始存储

注意,用户在存储自定义数据的时候,尽量先从Flash闪存的后面的扇区进行操作,避免对用户程序造成影响。

4、 内部Flash的流程

如果用户打算对Flash空间进行编程或者擦除,对应的流程可以参考帮助手册以及文件注释

• Flash解锁

• Flash擦除

需要注意,在擦除扇区之前,需要设置编程/擦除的并行位数(字节、字、半字、双字),决定了擦除的时间。

如果在擦除扇区的过程中打算跳转到下一个扇区,需要对扇区号进行计算和偏移(+8)

打算对扇区进行擦除操作,可以调用函数库中提供的函数接口来选择擦除某个扇区或者擦除所有扇区,如下图所示

函数原型

FLASH_Status FLASH_EraseSector(uint32_t FLASH_Sector, uint8_t VoltageRange) 函数参数

参数一:FLASH_Sector        需要擦除的扇区号   如 FLASH_Sector_0  ~  FLASH_Sector_11

参数二:VoltageRange        需要擦除的并行位数 如 VoltageRange_3  以字(32bit)为单位

返回值  返回lFlash的操作状态    如  FLASH_COMPLETE  标志操作完成

• Flash写入

需要注意,在写入扇区之前,需要设置编程/擦除的并行位数(字节、字、半字、双字),决定了写入的时间。

Flash闪存往某个扇区写入数据的操作流程如下

打算对扇区进行写入操作,可以调用函数库中提供的函数接口来选择把数据写入某个扇区

函数原型 FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data)

函数参数 参数一: Address        指的是准备写入数据的扇区地址    

参数二: Data        指的是准备写入的数据内容

返回值  返回lFlash的操作状态    如  FLASH_COMPLETE  标志操作完成

• Flash上锁

        如果已经完成Flash扇区的数据写入,为了防止出现意外状况导致扇区数据出现丢失等问题,则需要重新开启Flash寄存器的写保护功能。

• Flash读取

如果已经把数据写入到Flash扇区的某个地址下,则可以通过访问扇区对应的地址空间来读取对应的数据,这里就设计到C语言的地址访问,可以通过指针进行操作。操作如下图所示:

注意:读取扇区地数据的时候扇区地址需要进行偏移,并且要访问符合扇区地址范围的空间。

http://www.dtcms.com/a/295823.html

相关文章:

  • 「iOS」黑魔法——方法交换
  • 告别束缚:这款“隐形心电监测仪”让心脏健康管理更自由
  • JavaSE:开发环境的搭建(Eclipse)
  • 企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构
  • 从0到1学习c++ 命名空间
  • 《 java 随想录》| 数组
  • MySQL的命令行客户端
  • 探索双链表:C语言中的链式结构魔法
  • 光谱仪杂散光性能分析
  • 大疆无人机炸机后视频损坏的完美修复案例解析
  • uni-file-picker vue3二次封装(本地上传 + v-model)
  • Mysql命令show processlist
  • Linux基础服务(autofs和Samba)
  • 论文阅读:《针对多目标优化和应用的 NSGA-II 综述》一些关于优化算法的简介
  • OpenCV —— color_matrix_numpy_mat_reshape
  • 新mac电脑软件安装指南(前端开发用)
  • 解决http的web服务中与https服务交互的问题
  • 平时遇到的错误码及场景?404?400?502?都是什么场景下什么含义,该怎么做 ?
  • AI实践:Pydantic
  • 大模型Prompt优化工程
  • pdf文件的属性值怎么修改?修改PDF内部的属性创建时间和修改时间
  • Lua(垃圾回收)
  • omofun官网网站入口,动漫在线看|官方下载
  • AI服务器给一体成型电感带来多大的市场空间
  • 网络编程——聊天程序实现
  • FreeSWITCH 简单图形化界面45 - 收集打包的一些TTS
  • 复矩阵与共轭转置矩阵乘积及其平方根矩阵
  • 【建模与仿真】融合共现网络特征与知识增强语义梯度提升电子邮件分类
  • HttpServletRequest深度解析:Java Web开发的核心组件
  • LLM中的位置嵌入矩阵(Position Embedding Matrix)是什么