当前位置:首页 » 服务存储 » 存储器上电初始化程序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

存储器上电初始化程序

发布时间: 2022-04-16 15:34:42

A. 开机上电自检程序是什么

POST上电自检:是微机接通电源后,系统进行的一个自我检查的例行程序。这个过程通常称为POST上电自检(Power On Self Test)。对系统的几乎所有的硬件进行检测。
POST是如何进行自检测的?
主板在接通电源后,系统首先由(Power On Self Test,上电自检)程序来对内部各个设备进行检查。在我们按下起动键(电源开关)时,系统的控制权就交由BIOS来完成,由于此时电压还不稳定,主板控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU初始化,同时等待电源发出的POWER GOOD信号(电源准备好信号)。当电源开始稳定供电后(当然从不稳定到稳定的过程也只是短暂的瞬间),芯片组便撤去RESET信号(如果是手动按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从地址FFFF0H处开始执行指令,这个地址在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。系统BIOS的启动代码首先要做的事情就是进行POST(Power On Self Test,加电自检),由于电脑的硬件设备很多(包括存储器、中断、扩展卡),因此要检测这些设备的工作状态是否正常。
这一过程是逐一进行的,BIOS厂商对每一个设备都给出了一个检测代码(称为POST CODE即开机自我检测代码),在对某个设置进行检测时,首先将对应的POST CODE写入80H(地址)诊断端口,当该设备检测通过,则接着送另一个设置的POST CODE,对此设置进行测试。如果某个设备测试没有通过,则此POST CODE会在80H处保留下来,检测程序也会中止,并根据已定的报警声进行报警(BIOS厂商对报警声也分别作了定义,不同的设置出现故障,其报警声也是不同的,我们可以根据报警声的不同,分辨出故障所在。
POST自检是按什么顺序进行检测的?
POST自检测过程大致为:加电-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-显卡等。检测显卡以前的过程称过关键部件测试,如果关键部件有问题,计算机会处于挂起状态,习惯上称为核心故障。另一类故障称为非关键性故障,检测完显卡后,计算机将对64KB以上内存、I/O口、软硬盘驱动器、键盘、即插即用设备、CMOS设置等进行检测,并在屏幕上显示各种信息和出错报告。在正常情况下,POST过程进行得非常快,我们几乎无法感觉到这个过程。
POST自检测代码含义是什么?
当系统检测到相应的错误时,会以两种方式进行报告,即在屏幕上显示出错信息或以报警声响次数的方式来指出检测到的故障。
CMOS battery failed(CMOS 电池失效)。
原因:说明CMOS 电池的电力已经不足,请更换新的电池。
CMOS check sum error-Defaults loaded(CMOS 执行全部检查时发现错误,因此载入预设的系统设定值)。
原因:通常发生这种状况都是因为电池电力不足所造成,所以不妨先换个电池试试看。如果问题依然存在的话,那就说明 CMOS RAM 可能有问题,最好送回原厂处理。
Display switch is set incorrectly(显示开关配置错误)。
原因:较旧型的主板上有跳线可设定显示器为单色或彩色,而这个错误提示表示主板上的设定和 BIOS 里的设定不一致,重新设定即可。
Press ESC to skip memory test(内存检查,可按ESC键跳过)。
原因:如果在 BIOS 内并没有设定快速加电自检的话,那么开机就会执行内存的测试,如果你不想等待,可按 ESC 键跳过或到 BIOS 内开启 Quick Power On Self Test。
HARD DISK initializing【Please wait a moment...】(硬盘正在初始化 请等待片刻)。
原因:这种问题在较新的硬盘上根本看不到。但在较旧的硬盘上,其启动较慢,所以就会出现这个问题。
HARD DISK INSTALL FAILURE (硬盘安装失败)。
原因:硬盘的电源线、数据线可能未接好或者硬盘跳线不当出错误 ( 例如一根数据线上的两个硬盘都设为 Master 或 Slave。)
Secondary slave hard fail (检测从盘失败)。
原因:1 CMOS 设置不当(例如没有从盘但在CMOS里设有从盘) 2 硬盘的电源线、数据线可能未接好或者硬盘跳线设置不当。
Hard disk(s) diagnosis fail (执行硬盘诊断时发生错误)。
原因:这通常代表硬盘本身的故障。你可以先把硬盘接到另一台电脑上试一下,如果问题一样,那只好送修了。
Floppy Disk(s) fail 或 Floppy Disk(s) fail(80) 或Floppy Disk(s) fail(40)(无法驱动软驱)。
原因:软驱的排线是否接错或松脱?电源线有没有接好?如果这些都没问题,那买个新的吧。
Keyboard error or no keyboard present(键盘错误或者未接键盘)
原因:键盘连接线是否插好?连接线是否损坏?
Memory test fail (内存检测失败)
原因:通常是因为内存不兼容或故障所导致。
Override enable-Defaults loaded ( 当前CMOS设定无法启动系统,载入 BIOS 预设值以启动系统)。
原因:可能是你在BIOS内的设定并不适合你的电脑( 像你的内存只能跑100MHz但你让它跑133MHz ),这时进入 BIOS 设定重新调整即可。
Press TAB to show POST screen (按 TAB 键 可以切换屏幕显示)
原因:有一些 OEM 厂商会以自己设计的显示画面来取代 BIOS 预设的开机显示画面,而此提示就是要告诉使用者可以按TAB来把厂商的自定义画面和BIOS预设的开机画面进行切换。
Resuming from disk,Press TAB to show POST screen(从硬盘恢复开机,按TAB显示开机自检画面)。
原因:某些主板的BIOS 提供了 Suspend to disk(挂起到硬盘)的功能,当使用者以 Suspend to disk 的方式来关机时,那么在下次开机时就会显示此提示消息。
BIOS ROM checksum error-System halted(BIOS 程序代码在进行总和检查 ( checksum ) 时发现错误,因此无法开机)
原因:遇到这种问题通常是因为 BIOS 程序代码更新不完全所造成的,解决办法重新刷写烧坏主板 BIOS。
HARD DISK initizlizing 【Please wait a moment...】(正在对硬盘做起始化 ( Initizlize ) 动作)
原因:这种讯息在较新的硬盘上根本看不到。但在较旧型的硬盘上,其动作因为较慢,所以就会看到这个讯息。
POST自检响铃次数是如何定义的?
POST上电自检还会通过报警声响次数的方式来指出检测到的故障。但需要注意:由于目前主板BIOS类型大致可分为AWARD公司、AMI公司、PHOENIX公司(AWARD已与PHOENIX合并),因此不同类型的BIOS,其自检响铃次数所定义的自检错误是不一致的,因此一定要分清。
POST自检发现错误后如何提示?
POST自检如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号(以上介绍),等待用户处理。通过BIOS自检功能(POST自检),我们就可以方便的侦测出主板的故障所在,以便正确的解决。
如我们按下电源键后,只有电源指示灯亮,电脑屏幕没有任何反映,也没有报警声;那么针对这种情况,我们又应如何解决呢?
屏幕没有显示,也没有报警声,我们就无法从POST自检功能得到相应的信息;大家都知道,计算机是一个复杂而且精密的产品组合,因此一个环节出现问题,可能都无法启动机器(我们主要谈硬件方面)。因此,如出现黑屏,无报警声响的故障现象,我们就应根据电脑的启动过程来分析问题所在了。
电脑的启动过程是什么?
我们在按下启动键时,首先启动的应是电源(因为如果没有电源供电,那么主板上所有的配件都是无法工作的)。但是为了保证安全使用,电源部分采取了一系列安全保护措施;因此开关电源从起振到稳定之间会有一段时间的延迟,等待各组电压都稳定下来后,电源各部分会输出一个检测信号,这个信号为高电平时表示该部分电压正常,这些部分包括输入电压和各组输出电压。这些信号总和的结果就是一个POWER GOOD信号(也称为POWER OK或PWR OK信号);如果主板接受不到这个信号,那么时钟芯片会持续向CPU发送复位(RESET)信号(与我们按下RESER键相当),CPU就不会工作。
当CPU接受到正常的POWER GOOD信号,主板和CPU就启动了吗?其实主板此时,还要根据CPU的VID0-VID3引脚的定义组合,将CPU所提供的VID0-VID3信号送到电源管理模块的相应的端口;如果主板BIOS具有可设定CPU电压的功能,主板会按时设定的电压与VID的对应关系产生新的VID信号并送到电源管理模块芯片,电源管理模块将根据设定并通过DAC电压将其转换为基准电压,再经过场效应管轮流导通和关闭,将能量通过电感线圈送到CPU,最后再经过调节电路使用输出电压与设定电压值相当。
由于CPU还要根据自己所需要的频率,通过IC总线来检测主板频率发生器所设置的频率是否支持;因为电脑要进行正确的数据传送以及正常的运行,没有时钟信号是不行的,时钟信号在电路中的主要作用就是同步;因为在数据传送过程中,对时序都有着严格的要求,只有这样才能保证数据在传输过程不出差错。时钟信号首先设定了一个基准,我们可以用它来确定其它信号的宽度,另外时钟信号能够保证收发数据双方的同步。对于CPU而言,时钟信号作为基准,CPU内部的所有信号处理都要以它作为标尺,这样它就确定CPU指令的执行速度;如CPU本身的频率无法适应频率发生器所提供的高频率,也是无法正常工作的。因此只有当接受到POWER GOOD信号,和相应的得到CPU工作的电压时以及相应的时钟频率后,CPU才能正常的工作,也就是开始执行BIOS程序。
如何判断、解决故障所在?
因为如接受不到POWER GOOD信号,系统就一直处理RESET(复位)循环中,因此主板也就无法启动,相应的其它硬件,如显卡也无法工作,显示器由于接受不到显卡传出的信号,因此也就没有显示,一直处于待机状态。此时,我们应检测电源,不要以为电源灯亮,就表明电正常,因为只要有一路信号有故障(该部分电路不正常或还未稳定),输入出的POWER GOOD信号都为低电平,即表示电源部分有故障或还未进入稳定状状;虽然电源指示灯亮,但由于主板接受不到正常的POWER GOOD信号,也无法启动。我们检测电源的方法是,使用可正常工作的电源测试。如电源为ATX型我们可用导线将13与14脚短接,如电源风扇能正常运行,则表明电源是完好的,则故障应在主板上。
更换正常电源后,如系统还是没有工作的显象,应按以上主板启动过程,测试CPU的电源管理模块和频率发生器。但由于我们不可能有完善的设备来测试主板上的电源和频率模块(大多数电脑爱好者不可能有此类设置,和具有相应的检测能力)。因此我们对此还要采用排除法,即在其它正常主板上测试CPU。测试排除CPU的故障外,还应检测主板频率设置问题。电脑爱好者为使用或测试CPU的超频能力,会通过调整主板外频的方式(目前CPU已经锁频,只能设置外频,而无法设置倍频),来调高CPU的工作频率。如果CPU无法适应高工作频率,虽然电源供电正常,主板也是无法启动的。
排除了其它硬件的问题,为会么系统仍不可启动?
如果硬件一切正常(经测试),那么在POST上电自检测后,CPU会从地址FFFF0H处开始执行指令,这个地址在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。由于BIOS是连接操作系统和硬件之间的桥梁,为计算机提供最低级的、最直接的硬件控制,计算机的原始操作都是依照固化在BIOS里的内容(指令)来完成的。因此如BIOS文件破坏或BIOS芯片损坏,都会直接的影响主板的启动。
如何判断BIOS已经损坏?
判断BIOS是否正常比较困难,因为如没有编程器等测试工具;是无法通过感官来判断BIOS文件或芯片是否正常的,对于普通用户而言,只有寻找维修商来解决了。
如果屏幕显示BIOS ROM checksum error-System halted(BIOS 程序代码在进行总和检查 ( checksum ) 时发现错误)的提示时,应是读取BIOS时,校验总和出错,因此无法启机器。这种问题通常是因为 BIOS 程序代码更新不完全所造成的,解决办法重新刷写烧坏主板 BIOS。

B. 单片机上电时内部各个存储器状态

首先单片机复位也分别几种:掉电再通电,按复位按钮,程序复位,通过外部接口复位。
各芯片的复位电路大同小异,这里以51系列单片机为例,上电后,保持RST一段高电平时间,就能达到上电复位的操作目的。
常见的复位电路如下:

1.掉电再通电,这里就视为冷启动吧
这种情况下单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。

2.按复位按钮
这种情况下单片机的复位操作也会使程序计数器PC=0000H,程序重新从 0000H 地址执行,但是与第1种情况不同的是,片内RAM为复位前的状态值,也就是说,运行中的复位操作不改变片内RAM区中的内容。而特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。
51单片机复位后特殊功能寄存器的初始值
特殊功能寄存器 初始值 特殊功能寄存器 初始值

ACC 00H TCON 00H

B 00H TMOD 00H
PSW 00H TL0 00H

SP 07H TH0 00H

DPTR 0000H TL1 00H

P0~P3 FFH TH1 00H

PCON 0XXX 0000B T2CON 00H

AUXR XXX0 0XX0B T2MOD XXXX XX00B

AUXR1 XXXX XXX0B RCAP2L 00H

IE 0X00 0000B RCAP2H 00H

IP XX00 0000B TL2 00H

SCON 00H TH2 00H

SBUF XXXX XXXXXB WDTRST XXXX XXXXB

表中部分符号的含义如下:
PSW=00H:表明复位后自动选择第0组工作寄存器组为当前工作寄存器组
SP=07H:表明堆栈指针指向片内RAM07H单元,堆栈的压入操作为先加后压,所以第一个被压入的数据存放在08H单元中
P0~P3=FFH:表明各端口写入1,此时各端口既可作输入口,也可以作输出口
AUXR=XXX0 0XX0:表明ALE引脚在CPU不访问外部存储器期间有脉冲信号输出
AUXR1=XXXX XXX0:表明选择DPTR0作数据指针
IE=00H:表明各中断均关闭
TCON=00H:表明T0,T1 均被停止
SCON=00H:表明串口处于方式0,允许发送,不允许接收

PCON=00H:表明SMOD=0,波特率不加倍。PD=0,IDL=0,单片机处于正常工作方式。

3.程序复位
这种情况下单片机的复位操作由程序内部控制,功能要视乎程序的编写。例如我们可以操作使程序计数器PC=0000H,同时
添加RAM初始化程序,清0或置1,同时设置某些特殊寄存器的值,或者其他操作,总之这是一种软件操控的复位,功能可灵活控制。

4.外部接口复位待研究。

P.S.
1.什么是冷启动?热启动呢?
冷启动就是在不加电的情况下启动系统,热启动就是在加电的情况下重启系统!
例子:
冷启动是之直接按下电源开关启动计算机。
热启动是之在已开机的状态下在开始菜单中选择重新启动计算机,这叫做热启动。

C. eeprom到底在使用编程的时候怎么用呢怎么初始化怎么编程实现各种功能呢

EEPROM(带电可擦写可编程只读存储器)是用户可更改的只读存储器EEPROM(ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。在一个EEPROM中,当计算机在使用的时候可频繁地反复编程,因此EEPROM的寿命是一个很重要的设计考虑参数。EEPROM是一种特殊形式的闪存,其应用通常是个人电脑中的电压来擦写和重编程。

EEPROM,一般用于即插即用(Plug & Play)。

常用在接口卡中,用来存放硬件设置数据。

也常用在防止软件非法拷贝的"硬件锁"上面。

D. TCL电视机彩电更换存储器后的初始化操作

你好,通常存贮器数据初始化过程是在打开机子瞬间微处理器与存贮器之间通过I2C总线完成。通常无需调整。你描述的现象是维修状态下的总线调整数据参数发生了变化,建议你联系售后,由专业的工程师上门检修。

E. 嵌入式linux sdram是否只要上电初始化后面就不用管了

看你的芯片是不是有专门控制sdram的引脚和寄存器啦
如果有的话那就不用管自己会充电
如果没有管理存储器的功能
你就只能用程序区控制刷新了

F. 请问arm的bootloader和中断向量表是什么关系他们的存放地址是哪里上电以后是从boot

中断向量表是一个地址集合,什么样的地址呢?就是当处理器运行程序时出状况了,它就得想办法应对状况,怎么应对呢?去哪里应对呢?这个向量表就是它要去的地方,比如发生中止异常abort时,处理器就会跳到向量表中的第5个向量,也就是0x0000_0010处去执行,至于在这个地址去执行什么,程序员说了算。
而bootloader,只是一个平台初始化文件,或者说只是一个初始化程序,通常是要对处理器中的堆栈、MMU、看门狗、TLB、缓存等硬件进行一个初始设置,或者是对应用程序的所有参数(比如数据段.data全局变量.bss等)等软件环境进行一个初始设置,以便操作系统(没有操作系统时,直接执行应用程序)进行正常启动。和我们PC机的boot程序是基本相同的。
因此,中断向量表是处理器进行异常处理的一些入口地址集合,而bootloader是进行初始化的一段程序。上电以后,基本上市面上所有处理器都是从地址0x00000000处开始执行的,这个地址就是中断向量表中的复位向量了,还有,对于大部分ARM来说,向量表是不会变的,始终是在地址空间的最前端,这个不是存储在哪里,而是固化在硬件中的,但是在地址空间最前端映射的设备,却不是固定不变的,你可以将ROM、RAM及外部FLASH映射在这些地址,那么就可以把中断向量表对应的处理程序放在ROM、RAM、及FLASH中了。而bootloader,肯定是放在ROM、FLASH这些非易失性存储器中的,上电后bootloader所在的存储器肯定映射在0x00000000处,因此CPU就可以顺利找到并执行之。

G. 单片机复位后各特殊功能寄存器的初始化状态是什么

首先单片机复位也分别几种:掉电再通电,按复位按钮,程序复位,通过外部接口复位。
各芯片的复位电路大同小异,这里以51系列单片机为例,上电后,保持RST一段高电平时间,就能达到上电复位的操作目的。
常见的复位电路如下:
1.掉电再通电,这里就视为冷启动吧
这种情况下单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。
2.按复位按钮
这种情况下单片机的复位操作也会使程序计数器PC=0000H,程序重新从
0000H
地址执行,但是与第1种情况不同的是,片内RAM为复位前的状态值,也就是说,运行中的复位操作不改变片内RAM区中的内容。而特殊功能寄存器复位后的状态为确定值,具体可参考相应单片机的说明书。
51单片机复位后特殊功能寄存器的初始值
特殊功能寄存器
初始值
特殊功能寄存器
初始值
ACC
00H
TCON
00H
B
00H
TMOD
00H
PSW
00H
TL0
00H
SP
07H
TH0
00H
DPTR
0000H
TL1
00H
P0~P3
FFH
TH1
00H
PCON
0XXX
0000B
T2CON
00H
AUXR
XXX0
0XX0B
T2MOD
XXXX
XX00B
AUXR1
XXXX
XXX0B
RCAP2L
00H
IE
0X00
0000B
RCAP2H
00H
IP
XX00
0000B
TL2
00H
SCON
00H
TH2
00H
SBUF
XXXX
XXXXXB
WDTRST
XXXX
XXXXB
表中部分符号的含义如下:
PSW=00H:表明复位后自动选择第0组工作寄存器组为当前工作寄存器组
SP=07H:表明堆栈指针指向片内RAM07H单元,堆栈的压入操作为先加后压,所以第一个被压入的数据存放在08H单元中
P0~P3=FFH:表明各端口写入1,此时各端口既可作输入口,也可以作输出口
AUXR=XXX0
0XX0:表明ALE引脚在CPU不访问外部存储器期间有脉冲信号输出
AUXR1=XXXX
XXX0:表明选择DPTR0作数据指针
IE=00H:表明各中断均关闭
TCON=00H:表明T0,T1
均被停止
SCON=00H:表明串口处于方式0,允许发送,不允许接收
PCON=00H:表明SMOD=0,波特率不加倍。PD=0,IDL=0,单片机处于正常工作方式。
3.程序复位
这种情况下单片机的复位操作由程序内部控制,功能要视乎程序的编写。例如我们可以操作使程序计数器PC=0000H,同时
添加RAM初始化程序,清0或置1,同时设置某些特殊寄存器的值,或者其他操作,总之这是一种软件操控的复位,功能可灵活控制。
4.外部接口复位待研究。
P.S.
1.什么是冷启动?热启动呢?
冷启动就是在不加电的情况下启动系统,热启动就是在加电的情况下重启系统!
例子:
冷启动是之直接按下电源开关启动计算机。
热启动是之在已开机的状态下在开始菜单中选择重新启动计算机,这叫做热启动。

H. 存储器的原理是什么

存储器讲述工作原理及作用

介绍

存储器(Memory)是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。计算机中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。

2.按存取方式分类

(1)随机存储器(RAM):如果存储器中任何存储单元的内容都能被随机存取,且存取时间与存储单元的物理位置无关,则这种存储器称为随机存储器(RAM)。RAM主要用来存放各种输入/输出的程序、数据、中间运算结果以及存放与外界交换的信息和做堆栈用。随机存储器主要充当高速缓冲存储器和主存储器。

(2)串行访问存储器(SAS):如果存储器只能按某种顺序来存取,也就是说,存取时间与存储单元的物理位置有关,则这种存储器称为串行访问存储器。串行存储器又可分为顺序存取存储器(SAM)和直接存取存储器(DAM)。顺序存取存储器是完全的串行访问存储器,如磁带,信息以顺序的方式从存储介质的始端开始写入(或读出);直接存取存储器是部分串行访问存储器,如磁盘存储器,它介于顺序存取和随机存取之间。

(3)只读存储器(ROM):只读存储器是一种对其内容只能读不能写入的存储器,即预先一次写入的存储器。通常用来存放固定不变的信息。如经常用作微程序控制存储器。目前已有可重写的只读存储器。常见的有掩模ROM(MROM),可擦除可编程ROM(EPROM),电可擦除可编程ROM(EEPROM).ROM的电路比RAM的简单、集成度高,成本低,且是一种非易失性存储器,计算机常把一些管理、监控程序、成熟的用户程序放在ROM中。

3.按信息的可保存性分类

非永久记忆的存储器:断电后信息就消失的存储器,如半导体读/写存储器RAM。

永久性记忆的存储器:断电后仍能保存信息的存储器,如磁性材料做成的存储器以及半导体ROM。

4.按在计算机系统中的作用分

根据存储器在计算机系统中所起的作用,可分为主存储器、辅助存储器、高速缓冲存储器、控制存储器等。为了解决对存储器要求容量大,速度快,成本低三者之间的矛盾,目前通常采用多级存储器体系结构,即使用高速缓冲存储器、主存储器和外存储器。

能力影响

从写命令转换到读命令,在某个时间访问某个地址,以及刷新数据等操作都要求数据总线在一定时间内保持休止状态,这样就不能充分利用存储器通道。此外,宽并行总线和DRAM内核预取都经常导致不必要的大数据量存取。在指定的时间段内,存储器控制器能存取的有用数据称为有效数据速率,这很大程度上取决于系统的特定应用。有效数据速率随着时间而变化,常低于峰值数据速率。在某些系统中,有效数据速率可下降到峰值速率的10%以下。

通常,这些系统受益于那些能产生更高有效数据速率的存储器技术的变化。在CPU方面存在类似的现象,最近几年诸如AMD和 TRANSMETA等公司已经指出,在测量基于CPU的系统的性能时,时钟频率不是唯一的要素。存储器技术已经很成熟,峰值速率和有效数据速率或许并不比以前匹配的更好。尽管峰值速率依然是存储器技术最重要的参数之一,但其他结构参数也可以极大地影响存储器系统的性能。

影响有效数据速率的参数

有几类影响有效数据速率的参数,其一是导致数据总线进入若干周期的停止状态。在这类参数中,总线转换、行周期时间、CAS延时以及RAS到CAS的延时(tRCD)引发系统结构中的大部分延迟问题。

总线转换本身会在数据通道上产生非常长的停止时间。以GDDR3系统为例,该系统对存储器的开放页不断写入数据。在这期间,存储器系统的有效数据速率与其峰值速率相当。不过,假设100个时钟周期中,存储器控制器从读转换到写。由于这个转换需要6个时钟周期,有效的数据速率下降到峰值速率的 94%。在这100个时钟周期中,如果存储器控制器将总线从写转换到读的话,将会丢失更多的时钟周期。这种存储器技术在从写转换到读时需要15个空闲周期,这会将有效数据速率进一步降低到峰值速率的79%。表1显示出针几种高性能存储器技术类似的计算结果。

显然,所有的存储器技术并不相同。需要很多总线转换的系统设计师可以选用诸如XDR、RDRAM或者DDR2这些更高效的技术来提升性能。另一方面,如果系统能将处理事务分组成非常长的读写序列,那么总线转换对有效带宽的影响最小。不过,其他的增加延迟现象,例如库(bank)冲突会降低有效带宽,对性能产生负面影响。

DRAM技术要求库的页或行在存取之前开放。一旦开放,在一个最小周期时间,即行周期时间(tRC)结束之前,同一个库中的不同页不能开放。对存储器开放库的不同页存取被称为分页遗漏,这会导致与任何tRC间隔未满足部分相关的延迟。对于还没有开放足够周期以满足tRC间隙的库而言,分页遗漏被称为库冲突。而tRC决定了库冲突延迟时间的长短,在给定的DRAM上可用的库数量直接影响库冲突产生的频率。

大多数存储器技术有4个或者8个库,在数十个时钟周期具有tRC值。在随机负载情况下,那些具有8个库的内核比具有4个库的内核所发生的库冲突更少。尽管tRC与库数量之间的相互影响很复杂,但是其累计影响可用多种方法量化。

存储器读事务处理

考虑三种简单的存储器读事务处理情况。第一种情况,存储器控制器发出每个事务处理,该事务处理与前一个事务处理产生一个库冲突。控制器必须在打开一个页和打开后续页之间等待一个tRC时间,这样增加了与页循环相关的最大延迟时间。在这种情况下的有效数据速率很大程度上决定于I/O,并主要受限于DRAM内核电路。最大的库冲突频率将有效带宽削减到当前最高端存储器技术峰值的20%到30%。

在第二种情况下,每个事务处理都以随机产生的地址为目标。此时,产生库冲突的机会取决于很多因素,包括tRC和存储器内核中库数量之间的相互作用。tRC值越小,开放页循环地越快,导致库冲突的损失越小。此外,存储器技术具有的库越多,随机地址存取库冲突的机率就越小。

第三种情况,每个事务处理就是一次页命中,在开放页中寻址不同的列地址。控制器不必访问关闭页,允许完全利用总线,这样就得到一种理想的情况,即有效数据速率等于峰值速率。

第一种和第三种情况都涉及到简单的计算,随机情况受其他的特性影响,这些特性没有包括在DRAM或者存储器接口中。存储器控制器仲裁和排队会极大地改善库冲突频率,因为更有可能出现不产生冲突的事务处理,而不是那些导致库冲突的事务处理。

然而,增加存储器队列深度未必增加不同存储器技术之间的相对有效数据速率。例如,即使增加存储器控制队列深度,XDR的有效数据速率也比 GDDR3高20%。存在这种增量主要是因为XDR具有更高的库数量以及更低的tRC值。一般而言,更短的tRC间隔、更多的库数量以及更大的控制器队列能产生更高的有效带宽。

实际上,很多效率限制现象是与行存取粒度相关的问题。tRC约束本质上要求存储器控制器从新开放的行中存取一定量的数据,以确保数据管线保持充满。事实上,为保持数据总线无中断地运行,在开放一个行之后,只须读取很少量的数据,即使不需要额外的数据。

另外一种减少存储器系统有效带宽的主要特性被归类到列存取粒度范畴,它规定了每次读写操作必须传输的数据量。与之相反,行存取粒度规定每个行激活(一般指每个RAS的CAS操作)需要多少单独的读写操作。列存取粒度对有效数据速率具有不易于量化的巨大影响。因为它规定一个读或写操作中需要传输的最小数据量,列存取粒度给那些一次只需要很少数据量的系统带来了问题。例如,一个需要来自两列各8字节的16字节存取粒度系统,必须读取总共32字节以存取两个位置。因为只需要32个字节中的16个字节,系统的有效数据速率降低到峰值速率的50%。总线带宽和脉冲时间长度这两个结构参数规定了存储器系统的存取粒度。

总线带宽是指连接存储器控制器和存储器件之间的数据线数量。它设定最小的存取粒度,因为对于一个指定的存储器事务处理,每条数据线必须至少传递一个数据位。而脉冲时间长度则规定对于指定的事务处理,每条数据线必须传递的位数量。每个事务处理中的每条数据线只传一个数据位的存储技术,其脉冲时间长度为1。总的列存取粒度很简单:列存取粒度=总线宽度×脉冲时间长度。

很多系统架构仅仅通过增加DRAM器件和存储总线带宽就能增加存储系统的可用带宽。毕竟,如果4个400MHz数据速率的连接可实现 1.6GHz的总峰值带宽,那么8个连接将得到3.2GHz。增加一个DRAM器件,电路板上的连线以及ASIC的管脚就会增多,总峰值带宽相应地倍增。

首要的是,架构师希望完全利用峰值带宽,这已经达到他们通过物理设计存储器总线所能达到的最大值。具有256位甚或512位存储总线的图形控制器已并不鲜见,这种控制器需要1,000个,甚至更多的管脚。封装设计师、ASIC底层规划工程师以及电路板设计工程师不能找到采用便宜的、商业上可行的方法来对这么多信号进行布线的硅片区域。仅仅增加总线宽度来获得更高的峰值数据速率,会导致因为列存取粒度限制而降低有效带宽。

假设某个特定存储技术的脉冲时间长度等于1,对于一个存储器处理,512位宽系统的存取粒度为512位(或者64字节)。如果控制器只需要一小段数据,那么剩下的数据就被浪费掉,这就降低了系统的有效数据速率。例如,只需要存储系统32字节数据的控制器将浪费剩余的32字节,进而导致有效的数据速率等于50%的峰值速率。这些计算都假定脉冲时间长度为1。随着存储器接口数据速率增加的趋势,大多数新技术的最低脉冲时间长度都大于1。

选择技巧

存储器的类型将决定整个嵌入式系统的操作和性能,因此存储器的选择是一个非常重要的决策。无论系统是采用电池供电还是由市电供电,应用需求将决定存储器的类型(易失性或非易失性)以及使用目的(存储代码、数据或者两者兼有)。另外,在选择过程中,存储器的尺寸和成本也是需要考虑的重要因素。对于较小的系统,微控制器自带的存储器就有可能满足系统要求,而较大的系统可能要求增加外部存储器。为嵌入式系统选择存储器类型时,需要考虑一些设计参数,包括微控制器的选择、电压范围、电池寿命、读写速度、存储器尺寸、存储器的特性、擦除/写入的耐久性以及系统总成本。

选择存储器时应遵循的基本原则

1、内部存储器与外部存储器

一般情况下,当确定了存储程序代码和数据所需要的存储空间之后,设计工程师将决定是采用内部存储器还是外部存储器。通常情况下,内部存储器的性价比最高但灵活性最低,因此设计工程师必须确定对存储的需求将来是否会增长,以及是否有某种途径可以升级到代码空间更大的微控制器。基于成本考虑,人们通常选择能满足应用要求的存储器容量最小的微控制器,因此在预测代码规模的时候要必须特别小心,因为代码规模增大可能要求更换微控制器。目前市场上存在各种规模的外部存储器器件,我们很容易通过增加存储器来适应代码规模的增加。有时这意味着以封装尺寸相同但容量更大的存储器替代现有的存储器,或者在总线上增加存储器。即使微控制器带有内部存储器,也可以通过增加外部串行EEPROM或闪存来满足系统对非易失性存储器的需求。

2、引导存储器

在较大的微控制器系统或基于处理器的系统中,设计工程师可以利用引导代码进行初始化。应用本身通常决定了是否需要引导代码,以及是否需要专门的引导存储器。例如,如果没有外部的寻址总线或串行引导接口,通常使用内部存储器,而不需要专门的引导器件。但在一些没有内部程序存储器的系统中,初始化是操作代码的一部分,因此所有代码都将驻留在同一个外部程序存储器中。某些微控制器既有内部存储器也有外部寻址总线,在这种情况下,引导代码将驻留在内部存储器中,而操作代码在外部存储器中。这很可能是最安全的方法,因为改变操作代码时不会出现意外地修改引导代码。在所有情况下,引导存储器都必须是非易失性存储器。

可以使用任何类型的存储器来满足嵌入式系统的要求,但终端应用和总成本要求通常是影响我们做出决策的主要因素。有时,把几个类型的存储器结合起来使用能更好地满足应用系统的要求。例如,一些PDA设计同时使用易失性存储器和非易失性存储器作为程序存储器和数据存储器。把永久的程序保存在非易失性ROM中,而把由用户下载的程序和数据存储在有电池支持的易失性DRAM中。不管选择哪种存储器类型,在确定将被用于最终应用系统的存储器之前,设计工程师必须仔细折中考虑各种设计因素。

I. 单片机的RAM和ROM有什么区别

RAM分为工作寄存区、位寻址区、数据缓冲区和特殊功能寄存器区
在RAM中的临时数据一般为采集到的数据,如空调收集到的温度数据、用户的输入、运算的数据等,程序员写好的代码烧进去的数据不在这里。
ROM是程序存储器(Program memory)主要用于存放经调试正确的应用程序、数据和表格,程序员写的程序是其中一部分。

顺便提一下单片机中FLASH与RAM、ROM的关系

单片机FLASH主要用作程序存贮器,就是替代以前的ROM,最大的有有点是降低了芯片的成本并且可以做到电擦写,目前市场上单片机的FALSH寿命相差比较大,擦写次数从1000~10万的都有,但存储时间可以保证40年,在选用时要注意. 还有一些廉价的单片机为了集成可掉电的数据存储器,没有选用价格昂贵的EEPROM,而用FALSH来做的,但要注意其寿命最多就10万次,而且擦写不能字节擦写,这要注意使用的场合其寿命是否满足要求.

RAM是数据存储器,跟计算机里面的内存差不多,主要是用来存放程序运行中的过程数据,掉电后就会丢失之前的数据,所以程序在上电时需要进行初始化,否则上电后的数据是一个随机数,可能导致程序奔溃.

ROM就是程序存储器,掉电后数据不会丢失,但在程序运行过程中其数据不会改变.早期的单片机的ROM因为擦写修改麻烦,价格昂贵或者价格低廉的OTP型无法修改数据等原因已经被现在的FLASH存储器替代了.因为FLASH的擦写很容易,现在的部分单片机支持在线内部编程,通过特定的程序执行方式可以修改FALSH的内容,而实现在线修改程序存储器.这与上面说的程序存储器的内容在运行的时候不可被改变是不冲突的,因为在程序正常运行时,其内容不会改变,只工作在只读状态下的.

J. 单片机的初始化问题

这与数码管阴极接法有关各段编号从最上段开始顺时钟旋转为ABCDEF
中间一段为G,小数点为H或DP
若最高位接小数点 最低位接A 则排列顺序为HGFE DCBA
显示P时C=1 H=1 其余为0 所以二进制为10000100 应该是84H
若小数点接最高位,然后ABCDEFHABC DEFG 则为10010000应该是90H
若A接最高位,然后BCDEFGHABCD EFGH 则为00100001应该是21H
真找不到8CH或0CH 肯定驱动数码管时你又用了反相器84H反码是7CH
90H反码是6FH 21H反码为 DEH 还是找不到那两个数晕
还是硬件说清楚吧简单问题弄得我