FLASH存储-----NAND FLASH

发布者:轻松自在最新更新时间:2016-04-01 来源: eefocus关键字:FLASH存储  NAND  FLASH 手机看文章 扫描二维码
随时随地手机看文章
二.NAND FLASH

NAND FLASH 在对大容量的数据存储需要中日益发展,到现今,所有的数码相机、多数MP3播放器、各种类型的U盘、很多PDA里面都有NAND FLASH的身影。

1.      Flash的简介

NOR Flash:

      程序和数据可存放在同一片芯片上,拥有独立的数据总线和地址总线,能快速随机地读取,允许系统直接从Flash中读取代码执行,而无需先将代码下载至RAM中再执行

      可以单字节或单字编程,但不能单字节擦除,必须以块为单位或对整片执行擦除操作,在对存储器进行编程之前需要对块或整片进行预编程和擦除操作。

 

NAND FLASH

      以页为单位进行读写操作,1页为256B或512B;以块为单位进行擦除操作,1块为4KB、8KB或16KB。具有快编程和快擦除的功能

      数据、地址采用同一总线,实现串行读取。随机读取速度慢且不能按字节随机编程

      芯片尺寸小,引脚少,是位成本(bit cost)最低的固态存储器

      芯片存储位错误率较高,推荐使用 ECC校验,并包含有冗余块,其数目大概占1%,当某个存储块发生错误后可以进行标注,并以冗余块代替

      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非常容易出现坏区,所以需要有校验的算法。

 

3.NAND Flash的硬件设计

NAND FLASH是采用与非门结构技术的非易失存储器,有8位和16位两种组织形式,下面以8位的NAND FLASH进行讨论。

1)      接口信号

与NOR Flash相比较,其数据线宽度只有8bit,没有地址总线,I/O接口可用于控制命令和地址的输入,也可用于数据的输入和输出,多了CLE和ALE来区分总线上的数据类别。

信号

类型

描述

CLE

O

命令锁存使能

ALE

O

地址锁存使能

nFCE

O

NAND Flash片选

NFRE

O

NAND Flash读使能

nFWE

O

NAND Flash写使能

NCON

I

NAND Flash配置

R/nB

I

NAND Flash Ready/Busy

 

2)      地址结构

NAND FLASH主要以页(page)为单位进行读写,以块(block)为单位进行擦除。FLASH页的大小和块的大小因不同类型块结构而不同,块结构有两种:小块(图7)和大块(图8),小块NAND FLASH包含32个页,每页512+16字节;大块NAND FLASH包含64页,每页2048+64字节。

 

点击看大图

图7  小块类型NAND FLASH

 

 

 

点击看大图

图8  大块类型NAND FLASH

其中,512B(或1024B)用于存放数据,16B(64B)用于存放其他信息(包括:块好坏的标记、块的逻辑地址、页内数据的ECC校验和等)。NAND设备的随机读取得效率很低,一般以页为单位进行读操作。系统在每次读一页后会计算其校验和,并和存储在页内的冗余的16B内的校验和做比较,以此来判断读出的数据是否正确。

大块和小块NAND FLASH都有与页大小相同的页寄存器,用于数据缓存。当读数据时,先从NAND FLASH内存单元把数据读到页寄存器,外部通过访问NAND FLASH I/O端口获得页寄存器中数据(地址自动累加);当写数据时,外部通过NAND FLASH I/O端口输入的数据首先缓存在页寄存器,写命令发出后才写入到内存单元中。

 

3)      接口电路设计(以下以2410和K9F1208U为例)

2410处理器拥有专门针对 NAND设备的接口,可以很方便地和NAND设备对接,如图9所示。虽然NAND设备的接口比较简单,容易接到系统总线上,但2410处理器针对NAND设备还集成了硬件ECC校验,这将大大提高NAND设备的读写效率。当没有处理器的ECC支持时,就需要由软件来完成ECC校验,这将消耗大量的CPU资源,使读写速度下降。

 

点击看大图

图9 S3C2410与NAND FLASH接口电路示意图

 

3.NAND FLASH 的软件编写和调试

    NAND设备的软件调试一般分为以下几个步骤:设置相关寄存器、NAND 设备的初始化、NAND设备的识别、NAND设备的读擦写(带ECC校验)

    NAND设备的操作都是需要通过命令来完成,不同厂家的命令稍有不同,以下一Samsung公司的K9F1208U0M命令表为例介绍NAND设备的软件编写。

点击看大图

表2  K9F1208U0M  Command Sets

 

 

1)      根据2410寄存器定义如下的命令宏

#define NF_CMD(cmd) {rNFCMD=cmd;}

#define NF_ADDR(addr)   {rNFADDR=addr;}

#define NF_nFCE_L() {rNFCONF&=~(1<<11);}

#define NF_nFCE_H() {rNFCONF|=(1<<11);}

#define NF_RSTECC() {rNFCONF|=(1<<12);}

#define NF_RDDATA()     (rNFDATA)

#define NF_WRDATA(data) {rNFDATA=data;}

#define NF_WAITRB()    {while(!(rNFSTAT&(1<<0)));}

        //wait tWB and check F_RNB pin.

 

2)      NAND 设备的初始化

static void NF_Init(void)                          //Flash 初始化

{

rNFCONF=(1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0);                                            //设置NAND设备的相关寄存器 

    NF_Reset();

}

static void NF_Reset(void)                           //Flash重置

{

    int i;

 

    NF_nFCE_L();

    NF_CMD(0xFF);                      //reset command

    for(i=0;i<10;i++);                  //tWB = 100ns

    NF_WAITRB();                        //wait 200~500us;

    NF_nFCE_H();

}

 

3)      NAND设备的识别                    //#define ID_K9F1208U0M  0xec76

static U16 NF_CheckId(void)                            //Id 辨别

{

    int i;

    U16 id;

   

    NF_nFCE_L();

    NF_CMD(0x90);

    NF_ADDR(0x0);

    for(i=0;i<10;i++);                  //wait tWB(100ns)

 

    id=NF_RDDATA()<<8;                  // Maker code(K9F1208U:0xec)

    id|=NF_RDDATA();                    // Devide code(K9F1208U:0x76)

    NF_nFCE_H();

    return id;

}

4)      NAND 的擦操作

static int NF_EraseBlock(U32 block)

{

    U32 blockPage=(block<<5);

    int i;

    NF_nFCE_L();

   

    NF_CMD(0x60[q1] );                            // Erase one block 1st command

    NF_ADDR(blockPage&0xff);                 // Page number="0"

    NF_ADDR((blockPage>>8)&0xff);  

    NF_ADDR((blockPage>>16)&0xff);

    NF_CMD(0xd0[q2] );                           // Erase one blcok 2nd command

   for(i=0;i<10;i++);                       //wait tWB(100ns)//??????

 

    NF_WAITRB();                            // Wait tBERS max 3ms.

    NF_CMD(0x70);                           // Read status command

 

    if (NF_RDDATA()&0x1)                    // Erase error

     

        NF_nFCE_H();

        Uart_Printf("[ERASE_ERROR:block#=%d]\n",block);

        return 0;

    }

    else

    {

        NF_nFCE_H();

        return 1;

    }

}

5)      NAND 的读操作

static int NF_ReadPage(U32 block,U32 page,U8 *buffer)        //读Flash

{

    int i;

    unsigned int blockPage;

    U8 ecc0,ecc1,ecc2;

    U8 *bufPt=buffer;

    U8 se[16];    

   

    page=page&0x1f;                                 //32页

    blockPage=(block<<5)+page;                      //1Bolck包含32页

    NF_RSTECC();                                    // Initialize ECC

    NF_nFCE_L();   

    NF_CMD(0x00);                                   // Read command

    NF_ADDR(0);                                     // Column = 0

    NF_ADDR(blockPage&0xff);                        //

    NF_ADDR((blockPage>>8)&0xff);                   // Block & Page num.

    NF_ADDR((blockPage>>16)&0xff);                  //

    for(i=0;i<10;i++);                              //wait tWB(100ns)

   

    NF_WAITRB();                                    // Wait tR(max 12us)

    for(i=0;i<512;i++)

    {

        *bufPt++=NF_RDDATA();                       // Read one page

}

 

    ecc0=rNFECC0;                              //利用2410自带的硬件ECC校验

      ecc1=rNFECC1;

      ecc2=rNFECC2;

    for(i=0;i<16;i++)

    

        se[i]=NF_RDDATA();                          // Read spare array

                                                    //读页内冗余的16B

    }

       NF_nFCE_H();   

    if(ecc0==se[0] && ecc1==se[1] && ecc2==se[2])   //未知使用哪一种软件规范?

                                                  //比较数据结果是否正确

       Uart_Printf("[ECC OK:%x,%x,%x]\n",se[0],se[1],se[2]);

        return 1;

    }

    else

    {

        Uart_Printf("[ECC ERROR(RD):read:%x,%x,%x, reg:%x,%x,%x]\n",

        se[0],se[1],se[2],ecc0,ecc1,ecc2);

        return 0;

         

}

6)      NAND 的写操作

static int NF_WritePage(U32 block,U32 page,U8 *buffer)             //写Flash

{

    int i;

    U32 blockPage=(block<<5)+page;

    U8 *bufPt=buffer;

 

    NF_RSTECC();                                // Initialize ECC

    NF_nFCE_L();

    NF_CMD(0x0[q4] );                                //Read Mode 1

    NF_CMD(0x80);                               // Write 1st command,数据输入

    NF_ADDR(0);                                 // Column 0

    NF_ADDR(blockPage&0xff);       

    NF_ADDR((blockPage>>8)&0xff);               // Block & page num.

    NF_ADDR((blockPage>>16)&0xff); 

    for(i=0;i<512;i++)

    {

          NF_WRDATA(*bufPt++);                    // Write one page to NFM from buffer

    

   seBuf[0]=rNFECC0;

    seBuf[1]=rNFECC1;

    seBuf[2]=rNFECC2;

    seBuf[5]=0xff;                          // Marking good block

    for(i=0;i<16;i++)

    {

         NF_WRDATA(seBuf[i]);                    // Write spare array(ECC and Mark)

     

    NF_CMD(0x10);                           // Write 2nd command

    for(i=0;i<10;i++);                      //tWB = 100ns. 

    NF_WAITRB();                            //wait tPROG 200~500us;

    NF_CMD(0x70);                           // Read status command  

    for(i=0;i<3;i++);                       //twhr=60ns

   

    if (NF_RDDATA()&0x1)                    // Page write error

     

        NF_nFCE_H();

    Uart_Printf("[PROGRAM_ERROR:block#=%d]\n",block);

    return 0;

    }

    else

    {

        NF_nFCE_H();

    #if (WRITEVERIFY==1)

    //return NF_VerifyPage(block,page,pPage);  

    #else

    return 1;

    #endif

    }

}

 

以下讨论一下NAND 设备上所支持的文件系统,大概现在有以下几种:

A.       JFFS2(没有坏块处理,支持大容量存储的时候需要消耗大量的内存,大量的随机访问降低了NAND设备的读取效率)和YAFFS(速度快,但不支持文件的压缩和解压)

B.       支持DiskOnChip设备的TRUEFFS(True Flash File System). TRUEFFS是M-Systems公司为其产品DiskOnChip开发的文件系统,其规范并不开放。

C.       由SSFDC(Solid State Floppy Disk Card)论坛定义的支持SM卡的DOS-FAT。SM卡的DOS-FAT文件系统是由SSFDC论坛定义的,但它必须用在标准的块设备上。

对于大量用在各类存储卡上的NAND 设备而言,他们几乎都采用FAT文件系统,而在嵌入式操作系统下,还没有驱动程序可以直接让NAND设备采用文件系统,就技术角度来说,FAT文件系统不是很适合NAND设备,因为FAT文件系统的文件分区表需要不断地擦写,而NAND设备的只能有限次的擦写。

 

    在上面已经很明显的提到,NAND设备存在坏块,为和上层文件系统接口,NAND设备的驱动程序必须给文件系统提供一个可靠的存储空间,这就需要ECC(Error Corection Code)校验,坏块标注、地址映射等一系列的技术手段来达到可靠存储目的。

    SSFDC软件规范中,详细定义了如何利用NAND设备每个页中的冗余信息来实现上述功能。这个软件规范中,很重要的一个概念就是块的逻辑地址,它将在物理上可能不连续、不可靠的空间分配编号,为他们在逻辑空间上给系统文件提供一个连续可靠的存储空间。

表3给出了SSFDC规范中逻辑地址的标注方法。在系统初始化的时候,驱动程序先将所有的块扫描一遍,读出他们所对应的逻辑地址,并把逻辑地址和虚拟地址的映射表建好。系统运行时,驱动程序通过查询映射表,找到需要访问的逻辑地址所对应的物理地址然后进行数据读写。     

 

                表3 冗余字节定义

字节序号

内容

字节序号

内容

512

用户定义数据

520

后256BECC校验和

513

521

514

522

515

523

块逻辑地址

516

数据状态

524

517

块状态

525

前256BECC校验和

518

块逻辑地址1

526

519

527

 

表4给出了块逻辑地址的存放格式,LA表示逻辑地址,P代表偶校验位。逻辑地址只有10bit,代表只有1024bit的寻址空间。而SSFDC规范将NAND设备分成了多个zone,每个zone 内有1024块,但这物理上的1024块映射到逻辑空间只有1000块,其他的24块就作为备份使用,当有坏块存在时,就可以以备份块将其替换。

表4  逻辑地址格式

D7

D6

D5

D4

D3

D2

D1

D0

 

0

0

0

1

0

LA9

LA8

LA7

第518   523字节

LA6

LA5

LA4

LA3

LA2

LA1

LA0

P

第519   524字节

 

有了以上的软件规范,就可以对NAND设备写出较标准的ECC校验,并可以编写检测坏块、标记坏块、建立物理地址和逻辑地址的映射表的程序了。

 

static int NF_IsBadBlock(U32 block)             //检测坏块

{

}

static int NF_MarkBadBlock(U32 block)                       //标记坏块

{

}

int search_logic_block(void)                    //建立物理地址到逻,辑地址的映射表

{

    

}

这段代码的主要作用就是产生数组lg2ph[],这个数组的含义就是“块物理地址=lg2ph[逻辑地址]”。


关键字:FLASH存储  NAND  FLASH 引用地址:FLASH存储-----NAND FLASH

上一篇:FLASH存储-----NOR Flash
下一篇:24CXX读写程序(适用PIC和51,适用24C01~24C2048)

推荐阅读最新更新时间:2024-03-16 14:48

调用STM32F4 库函数FLASH_ProgramWord() 出错问题
最近操作STM32F4的内部flash,吓了一跳。以前的STM32F107的时候还是4k一页,现在只分了12个Sector,后面几个128K这么大。 从官网下了Flash programming manual, 擦除之前得清除flash flag /* Clear All pending flags */ FLASH_ClearFlag( FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); 同时查看擦除函数,看着函数说明,正确的传参数就OK了 /** * @brief
[单片机]
基于虚拟通道的Flash映射技术
一、虚拟化环境 虚拟化是一个表现逻辑群组或电脑资源的子集的进程,用户可以用比原本的组态更好的方式来存取这些进程。这些资源的新虚拟部份是不受现有资源的架设方式、地域或物理组态所限制。虚拟化技术和云计算平台的结合带来了全新的资源整合和使用模式,基于虚拟化技术的资源按需分配与调度可以提高云平台资源的利用率,提升云服务的服务质,并降低云用户的总体拥有成本。 虚拟桌面架构解决方案正在帮助企业将其Windows桌面和数据转变成类似云的资源,最终用户能够在任何设备上随时随地访问这些资源。虽然VDI承诺的数据安全性和更高的资源利用率推动了特定市场中的初期采用,但是它并没有被整个企业界广泛采用。这是因为传统VDI的用户体验大大低于本地PC可提供
[电源管理]
采用C51与插拔式FLASH闪存设计无纸记录仪
  ATMEL公司推出的带有看门狗功能的单片机AT89C55WD带有20K的程序存储器,是8051系列中一款较为先进的产品,其看门狗功能可以大大提高产品的稳定性,大容量的内部程序存储器可以容纳功能丰富的软件。   以往的许多无纸记录仪均采用3.5英寸软盘作为数据存贮介质,但软盘存贮的可靠性差、存储容量有限、成本较高等诸多缺点实在难以克服。   作为一种高科技的非易失性存储设备,FLASH闪存首先在数码相机、PDA、移动电话等数字产品当中得到了应用,随着工艺的进步和价格的下降,逐步向其他应用领域扩展,其容量大、功耗低、速度快、不易受损等优点正受到人们越来越多的青睐,而且最大的好处是,随着技术水平的进步,FLASH闪存的容量也在不断
[测试测量]
因业务低迷,消息称三星计划暂停部分工厂 NAND 闪存生产
据韩国电子时报报道,为了克服低迷的存储器市场状况,三星电子计划停止其位于韩国平泽市 P1 工厂的部分 NAND 闪存生产设备。 业内人士透露,三星目前正在考虑停止 P1 工厂 NAND Flash 生产线部分设备的生产,该生产区主要负责生产 128 层堆叠的第 6 代 V-NAND,其中的设备将停产至少一个月。 外媒表示,鉴于市场持续低迷,业界猜测三星的 NAND Flash 产量可能会减少 10% 左右,而三星在近来 4 月份发布的 2023 年第一季度财报中也正式宣布存储器减产计划。三星更是在发布今年第二季度财报时表示,2023 年下半年三星将重点削减 NAND Flash 领域的产量。 半导体公司通常采用“减产期间保持设备运
[半导体设计/制造]
通过 STM32CubeMX制作外部Flash的烧写驱动
前言 目前,越来越多的应用需要扩展外部的Flash来满足存储需求。那么,在调试及批量生产的过程中,需要对外扩的Flash进行烧录操作。由于STM32 ST-LINK Utility以及STM32CubeProgrammer中,对Flash支持的型号有限,只能覆盖一部分MCU和Flash的型号,无法完全满足客户的需求。而且,它提供的external loader的制作模板存在覆盖的芯片型号较少,且无法前期QSPI Flash调试的问题。本文旨在提供一种通过stm32CubeMX制作external Flash loader的方法。客户可以根据自己的型号,进行定制化的生成。本文中,以某客户实际使用的MCU(STM32H750) 和Fl
[单片机]
智能嵌入式系统力拱 高容量Flash MCU需求涨
嵌入式系统智能化商机旺 MCU厂升级eFlash制程   微控制器(MCU)厂商在嵌入式快闪记忆体(eFlash)新一轮先进制程竞赛开打。值此智慧化嵌入式系统(Intelligent Embedded System)市场方兴未艾之际,Flash MCU内嵌的编码型快闪(NOR Flash)记忆体容量亦将大幅增长,以迎合智慧化嵌入式系统配备联网、图形化和语音人机介面等功能,以及内建精简型作业系统(OS)的设计要求。   看好内嵌更高快闪记忆体容量的Flash MCU在智慧嵌入式系统市场前景,微控制器厂商正大举投资更先进的eFlash奈米(nm)製程,如继瑞萨电子(Renesas Electronics)和飞思卡尔(Freesca
[模拟电子]
智能嵌入式系统力拱 高容量<font color='red'>Flash</font> MCU需求涨
基于SoPC目标板Flash编程设计的创建及应用
   1 引言   随着集成电路工艺技术的不断发展和集成度的提高,嵌入式系统由板级向芯片级过渡,形成一种新的设计方法一片上系统(System on Chip,简称SoC)。SoC从整个系统的角度出发,把处理机制、模型算法、芯片结构、各层次电路,直至器件的实际电路紧密连接起来,在单个(少数几个)芯片上实现整个系统的功能。同时随着现场可编程逻辑阵列(FPGA)技术的日益成熟,将PLD与嵌入式处理器IP软核相结合,形成基于可编程片上系统(System on Programmable Chip,简称 SoPC)的SoC解决方案,使得更加灵活的SOPC成为现代嵌入式系统设计的发展趋势。SoPC是Altera公司提出的一种灵活、高效的SoC
[嵌入式]
基于SoPC目标板<font color='red'>Flash</font>编程设计的创建及应用
STM8 内部flash
举例 typedef enum { FLASH_MEMTYPE_PROG = (u8)0x00, /*! Program memory */ FLASH_MEMTYPE_DATA = (u8)0x01 /*! Data EEPROM memory */ } FLASH_MemType_TypeDef; int main() { u32 addr = 0x4000; CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); while(1) { FLASH_Unlock(FLASH_MEMTYPE_DATA); //根据MemType填写
[单片机]
STM8 内部<font color='red'>flash</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved