楼主: cathy-336509

[其他] 来给新手讲讲RAM,ROM和flash问题

[复制链接]

该用户从未签到

22

主题

93

帖子

0

新手上路

Rank: 1

积分
192
最后登录
1970-1-1
发表于 2012-7-30 10:33:08 | 显示全部楼层 |阅读模式
版主,各位高手,
      我想问问芯片中RAM,ROM和flash的作用,在coldfire MCF5225x系列中,都其什么作用或者是都是如何使用的?
  我的工程中需要写一些数据,掉电后也能保存,我想知道我应该如何去开buffer来保存这些数据?还有如果要更好的使用这部分功能,应该在掌握什么知识?
      请指教。。。。
 
我知道答案 目前已有9人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-7-30 16:59:41 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    RAM:用来运行代码,变量,寄存器,中断等等。
    ROM和FLASH其实是一样的,他们的作用就是存放程序和常量的。
    掉电要保存就要用到FLASH或者E2了。在掉电之前你把数据保存到FLASH或者E2中。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    45

    帖子

    0

    新手上路

    Rank: 1

    积分
    111
    最后登录
    1970-1-1
    发表于 2012-7-31 12:12:44 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    继续,深入点啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    22

    主题

    93

    帖子

    0

    新手上路

    Rank: 1

    积分
    192
    最后登录
    1970-1-1
     楼主| 发表于 2012-7-31 14:53:52 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    那掉电的时刻,应该如何判断啊?
    有没有给flash里写数据的例子可以学习下,我在英文网站上没有找到mcf5225x系列的做法?
    还有工程中RAM,ROM和flash跟通过*.lcf来关联的吗?他们有联系吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2012-7-31 15:07:14 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    其实如果要讲起来很多:这样,就系统启动,逐个阐述下。
       其实程序代码之类的东西,一定是放在一种可以掉电不失数据的存储设备中,而这类的设备就是我们所说的ROM了,而ROM一词只是一个统称,这里不详说,老实的pc机代码量和数据量很少,所以一般内部有个叫做E2rom的东西,后来由于代码量太大,或者数据量太大,e2rom根本存不下来,所以后人就搞了个FLASH的东西,可以理解成电脑中硬盘。flash有两种,一种为nor,一种为nand,前者是并联的,后者是串联的。前者可以理解成不丢数据的RAM,可以和pc机的直接处理,而后者不行,后者你可以理解成E2rom之类的东西,先写地址,然后去读写那个地址的内容;至于为什么要他们,是由于nor了能与pc直接通信,一般可以直接作为pc机的启动代码(uboot/或者BIOS其实就是初始化PC机外的硬件或搬运rom代码到ram的程序)所放置的地方,而后者便宜,容量大,擦写快,所以可以被当作一个硬盘放置程序的代码如电脑的windowsxp的系统或者你自己编写的一段小程序,但是它有个致命的缺点,它不能直接和PC机交换数据(就是它和pc机数据或者地址总线的通信协议不同,说到最根本就是如果它和pc机在运行时打交道,很慢,要做很多配置后,才能读信息),所以在程序运行后,需要将它内部的某一要运行的程序,“搬移”到能够和pc机直接交换数据的RAM中;
       当程序被搬运(也许只搬运了部分)到ram中后,就开始从ram的首地址开始跑程序,ram了,它是一个并行的,和pc机直接相连的一个临时存储设备,它由于和pc机的地址和数据总线是并行的,所以运行很快,但是它很昂贵,你可以看看你的内存条,它实际也是一个ram,只不过他是pc片外了,和pc内部RAM相比依据总线频率来判断快慢,也就是片外的ram不一定会比片内ram慢;但是它们有两大毛病,掉电会丢失数据以及价格贵啊;
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2012-7-31 15:21:24 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    对于寄存器,它不是ram,可以理解成ram,寄存器就是和pc机直接打交道的东西;它的速度是最快的,内存的数据和信息都是经过它来参加pc机内逻辑运算单元或算术运算单元的,它们是pc机处理器运算的临时空间,存储临时变量的,如1+2+3;pc机是很笨的,它会按照优先级运算,前面算了1+2后,会将结果放置在一个寄存器中的,并不是立即返回到ram中的。当然嵌入式的pc机寄存器和电脑的寄存器是不同的,因为它里面有很多寄存器用来搭建硬件逻辑电路的,如中断使能啊,等等,这些寄存器和R0~R15是不同的,可以理解成电路的开关;“1”合闸,“0”分闸
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2012-7-31 15:31:00 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    对于裸机程序,如果代码量很小,一般很多代码并不用复制到RAM中,而是pc根据它和ROM的通信协议,来ROM中按照(R15)地址顺序来逐个提取code来运行,但是很慢。所以一般会将向量表之类的需要快速响应的东西,放到ram中,其实ram够大,也可以将所有的代码放到RAM中;
       向量表了,可以理解成一排通道的东西;它才是程序最开始运行的东西,由它去初始化RAM的堆栈,bs等区域,然后来初始化相应的r0~r15常用寄存器,然后根据pc机处理器(不是pc机,因为很多硬件被做到了pc中了,如温度传感器)外界需要来配置各个硬件模块需要的脉冲,以及“合上”这些模块对应的寄存器(为了节能,一般复位后这些模块都是关的),然后使能这些设备等等;
       其实我们pc复位后,所有的程序都是在复位这个“中断”程序中运行的;复位相当于一个中断,它和IRQ以及其他特殊中断,如aborting等中断是一样的,只是级别不一样而已。。。。这些中断也就是前面说的入口了,当中断发生后r15就会指向这个地址
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2012-7-31 15:31:33 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    对于裸机程序,如果代码量很小,一般很多代码并不用复制到RAM中,而是pc根据它和ROM的通信协议,来ROM中按照(R15)地址顺序来逐个提取code来运行,但是很慢。所以一般会将向量表之类的需要快速响应的东西,放到ram中,其实ram够大,也可以将所有的代码放到RAM中;
       向量表了,可以理解成一排通道的东西;它才是程序最开始运行的东西,由它去初始化RAM的堆栈,bs等区域,然后来初始化相应的r0~r15常用寄存器,然后根据pc机处理器(不是pc机,因为很多硬件被做到了pc中了,如温度传感器)外界需要来配置各个硬件模块需要的脉冲,以及“合上”这些模块对应的寄存器(为了节能,一般复位后这些模块都是关的),然后使能这些设备等等;
       其实我们pc复位后,所有的程序都是在复位这个“中断”程序中运行的;复位相当于一个中断,它和IRQ以及其他特殊中断,如aborting等中断是一样的,只是级别不一样而已。。。。这些中断也就是前面说的入口了,当中断发生后r15就会指向这个地址
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2012-7-31 15:31:35 | 显示全部楼层

    RE:来给新手讲讲RAM,ROM和flash问题

    对于裸机程序,如果代码量很小,一般很多代码并不用复制到RAM中,而是pc根据它和ROM的通信协议,来ROM中按照(R15)地址顺序来逐个提取code来运行,但是很慢。所以一般会将向量表之类的需要快速响应的东西,放到ram中,其实ram够大,也可以将所有的代码放到RAM中;
       向量表了,可以理解成一排通道的东西;它才是程序最开始运行的东西,由它去初始化RAM的堆栈,bs等区域,然后来初始化相应的r0~r15常用寄存器,然后根据pc机处理器(不是pc机,因为很多硬件被做到了pc中了,如温度传感器)外界需要来配置各个硬件模块需要的脉冲,以及“合上”这些模块对应的寄存器(为了节能,一般复位后这些模块都是关的),然后使能这些设备等等;
       其实我们pc复位后,所有的程序都是在复位这个“中断”程序中运行的;复位相当于一个中断,它和IRQ以及其他特殊中断,如aborting等中断是一样的,只是级别不一样而已。。。。这些中断也就是前面说的入口了,当中断发生后r15就会指向这个地址
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2012-7-31 15:40:48 | 显示全部楼层

    回复:来给新手讲讲RAM,ROM和flash问题

    回复第 4 楼 于2012-07-31 14:53:52发表:
    那掉电的时刻,应该如何判断啊?
    有没有给flash里写数据的例子可以学习下,我在英文网站上没有找到mcf5225x系列的做法?
    还有工程中RAM,ROM和flash跟通过*.lcf来关联的吗?他们有联系吗?
     

    关于。lcf相当于linux中的makefile文件,是用来配置你的代码在编译下载后的位置,就是你的代码放在flash的那些地方,还有你搬用的时候,放在那些地方等等;这个个人觉得没有必要去学它。能看懂大概就ok了。。。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 19:03 , Processed in 0.107705 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表