当前位置:首页 > Flash
  • 科普贴——SuperFlash的前世今生

    最近有好几个客人都在问小狼,什么是Flash,傻是NOR Flash,那杀又叫Super Flash?都是Flash,咋这玩意还有这么多分类? 小狼特意猫扑、必应(百度)了一番,Flash是EEPROM的升级版,咋生的?请自行百度。 NOR Flash和NAND Flash的区别是啥呢?百度科普:NOR Flash是或非门结构,NAND Flash是与非门结构,NOR Flash密度相对低。 NOR Flash怎么擦写?写提高控制栅的电压,通过源极向浮置栅注入电荷,电流从浮置栅极到源极,擦就是从浮栅中挪走电荷,简不简单,直不直接? 等一等,擦是很简单,万一放电放多过界了,咋办?速度放慢点,时间搞久点。 有甲方粑粑等不起,咋搞?搞个新技术,SuperMan(SuperFlash)一招搞定,控制栅和浮置栅错错位,随你怎么放,只要不充上天,永远跑不偏。 写操作,接触面变小,写入速度快,烧写杠杠的,出了名的快,就是容量小了点! 卖个棋谱旗下Silicon Storage Technology的炒鸡福莱希,据说靠专利起家,专注存储20年,在最近半导体闹粮荒还能保证不断货,还算得上业界一股清流! 主要市场方向: 工业控制核心板、光通信模块、车载产品…… 我是小狼!

    时间:2021-04-20 关键词: Flash Nor SuperFlash

  • STM32L0芯片FLASH编程示例及提醒

    来源 | 茶花MCU 这里就STM32L053芯片的FLASH编程做个简单演示并做些提醒,以供有需要的人参考。 一般来讲,FLASH编程主要包括擦除、代码编程、Option字修改操作,关于Option编程下面不做介绍。 STM32L0芯片的擦除除了支持全片擦除外,再就是支持页擦除,每页的大小为128Bytes,即32个字。编程可以按字或按半页【64Bytes】编程。 单页擦除、单字编程以及半页编程的时间都是一样的,大概3.2ms左右,这点在芯片数据手册上也明确出来了。 这里提醒两点:第一点,在做擦除或编程时,要注意地址对齐的问题,页擦除时地址要128字节对齐,字编程注意4字节对齐,半页编程时注意64字节对齐;还有一点就是做半页编程时,半页编程的执行代码要放到RAM里进行,这点手册也强调了。 下面演示字编程、页编程、页擦除的操作。 这里我先以字编程模式写5个字,然后以半页编程模式对5个半页进行FLASH编程,并记录二者所花的时间,看看字编程时间跟半页编程的是否一致。 另外,在完成5个半页编程之后,又进行了页擦除操作,擦除刚才已编程的5个半页中的1页,即最后应只剩下3个半页的内容【注:对于STM32L0系列芯片,内部FLASH被擦除后内容为全0】。 下面代码截图是基于STM32Cube库来组织的,主要涉及到字编程、半页编程、页擦除三个操作,对应着绿色下划线的3个库函数。 其中,半页编程的执行代码需配置到RAM里去运行。 另外,Period1和Period2分别来存放写5个字和5个半页的编程时间,并放在指定的FLASH位置。 编译运行后我们可以看到如下结果: 上面截图是经过运行后芯片内部的部分FLASH空间的内容。5个红色方框围住的数据乃5个字编程后的结果,蓝色方框内的数据乃5次半页编程后的结果,但最终只看到3个半页的编程内容,那是因为后面两个半页的内容经页擦除操作后而消失了。 用来统计编程时间的定时器的计数频率为1MHz,显然Period1和Period2基本是相等的,将它们再除以5后所得编程时间都是3.3ms的样子。显而易见,进行批量代码编程时采用半页编程更高效。 前面说了做半页编程时其执行代码需放到RAM运行,该代码在STM32cube库的这个文件stm32l0xx_hal_flash_ramfunc.c里面。实现该操作对于不同的IDE在处理上稍有差异。这里基于ARM MDK进行简单配置,划分点RAM出来给它用。 关于STM32L0系列FLASH编程的演示就介绍到这里,愿能帮到有需之人以节省些时间和精力。 ------------ END ------------ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-04-02 关键词: 芯片 编程 STM32L0 Flash

  • FLASH存储-----NOR Flash

    FLASH存储-----NOR Flash

    所谓Flash,是内存(Memory)的一种,但兼有RAM和ROM 的优点,是一种可在系统(In-System)进行电擦写,掉电后信息不丢失的存储器,同时它的高集成度和低成本使它成为市场主流。 Flash 芯片是由内部成千上万个存储单元组成的,每个单元存储一个bit。具有低功耗、大容量、擦写速度快、可整片或分扇区在系统编程(烧写)、擦除等特点,并且可由内部嵌入的算法完成对芯片的操作,因而在各种嵌入式系统中得到了广泛的应用。 作为一种非易失性存储器,Flash在系统中通常用于存放程序代码、常量表以及一些在系统掉电后需要保存的用户数据等。 常用的Flash为8位或16位的数据宽度,编程电压为单3.3V。主要的生产厂商为INTEL、ATMEL、AMD、HYUNDAI等。Flash 技术根据不同的应用场合也分为不同的发展方向,有擅长存储代码的NOR Flash和擅长存储数据的NAND Flash。一下对NOR Flash和NAND Flash的技术分别作了相应的介绍。 一.NOR Flash 1. 市场介绍 随着技术的发展,愈来愈多的电子产品需要更多的智能化,这也对这些产品的程序存储提出了更高的要求。Flash 作为一种低成本、高集成度的存储技术在电子产品领域的应用非常广泛。今天90%的PC、超过90%的手机、超过50%的Modem,都是用了Flash,如今Flash市场规模已经超过了100亿美元。 如此巨大的市场规模,也导致市场上的Flash 品牌层出不穷。在NOR Flash市场中,Intel公司是非常重要的一家生产厂商。Intel公司生产的Flash芯片多年来占据着市场的很大份额,而它的芯片封装形式和接口也成为业界标准,从而为不同品牌的Flash带来了兼容的方便。 2. NOR Flash 的硬件设计和调试 首先,Flash 要通过系统总线接在处理器上,即保持一个高速的数据交换的通道。那么就必须了解一下Flash在系统总线上的基本操作。 1) 先了解一下处理器存储空间BANK的概念。以32位处理器S3C2410为例,理论上可以寻址的空间为4GB,但其中有3GB的空间都预留给处理器内部的寄存器和其他设备了,留给外部可寻址的空间只有1GB,也就是0X00000000~0X3fffffff,总共应该有30根地址线。这1GB的空间,2410处理器又根据所支持的设备的特点将它分为了8份,每份空间有128MB,这每一份的空间又称为一个BANK。为方便操作,2410独立地给了每个BANK一个片选信号(nGCS7~nGCS0)。其实这8个片选信号可以看作是2410处理器内部30根地址线的最高三位所做的地址译码的结果。正因为这3根地址线所代表的地址信息已经由8个片选信号来传递了,因此2410处理器最后输出的实际地址线就只有A26~A0(如下图1) 图1 2410内存BANK示意图 2)以图2(带nWAIT信号)为例,描述一下处理器的总线的读操作过程,来说明Flash整体读、写的流程。第一个时钟周期开始,系统地址总线给出需要访问的存储空间地址,经过Tacs时间后,片选信号也相应给出(锁存当前地址线上地址信息),再经过Tcso时间后,处理器给出当前操作是读(nOE为低)还是写(new为低),并在Tacc时间内将数据数据准备好放之总线上,Tacc时间后(并查看nWAIT信号,为低则延长本次总线操作),nOE 拉高,锁存数据线数据。这样一个总线操作就基本完成 图2 带nWAIT 信号的总线读操作

    时间:2021-03-23 关键词: FLASH存储 NOR Flash

  • FLASH存储-----NAND FLASH

    FLASH存储-----NAND FLASH

    NAND FLASH 在对大容量的数据存储需要中日益发展,到现今,所有的数码相机、多数MP3播放器、各种类型的U盘、很多PDA里面都有NAND FLASH的身影。 1. Flash的简介 NOR Flash: u 程序和数据可存放在同一片芯片上,拥有独立的数据总线和地址总线,能快速随机地读取,允许系统直接从Flash中读取代码执行,而无需先将代码下载至RAM中再执行 u 可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦除操作,在对存储器进行编程之前需要对块或整片进行预编程和擦除操作。 NAND FLASH u 以页为单位进行读写操作,1页为256B或512B;以块为单位进行擦除操作,1块为4KB、8KB或16KB。具有快编程和快擦除的功能 u 数据、地址采用同一总线,实现串行读取。随机读取速度慢且不能按字节随机编程 u 芯片尺寸小,引脚少,是位成本(bit cost)最低的固态存储器 u 芯片存储位错误率较高,推荐使用 ECC校验,并包含有冗余块,其数目大概占1%,当某个存储块发生错误后可以进行标注,并以冗余块代替 u Samsung、TOSHIBA和Fujistu三家公司支持采用NAND技术NAND Flash。目前,Samsung公司推出的最大存储容量可达8Gbit。NAND 主要作为SmartMedia卡、Compact Flash卡、PCMCIA ATA卡、固态盘的存储介质,并正成为Flash磁盘技术的核心。 2. NAND FLASH 和NOR FLASH 的比较 1) 性能比较 flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。 由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。 执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。 ● NOR的读速度比NAND稍快一些。 ● NAND的写入速度比NOR快很多。 ● NAND的4ms擦除速度远比NOR的5s快。 ● 大多数写入操作需要先进行擦除操作。 ● NAND的擦除单元更小,相应的擦除电路更少。 2) 接口差别 NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。 NAND器件使用复杂的I/O口来串行地存取数据,共用8位总线(各个产品或厂商的方法可能各不相同)。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的页和32KB的块为单位,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。 3) 容量和成本 NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格,大概只有NOR的十分之一。 NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。 4) 可靠性和耐用性 采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。 在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。 5) 位交换(错误率) 所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。 这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。 6) 坏块处理 NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。现在的FLSAH一般都提供冗余块来代替坏块如发现某个块的数据发生错误(ECC校验),则将该块标注成坏块,并以冗余块代替。这导致了在NAND Flash 中,一般都需要对坏块进行编号管理,让每一个块都有自己的逻辑地址。 7) 易于使用 可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。 8) 软件支持 当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。 在掌上电脑里要使用NAND FLASH 存储数据和程序,但是必须有NOR FLASH来启动。除了SAMSUNG处理器,其他用在掌上电脑的主流处理器还不支持直接由NAND FLASH 启动程序。因此,必须先用一片小的NOR FLASH 启动机器,在把OS等软件从NAND FLASH 载入SDRAM中运行才行。 9) 主要供应商 NOR FLASH的主要供应商是INTEL ,MICRO等厂商,曾经是FLASH的主流产品,但现在被NANDFLASH挤的比较难受。它的优点是可以直接从FLASH中运行程序,但是工艺复杂,价格比较贵。 NAND FLASH的主要供应商是SAMSUNG和东芝,在U盘、各种存储卡、MP3播放器里面的都是这种FLASH,由于工艺上的不同,它比NORFLASH拥有更大存储容量,而且便宜。但也有缺点,就是无法寻址直接运行程序,只能存储数据。另外NAND FLASH非常容易出现坏区,所以需要有校验的算法。

    时间:2021-03-23 关键词: NAND FLASH存储 Flash

  • STM32学习笔记 | 片内FLASH读写失败问题分析

    FLASH,指Flash Memory,是一种非易失性存储器(闪存),掉电能正常保存数据。 STM32的存储器通常包含内部SRAM、内部FLASH,部分系列还包含EEPROM。其中FLASH通常用于存储代码或数据,可被读写访问。 嵌入式专栏 1 STM32 FLASH 基础内容 STM32的FLASH组织结构,可能因不同系列、型号略有不同。比如大家熟悉的STM32F1中小容量一页大小只有1K,而F1大容量一页有2K。 还比如有些系列以扇区为最小单元,有的扇区最小16K,有的128K不等。 本文主要结合F4系列来描述关于FLASH的相关内容。 1.Flash 结构 通常Flash包含几大块,这里以F40x为例: 主存储器:用来存放用户代码或数据。 系统存储器:用来存放出厂程序,一般是启动程序代码。 OTP 区域:一小段一次性可编程区域,供用户存放特定的数据。 选项字节:存放与芯片资源或属性相关的配置信息。 2.Flash 常规操作 Flash 读、写(编程)、擦除: 128 位宽数据读取 字节、半字、字和双字数据写入 扇区擦除与全部擦除 (提示:不同系列可能存在差异,比如还有字节读取,页擦除等) Flash 读、写保护:通过配置选项字节实现。 3.Flash 容量 STM32的Flash容量出厂已经决定,可根据型号得知容量大小。 4.存储器端格式 目前STM32存储器组织结构默认为小端格式:数据的低字节保存在内存的低地址。 更多内容请查阅芯片对应的参考手册。 嵌入式专栏 2 FLASH 选项字节 STM32内部Flash具有读写保护功能,想要对Flash进行读写操作,首先要去除读写保护,读写保护通过配置选项字节完成。 配置选项字节,常见两种方式:1.软件编码;2.编程工具; 1.软件编码 比如STM32F4系列标准外设库库提供函数: void FLASH_OB_Unlock(void);void FLASH_OB_Lock(void);void FLASH_OB_WRPConfig(uint32_t OB_WRP, FunctionalState NewState);void FLASH_OB_WRP1Config(uint32_t OB_WRP, FunctionalState NewState);void FLASH_OB_PCROPSelectionConfig(uint8_t OB_PcROP);void FLASH_OB_PCROPConfig(uint32_t OB_PCROP, FunctionalState NewState);void FLASH_OB_PCROP1Config(uint32_t OB_PCROP, FunctionalState NewState);void FLASH_OB_RDPConfig(uint8_t OB_RDP);void FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY);void FLASH_OB_BORConfig(uint8_t OB_BOR);void FLASH_OB_BootConfig(uint8_t OB_BOOT);FLASH_Status FLASH_OB_Launch(void);uint8_t FLASH_OB_GetUser(void);uint16_t FLASH_OB_GetWRP(void);uint16_t FLASH_OB_GetWRP1(void);uint16_t FLASH_OB_GetPCROP(void);uint16_t FLASH_OB_GetPCROP1(void);FlagStatus FLASH_OB_GetRDP(void);uint8_t FLASH_OB_GetBOR(void); 软件编码通过调用这些函数接口就可以配置选项字节。 2.编程工具 比如STM32CubeProg编程工具: 配置STM32选项字节,还可通过ST-LINK Utility、STVP等类似工具进行配置。 提示:不同型号的STM32选项字节可能略有差异。 嵌入式专栏 3 FLASH 读写擦除操作 STM32内部Flash和其他外部Flash类似,支持读、写、擦除等常规操作。对内部Flash操作之前通常需要解锁、去保护等操作。 比如: FLASH_OB_Lock();FLASH_OB_WRPConfig(OB_WRP_Sector_All, ENABLE);FLASH_OB_PCROPConfig(OB_PCROP_Sector_All, ENABLE); 1.读数据 读取内部Flash数据通常有两种方式: 通过程序(编码)读取 通过外部(编程)工具读取 程序(编码)读取: uint32_t uwData32 = 0;uint32_t uwAddress = 0x08001000;uwData32 = *(__IO uint32_t*)uwAddress; 外部编程工具读取: 读取前提:没有读保护,设置好读取地址,长度、数据宽度等。 2.写数据 往STM32内部Flash写数据和读数据类似,但写数据地址不能有数据,也就是写之前要擦除数据。 所以,相对读数据,通常写之前需要一些额外操作,比如: FLASH_Unlock();FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR); 通过工具写数据,就是我们量产时说的下载数据,正式一点说法叫编程。 3.擦除数据 擦除数据通常分擦除页、扇区、整块,擦除时间也因型号不同、速度不同有差异。 提示:该部分内容建议参考官方提供的Demo(标准外设库和HAL都有基本例程) 嵌入式专栏 4 FLASH 常见问题 STM32内部Flash主要用途是存储程序代码和数据。操作内部Flash要慎重,一旦操作不当就有可能会破坏整个程序。 问题一:编程(写数据)地址非对齐 写数据时,我们要指定写入的地址,如果写入地址为非对齐,则会出现编程对齐错误。 比如: 遵循32位(4字节)地址对齐,你的地址只能是4的倍数。0x08001000正确,0x08001001错误。 提示:不同型号对齐宽度可能不同,有的32位、有的128位等。 解决办法:通过“取余”判断地址。 问题二:编程地址数据未擦除 写数据之前需要擦除对应地址数据才能正常写入,否则会出现失败。 我们擦除数据通常是页,或扇区,写入某个地址数据,就可能影响其他地址的数据,如果直接覆盖就会出现问题。 解决办法:通常的做法是读出整页(或扇区)数据并缓存,再擦除整页,再写入。 问题三:擦除时读取数据 STM32内部Flash在进行写或擦除操作时,总线处于阻塞状态,此时读取Flash数据就会出现失败。【双BANK模式除外】 解决办法:通过标志判断写/擦除操作是否完成。 问题四:电压不稳定写入失败 处于外界干扰较大的环境,供电就有暂降的可能,而对STM32内部Flash进行操作时,如果低于特定电压就会出现编程失败。 操作Flash的最低电压既与工作频率有关,也与STM32型号有关(具体需要看数据手册)。 解决办法:通过完善硬件电路保证电压稳定。电源电压不够或不稳导致隐患往往不易觉察!! 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-03-09 关键词: 闪存 STM32 Flash

  • QSPI FLASH与SD卡同时支持fatfs文件系统

    上一篇我们已经在QSPI FLASH上支持了fatfs文件系统:这次我们继续在该代码上支持SD卡文件系统,ST官方在维护CubeMX上对多个硬件驱动的fatfs兼容性做得非常好,所以还是用STM32CubeMX来配置就可以了: 小熊派上硬件SD卡接口:   1、SD卡配置 STM32Cube-19 | 使用SDMMC接口读写SD卡数据 2、SD卡fatfs配置 STM32Cube-20(补充) | 在SD卡上移植FATFS文件系统 由于上一节我们已经配置了fatfs的参数,再加上STM32CubeMX已经对SD卡做了支持,所以我们将这个选项勾上就可以了,其余默认即可,然后直接生成代码工程。 3、编写同时测试QSPI FLASH以及SD卡fatfs的程序 很幸运的是,官方已经帮我们把代码都写好了,不需要写一行,直接进入应用编程即可。 由于代码过长,这里不便全部展示,感兴趣的去我的码云上clone工程下载测试。 /**   * @brief  The application entry point.   * @retval int   */ int main(void) {     /* USER CODE BEGIN 1 */     /* USER CODE END 1 */     /* MCU Configuration--------------------------------------------------------*/     /* Reset of all peripherals, Initializes the Flash interface and the Systick. */     HAL_Init();     /* USER CODE BEGIN Init */     /* USER CODE END Init */     /* Configure the system clock */     SystemClock_Config();     /* USER CODE BEGIN SysInit */     /* USER CODE END SysInit */     /* Initialize all configured peripherals */     MX_GPIO_Init();     MX_I2C1_Init();     MX_USART1_UART_Init();     MX_QUADSPI_Init();     MX_FATFS_Init();     MX_SDMMC1_SD_Init();     /* USER CODE BEGIN 2 */     Mount_SD_Fatfs();     Mount_QSPI_FLASH_Fatfs();     test_get_qspi_cap();     test_get_sd_card_cap();     test_sd_card_fatfs();     test_spi_flash_fatfs();     /* USER CODE END 2 */     /* Infinite loop */     /* USER CODE BEGIN WHILE */ while (1)     {         /* USER CODE END WHILE */         /* USER CODE BEGIN 3 */     }     /* USER CODE END 3 */ } 运行结果: 获取完整demo: 码云仓库:https://gitee.com/morixinguan/bear-pi/tree/master/20.QSPI_SD_Card_Sync_Mount_Fatfs 获取方法: git clone https://gitee.com/morixinguan/bear-pi.git 即可获取本次实验工程全部代码。

    时间:2021-02-09 关键词: 文件系统 fatfs Flash

  • 让QSPI FLASH(W25Q64)支持Fatfs文件系统

    今天是过年放假的第一天(一共16天年假),但是说实话放不放假对我们做技术的人来说有放跟没放其实区别不大,因为自驱力是我们维持自身实力和饭碗的根本,16天的假期可以做很多事情学不少东西了,唯一的区别是终于可以好好睡个觉了,然后睡醒接着干就完了!想着小熊派板子上带了一个QSPI,有8MB的存储空间,那可不能浪费了呀!之前写的那些开源项目的图片资源其实放在这上面的,如何实现呢?方法如下: 使用SD卡将文件拷贝到QSPI FLASH(采用fatfs文件系统) 写一个QSPI FLASH MDK下载算法,直接将图片数据放在主程序中 接下来进入正文: 小熊派上自带了一个QSPI接口的8M大小的SPI_FLASH,如下图所示: 小熊派官方也提供了驱动编写的视频教程以及代码编写例程,关于怎么实现的,这里就不多说了,如果想详细了解原理,可以看看世伟兄以及小熊派之前写的文章: STM32Cube-18 | 使用QSPI读写SPI Flash(W25Q64) 单片机基础 —— 使用QSPI读写SPI Flash(W25Q64) 今天我们主要来讲解下Fatfs系统功能的配置,在进入正题之前,我已经按上面的教程将QSPI Flash正常驱动起来了,接下来进入主题,如下图所示: 在中间件的地方选择fatfs,然后再Mode处选择User-defined,因为这个不是官方默认支持的,需要用户自己去实现Fatfs关于底层的驱动接口。 1、功能参数配置 其中,关于功能参数的配置,主要是用到了才去配置,不用到的选项默认就行了,这部分请参考ST官网有关STM32cube Fatfs的应用开发文档,如下所示: 2、几个重要参数配置说明 CODE PAGE这个选项主要是提供编码格式的支持,根据个人需求配置,这里配置为简体中文: USE_LFN这个选项主要是为了支持长文件名,并且当需要支持这个功能的时候需要提供缓存区存放,fatfs提供了BSS、STACK、HEAP三种方式。 根据个人需求选择存放在STACK中,因为存放在BSS上,则是带有静态工作缓冲区的LFN,不能进行动态分配,而存放在HEP上,则需要重写实现fatfs提供的ff_memalloc和ff_memfree函数,所以一般情况下就把它放在栈区即可。 MAX_SS这个选项配置为4096,为什么要配置为4096呢?请看W25Q64的手册描述: 如上,W25Q64这款芯片的最小擦除单位是4KB,也就是4096字节,为了提高擦写效率,一般情况下就直接写4096。 其余的参数用到的时候再去做进一步的配置,均系统默认即可。 由于对长文件名做了支持,缓存区是在栈区的,所以把堆栈加大一些,自己喜欢就好,只要不溢出就行,根据个人习惯随便填了两个参数,然后生成代码工程。 3、Fatfs驱动QSPI接口实现 对于fatfs,ST官方多封装了一层抽象接口给用户进行填写函数,这个文件是:user_diskio.c,主要提供了如下给用户编写的接口: Diskio_drvTypeDef  USER_Driver = {   USER_initialize,  //初始化驱动盘   USER_status,      //获取硬盘状态函数   USER_read,        //读磁盘 #if  _USE_WRITE USER_write,       //写磁盘 #endif  /* _USE_WRITE == 1 */ #if  _USE_IOCTL == 1 USER_ioctl,       //I/O操作 #endif /* _USE_IOCTL == 1 */ }; 以上这些函数直接操作的就是以下fatfs原生的接口: 接下来我们需要依次实现它们: 初始化磁盘实现: DSTATUS USER_initialize (  BYTE pdrv           /* Physical drive nmuber to identify the drive */ ) {   /* USER CODE BEGIN INIT */   uint32_t id ;     id = hal_spi_flash_get_id(); if(0xEF4017 == id)   { printf("读取ID:0x%x\n",id); return RES_OK;   } else return RES_ERROR ;   /* USER CODE END INIT */ } 磁盘状态函数实现(可以留空): /**   * @brief  Gets Disk Status   * @param  pdrv: Physical drive number (0..)   * @retval DSTATUS: Operation status   */ DSTATUS USER_status (  BYTE pdrv       /* Physical drive number to identify the drive */ ) {   /* USER CODE BEGIN STATUS */ return RES_OK;   /* USER CODE END STATUS */ } 读磁盘函数实现: /**   * @brief  Reads Sector(s)   * @param  pdrv: Physical drive number (0..)   * @param  *buff: Data buffer to store read data   * @param  sector: Sector address (LBA)   * @param  count: Number of sectors to read (1..128)   * @retval DRESULT: Operation result   */ DRESULT USER_read (  BYTE pdrv,      /* Physical drive nmuber to identify the drive */  BYTE *buff,     /* Data buffer to store read data */  DWORD sector,   /* Sector address in LBA */  UINT count      /* Number of sectors to read */ ) {   /* USER CODE BEGIN READ */     // 以4K字节为单位     hal_spi_flash_read(buff, count << 12, sector << 12); return RES_OK;   /* USER CODE END READ */ } 写磁盘函数实现: SPI_FLASH的特性,需要先擦除后写入。 /**   * @brief  Writes Sector(s)   * @param  pdrv: Physical drive number (0..)   * @param  *buff: Data to be written   * @param  sector: Sector address (LBA)   * @param  count: Number of sectors to write (1..128)   * @retval DRESULT: Operation result   */ #if _USE_WRITE == 1 DRESULT USER_write (  BYTE pdrv,          /* Physical drive nmuber to identify the drive */  const BYTE *buff,   /* Data to be written */  DWORD sector,       /* Sector address in LBA */  UINT count          /* Number of sectors to write */ ) {   /* USER CODE BEGIN WRITE */     /* USER CODE HERE */     uint32_t write_addr;     write_addr = sector << 12; // 以4K字节为单位 hal_spi_flash_erase_write((uint8_t *)buff, count << 12, write_addr); return RES_OK;   /* USER CODE END WRITE */ } #endif /* _USE_WRITE == 1 */ 磁盘命令操作实现: /**   * @brief  I/O control operation   * @param  pdrv: Physical drive number (0..)   * @param  cmd: Control code   * @param  *buff: Buffer to send/receive control data   * @retval DRESULT: Operation result   */ #if _USE_IOCTL == 1 DRESULT USER_ioctl (  BYTE pdrv,      /* Physical drive nmuber (0..) */  BYTE cmd,       /* Control code */  void *buff      /* Buffer to send/receive control data */ ) {   /* USER CODE BEGIN IOCTL */     switch (cmd)     { case GET_SECTOR_COUNT:             *(DWORD * )buff = 2048;  // 总的扇区数 break; case GET_SECTOR_SIZE :             *(WORD * )buff = 4096;  // 定义一个扇区大小为4K break; case GET_BLOCK_SIZE :             *(DWORD * )buff = 65536; // 定义一个块大小为64K break;     } return RES_OK ;   /* USER CODE END IOCTL */ } #endif /* _USE_IOCTL == 1 */ 4、编写测试QSPI FLASH fatfs的程序 测试案例如下: int main(void) {     /* USER CODE BEGIN 1 */     uint8_t res ;     uint32_t Total = 0; //读取FLASH总容量     uint32_t Free = 0; //读取FLASH剩余容量     /* USER CODE END 1 */     /* MCU Configuration--------------------------------------------------------*/     /* Reset of all peripherals, Initializes the Flash interface and the Systick. */     HAL_Init();     /* USER CODE BEGIN Init */     /* USER CODE END Init */     /* Configure the system clock */     SystemClock_Config();     /* USER CODE BEGIN SysInit */     /* USER CODE END SysInit */     /* Initialize all configured peripherals */     MX_GPIO_Init();     MX_I2C1_Init();     MX_USART1_UART_Init();     MX_QUADSPI_Init();     MX_FATFS_Init();     /* USER CODE BEGIN 2 */     Mount_Fatfs();     f_GetTotal_Free((uint8_t*)"0:", &Total, &Free); //获取SD卡总容量和剩余容量 printf("当前Fatfs总容量:%dKB==>%dMB 剩余容量:%dKB==>%dMB\n", Total, Total / 1024, Free, Free / 1024);     /*----------------------- 文件系统测试:写测试 -----------------------------*/ printf("\r\n****** 即将进行文件写入测试... ******\r\n");     res = f_open(&USERFile, "0:BearPi.txt", FA_OPEN_ALWAYS | FA_WRITE); if(res == FR_OK)     { printf("打开/创建BearPi.txt文件成功,向文件写入数据。\r\n");         res = f_write(&USERFile, write_buf, strlen((const char *)write_buf), &count); if(res != FR_OK)         { printf("f_write 发生错误,err = %d\r\n", res); printf("关闭打开的BearPi.txt文件\r\n");             count = 0;             f_close(&USERFile);         } else { printf("文件写入成功,写入字节数据:%d\n", count); printf("向文件写入的数据为:\r\n%s\r\n", write_buf); printf("关闭打开的BearPi.txt文件\r\n");             count = 0;             f_close(&USERFile);         }     } else printf("打开/创建BearPi.txt文件失败,err = %d\r\n", res);     /*------------------- 文件系统测试:读测试 ------------------------------------*/ printf("****** 即将进行文件读取测试... ******\r\n");     res = f_open(&USERFile, "0:BearPi.txt", FA_OPEN_EXISTING | FA_READ); if(res == FR_OK)     { printf("打开BearPi.txt文件成功\r\n");         res = f_read(&USERFile, read_buf, sizeof(read_buf), &count); if(res != FR_OK)         { printf("f_read 发生错误,err = %d\r\n", res); printf("关闭打开的BearPi.txt文件\r\n");             f_close(&USERFile);         } else { printf("文件读取成功,读取字节数据:%d\n", count); printf("向文件读取的数据为:\r\n%s\r\n", read_buf); printf("关闭打开的BearPi.txt文件\r\n");             f_close(&USERFile);         }     } else printf("打开BearPi.txt文件失败,err = %d\r\n", res);     /*------------------- 不再使用文件系统,取消挂载文件系统 ------------------------------------*/ printf("不再使用文件系统,取消挂载文件系统\r\n");     res = f_mount(NULL, "0:", 1); if(res == FR_OK) printf("取消挂载文件系统成功\r\n"); else printf("取消挂载文件系统失败,err = %d\r\n", res); printf("文件系统测试结束\r\n");     /* USER CODE END 2 */     /* Infinite loop */     /* USER CODE BEGIN WHILE */ while (1)     {         /* USER CODE END WHILE */         /* USER CODE BEGIN 3 */     }     /* USER CODE END 3 */ } 运行结果: 获取完整demo: 码云仓库:https://gitee.com/morixinguan/bear-pi/tree/master/19.QSPI_Fatfs 获取方法: git clone https://gitee.com/morixinguan/bear-pi.git 即可获取本次实验工程全部代码。

    时间:2021-02-09 关键词: 文件系统 W25Q64 Fatfs Flash

  • EEPROM和Flash,一对好兄弟

    rom最初不能编程,出厂什么内容就永远什么内容,不灵活。 历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于可以随意的修改rom中的内容了。 这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。 广义的EEPROM: flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。如W25Q128JVSIQ: flash分为nor flash和nand flash。 nor flash: nand flash同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取。(nandflash按块来擦除,按页来读,nor flash没有页),例如:W29N01HVSINA 由于nand flash引脚上复用,因此读取速度比nor flash慢一点,但是擦除和写入速度比nor flash快很多。nand flash内部电路更简单,因此数据密度大,体积小,成本也低。因此大容量的flash都是nand型的。小容量的2~12M的flash多是nor型的。 使用寿命上,nand flash的擦除次数是nor的数倍。而且nand flash可以标记坏块,从而使软件跳过坏块。nor flash 一旦损坏便无法再用。 因为nor flash可以进行字节寻址,所以程序可以在nor flash中运行。嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-25 关键词: 存储器 EEPROM Flash

  • STM32的FLASH和SRAM的使用情况分析

    01 前言 STM32片上自带FLASH和SRAM,简单讲FLASH用来存储程序的,SRAM是用来存储运行程序中的中间变量。本文详细分析下如何查看程序中FLASH和SRAM的使用情况。 本文开发工具: keil5 芯片: STM32F105VCT6 02 FLASH和SRAM介绍 FLASH存储器又成为闪存,它与EEPROM都是掉电后数据不丢失的存储器,但是FLASH的存储容量都普遍的大于EEPROM,在存储控制上,最主要的区别是FLASH芯片只能一大片一大片地擦除,而EEPROM可以单个字节擦除。 SRAM是静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。STM32F1系列可以通过FSMC外设来拓展SRAM。 注意:SRAM和SDRAM是不相同的,SDRAM是同步动态随机存储器,同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。STM32的F1系列是不支持SDRAM的。 stm32不同型号的SRAM和FLASH大小是不相同的,可在datasheet中查看如下图: 03 编译结果分析 在keil中编译结果如下图: 打开生成的map文件拉到最后可看到如下: 编译结果里面几个的含义 Code:代码空间,本质是ARM指令( FLASH)。 RO-data:即 Read Only-data, 表示程序定义的常量,如 const 类型( FLASH)。 RW-data:即 Read Write-data, 非0初始化的全局和静态变量占用的RAM大小,同时还要占用等量的ROM大小用于存放这些非0变量的初值(FLASH+RAM)。 ZI-data:即 Zero Init-data, 0初始化的内存区的大小(该区域3个用途:0初始化的全局和静态变量+堆区+栈区)(RAM)。 由上可知: 程序占用FLASH=Code + RO-data + RW-data 即map文件中ROM size 程序占用RAM  = RW-data + ZI-data     即map文件中RW size 常见的俩个疑问: 1、RW-data为什么会即占用Flash又占用RAM空间? 由前文知道RAM掉电数据会丢失,RW-data是非0初始化的数据,已初始化的数据需要被存储在掉电不会丢失的FLASH中,上电后会从FLASH搬移到RAM中。 2、为什么烧录的镜像文件不包含ZI-data呢? 我们都知道在烧写程序的时候,需要烧写bin文件或者hex文件到STM32的flash中,被烧写的文件称为镜像像文件image。image的内容包含这三个Code 、 RO-data 和 RW-data。 通过第一个问题大家应该有所理解,因为ZI数据是0,没必要包含,只要在程序运行前把ZI数据区域一律清零即可,包含进去反而浪费Flash存储空间。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-23 关键词: STM32 SRAM Flash

  • EEPROM和FLASH,NAND FLASH和NOR FLASH有什么区别?

    ROM最初是不能编程的,出厂什么内容就永远什么内容,不灵活。 历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于可以随意的修改ROM中的内容了。 狭义的EEPROM: 例如我们常见的24C02: FLASH属于广义的EEPROM,因为它也是电擦除的ROM。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。 flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。如W25Q128JVSIQ: nor flash: nand flash: 由于nand flash引脚上复用,因此读取速度比nor flash慢一点,但是擦除和写入速度比nor flash快很多。nand flash内部电路更简单,因此数据密度大,体积小,成本也低。因此大容量的flash都是nand型的。小容量的2~12M的flash多是nor型的。 使用寿命上,nand flash的擦除次数是nor的数倍。而且nand flash可以标记坏块,从而使软件跳过坏块。nor flash 一旦损坏便无法再用。 因为nor flash可以进行字节寻址,所以程序可以在nor flash中运行。嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

    时间:2021-01-20 关键词: 存储器 EEPROM Flash

  • 什么是Flash盘?Flash盘的结构是什么样的?

    什么是Flash盘?Flash盘的结构是什么样的?

    Flash是大家常使用的存储之一,对于Flash,大家或多或少有所了解。上篇文章中,小编对Flash闪存的类型有所介绍。为继续增进大家对Flash的认识,本文将对Flash盘、Flash盘结构以及Flash读写操作予以介绍。如果你对本文内容具有兴趣,不妨继续往下阅读哦。 一、Flash 盘的FAT 结构 Flash 硬盘与普通的磁头、柱面式介质不一样。在开发U 盘的过程中,使用Flash 作为存储介质。它有其特定的结构特点。以16M 的三星K9F2808U0A-YCB0 Flash 为例,它有1024 个Block,每个Block 有32个Page,每个Page 有512+16=528 个字节。 二、Flash 的结构 Flash 的读写有其自身特点:1)必须以Page 为单位进行读写;2)写之前必须先擦除原有内容;3)擦除操作必须对Block 进行,即一次至少擦除一个Block 的内容。针对这种情况,将Flash 的一个Page 定为1 个扇区,将其2 个Block,64 个扇区定为一个簇,这样,簇的容量刚好为512*64=32K,满足FAT16 对簇大小的要求。FAT 分配空间的时候,是按簇来分配的,但是其给出的地址却是LBA(Logical Block Address),即它只给出一个扇区号,比如对此Flash 而言,若给出LBA 为0x40,实代表簇1的扇区1。因此需要将Logical Block Address 转换为物理地址,这样,才可以对数据进行存取操作。根据我们定义的结构,转换公式为: Flash 的Block = Logical Block Address/0x20 Flash 的Page = Logical Block Address %0x20 实际上,如果定义每个簇为32 个扇区是最好的,因为这样物理结构和逻辑结构刚好一致。但是这也无防,因为不管Logical Block Address 给出什么值,只要按上述公式,总可以得到物理上正确的Block 和Page,再使用Flash 的读写命令读取对应的Block 和Page 就可以了,读的问题复杂一些,在后面介绍。因此簇和扇区的概念只是在BPB 中给出存储介质信息的时候告之系统就可以了,我们只要做好LBA 与物理地址间的转换就可以了。 由于做为U 盘的Flash 不要求启动,因此可以没有MBR 区,只包含DBR、FAT、DIR 和DATA 四个区。因此,Flash 的前两个Block 的内容如下: LBA Block/Page 长度 内容说明 0 0,0 512 字节 MBR=BPB+Excutable Code+55AA(查看内容) 1~2 0,1~0,2 1024 字FAT 区(第一份FAT)节 3~4 0,3~0,4 1024字节 FAT 区备份(第二份FAT) 5~39H 目录区(在BPB 中调整目录项数,使其刚好占尽本簇) 40H~ 数据区(因目录区占尽一个簇,故数据区始于新簇首扇) 当Host 发出READ 命令后,Flash 读写操作即告开始,Host 首先读取MBR,得到有关存储介质的有关信息,诸如扇区长度、每簇扇区数以及总扇区数等内容,以便知道此盘有多大。如果读取正确,会接着读取文件分配表,借以在PC 机上的可移动盘符中显示文件目录,并可以复制、删除或是创建文件。系统自动将这些命令都转换成Read 或Write 两种命令,通过USB 的READ 或WRITE 命令块描述符来从Flash 中相应扇区读取数据,或是将特定长度的数据写入Flash 相应簇中。 三、Flash 的读写 针对Flash 读写的特点,特别是其可随机读,但无法随机写的问题,需要通过设置缓冲区来解决。在与USB Host 进行数据交换的过程中,最小的单位是扇区:512 字节。由于Flash在写之前必须先擦除,而一擦又必须擦一个Block,因此在擦除某Block 之前必须保存同一个Block 中有关扇区的数据。因此,如果每收到一个扇区的内容就进行一次擦、保存、写的操作,系统任务将十分繁重,无法及时响应USB Host 端的请求。 因此,在系统中设置32K 的缓冲区(ARM7 系统具有2M SDRAM,因此内存足够,如果在8051 平台上,则需要另外想办法),每完成一次数据传输后,记下本次要写的开始扇区和总扇区数,将本次要写的数据所涉及的扇区以外的数据从Flash 中读出来,存放在缓冲区中对应位置,然后擦除一个Block,再将缓冲区中内容一次全部重新写入Flash。 以上便是此次小编带来的“Flash”相关内容,通过本文,希望大家对Flash盘的结构以及Flash的读写操作等内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-11-04 关键词: 指数 flash盘 Flash

  • 你真的了解Flash闪存吗?Flash闪存具备哪些类型?

    你真的了解Flash闪存吗?Flash闪存具备哪些类型?

    对于Flash,大家应该并不陌生。但是请注意哦,这里谈及的Flash不是动画播放格式,这里的Flash指的是Flash闪存。在这篇文章中,小编将对Flash闪存的几大类型予以介绍。如果你对Flash闪存具有兴趣,不妨继续往下阅读哦。 Flash闪存是非易失性存储器,这是相对于SDRAM等存储器所说的。即存储器断电后,内部的数据仍然可以保存。Flash根据技术方式分为Nand 、Nor Flash和AG-AND Flash,而升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR 和NAND闪存。大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。 Nor Flash常常用于存储程序,最初MP3芯片不太成熟的时,曾经有使用过Nor Flash,比如炬力ATJ2075,SunplusSPCA7530等。目前这种Flash已经使用的不多了,只有少数的读卡MP3和数码相框中还有见到,因为这种支持SD卡的产品中没有内存,芯片内的ROM不够存储程序,所以需要用到Nor Flash存储程序。 另外AG-AND Flash 是日本Renesas(瑞萨)公司的技术,良品率不是很高,而且有效容量也比较低。原厂推出的Flash,容量有88%、92%、96%,96%可以用于MP3产品中,而另外两种只能用于U盘和SD卡产品中。我个人认为其性能比较差,尽量不要使用。现在Renesas已经推出Flash的生产商行列,而AG-AND技术也转给台湾力晶公司在继续生产。 Nand Flash也有几种,根据技术方式,分为SLC、MCL、MirrorBit等三种。SLC是Single level cell的缩写,意为每个存储单元中只有1bit数据。而MLC就是Multi-Level-Cell,意为该技术允许2 bit的数据存储在一个存储单元当中。而MirrorBit则是每个存储单元中只有4bit数据。 SLC与MLC的参数对比: 可想而知,SLC的技术存储比较稳定,SLC的技术也最为成熟。然而MLC可以在一个单元中有2bit数据,这样同样大小的晶圆就可以存放更嗟氖?荩?簿褪浅杀鞠嗤?那榭鱿拢?萘靠梢宰龅母?螅?庖彩峭??萘浚琈LC价格比SLC低很多的原因。通常情况下相同容量的MLC和SLC,MLC的价格比SLC低30%~40%,有些甚至更低。 为了区分SLC和MLC,我向大家介绍3个方法: 1、 看Flash的型号:根据Flash的命名规则,进行区分。 2、 格式化,看是否稳定: 目前市场上还流行黑片、白片的说法,这些都是Downgrade Flash的类型,由于Flash制程和容量的提升,内部的构成越来越复杂。而新的制程推出时,产品良率并不一定理想,那些不良的Flash有些是容量不足,有些是寿命不能达到要求,有些是测试不能通过,这些不能达到出厂要求的Flash都被称为Downgrade Flash。Downgrade Flash有些由厂家推向市场,比如Spectech等就是镁光(Micron)的Downgrade Flash。而另外一部分作为废品淘汰掉,但是利润驱使,这些废品也会低价被收购流入市场。一些厂家以各种方案的扫描工具(Soting Board)来检验出来哪些能够使用。这些厂家收购Flash按斤回收,通过少则数十台Soting Board,所则上千台Soting Board一同扫描,每天有上百K的产能。大部分Downgrade Flash被做成SD卡,少数用于U盘,极少数厂家用于生产MP3。Downgrade Flash的处理方式多数是降低容量出售。可是不论怎样处理,都还是存在问题隐患。但由于价格低廉,Downgrade Flash的市场正在进一步成长。 以上便是此次小编带来的“Flash”相关内容,通过本文,希望大家对Flash闪存、Flash闪存类型具备一定的认知。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    时间:2020-11-04 关键词: 闪存 指数 Flash

  • 下一代Flash存储器在工业控制领域技术与应用

    下一代Flash存储器在工业控制领域技术与应用

      下一代Flash存储器品质与耐用度趋势越来越往下,工控市场客户往往只敢选用单价高昂的SLC存储器,也使得工控应用上的SSD容量受到局限;Flash SSD/DOM业者导入十倍于MLC耐用品质等级的iSLC存储器技术,加上导入种种维护、监控SSD内部Flash在擦写均匀度(Wear Leveling)、品质与稳定性的关键技术,使得MLC可以导入轻量级工控应用,而iSLC存储器将成为工控应用的新宠。   MLC在嵌入式工控应用的挑战   NAND Flash随着制程进步,线路宽度与间距越来越细小,连带影响到可擦写次数(P/E Cycles)的缩减。以SLC存储器为例,从3x纳米制程(3xnm)时代的100,000次P/E Cycles,仅需4个ECC bit(错误即时修正位元),到2x纳米制程时代的SLC,其P/E Cycles降到60,000次且需要ECC 24bit。      宜鼎国际股份有限公司工控FLASH事业处协理吴锡熙   MLC Flash从早期5x纳米制程需要ECC 8bit、P/E cycles为10,000次,到3xnm MLC时P/E Cycles降到5,000次,ECC爆增到15bit;跨入2xnm MLC时P/E Cycles已降到3,000次,需要到ECC 24bit,2ynm MLC时,修正位元数更增加至ECC 40bit。   周边储存装置的传输速率也不断的提升。2010年ONFI 2.0推进到133MB/s,eMMC v4.41传输速率为104MB/s;2011年ONFI v2.2/Toggle 1.0规格,把Flash传输速率提升到200MB/s,eMMC v4.5拉高到200MB/s;UFS 1.0传输速率为2.9Gbps,SATAⅡ规格到3Gbps(300MB/s);2012年ONFI v3.0/Toggle v1.5提升到400MB/s,UFS v2.0传输速率倍增为5.8Gbps,SATAⅢ则为6Gbps(600MB/s);到2015年ONFI v4.x/Toggle v2.xx规格定义的传输速率增到800MB/s、1.6GB/s。   面对新一代Flash耐用度╱品质持续下降的种种挑战   吴锡熙指出,使用MLC存储器挑战,在于持续增加的错误位元数,2ynm制程已经超过40个,在-40?85℃宽温环境下,其错误位元数还会增加;同时 MLC在电源突然中断循环测试(Power Cycling)下容易资料遗失,资料寿命会随着P/E Cycles增加而缩短,以及16K分页设计的MLC在做区块回收(Garbage CollecTIon)时会花费更多处理时间。   如果客户评估想导入MLC于轻量级工控应用,除了需要有好的平均擦写机制、内部监控工具之外,还要有其他辅助性的技术。   MLC 会随着P/E cycles擦写次数的增加,错误位元会逐渐增加。依照宜鼎内部长期测试结果,以3xnm MLC为例,从1,000 P/E Cycles以内,平均只产生一个错误位元;经过20,000 P/E cycles后,错误位元数暴增了5倍。2xnm制程的MLC,在1,000 P/E cycles以下的平均错误位元数就已经是5,经过8,000次后增加到25;2ynm制程的MLC在1,000 P/E cycles时错误位元数3,8,000次时增加到34,到10,000次时增加到41个。   宜鼎提出Flash Correct-and-Refresh(FCR)技术,随时读取并监控错误位元发生率异常增加的MLC区块,修正后搬移到其它储存状况较好的区块后重新抹写更新,可以改善Flash的使用寿命。宜鼎也对16KB分页的MLC Flash,发展出更智慧的区块回收(Garbage CollecTIon)演算法,减少SSD做资料维护的延迟现象。   吴锡熙认为若要使用MLC存储器时,可采用动态平均擦写(Dynamic Wear-Leveling)技术,再搭配静态平均擦写(StaTIc Wear-Leveling),对于仅3,000次P/E Cycles的MLC来说尤其重要。像宜鼎(Innodisk)就提供一个iSMART工具程式,可以用点状分布图方式,呈现出该SSD某一个区块的写入次数,以及整体Wear-Leveling效果,同时也能针对温度与使用寿命做监控与预估,同时也能发挥监控效能以及预先警示功能。   而 MLC在写入资料时若突然发生断电情况,万一此时韧体正在进行写入资料或区块回收作业时,特别容易造成被写入的存储页与相邻存储页的连带影响,甚至造成整个SSD资料遗失。因此好的SSD控制芯片需具备失效╱低电压侦测电路,藉由侦测输入电流发生压降时,能迅速的将该写完的存储页完成后,储存必要的系统状态旗号恢复且重新开机载入OS。   以iSLC提供低成本、高品质的工控应用   在一般商温(0~70℃)的工控应用下,需要经常性的读写且要五年的品质保证,对于密集读写的重量级应用上,客户往往只选订SLC;但SLC与MLC价差快要五倍。因此宜鼎提出以iSLC存储器解决方案来取代。   iSLC 与既有SLC、MLC存储器的差异,在于iSLC运用既有的低本的MLC存储器制程技术,在每一个细胞电路单元,使用SLC读写技术(只储存1个位元的电荷值),Endurance因而提升到30,000次P/E Cycles,介于SLC的60,000次与MLC的3,000次之间,成本虽然比MLC高,却比SLC便宜一半。可应用在像是IPC/Kiosk /POS系统、嵌入式系统、伺服器主机板以及薄型终端机等。   他列出一张以相同2xnm制程的MLC与iSLC长期耐用度的测试图表:MLC 在连续写20,000次后,产生错误位元数超过30;iSLC则是仅有6个,即便连续抹写超过100,000次,产生错误位元数不超过10个,耐用度与品质媲美标准SLC制程的SLC存储器。以32G容量SSD测试,每天写满32GB资料10次,MLC只能维持0.8年,旧制程(3xnm) SLC可以达到27.4年,新制程(2xnm) SLC可达16.4年,而2xnm制程的iSLC可达到7.6年。   宜鼎国际以iSLC快闪存储器技术设计一系列产品,全为SATAⅡ介面设计:   型号2.5” SSD 2IE採8通道设计,容量32GB~256GB,循序读写速度为230、200MB/s;SATADOM-QVL 2IE以及SATADOM-QV 2IE则为4通道设计,容量8 ~ 64GB,循序读写速度为130、120MB/s;CFAST 2IE存储器一样为4通道设计,容量8 ~ 64GB,循序读写速度为130、120MB/s。另外有mSATA 2IE的mSATA模组,Halfslim尺寸的SATA Slim 2IE,以及SATADOM QH 2IE模组,皆为SATAⅡ介面四通道设计,容量8 ~ 64GB,循序读写速度为130、120MB/s   嵌入式应用的SATAIII解决方案   吴锡熙接着介绍针对嵌入式工控应用的SATAIII产品解决方案。由宜鼎研发的Innodisk ID167控制芯片,采四通道8CE设计,ECC资料修正能力为40bit/1KB;搭配64Mx16bit的DDRⅢ存储器做为读写缓冲区,同时在SATAⅢ的Slumber、DEVSEL模式下仅有33 mW、5mW的功耗。採ID167设计的SSD与mSATA模组,将于2013年第一季开始送样。   Innodisk ID167搭配选用24/25nm制程的同步型(Sync)MLC Flash存储器颗粒,以IO Meter做效能实测,64GB(4CH)版本,其循序读取╱写入效能达480MB/s、270MB/s,持续性读取╱写入IOPS为80K、 1K;128GB(4CH)版本的循序读取╱写入效能 520MB/s、350MB/s,持续性读取╱写入IOPS为80K、2K;256GB(4CH)循序读取╱写入效能 550MB/s、400MB/s,持续性读取╱写入IOPS为80K、3K,表现算是相当出色。   跟工控应用为主流的128GB SLC SSD相比,CystalDiskMark v3.0实测结果,256GB MLC SATAIII SSD的循序读取、写入速度为519、344MB/s,而纯SATAⅡ的128GB SLC SSD,循序读取、写入速度为253、190MB/s。在两者成本相近情况下,256GB MLC SATAIII SSD比128GB SLC SATAⅡ SSD容量倍增、效能更快。   宜鼎也提供有SSD单芯片模组,由Innodisk ID167控制芯片加上Flash硅晶圆封装做COB封装而成,32GB(4CH x 1CE)版本,其循序读取、写入速度为480、140MB/s。跟SATAII SLC的32GB SATADOM做CystalDiskMark v3.0效能实测,SATA III循序读取、写入速度为482、271MB/s;SATA II循序读取、写入速度为252、235MB/s。

    时间:2020-09-05 关键词: 存储器 工业控制 嵌入式 ssd 伺服器 Flash

  • 累计出货130亿颗Flash、4亿颗MCU:深度解析兆易创新的三大产品线

    累计出货130亿颗Flash、4亿颗MCU:深度解析兆易创新的三大产品线

    7月31日,主题为“兆存储、易控制、新传感”的2020兆易创新全国巡回研讨会在深圳召开。在本次活动上,兆易创新详细介绍了其在存储器、控制器、传感器三大业务板块所取得的成绩以及最新规划。 在2019年4月,兆易创新收购思立微获得证监会通过之后不久,兆易创新就开始根据业务经营情况调整了公司组织架构,思立微成为兆易创新传感器事业部的核心,产品线也开始与兆易创新的产品线进行整合,目前兆易创新已经组建完成了以存储、MCU、传感器为核心的三大事业部架构。 根据年报资料显示,截止2019年末,在涵盖NOR Flash、NAND Flash、MCU、指纹识别等芯片关键技术领域,公司已积累1195项国内外有效的专利申请,其中2019年已提交新申请专利201项,新获得156专利授权,为公司提升技术水平和产品竞争力的有力保障。 一、存储器业务 众所周知,NOR Flash一直是兆易创新的在存储领域的主力产品。根据官方公布的数据,目前兆易创新的SPI NOR Flash产品已经拥有26大产线系列、16种产品容量、7种温度规格、4个电压范围、25种封装方式。多年的持续投入以及丰富的产品线布局,也使得兆易创新在在全球NOR Flash市场有着较高的市占率。 根据研究机构的数据显示,兆易创新是全球排名第一的无晶圆厂NOR Flash供应商,在SPI NOR Flash领域,2019年市场占有率已达17.2%,排名全球第三。2008年至今,Flash累计出货量超130亿颗。 而根据研究机构的预测数据显示,2020年全球NOR Flash市场规模在30.6亿美元左右,到2022年这一市场将进一步成长到37.2亿美元。显然,NOR Flash市场仍有进一步的成长空间。从上图中我们也可以看到,2019年兆易创新NOR Flash出货量(28亿颗左右)相比2018年出货量(接近20亿颗左右)大幅增长了近40%。 而目前NOR Flash市场主要增长动能则来自于TWS耳机、5G基站及车用市场。 近两年来,随着TWS耳机市场持续火爆,其对于低功耗、小封装的NOR Flash的需求也持续放大。而根据市场调研机构Counterpoint Research报告预测,全球TWS耳机市场2020年将达到2.30亿部,同比增长90%。这也意味着将有4.6亿颗NOR Flash的需求(一般每只TWS耳机都需要一颗NOR Flash)。 在TWS耳机这块,兆易创新也有一系列的低功耗、小封装的NOR Flash产线进行应对,并在高通多个TWS主控平台下完成了认证。 △兆易创新1.8v 16Mb 3mm x 4mm封装的SPI NOR Flash在TWS耳机上的应用 在5G基站这块,由于其本身的发热量较大,再加上苛刻的室外高温工作环境,使得其对于Flash的耐高温、可靠性、使用寿命要求较高。对此,也进一步推动了对于耐高温、高可靠性的NOR Flash产品的需求。据兆易创新Flash事业部市场经理薛霆透露,目前兆易创新已经与全球顶级的通信设备厂商达成了合作。 在车用市场,由于近年来新能源汽车市场的高速增长,也推动了汽车电气化的进程,对于各类电子元件的需求呈爆发式增长。但是,汽车对于电子元件的安全性和可靠性要求要远高于普通消费类产品,所以要进入汽车市场,就需要达到车规级标准。 目前兆易创新针对车用市场,也推出了车规级3.0v SPI NOR Flash和车规级1.8v SPI NOR Flash产品,容量涵盖了2Mb-256Mb,同时,更大容量的512Mb-2Gb产品也在规划中。 兆易创新Flash事业部市场经理薛霆表示:“车规的一些应用对安全性、可靠性、一致性都要求非常高,伴随着机械的部件逐步的被电子部件替代,伴随着新能源车的蓬勃发展,里面很多的场景会用到NOR Flash或者NAND Flash。我们兆易创新的全系列的Flash都满足125度的GRADE 1车规级的产品,同时我们也在品控上追求达到0PPM。” 薛霆称,未来兆易创新的Flash产品将继续向大容量、高性能、高可靠性、低功耗、小封装方向演进。 在安全方面,兆易创新也将英特尔的RPMC协议扩展为“Memory access control”,可提供更高安全级别保护。 另外,在工艺制程方面,SPI NOR Flash将采用55nm新成熟工艺,涵盖128Mb-2Gb容量。而其他NAND产品将向38nm以及24nm工艺演进,涵盖1Gb-8Gb容量。 在供应链方面,兆易创新的Flash产品主要是交由中芯国际、上海华力微电子代工,封装则主要交由日月光、华天科技、力成科技、长电科技和南茂科技等封测厂。 值得一提的是,在DRAM内存芯片布局上,兆易创新主要是通过其与合肥市产业投资控股集团合作的长鑫存储来进行布局。根据最新的数据,目前长鑫存储共申请了2382项专利,其中发明专利1258件,另外还通过之前的两笔授权合作获得的大量的DRAM专利授权。 从官方公布的主芯片认证名单来看,长鑫的DRAM芯片已经通过了主流的芯片厂商,比如高通、海思、联发科、展锐的多款芯片认证。 另外,值得注意的是,今年5月,兆易创新宣布与Rambus就RRAM (电阻式随机存取存储器) 技术签署专利授权协议。同时,兆易创新还与其同Rambus 以及几家战略投资伙伴的合资企业—;—;合肥睿科微(Reliance Memory)签署了授权协议 。 根据协议内容,兆易创新从Rambus和睿科微获得180多项RRAM技术相关专利和应用,这将有助于兆易创新在新型存储器RRAM 领域的前瞻性技术布局,从而为嵌入式产品提供更丰富的存储解决方案。 二、MCU业务 除了Flash业务之外,MCU业务也是兆易创新很早就开始布局的一块业务。早在2013年4月,兆易创新就推出了国内首款基于Arm Cortex-M3内核的32位MCU。经过近7年多的持续开拓,目前兆易创新在基于Arm内核的MCU产品上已经有了24条完整的产品线,有超过300款可选型号,具有高性能、系列间兼容、工业级可靠性和开发简易等特点。 根据官方公布的数据显示,自2013年4月兆易创新的第一款32位MCU推出以来,截至2017年5月,兆易创新的32位MCU出货已经累计突破1亿片,截至2020年6月这一数字已经突破了4亿片。显然,在最近这三年里,兆易创新的32位MCU出货正在加速。 根据IHS Markit的一份数据显示,2018年兆易创新的Arm Cortex-M系列MCU在国内市场的份额(以营收统计)已经达到了9.4%,排名第三,仅次于意法半导体和恩智浦。 除了基于Arm Cortex-M系列的MCU之外,在2019年8月,兆易创新还推出了全球首颗基于RISC-V内核的通用MCU—;—;GD32V系列,新品首批提供了14个型号,包括QFN36、LQFP48、LQFP64和LQFP100等4种封装类型选择,并完整保持了与现有产品在软件开发和引脚封装方面的兼容性。 据兆易创新MCU事业部产品经理陈奇介绍,GD32V系列MCU在最高主频下的工作性能可达153 DMIPS,CoreMark测试也取得了360分的优异表现,相比GD32 Cortex-M3内核的GD32F103性能提升15%的同时,动态功耗降低了50%,待机功耗更降低了25%。 △目前已经量产销售的GD32 MCU产品系列 △GD32的Cortex-M系列MCU产品拥有丰富的封装类型,同时还在规划新的QFN64 0.5mm Pitch和QFN56 0.5mm Pitch封装类型。 在供应链方面,GD32 MCU系列目前主要交由中芯国际、联电、台积电代工。目前兆易创新已经有一颗MCU产品在台积电生产。在封装方面,则主要是交由日月光、华天科技、力成科技进行封装。 对于GD32 MCU后续的市场产品方向,陈奇表示,无线连接、超低功耗和汽车级产品则是未来的三大方向。 因此,兆易创新也将会针对这三大方向,推出基于Arm Cortex-M33及M7内核的MCU产品,进一步强化GD32 MCU在无线连接、工业控制等应用场景下的能力。 此外,陈奇还透露,2022年兆易创新将会立项研发车规级MCU,将满足汽车级产品认证和车身控制系统以及辅助驾驶系统。 陈奇表示:“兆易创新在MCU领域的愿景是,构建一个GD32 MCU百货公司。主要分为六大部分:Memory是兆易起家的产业链,上面积累了非常多的量产和品质把控的经验;Sensor是通过资本的运作(收购思立微),融入了更多的团队,兆易还在北京和西安组建了研发团队,所有的现有产品的模拟IP都是兆易创新自己的团队去研发和实现的;另外,新型存储器、eRF都可以降低功耗。兆易创新还与美国一家公司也签了授权协议,后续可以做低功耗的MCU;最后,在内核方面,兆易创新的产品会继续演进,并且还会深耕一些自主IP的内核。” 三、传感器业务 早在2018年1月30日,兆易创新就发布公告,宣布将通过发行股份及支付现金的方式,作价17亿元收购指纹识别厂商上海思立微电子科技有限公司100%股权。其中股份支付对价为144,500.00 万元,现金支付对价为 25,500.00 万元。2019年4月,这一收购案获得了证监会的通过。 在成功将思立微收入囊中之后,经过近一年的时间的整合,目前思立微原有的产品线已经并入了兆易创新,成为了兆易创新的传感器事业部。 众所周知,思立微原本就是国内知名的触控和指纹识别技术厂商,早在2012年之时就思立微就推出了全球首款单层多点触控芯片,并且2013年的国产平板市场占据了70%的市场份额。2014年,思立微又成功推出首款针对Android平台的电容指纹芯片,并且在2015年成功推出旗下首款镜头阵列光学指纹芯片,2017年成功成为全球前三的指纹识别芯片厂商。2018年思立微又推出了全球首颗单芯片光学指纹芯片,随后得到了多家手机大厂的采用,成为了出货量仅次于汇顶科技的光学指纹芯片大厂。 据兆易创新传感器事业部高级产品经理孙云刚表示:“目前兆易创新的触控芯片在中小品牌的平板市场占有率达到了80%。在一些细分市场比较智能楼宇的市场占业率已经达到了40%,我们可以提供单点、多点触控,我们还有不同通道的选择可以支持不同尺寸的触摸屏。” △兆易创新的触控产品线 除了继续开拓光学屏下指纹市场,去年,兆易创新传感器事业部还成功研发了TFT大面积指纹识别、一体式MEMS超声波指纹识别,今年还研发了第一颗锗硅工艺的ToF芯片。 △兆易创新的指纹产品线 据孙云刚介绍,兆易创新的TFT大面积指纹识别是在基于CCM的镜头的光学指纹识别基础上演进而来,目前该TFT大面积指纹识别可以做到高QE80%的量子转化效率,可以做到超薄和厚度0.3毫米以内,支持任意位置的解锁以及支持双指和多指的识别,也可以应用在安全等级更高的控制领域和一些安全等级比较高的比如公安部或者机场、车站以及海关。 相对于光学屏下指纹和电容指纹来说,超声波指纹拥有更强的穿透力,可以穿透OLED屏、玻璃、金属、塑料,并且对油污和湿手指的性能也比较好,这也使得厂商可以做一些隐藏式的指纹识别,比如放在金属之下,或者玻璃盖板下,这样就可以兼顾整个工业设计的美观。同时,超声波可以获得3D指纹,安全性更高。基于此,兆易创新传感器事业部首创采用了多点同时发射技术,进一步增加了超声波的穿透能力,使得识别性能更好。 据孙云刚介绍,目前兆易创新的首款超声波指纹识别芯片GSL8165已经研发完成,正处于待量产状态。 △兆易创新的超声波MEMS指纹识别芯片GSL8165 超声波技术还可以被用于健康检测,因为超声波可以穿透到真皮层,进而可以检测到人体血管的状况,配合相关软件可以实现对于心率、血压的检测。 兆易创新还开发了超声波ToF技术,相比光学ToF技术来说,超声波ToF不易受光线和热的干扰,功耗低,并且支持超大检测角度(最高180°),因此可以实现手势控制、车内儿童检测等应用。 在目前比较火热的3D ToF技术方面,兆易创新也推出了自己的第一颗锗硅工艺的ToF芯片GSLT9001(VGA分辨率)。 据介绍,该ToF芯片由于采用的是锗硅工艺,可以支持1350nm和1550nm长波段以及940波段,而1350nm和1550nm波段在户外的性能会非常的出色。除此之外它的波长更长,能量更弱,对人眼的安全性会更有保障。此外,GSLT9001在光电转化效率上也更高,在1350nm波段,光电转换率可达50%,在940nm波段,光电转换率可达65%,相比基于硅工艺的ToF芯片高出近一倍。 △GSLT9001参数 △GSLT9001模组实拍 除了GSLT9001之外,兆易创新还在研发支持940nm及1440nm波段的ToF芯片GSLT9301,即将开始量产。此外,还规划了同样支持940nm及1440nm波段的GSLT9011和GSLT9321,预计将分别于2020年四季度前和2021年一季度前量产。 兆易创新传感器事业部高级产品经理孙云刚表示:“传感器事业部的产品是以声、光、电为基础,开发了光学指纹、光学ToF、电容指纹、触控芯片、超声波指纹等等。应用领域覆盖了智能手机平板、工业控制、汽车、健康和可穿戴市场。” 特别值得一提的是,兆易创新还布局了硅麦产品线,拥有5个产品型号,三种尺寸,SNR从59dB-65.5dB,可以满足智能手机领域、音响领域、loT领域等不同场景的应用需求。 孙云刚表示:“我们的硅麦产品的一大优势就是我们有一个整体的解决方案,因为我们不仅有硅麦这块,我们还有Flash和MCU,可以提供完整的硬件的解决方案。除此之外,我们还有软件和算法的结合,音频的这块我们可以全部的解决,提供一个整体的解决方案。我们还有丰富的实验室资源以及丰富的认证资质的资源,依托着整个基地以及MCU的产业,我们产业链的有强大的供应保障和品质保障。”

    时间:2020-08-25 关键词: 半导体 闪存 MCU 兆易创新 Flash

  • 实例分析MCU的Data Flash访问控制

    实例分析MCU的Data Flash访问控制

      笔者在家用火灾报警系统项目的开发过程中,在进行主从机通讯和从机自身任务处理时,需要经常与从机MCU进行运行数据的存取。过去传统的方法是在MCU上外挂EEPROM或将MCU内部的部分存储单元专门划分出来,以存取运行数据。这两种方法的不利之处是:外挂EEPROM需要增加MCU与EEPROM的读写接口,增加了MCU的管脚负担,减慢了数据的读写速度的同时还增加了功耗;专门为运行数据划分存储单元则减少了程序代码的存储空间,同时存储空间的读写、擦除等操作会比较麻烦,另外还要非常小心,以防擦掉了有用的程序代码。   瑞萨RL78系列MCU内嵌2KB的DATA FLASH,省去了用户单独外扩数据FLASH的麻烦。RL78系列MCU还支持BGO操作,程序指令在DATA FLASH读写时仍可正常执行。其对DATA FLASH存储单元的写操作寿命高达1百万次以上,非常适合于需要频繁存取数据的应用场合。   与有些半导体厂商的控制芯片不同,瑞萨并没有直接将DATA FLASH的读写操作完全开放给用户,而是提供了一套叫做PFDL(Pico Data Flash Library,即微型数据闪存访问库)的软件接口,来实现对闪存系统的操作。用户使用时只需要调用相应的库函数即可进行DATA FLASH的读写、校验、擦除等操作,而不必关心底层驱动函数的具体实现方式。这在很大程度上方便了用户程序的设计,缩短了开发周期。   1)DATA FLASH结构和PFDL   RL78的存储结如图1所示。其中Data Flash memory物理地址为F1000H-F17FFH,被分成了两个BLOCK区,每个BLOCK区1KB,共2KB。   图1:瑞萨RL78系列MCU的存储结构   PFDL由表1所示的库文件组成。   表1:PFDL库文件   2)Data Flash的存储结构和使用方法   首先有必要将RL78系列MCU关于DATA FLASH操作的几个问题进行说明。RL78系列DATA FLASH的擦除操作只能以BLOCK为单位,不支持单字或单字节擦除。所以当有一项长度为若干字节的数据要写入DATA FLASH时,不可能将数据每次都写入固定的物理地址所对应的存储单元中,而是必须在新的空存储单元中写入。这就意味着用户在设计DATA FLASH的存储结构时,必须有寻址功能。   RL78系列DATA FLASH同一时刻只能有1个BLOCK处于激活状态,是有效的,此时另一个BLOCK不可访问,是无效的。习惯上,我们常将DATA FLASH的一个BLOCK称为一页,当一个有效页被写满数据时,要想继续写入数据的话,则只能在下一页中写入,同时还需要将前一页中有用的其他数据项拷贝到下一页中,并将下一页标记为当前的有效页,将上一页标记为无效页,即必须有DATA FLASH的页标记和导页机制。   为此,笔者将整个DATA FLASH分成两页(每个BLOCK自然形成一页,两页交替使用),每页的起始地址作为页标记单元,见表2。每次进行DATA FLASH操作前应先读取该标记单元来确认当前有效页。 表2:页标记

    时间:2020-08-20 关键词: 瑞萨 MCU data rl78系列 Flash

  • 乔布斯为何痛恨Flash?真相是这样的

    乔布斯为何痛恨Flash?真相是这样的

      据外媒报道,“iPhone不支持Flash”这个事实现在大家都已经细观,而当初乔布斯为了Flash跟Adobe斗智斗勇的故事也听说过,至于根本原因却一直不知道。不过现在一位名叫Bob Burrough的前苹果软件开发主管,在Twitter上透露了故事的另一面。   Bob Burrough透露,早在2008年的时候,该公司曾在iPhone上测试过Flash 。至于乔布斯强烈拒绝Flash的真实原因,这与Flash安全的关系并不大,更多的是合作伙伴Adobe未能给出令人信服的其能够解决这些安全问题的凭据。   随后Burrough还提到了乔布斯当时的心态,称其痛斥Adobe CEO山塔努·纳拉延会气得不接自己(乔布斯)的电话,因为他完全不相信该公司能解决这个“纯粹的工程问题”。   不过事实证明乔布斯眼光独到。谷歌表示,从2016年9月的Chrome 53开始,Chrome浏览器将屏蔽在后台加载的Flash内容,估计这类内容占互联网上Flash内容的90%。今年12月,Chrome将把HTML5设为网页核心内容,例如游戏和视频的默认选项,但仅支持Flash的网站除外。   除此之外,Mozilla和微软也在逐步舍弃Flash。Adobe也发布公告称,将鼓励内容创作者采用新的网络标准,例如HTML5,而不是Flash。与此同时,Adobe将放弃Flash这一名称,将动画制作工具改名为Animate CC,取代之前的Flash Professional CC。

    时间:2020-08-17 关键词: iPhone 乔布斯 adobe Flash

  • FPGA多重加载技术的设计模块及其在硬件平台上的多模式启动测试并分析

    FPGA多重加载技术的设计模块及其在硬件平台上的多模式启动测试并分析

    摘 要: Xilinx 7系列FPGA是Xilinx公司最新推出的一个芯片系列,Kintex7是该系列芯片中的一种,拥有大量的可编程资源。即便如此,在一些多模式的大型复杂的系统设计中,芯片的资源还是远远不能满足设计需求。FPGA的多重加载可以解决可编程资源不足的难题。FPGA多重加载是将设计的多个模式的比特文件存储到Flash,用户可以根据需要选择加载不同模式的比特文件。FPGA的多重加载解决了可编程资源不足的问题,提高了FPGA可编程资源的利用率。 随着通信技术的快速发展,多模式通信体制在现代通信中广泛存在,如时分多址、空分多址、空分多址、频分多址等。而调制、解调技术又分为FM、FSK、BPSK、QPSK等多种调制及解调技术。在一个通信系统中往往采用多种通信模式,这对硬件设备资源提出了比较高的要求,特别是对可编程芯片资源的要求。另外,多模式系统设计的复杂性也大大提高,同时对系统的维护和升级提出了挑战。 近些年FPGA技术得到了飞速的发展,其作为可编程资源广泛应用在大型复杂通信系统设计中。尽管FPGA在资源集成度方面近些年取得了可观的成果,但是在多模式的大型系统设计中,单片FPGA资源远远不能够满足设计需求,有时可能需要多个芯片。然而FPGA价格相对较高,这大大提高了设计成本,而且不易于产品升级和维护。 FPGA多重加载技术[1-2]实际是对可编程资源的复用,用户可以根据需求选择加载不同的比特文件,从而实现多模式功能。FPGA多重加载技术可以解决可编程资源不足的问题,提高了可编程资源的利用率,同时降低了系统设计的复杂性,增加了系统设计的灵活性,减小了多模式系统的耦合性,便于系统升级和维护。 1 硬件设计 Kintex7和SPI Flash物理连接的硬件设计如图1所示。SPI Flash的容量选择与设计的加载模式的个数和FPGA芯片的种类有关,本设计实现4种模式切换,SPI Flash内存储4个比特文件,SPI Flash的容量是512 Mbit。 2 控制部分的设计 控制部分的设计是基于PowerPC[3]处理器实现的,用于对整个数据采集系统的控制,这里只对FPGA模式加载控制做简单说明。FPGA的加载模式控制信息由上位机发送,上位机的1 G(TCP协议)网络将加载模式控制信息发送到数据采集系统的1 G网络;数据采集系统控制部分解析TCP数据包,提取有效信息,判断加载模式,将加载信息通过EPC(外设控制器)写到FPGA的寄存器中,Kintex7会根据寄存器中的值选择加载模式。外设控制器(EPC)是FPGA与PowerPC之间通信的桥梁,在重加载控制过程中主要负责传递加载模式信息到FPGA寄存器内,另外还需要将加载成功后的模式信息进行回读,并且通过1 G网络送到上位机界面,判断是否重加载成功。嵌入式控制部分的设计如图2所示。 3 重加载模块的设计 IRPOG命令序列是实现FPGA重加载的重要环节。IPROG命令的效果与在PROGRAM_B引脚产生一个脉冲的效果类似,但是IPROG命令不对重配置[4]逻辑进行复位。Kintex7内部ICAPE2模块能够执行IPROG命令,IPROG命令触发FPGA从SPI Flash中重新加载比特文件,加载地址是Kintex7中WBSTAR寄存器指定的地址。IPROG命令发送后,FPGA完成3个动作:发送同步字节(AA995566);向Kintex7的WBSTAR寄存器写入下一个加载地址(表1地址为00000000);发送IPORG命令(0000000F)。表1是通过ICAPE2向重配置模块发送IPROG命令的比特流,MulTIboot[5]控制器用一个状态机向ICAPE2发送表1中的IPROG命令序列。一般情况下,重配置控制器等待外部的激励信号,当激励信号到达后,控制器向ICAPE2发送表1命令序列,在发送命令序列之前,控制器先把WRITE端口置为低电平,在下一个时钟的上升沿把CE端口置为低电平,接下来发送表1指令序列。 FPGA内的重配置逻辑接收到IPROG命令后,FPGA执行复位操作,但不对重配置逻辑进行复位,并且将INIT_B和DONE引脚拉低。FPGA清除了所有的配置存储后,INIT_B端口被拉高。最后,WBSTAR寄存器的值被用来重新配置FPGA。 IPROG命令序列通过状态机实现,状态机中最少有8个状态才能生成整个IPROG命令序列,否则,IPROG命令序列不能够生成,FPGA不能重新配置。另外,IPROG命令的发送由ICAPE2模块执行,ICAPE2模块的输出时序和SelectMAP的输出时序是一致的,SelectMAP的输出数据格式是位转换格式,所以IPROG命令序列生成的过程中需要将配置数据进行位转换。这里位转换是指字节内位转换,即最高有效位变为最低有效位,以此为规则进行字节内的位互换。位转换结果如表2所示。

    时间:2020-08-05 关键词: FPGA spi Flash

  • Adobe 官网发布 Flash Player 停止支持问答:建议卸载,到期后不能再使用 Flash

    Adobe 官网发布 Flash Player 停止支持问答:建议卸载,到期后不能再使用 Flash

    6月21日消息 此前Adobe宣布将在今年12月31日停止支持Flash Player,现在Adobe官网介绍了关于Flash Player停止支持更加详细的问答。获悉,Adobe表示,EOL日期之后,Adobe将不会发布Flash Player更新或安全补丁。建议所有用户在EOL日期之前卸载Flash Player。Adobe将在今年晚些时候提示用户卸载其计算机上的Flash Player,并且在EOL日期之后,将禁止基于Flash的内容在Adobe Flash Player中运行。Flash Player何时终止(EOL)?如先前在2017年7月宣布的那样,Adobe将在2020年12月31日(“终止日期”)之后停止分发和更新Flash Player。我们与包括苹果,Facebook,谷歌,微软和Mozilla在内的多个技术合作伙伴合作发布了此公告,这些合作伙伴发布了补充公告,其中详细介绍了Flash Player终止服务对使用其特定的操作系统环境或浏览器功能的开发人员,企业和消费者的意义。Adobe为什么决定终止Flash Player,并选择2020年结束日期?多年来,诸如HTML5、WebGL和WebAssembly之类的开放标准一直在不断成熟,并可以作为Flash内容的可行替代方案。此外,主要的浏览器供应商正在将这些开放标准集成到他们的浏览器中,并且淘汰了大多数其他插件(例如Adobe Flash Player)。2017年,我们在提前三年通知的情况下宣布了业务决策,我们认为这将留出足够的时间开发人员、设计人员、企业和其他各方可以根据需要将现有Flash内容迁移到新的开放标准。该决定将如何影响到今年(2020年)剩余时间的Adobe Flash Player支持和发行?Adobe将继续发布常规Flash Player安全修补程序,维护操作系统和浏览器兼容性,并在2020年底之前添加Adobe确定的功能。Adobe是否会在2020年之后提供Adobe Flash Player的早期版本供下载?不会。Adobe将从其站点删除Flash Player下载页面,并且在EOL日期之后,将禁止基于Flash的内容在Adobe Flash Player中运行。Adobe始终建议你使用最新的、受支持的软件。客户不应该在EOL日期之后使用Flash Player,因为Adobe不再支持它。如果我发现可以在第三方网站上下载Flash Player,可以使用它吗?不可以,这些版本的Flash Player未经Adobe授权。客户不应使用未经授权的Flash Player版本。未经授权的下载是恶意软件和病毒的常见来源。Adobe对未经授权的Flash Player版本不承担任何责任,客户对使用此类版本的风险完全由自己承担。哪些浏览器和操作系统当前支持Adobe Flash Player?请访问http://www.adobe.com/cn/products/flashplayer/tech-specs.html,以获取Flash支持的浏览器和操作系统的最新列表。注意,随着距EOL日期越来越近,支持Flash的浏览器和操作系统的数量可能会减少,因此Adobe强烈鼓励客户迁移到其他标准。技术支持终止后,Adobe是否会为Flash Player提供安全更新?EOL日期之后,Adobe将不会发布Flash Player更新或安全补丁。我们建议所有用户在EOL日期之前卸载Flash Player。Adobe将在今年晚些时候提示用户卸载其计算机上的Flash Player,并且在EOL日期之后,将禁止基于Flash的内容在Adobe Flash Player中运行。

    时间:2020-07-10 关键词: adobe player Flash

  • Flash 官宣停止运营!中国特供版值得继续使用吗

    Flash 官宣停止运营!中国特供版值得继续使用吗

    最近,关于 Flash 死亡的话题又再次引起了热议。早前 Flash Player 的东家 Adobe 就已经确认,将会在 2020 年 12 月 31 日彻底停止支持 Flash Player,Flash Player 迎来生命终点(EOL)。Adobe 在其官网上确认,Flash Player 将不再获得任何包括安全更新在内的技术支持,用户应该在 EOL 日期之前卸载 Flash。Flash 将停止运营,但中国特供版除外?然而,Adobe 同时在新浪微博上表示,Adobe 将会继续与重橙网络合作并支持其在中国大陆地区对 Flash Player 的独家发行与维护,该合作仅限中国大陆地区。换言之,Flash Player 特别为中国制作了一个 “特供版”,这到底是个怎么样的存在?值不值得继续使用?今天就来谈谈吧。Flash Player 为何要迎来终结?作为曾经网络上的大红人,Flash Player 退役终究是一件令人唏嘘的事情。在早年,FlashFlash 诞生于 1996 年,为仍处于雏形的互联网带来了更丰富的交互、更多样的色彩、更动感的视觉,是否使用 Flash,甚至一度成为网页是否先进的标准——看看多少网页开发的书籍都是 Flash 教程,就能得以一窥 Flash 当年的江湖地位。服务 13 亿用户的口号,还是名副其实的然而,时代在变迁,Flash Player 已经难以在移动互联网时代继续高歌猛进。当年苹果 iOS 首度吹响了抛弃 Flash Player 的号角,乔布斯当年为此甚至发布了一封 “Flash 之我见(Thoughts on Flash)” 的长篇公开信,信中抨击了 Flash Player 的种种缺点,具体如下:· 安全性差,被赛门铁克公司列为 2009 年最差安全记录之一;· 稳定性不好,导致 Mac 电脑死机;· 迟迟未推出移动版,导致手机等移动设备访问 Flash 视频网站时消耗了大量额外的电力;·Flash 主要的操作习惯均为鼠标定制,在多点触摸操作方式中,大量 Flash 网站需要重写时至今日,Flash Player 依然保留着这些缺点。而随着 HTML5 的崛起,Flash 的功能也早不再是独步江湖,无论是视频播放,还是多媒体交互,HTML5 都能做得更好。无论在功能还是性能上,Flash 对比 HTML5 都没有优势。业界对这些情况是早有了解的。在 iOS 拒绝 Flash 登陆后,Android 和 WP 也随之宣布不再支持 Flash Player。而在桌面平台上,Flash Player 也走到了尽头,无论是 Chrome、Firefox 还是 Edge,都对 Flash 发出了最后通牒。无论从兼容、功能、效率、安全的角度出发,Flash 都已经跟不上时代,它被淘汰自然也就理所当然了。中国特供的 Flash 值得继续使用吗?由于国情,中国的互联网生态对 Flash 的依赖是比较重的。国内仍有不少老旧的网络系统,需要借助 Flash 来实现办公、登录、上传数据等功能。此情此景下,Adobe 和重橙网络合作,推出中国特供版的 Flash,就有了其合理之处。Adobe 表示,这是为了支持中国大陆地区市场特有的发行渠道、用户习惯和企业、开发者和游戏社区。然而用户对此是否买账?未必。在 Adobe 的官方微博下,出现了大量负面评论,不少网友都并不欢迎 Flash 中国特供版,还有人将其斥为 “流氓软件”。出现这样的情况其实是可以理解的,因为从 2018 年重橙代理 Flash 一来,中国地区特供的 Flash 就已经带上了一些强硬的推广风气。Adobe 微博的评论区中,大家并不欢迎 Flash 中国特供版例如,当你更新完 Flash 后,就会弹出一个推广网页,其中的内容可以说非常 “屠龙宝刀点击就送”了。又例如,Flash 之前还干过捆绑 2144 游戏中心、强行运行 FlashHelperService 进程之类的事情,很多作风已经带有流氓软件的特征。在这样的情形下,人们自然会对中国特供版 Flash 产生不信任。Flash 更新后弹出的游戏推广页面另一方面,Flash 本身作为落后的互联网技术,用特供版来苟延残喘,这是否逆潮流而行?如果让 Flash 彻底退役,倒逼依赖 Flash 的各类网络系统来革新,会不会是更合理的做法?这是很值得探讨的问题。总结作为旧时代的产物,Flash 的退役是合乎情理的。但国内的一些互联网系统仍依赖 Flash,中国特供版的 Flash 依旧有用武之地。微软 Win10 内置 Flash,会推送补丁修复 Flash 漏洞另外,目前 Windows 10 仍内置 Flash Player,而且会通过 Windows Update 推送相应更新,如果你想要避免 Flash 带来的弹窗等问题,使用 Win10 内置的 Flash 或许是更好的选择。当然,在 Adobe 停止 Flash 的技术支持后,或许 Win10 的 Flash 更新推送也会停止,但国内特供的 Flash 就会有安全补丁推送吗?重橙网络是否有修补 Flash 漏洞的能力?我们拭目以待吧。

    时间:2020-07-10 关键词: Flash

  • 告别Flash时代 Adobe呼吁用户赶快卸载Flash Player

    告别Flash时代 Adobe呼吁用户赶快卸载Flash Player

    据悉,Adobe近日宣布,将在2020年12月31日正式停止对Flash Player的支持,并官方建议所有用户在Flash到期之前卸载FlashPlayer。 在此之前,Adobe将不会发布FlashPlayer更新或安全补丁并且从2021年开始,将禁止基于Flash的内容在FlashPlayer中运行。而Adobe 在该日期之后会删除所有位于官网的连接与早期版本,并阻止基于Flash Player 媒体内容的执行。 外媒指出,Adobe如此坚持停止Flash并不意外,因为比起Flash所带来的收益,其包含的不安全、泄露隐私、进程服务无法彻底终止等特性也始终为人诟病。 90年代末和2000年代末,Flash在互联网中崭露头角,起初用于网站上的动画和游戏,到后来在视频中添加交互,甚至在YouTube成立之初,它几乎就完全依靠Flash为全球数百万用户提供视频服务。 但是,由于Flash的适用范围非常广泛,其安全漏洞问题辐射范围也非常广。在最严重时期,黑客甚至可以通过攻击Flash,在用户的电脑上执行任何代码。在当时,如果Flash有漏洞,基本上就相当于整个windows系统存在漏洞。 此外,随着HTML5、WebGL和WebAssembly等替代方案的不断成熟,主要的浏览器供应商也在淘汰诸如Adobe Flash Player的等更新和优化极为缓慢的相关插件。 需要注意的是,Adobe官方微博发布消息表示,Adobe特此重申:重橙网络是AdobeFlashPlayer在中国大陆地区的官方独家发行合作伙伴。为支持中国大陆地区市场特有的发行渠道、用户习惯和企业、开发者和游戏社区,Adobe将在2020年后继续与重橙网络合作并支持其在中国大陆地区对FlashPlayer的独家发行与维护。该合作仅限中国大陆地区。 猜你喜欢的商品>> 一次性医用外科口罩50只 39.9元 南极人充电式声波电动牙刷 券后价7.9元 【三只松鼠】 早餐蛋糕面包两箱 券后价 32.9元 超轻透气减震跑步运动鞋 券后价79元 国民高弹缓震 运动休闲鞋 券后价74元 亲肤大豆纤维七孔空调被 券后价 79元 腾讯视频会员年费99元/京东plus联合年卡128元

    时间:2020-07-09 关键词: 中国 adobe Flash

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章

技术子站