NAND FLASH 與NOR FLASH 的區(qū)別
與Nand Flash對應(yīng)的是另一種Flash:Nor Flash,其對應(yīng)的特點(diǎn)是:
“NorFlash的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP,eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。如uboot中的ro段可以直接在NorFlash上運(yùn)行,只需要把rw和zi段拷貝到RAM中運(yùn)行即可。 ”
而相應(yīng)地,Nand Flash比較特殊:
“NandFlash器件使用復(fù)雜的I/O口來串行地存取數(shù)據(jù),8個(gè)引腳用來傳送控制、地址和數(shù)據(jù)信息。由于時(shí)序較為復(fù)雜,所以一般CPU最好集成NAND控制器。另外由于NandFlash沒有掛接在地址總線上,所以如果想用NandFlash作為系統(tǒng)的啟動(dòng)盤,就需要CPU具備特殊的功能,如s3c2410在被選擇為NandFlash啟動(dòng)方式時(shí)會(huì)在上電時(shí)自動(dòng)讀取NandFlash的4k數(shù)據(jù)到地址0的SRAM中。如果CPU不具備這種特殊功能,用戶不能直接運(yùn)行NandFlash上的代碼,那可以采取其他方式,比如好多使用NandFlash的開發(fā)板除了使用NandFlash以外,還用上了一塊小的NorFlash來運(yùn)行啟動(dòng)代碼。”
至于,為什么Nand Flash不能進(jìn)行XIP的原因,主要是由于物理上的硬件限制,
在讀取Flash時(shí)候,容易出現(xiàn)“位翻轉(zhuǎn)(bit convert)”:
“在Flash的位翻轉(zhuǎn)(一個(gè)bit位發(fā)生翻轉(zhuǎn))現(xiàn)象上,NAND的出現(xiàn)幾率要比NorFlash大得多。這個(gè)問題在Flash存儲(chǔ)關(guān)鍵文件時(shí)是致命的,所以在使用NandFlash時(shí)建議同時(shí)使用EDC/ECC等校驗(yàn)算法。 ”
但是,如果能保證不出錯(cuò),也還是可以進(jìn)行XIP,可以在其上執(zhí)行代碼的:
“所謂XIP,就是CODE是在FLASH上直接運(yùn)行. NANDFLASH只是不適合做XIP,但并不是不能做XIP.
要一段CODE能夠正確的運(yùn)行,要保證它的CODE是連續(xù)的,正確的.
由于一些電氣特性的原因,NOR FLASH能夠做到這一點(diǎn),不存在壞道或壞塊,所以能夠做XIP.
而對于NAND FLASH, 它只保證它的BLOCK 0是好的,其他的塊并不保證,雖然出錯(cuò)的幾率比較低,但還是有出錯(cuò)的可能,所以CODE可能無法連續(xù)正確地執(zhí)行.
但只要你有額外的保障措施,比如說在執(zhí)行CODE之前去做一次ECC校驗(yàn),來確保CODE是連續(xù)正確的.那你也可以做XIP. 事實(shí)上我就正在這么做,而且也證明是成功的. ”
posted @
2012-05-29 16:46 鷹空獨(dú)舞 閱讀(396) |
評(píng)論 (0) |
編輯 收藏
再做課程設(shè)計(jì)時(shí)遇到的問題,及相應(yīng)解決辦法
1.添加背景音樂(設(shè)計(jì)的界面太單調(diào),以前只是知道一些基本語法,現(xiàn)想提升一下自己)
主要代碼如下:
import java.io.*;
import java.awt.*;
import java.net.MalformedURLException; public static void main(String args[]) {
try {
URL cb;
File f = new File("C:\\Documents and Settings\\Administrator\\桌面\\刀出鞘.wav");
//引號(hào)里面的是音樂文件所在的絕對路徑
cb = f.toURL();
AudioClip aau;
aau = Applet.newAudioClip(cb);
//aau.play();
aau.loop();
//循環(huán)播放 aau.play() 單曲 aau.stop()停止播放
}
catch (MalformedURLException e){
e.printStackTrace();
}
}
2.添加背景圖片
主要代碼:
import java.swing.*;
final ImageIcon img=new ImageIcon("jiemian.jpg");
JPanel jpnl =new JPanel(){
public void paintComponent(Graphics g){
g.drawImage(img.getImage(),0,0,580,500,null,null);
super.paintComponent(g);} };
jpnl.setBounds(0,0,587,540);
jpnl.setOpaque(false);
3.鍵盤輸入識(shí)別
識(shí)別'Enter'鍵,主要代碼:
public void keyPressed(KeyEvent ke){
if(ke.getKeyChar() == ke.
VK_ENTER){ //以前不知道,原來有一個(gè)系統(tǒng)中有專門的常量對應(yīng)鍵盤特殊按鈕
System.out.println ("ok................") ;
}
}
4.按鈕數(shù)組及其響應(yīng) (剛開始時(shí)把它想復(fù)雜了)
主要代碼:
JButton btn[]=new JButton[5];
.......
void define(){
btn[0]=new JButton("btn1");
btn[1]=new JButton("btn2");
btn[2]=new JButton("btn3");
btn[3]=new JButton("<html>按鈕四<br>和 按鈕五</html>"); //<html>......<br>可以實(shí)現(xiàn)按鈕上字符串換行顯示的功能
btn[4]=new JButton("btn6");
for(int i=0;i<5;i++)
{
btn[i].addActionListener(new ActListen());
}
}
class ActListen implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton butn=(JButton)e.getSource();
if(butn==btn[1]){
}
else if(butn==btn[2]){
}
else if(butn==btn[0]){
}
else if(butn==btn[3]){
}
else if(butn==btn[4]){
}
}
.........
posted @
2011-01-16 00:18 鷹空獨(dú)舞 閱讀(298) |
評(píng)論 (0) |
編輯 收藏