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 還是找不到那兩個數暈
還是硬體說清楚吧簡單問題弄得我