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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式處理器MPC8250與CF卡的接口設(shè)計(jì)

          嵌入式處理器MPC8250與CF卡的接口設(shè)計(jì)

          作者: 時(shí)間:2012-06-27 來(lái)源:網(wǎng)絡(luò) 收藏

          (4)配置多功能引腳寄存器(偏移量:0x8C)。該寄存器配置通用引腳。本設(shè)計(jì)配置GPIO1引腳為LED指示,GPIO2引腳為PCI中斷輸出。

          (5)配置設(shè)備控制寄存器(偏移量:0x92)。該寄存器選擇中斷方式,是并行PCI中斷還是串行PCI中斷。本設(shè)計(jì)選擇了傳統(tǒng)的并行PCI中斷方式。

          (6)配置ExCA電壓控制寄存器(偏移量:0x802),選擇Vcc為3.3V還是5V。本設(shè)計(jì)選擇Vcc為3.3V。

          (7)配置ExCA存儲(chǔ)窗口0起始地址低位寄存器(偏移量:0x810),即起始地址的A19~A12位。PCI1410A具有五個(gè)存儲(chǔ)地址翻譯窗口和二個(gè)I/O地址翻譯窗口,用于配置CF卡內(nèi)寄存器的訪問(wèn)地址,將CF卡的寄存器映射到系統(tǒng)的存儲(chǔ)空間或I/O空間,MPC8250訪問(wèn)這些寄存器就相當(dāng)于訪問(wèn)一段存儲(chǔ)空間或I/O空間。本設(shè)計(jì)中只使用了存儲(chǔ)地址翻譯窗口0。

          (8)配置ExCA存儲(chǔ)窗口0起始地址高位寄存器(偏移量:0x811),即起始地址的A23~A20位。

          (9)配置ExCA存儲(chǔ)窗口0結(jié)束地址低位寄存器(偏移量:0x812),即結(jié)束地址的A19~A12位。

          (10)配置ExCA存儲(chǔ)窗口0結(jié)束地址高位寄存器(偏移量:0x813),即結(jié)束地址的A23~A20位。

          (11)配置ExCA存儲(chǔ)窗口0地址比較寄存器(偏移量:0x840)。在系統(tǒng)訪問(wèn)CF卡時(shí),如果地址的高8位與該寄存器數(shù)值相同,則允許訪問(wèn),系統(tǒng)將該地址翻譯到相應(yīng)的CF卡空間;否則,拒之門外。

          (12)配置ExCA存儲(chǔ)窗口使能寄存器(偏移量:0x806)。該寄存器可以分別打開(kāi)或關(guān)閉五個(gè)存儲(chǔ)地址翻譯窗口和二個(gè)I/O地址翻譯窗口,因?yàn)槊總€(gè)窗口對(duì)應(yīng)了寄存器中的一個(gè)使能位。芯片的默認(rèn)值都是關(guān)閉的。在本設(shè)計(jì)中,打開(kāi)存儲(chǔ)地址翻譯窗口0。切記在初始化的收官階段打開(kāi)翻譯窗口使能位,以免功虧一簣。

          2.2 讀寫(xiě)CF卡技巧

          由于CF卡本身的特點(diǎn),CF卡由ATA控制器和Flash存儲(chǔ)器兩部分構(gòu)成。系統(tǒng)訪問(wèn)Flash存儲(chǔ)器的速度遠(yuǎn)遠(yuǎn)小于訪問(wèn)內(nèi)存的速度。如果系統(tǒng)頻繁訪問(wèn)CF卡,勢(shì)必影響系統(tǒng)的實(shí)時(shí)性和工作效率。所以必須考慮CF卡讀寫(xiě)程序的設(shè)計(jì)技巧。

          根據(jù)存儲(chǔ)器訪問(wèn)的局部性原理,CPU存取數(shù)據(jù)所訪問(wèn)的存儲(chǔ)單元都趨向于聚集在一個(gè)較小的連續(xù)區(qū)域。從時(shí)間上看,如果一個(gè)信息項(xiàng)正在被訪問(wèn),那么在近期它很可能還會(huì)被再次訪問(wèn)。從空間上看,在最近將用到的信息很可能與目前正在使用的信息在空間地址上是臨近的。

          本系統(tǒng)的程序設(shè)計(jì)中,開(kāi)辟了一個(gè)扇區(qū)的內(nèi)存空間tempSect,用于存儲(chǔ)最近訪問(wèn)過(guò)的扇區(qū)數(shù)據(jù);并設(shè)置了兩個(gè)全局變量:SaveSectorNum和SectorDirty。SaveSectorNum保存最近備份的扇區(qū)編號(hào)。SectorDirty說(shuō)明備份數(shù)據(jù)是否與CF卡中的相應(yīng)數(shù)據(jù)一致。如果一致,為“0”;否則為“1”。這樣不但可以減少讀寫(xiě)CF卡的次數(shù),而且提高了訪問(wèn)速度,滿足嵌入式操作系統(tǒng)的實(shí)時(shí)性要求。

          同時(shí),CF卡的物理結(jié)構(gòu)也有利于以扇區(qū)為單元進(jìn)行操作。因?yàn)椋茫瓶▋?nèi)部的Flash存儲(chǔ)器由若干個(gè)扇區(qū)組成,而且CF卡中設(shè)置了專門針對(duì)扇區(qū)操作的寄存器。

          所以,本設(shè)計(jì)中,無(wú)論是讀一段數(shù)據(jù),還是寫(xiě)一段數(shù)據(jù),都以扇區(qū)為基本單位。如果數(shù)據(jù)量在一個(gè)扇區(qū)內(nèi),并且地址范圍在同一扇區(qū),則先讀取所在扇區(qū)的數(shù)據(jù),然后按照在扇區(qū)中的偏移量獲得所需數(shù)據(jù);如果數(shù)據(jù)量大于一個(gè)扇區(qū),或者地址范圍橫跨兩個(gè)扇區(qū),則按次讀取扇區(qū),獲得所需數(shù)據(jù)。操作流程如圖2所示。

          系統(tǒng)初始化時(shí),設(shè)置SaveSectorNum為“0”, tempSect中備份了0號(hào)扇區(qū)的數(shù)據(jù);SectorDirty也為“0”,即備份數(shù)據(jù)未作更改。

          當(dāng)讀取一個(gè)扇區(qū)的數(shù)據(jù)時(shí),首先比較所讀取的扇區(qū)號(hào)(CurrSectorNum),是否與備份數(shù)據(jù)的扇區(qū)號(hào)(SaveSectorNum)一致,如果一致,則從備份數(shù)據(jù)中讀取,加快了訪問(wèn)速度;否則,判斷備份數(shù)據(jù)是否更改,即SectorDirty是否為“1”;如果不是,則從CF卡中讀取扇區(qū)號(hào)為CurrSectorNum的數(shù)據(jù)到tempSect中;否則,先把tempSect的數(shù)據(jù)寫(xiě)回CF卡,然后從CF卡中讀取扇區(qū)號(hào)為CurrSectorNum的數(shù)據(jù)到tempSect中。最后,設(shè)置備份數(shù)據(jù)扇區(qū)號(hào)SaveSectorNum為當(dāng)前數(shù)據(jù)的扇區(qū)號(hào)CurrSectorNum,設(shè)置SectorDirty為“0”,并從備份數(shù)據(jù)中讀取所需數(shù)據(jù)。



          關(guān)鍵詞: 嵌入式處理器 MPC8250 CF卡

          評(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); })();