单片机的E2prom同时存放数据和程序?是不是分成ISP区,应用程序区,数据flash区三个区?
发布网友
发布时间:2022-05-15 02:58
我来回答
共1个回答
热心网友
时间:2023-10-05 10:19
楼主没有搞明白一件事情,我先讲给你听;
就单片机的存储材料来说,一般有三种,Flash,RAM,EEPROM;
Flash特点是速度快,掉电能保存,擦写也不太麻烦,所以用来写单片机的代码和常量存储,代替了过去的Rom
RAM特点是速度快,掉电却是不能保存,但是擦写相当简单,所以用来写单片机的变量数据;
EEPROM特点是速度非常慢,但掉电能保存,擦写比Flash麻烦,所以用来保存一些程序里逻辑的关键数据,因为他是掉电能保存的,但是速度慢,所以一般没有人用来放程序。
回答楼主的问题
EEPROM一般只用来放关键的需要掉电保存的数据,EEPROM相当于电脑的硬盘,硬盘就是能掉电保存,但是速度不快,所以程序是在硬盘里安装的,但是都是调入电脑内存中执行的。
Flash才是放程序和常量数据的地方,比如我定义了一个常量数组
code unsigned char Temprature_Table[10] = {0,10,20,30};
这个数组因为用code修饰的,所以是放到了Flash里面;
如果是这样定义的
unsigned char Temprature_Table[10] = {0,10,20,30};
因为没有Code修饰,是放到了Ram里面
所以说,Flash才是放程序和部分数据的地方。
对于你的第三个问题,我没办法回答全面,因为我对STC不太了解,你看PDF就知道了;
ISP区里面存的是一个程序,这个程序在你用电脑下载单片机程序的时候运行,之后就不在运行;
数据Flash有两种情况,一种是伪EEPROM,就是拿一部分的Flash当EEPROM用,这种情况下的数据Flash在程序正常运行中是可以随时修改的;
另一种就是普通的数据Flash,就像我定义的那个数组,在你下载程序的时候烧进Flash,在程序正常运行中,不能修改;
应用程序区就是普通的程序代码;
至于 在STC的单片机是怎么划分的,我不清楚,因为不同厂家生产的单片机是不一样的,你要看手册。追问1.ISP运行时修改下载上位机传来的程序代码时是下载到flash里吧?2.数据flash和E2prom是两码事是吧?3.ISP引导码也是放在flash里吧?4.ISP在向存储器写的时候,是不是可以向flash、伪E2prom和E2prom写数据?5.如果是这样的话,那怎么区分是向flash、伪E2pro还是向E2pro写呢?6.在运行普通程序时,怎么向伪E2pro写数据呢?7.在运行普通程序时,可用code定义在flash里但定义完不可以修改是吧?
问题有点多。。。我给你追加分吧。。
追答回答楼主的问题:
1、是下载到Flash,准确的是,重新擦写了Flash中除了ISP区以外的部分。
2、数据Flash和EEPROM是两码事,前者在程序运行时,数据不可改的,后者是可改写的。
3、ISP本身就存在于Flash中,就像首都是一个国家的一部分一样,ISP代码在厂家出厂时写好了,除非厂家和专业搞破解的人,其他人无法改写,如果ISP代码区坏了,这个单片机就再也不能下载程序了。
4、可以向前两者写数据,至于EEPROM,不同的单片机软件不同,一般来说不能写数据,只能擦掉,另外,对单片机来说,内部集成的EEPROM几乎都不是真正的EEPROM,是伪EEPROM,因为厂家不会二到生产一个单片机,用RAM,Flash,EEPROM三种材料的。
5、怎么区分?在Keil等软件在编译代码的时候,生成不同的编译信息,ISP软件根据编译信息,将不同的东西写到不同的Flash区里。
6、怎么写,你要看相关的单片机官网教程,官网一定会给出例程的,因为这个东西根据单片机不同而不同,所以厂家一定给出例子程序
7、是的,用code定义的,就是在Flash里的,这样的变量,在ISP下载到单片机之后,就不能被改了,除非你在Keil软件上人为修改,再用ISP烧一次。
来自:求助得到的回答