<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 并行NOR Flash在SOPC開發(fā)中的應(yīng)用設(shè)計(jì)

          并行NOR Flash在SOPC開發(fā)中的應(yīng)用設(shè)計(jì)

          作者: 時(shí)間:2010-07-28 來源:網(wǎng)絡(luò) 收藏

            4 存儲(chǔ)非易失數(shù)據(jù)或參數(shù)

            有時(shí)候系統(tǒng)需要存儲(chǔ)非易失的數(shù)據(jù)或參數(shù),這就需要通過編寫程序直接對(duì)J3D進(jìn)行讀/寫操作。當(dāng)然,前提是先要在EDK中為J3D添加一個(gè)XPS MCH EMC接口。這個(gè)接口對(duì)并行 和SRAM來說都是適用的,如果用于SRAM則可以直接讀/寫,不需要驅(qū)動(dòng),而用于并行則需要自己編寫相應(yīng)的驅(qū)動(dòng)程序。下面為自行編寫的一個(gè)執(zhí)行塊擦除、單字寫、單字讀操作的程序。需要注意的是: 寫操作前一定要先進(jìn)行擦除操作,寫命令或?qū)憯?shù)據(jù)之后一定要對(duì)狀態(tài)寄存器進(jìn)行判斷是否完成相應(yīng)操作;讀操作則很簡單,像SRAM的讀/寫一樣。

            Xuint16 data=0xF0F0;

            Xuint16 Status,ReadData;

            /*塊擦除程序*/

            XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,0x2020 );//指定地址塊的擦除設(shè)置

            XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,0xD0D0 );//指定地址塊的擦除確認(rèn)

            do{

            Status = XIo_In16(XPAR_GENERIC_EXTERNAL_MEMORY_MEM0_BASEADDR);

            }while ((Status 0x0080) != 0x0080);//讀狀態(tài)寄存器直至塊擦除完成

            /*單字寫程序*/

            XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,0x4040 );//指定地址處單字寫操作設(shè)置

            XIo_Out16(XPAR_FLASH_16MX8_MEM0_BASEADDR,data );//向指定地址處寫入一個(gè)字長的數(shù)據(jù)

            do{

            Status = XIo_In16(XPAR_GENERIC_EXTERNAL_MEMORY_MEM0_BASEADDR);

            }while ((Status 0x0080) != 0x0080);//讀狀態(tài)寄存器直至寫操作完成

            /*單字讀程序*/

            ReadData=XIo_In16(XPAR_FLASH_16MX8_MEM0_BASEADDR );//讀相應(yīng)地址處的數(shù)據(jù)

            還有一種情況是在系統(tǒng)運(yùn)行前就把數(shù)據(jù)寫入中。首先,把數(shù)據(jù)寫入一個(gè)二進(jìn)制文件中。注意,MicroBlaze的存儲(chǔ)格式是BigEndian(即高字節(jié)數(shù)據(jù)保存在低地址,低字節(jié)數(shù)據(jù)保存在高地址),PC機(jī)的存儲(chǔ)格式則是LittleEndian(即高字節(jié)數(shù)據(jù)保存在高地址,低字節(jié)數(shù)據(jù)保存在低地址),因此如果是用VC++產(chǎn)生的二進(jìn)制文件,一定要進(jìn)行高、低字節(jié)交換。在Matlab中生成數(shù)據(jù)文件則可以在相應(yīng)的文件操作函數(shù)中添加參數(shù)’b’(表示以BigEndian格式存儲(chǔ)),如FileID=fopen(’data.bin’,’w+’,’b’)。產(chǎn)生的二進(jìn)制文件可以通過Program Flash Memory對(duì)話框下載到J3D中,注意不要選中Autoconvert file to SREC format when programming flash和Create Flash Bootloader Application選項(xiàng)。

            結(jié)語

            本文討論了在以Xilinx Spartan XC3S1600E為基礎(chǔ)的設(shè)計(jì)中,Intel J3D并行 Flash的4種不同用途及其使用方法與技巧,尤其對(duì)一些技術(shù)關(guān)鍵問題予以詳細(xì)的闡述,其中融入了筆者在項(xiàng)目開發(fā)中的實(shí)際經(jīng)驗(yàn),具有較高的參考價(jià)值。J3D既可以用于存儲(chǔ)配置比特流,又可以存儲(chǔ)軟處理器程序代碼,也可以存儲(chǔ)非易失的數(shù)據(jù)和參數(shù),甚至三者可以并存于同一片J3D中。本文只是以Intel J3D并行 Flash為例討論其在開發(fā)中的用法,這些方法同樣適用于其他廠家具有CFI(Common Flash Interface)接口的并行NOR Flash。靈活地綜合運(yùn)用這些方法,對(duì)于開發(fā)具有重要意義。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: FPGA SOPC NOR Flash 嵌入式

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();