c语言中怎么读取flash内容

 我来答
tattackor
推荐于2016-05-12 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:869万
展开全部
  1. flash是存储芯片的一种,通过特定的程序可以修改里面的数据。FLASH在电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”,全名叫Flash EEPROM Memory。
    Flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失。U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码,或者直接当硬盘使用(U盘)。
    目前Flash主要有两种NORFlash和NANDFlash。NORFlash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NORFLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。NANDFlash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NANDFlash上的代码,因此好多使用NANDFlash的开发板除了使用NANDFlash以外,还加上了一块小的NORFlash来运行启动代码。
    一般小容量的用NORFlash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NANDFLASH,最常见的NANDFLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的“闪盘”,可以在线擦除。目前市面上的FLASH主要来自Intel,AMD,Fujitsu和Mxic,而生产NANDFlash的主要厂家有Samsung,Toshiba,Micron和Hynix。

  2. 片内flash还是片外flash,spi接口还是其他的接口。ARM片子不一样,答案就不一样。根据flash手册,按照手册写驱动。

匿名用户
2011-07-05
展开全部
GCC中把大数组存入flash区的方法大全

AVRGCC中将变量定义在flash空间的方法(大数据存储)

(1)flash常量:

#include <avr\pgmspace.h>//须增加的头文件

const prog_uchar FlashConst = 3; //定义uchar型的常量n定义在flash里(flash常量)

unsigned char RamVar; //定义无符号整型变量(Ram变量)

RamVar = pgm_read_byte(&FlashConst); //读取flash常量到ram变量

(2)flash一维数据:

#include <avr\pgmspace.h>

const prog_uchar s[5] = ;

unsigned char RamVar; //定义无符号整型变量(Ram变量)

RamVar = pgm_read_byte( &s[1] ); //读取s[1]的值到RamVar, or RamVar = pgm_read_byte( s+1 );

(3)flash多维数据:

#include <avr\pgmspace.h>

const prog_uchar s[4][16] = ,
,
,

};

unsigned char RamVar[4],[16]; //定义无符号整型变量(Ram变量)

register char i, j;

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

{

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

{

RamVar[i][j] = pgm_read_byte( &s[i][j] ); //读取数组s的值到RamVar

}//end for 2

}//end for 1

(4)扩展部分

avr对ram和flash是独立编址的,ram是按8位编址,而flash却按16位编址,读ram和读flash的汇编指令也是不同的。

类似flash数据类型还有:prog_void 、prog_char 、prog_int8_t、prog_uint8_t、prog_int16_t、prog_uint16_t、prog_int32_t、prog_uint32_t等。

读取指令pgm_read_xxx宏定义其实就是一段包括了flash读取指令的内联汇编代码。函数原型为:pgm_read_byte(address_short)、pgm_read_word(address_short)、 pgm_read_dword(address_short)、pgm_read_float(address_short)。括号中是地址值。
另外,虚机团上产品团购,超级便宜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zongju68
2011-07-04 · TA获得超过426个赞
知道小有建树答主
回答量:825
采纳率:0%
帮助的人:0
展开全部
GCC中把大数组存入flash区的方法大全 AVRGCC中将变量定义在flash空间的方法(读取指令pgm_read_xxx宏定义其实就是一段包括了flash读取指令的内联汇编代码
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式