在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 解決軟件和硬件接口問題的嵌入式系統(tǒng)設(shè)計實例

      解決軟件和硬件接口問題的嵌入式系統(tǒng)設(shè)計實例

      作者: 時間:2013-10-23 來源:網(wǎng)絡(luò) 收藏

      通常不可避免要采用一些特殊總線,但需要慎重考慮特殊訪問空間的使用選擇,因為這種情況會給系統(tǒng)軟件設(shè)計帶來一定的困難。系統(tǒng)A采用了只寫寄存器,因此要求系統(tǒng)軟件提供“影子”內(nèi)存(Shadow memory)來保存寫入到資源的數(shù)據(jù)。而系統(tǒng)B由于允許所有的寄存器都可讀寫,因此沒有這種限制。

      2. 開發(fā)基于處理器的資源接口

      硬件設(shè)計工程師習(xí)慣于從下至上分析資源接口問題以及與系統(tǒng)總線的連接,而通過分析處理器在系統(tǒng)中對資源的訪問過程則更好。

      “處理器與資源”間的接口常常是最重要的接口,在硬件設(shè)計流程中它的效率應(yīng)是最優(yōu)先考慮的對象。統(tǒng)一規(guī)劃整個系統(tǒng)的資源訪問對于正確理解由硬件設(shè)計選擇所引起的訪問限制很重要。

      現(xiàn)有最先進的系統(tǒng)包含有存儲控制器和可再映射總線,它們會改變處理器與資源接口之間的訪問類型。一般地說,一個不合格的硬件接口設(shè)計在軟件小組試圖與實際資源連接前是不可能反映出來的,這一點對于設(shè)計硬件接口很重要。

      3. 系統(tǒng)內(nèi)存映射的創(chuàng)建與維護

      對于一個好的系統(tǒng)設(shè)計來說,所有資源的存儲器映射都非常重要。如前所述,存儲器映射的設(shè)計應(yīng)考慮到具體處理器要求,而不是簡單地說明一個資源所解碼的地址線類型。如果采用的是寄存器可配置資源,如PCI總線,硬件設(shè)計工程師應(yīng)在存儲器映射中配置所有與該資源有關(guān)的配置寄存器,并提供用以創(chuàng)建硬件驗證所需的靜態(tài)映射的配置寄存器初始化值。

      硬件設(shè)計工程師還必須認真考慮動態(tài)重配置的優(yōu)越性。在可重配置總線上沒有新增(或減少)資源的系統(tǒng)能演變成一個靜態(tài)映射,方法是強迫配置寄存器在系統(tǒng)復(fù)位后回復(fù)到同一值。這個“靜態(tài)”系統(tǒng)圖為硬件集成和軟件開發(fā)提供了一個穩(wěn)定的統(tǒng)一結(jié)構(gòu),同時還避免了在系統(tǒng)代碼中使用易產(chǎn)生錯誤的指針操作。

      最后,隨著系統(tǒng)的不斷成熟,存儲器映射也必須不斷完善,并隨著軟硬件開發(fā)的進展不斷改進。

      4. 統(tǒng)一的訪問模式

      當(dāng)前的由于復(fù)雜度的提高,通常由多人共同合作進行設(shè)計。每個硬件部件的設(shè)計必須與整體一致,這樣才能開發(fā)出統(tǒng)一的資源訪問模式。如果不同功能模塊的訪問不一致的話,在軟件開發(fā)期間就會產(chǎn)生潛在的訪問限制錯誤,從而可能需要為每個子系統(tǒng)設(shè)計專門的軟件驅(qū)動程序。對不同邏輯塊的不一致訪問也會使硬件集成和驗證變得困難重重。

      例如設(shè)計工程師在調(diào)試器上編輯4個十六進制數(shù)字并不能保證處理器會使用一個16位的讀/寫周期,因此,對軟件開發(fā)和硬件集成中使用調(diào)試工具設(shè)置多種類型的限制訪問也具有一定的困難。這樣看來,評估仿真器處理多個限制性訪問地址空間的能力就非常有用,特別是在用“限制外”訪問方式觸發(fā)總線故障的處理器結(jié)構(gòu)中。

      寄存器設(shè)計

      既然硬件設(shè)計工程師的重點已經(jīng)從邏輯門和總線轉(zhuǎn)移到了系統(tǒng)設(shè)計,我們再來審視一下任何處理器系統(tǒng)中最常用到的寄存器設(shè)計。寄存器接口允許高速訪問資源,其訪問的效率對系統(tǒng)的性能有很大的影響。

      寄存器的結(jié)構(gòu)與訪問

      設(shè)計工程師應(yīng)該精心選擇硬件寄存器大小,使處理器能最有效地進行硬件訪問。一般來說,總是采用系統(tǒng)內(nèi)部整數(shù)訪問方式。寄存器應(yīng)該被譯碼為連續(xù)的組(沒有地址空檔),這樣可以加速指針或陣列索引對寄存器的訪問。任何可寫的寄存器也應(yīng)該是以同樣的格式可讀,這樣可以避免使用本地存儲器來緩存這些寄存器值。

      控制一個子系統(tǒng)的寄存器應(yīng)該以相同的結(jié)構(gòu)形式在一起分組,使軟件能使用通用的驅(qū)動程序?qū)λ鼈冞M行訪問。當(dāng)設(shè)計中需要多個同一類型的子系統(tǒng)時這點尤其重要。

      為了避免被編碼成獨立進程的軟件任務(wù)之間發(fā)生沖突,獨立的子系統(tǒng)不能在系統(tǒng)處理器訪問期間共享可寫寄存器。這些“獨立”的軟件進程在訪問共享寄存器時會產(chǎn)生競爭,除非在系統(tǒng)代碼中使用不可中斷的讀/寫驅(qū)動程序。根據(jù)操作系統(tǒng)的不同,多個進程共享寄存器甚至可能會產(chǎn)生功能調(diào)用的額外開銷。訪問共享寄存器的同時還有執(zhí)行其它進程的做法是錯誤的,也是軟件設(shè)計的通病,會導(dǎo)致間歇性的系統(tǒng)故障,影響集成和測試系統(tǒng)軟件的進度。

      系統(tǒng)A違反了很多上文提到的原則,如采用只寫寄存器,共享控制和狀態(tài)寄存器,以及沒有為每個軸提供公共的寄存器映射。系統(tǒng)A必須用專門的驅(qū)動程序來緩沖寫輸出數(shù)據(jù),移位并屏蔽軸驅(qū)動與位置信息,并防止軸驅(qū)動寄存器內(nèi)容被為每個軸任務(wù)編寫的代碼所影響。系統(tǒng)B由于分離并重組了與每個軸有關(guān)的寄存器,因此能克服這些問題。

      寄存器復(fù)位內(nèi)容

      硬件設(shè)計工程師應(yīng)仔細考慮系統(tǒng)的復(fù)位狀態(tài)。硬件設(shè)計通常采用啟動程序來取得系統(tǒng)啟動后的控制權(quán),并將系統(tǒng)初始化到一個安全的狀態(tài)。系統(tǒng)復(fù)位后應(yīng)將硬件置于一個確定的安全狀態(tài),并且硬件應(yīng)持續(xù)保持安全狀態(tài)直到系統(tǒng)軟件初始化完成為止。代碼也應(yīng)在軟件控制下復(fù)位硬件以幫助調(diào)試、自檢和原始代碼的開發(fā)。

      系統(tǒng)A不控制驅(qū)動寄存器的復(fù)位內(nèi)容,需要代碼的介入來將所有三個軸的驅(qū)動寄存器設(shè)置為零。這種結(jié)構(gòu)會產(chǎn)生嚴重的系統(tǒng)設(shè)計問題,因為處理器通常是保持在復(fù)位狀態(tài),直到FPGA和ASIC加電并得到配置后處理器才正常工作。如果開發(fā)人員使用仿真器,那么在集成過程中系統(tǒng)A還會出現(xiàn)另外的問題:被仿真器控制的處理器在系統(tǒng)加電后可能需要很長的初始化時間才能正常工作。在軟件取得控制權(quán)之前系統(tǒng)A和B的軸都處于隨機驅(qū)動狀態(tài)。

      系統(tǒng)B在加電后會將所有軸驅(qū)動寄存器設(shè)為零,它對軸驅(qū)動設(shè)置的控制并不依賴于啟動時間。因為系統(tǒng)B沒有隱藏的狀態(tài)機,因此在本設(shè)計中沒有必要考慮增加額外的軟件復(fù)位寄存器。

      寄存器域設(shè)計

      大多數(shù)資源接口所包含的數(shù)據(jù)項并不正好適合一個寄存器。這種情況下,硬件設(shè)計工程師必須將一個寄存器分成若干域。合理的域結(jié)構(gòu)對系統(tǒng)性能來說非常重要,與寄存器接口設(shè)計有相似的影響。有效的域接口設(shè)計規(guī)則類似于寄存器設(shè)計規(guī)則,但設(shè)計工程師還需要特別注意域的順序與放置,還要對寄存器中未用到一些字節(jié)作一定的處理。

      1. 寄存器的域

      域被定義為寄存器中若干位的子集,主要用于報告或控制資源的一個功能要素。在硬件設(shè)計中最常用的域類型有:1. 布爾域:真或假,通常是一位;2. 多位狀態(tài)域和控制域:多位用于報告或控制內(nèi)部相關(guān)功能;3. 列舉狀態(tài)域和控制域:多個位的集合,其中每個位代表了一種不同的硬件狀態(tài);4. 數(shù)字域:多個位組合在一起用來代表一定的數(shù)量值。

      從軟件使用者角度看,最有效的域結(jié)構(gòu)是每個寄存器只用一個域。這種理想的軟件結(jié)構(gòu)可能導(dǎo)致硬件實現(xiàn)效率低,因此一個好的系統(tǒng)設(shè)計需要在軟硬件設(shè)計之間作出折衷,在每個寄存器中應(yīng)放置多個域。

      下文將著重討論一個寄存器中假設(shè)存在多個域的情況,不過,當(dāng)對資源的某個特殊參數(shù)進行的有效訪問將嚴重影響系統(tǒng)軟件性能時,硬件設(shè)計工程師仍應(yīng)該考慮使用單個域的寄存器。

      2. 域結(jié)構(gòu)

      前文提到的用于寄存器的結(jié)構(gòu)概念同樣也適合于寄存器內(nèi)部的域。一個寄存器應(yīng)該只包含屬于設(shè)計中同一功能要素的域,并且該寄存器中的所有可寫域都應(yīng)該是可讀的。



      評論


      相關(guān)推薦

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

      關(guān)閉