與嵌入式軟體開發相關的一些硬體知識

2022-06-18 16:48:10 字數 3703 閱讀 4571

有這樣乙個問題?

在嵌入式開發中,軟體是怎樣知道硬體行為,硬體又是怎樣接受軟體操作的。這個問題涉及到硬體和軟體相關的知識。為了清楚這個問題,查閱了相關資料,將其總結記錄在下,如果有一些開發經歷就能更加深入理解了。

一、硬體事件(event)的通知——硬體告知軟體

在設計軟體時,需要被告知硬體中發生的事件,事件可以分為兩大類:

(1)一是軟體引發事件,由嵌入式軟體下達給硬體的任務時所引發的事件,例如對外的i/o資料報的傳輸。

(2)二是外部事件,外部觸發的事件,如非同步輸入i/o資料報。

硬體向軟體通知事件,以便採取合適的處理措施。那麼具體的通知方法有4中,如下:

(1)無通知:該種情況很糟糕,軟體必須猜測什麼時候能採取下一步的措施。在嵌入式設計中一般不會採取該種方式。

(2)時間延遲(以時間為觸發條件):對於軟體引發的事件,軟體可以設定乙個定時器,在採取下一步措施之前需要等待一定時間。若延遲很長並且響應也不需要很精確,軟體可以使用作業系統的超時支援。若延時很短,沒有硬體支援軟體就很難知道花費了多長時間了。

(3)狀態位:事件發生時硬體會設定乙個狀態位,軟體要檢查這一位,如有必要還需要進行輪訓,直到事件發生。如果事件是軟體觸發的並且很快就要發生,那麼狀態位正常;否則軟體必須輪訓,占用頻寬直到事件發生。該種方式較為常用。

(4)中斷位:這是硬體向軟體通知事件的最佳方式。因為這允許軟體在事件發生處理其他的任務,這對於外部引發的的和由軟體引發的要花一些時間才能完成的事件來說效果更好。該種方式較為常用。

綜上 :第一點來說,在開發中不會採用。對於第二點,需要延遲時間來等待事件發生,把握事件發生時刻相當重要。對於第三點,利用軟體輪詢方式查詢事件是否發生,將會占用一定計算資源。對於第四點來說,對多個

中斷的處理,意味著對多個中斷服務的響應和執行。

硬體最佳實踐《嵌入式軟體工程》:

對軟體需要知道的所有事件或情況提供指示。如果要處理非指示性的硬體事件,盡量處理好事件延遲,但一定要清楚地對**進行注釋,以提醒該程式未來的維護者。

二、軟體向硬體下達任務

當軟體需要向硬體下達任務時,軟體多會向一隊列位寫1,結束後硬體清0 。在一些設計中,由軟體向這一位置1之後又由軟體清0,改位r/w是read/write的縮寫,這樣需格外注意,因為:

(1)如果在軟體還沒檢測到這一位之前軟體就對他清0了,那麼硬體就有可能不知道要執行這一任務。

(2)軟體使某一位置1時間太長。硬體處理完任務以後發現這一位是置1的,由於高優先順序任務或軟體的延遲導致沒能及時對這一位清0,使硬體有可能又執行了一次該任務。

綜上,由於可能存在以上的一些風險,應該使用隊列位而不是讀寫位給硬體下達任務,隊列位提供了硬體和軟體之間的良好握手。

1)軟體讀取隊列位

2)如果為0的話可以由軟體對這一位置1,通知硬體執行任務

3)置1後,軟體可以查詢硬體位,直到硬體清0。清0後,軟體直到硬體檢查到了這一位並執行任務。

4)硬體會偶爾檢查這一位

5)硬體檢測到這一位被置1後就可以執行任務。

6)硬體開始任務後並使隊列位清0.

硬體最佳實踐《嵌入式軟體工程》:

設定乙個由軟體置1由硬體清0的隊列位來在模組中啟動任務。如果乙個硬體任務是伴隨著r/w位下達的,一定要仔細檢查,因為太短或太長都可能出現問題,需記錄下軟體在做什麼以此來解決這些問題。

三、總結

以上內容總結了嵌入式系統設計中,硬體和軟體之間的協同關係。在具體的開發工程中,需根據具體硬體晶元,電路設計,晶元開發文件來進行軟體設計。硬體與軟體之間的協同執行關係的具體邏輯、軟體配置方法,都需

要體現在程式**設計中。所以理解掌握軟體和硬體之間協同關係對系統開發較為重要。

有這樣乙個問題?

在嵌入式開發中,軟體是怎樣知道硬體行為,硬體又是怎樣接受軟體操作的。這個問題涉及到硬體和軟體相關的知識。為了清楚這個問題,查閱了相關資料,將其總結記錄在下,如果有一些開發經歷就能更加深入理解了。

一、硬體事件(event)的通知——硬體告知軟體

在設計軟體時,需要被告知硬體中發生的事件,事件可以分為兩大類:

(1)一是軟體引發事件,由嵌入式軟體下達給硬體的任務時所引發的事件,例如對外的i/o資料報的傳輸。

(2)二是外部事件,外部觸發的事件,如非同步輸入i/o資料報。

硬體向軟體通知事件,以便採取合適的處理措施。那麼具體的通知方法有4中,如下:

(1)無通知:該種情況很糟糕,軟體必須猜測什麼時候能採取下一步的措施。在嵌入式設計中一般不會採取該種方式。

(2)時間延遲(以時間為觸發條件):對於軟體引發的事件,軟體可以設定乙個定時器,在採取下一步措施之前需要等待一定時間。若延遲很長並且響應也不需要很精確,軟體可以使用作業系統的超時支援。若延時很短,沒有硬體支援軟體就很難知道花費了多長時間了。

(3)狀態位:事件發生時硬體會設定乙個狀態位,軟體要檢查這一位,如有必要還需要進行輪訓,直到事件發生。如果事件是軟體觸發的並且很快就要發生,那麼狀態位正常;否則軟體必須輪訓,占用頻寬直到事件發生。該種方式較為常用。

(4)中斷位:這是硬體向軟體通知事件的最佳方式。因為這允許軟體在事件發生處理其他的任務,這對於外部引發的的和由軟體引發的要花一些時間才能完成的事件來說效果更好。該種方式較為常用。

綜上 :第一點來說,在開發中不會採用。對於第二點,需要延遲時間來等待事件發生,把握事件發生時刻相當重要。對於第三點,利用軟體輪詢方式查詢事件是否發生,將會占用一定計算資源。對於第四點來說,對多個

中斷的處理,意味著對多個中斷服務的響應和執行。

硬體最佳實踐《嵌入式軟體工程》:

對軟體需要知道的所有事件或情況提供指示。如果要處理非指示性的硬體事件,盡量處理好事件延遲,但一定要清楚地對**進行注釋,以提醒該程式未來的維護者。

二、軟體向硬體下達任務

當軟體需要向硬體下達任務時,軟體多會向一隊列位寫1,結束後硬體清0 。在一些設計中,由軟體向這一位置1之後又由軟體清0,改位r/w是read/write的縮寫,這樣需格外注意,因為:

(1)如果在軟體還沒檢測到這一位之前軟體就對他清0了,那麼硬體就有可能不知道要執行這一任務。

(2)軟體使某一位置1時間太長。硬體處理完任務以後發現這一位是置1的,由於高優先順序任務或軟體的延遲導致沒能及時對這一位清0,使硬體有可能又執行了一次該任務。

綜上,由於可能存在以上的一些風險,應該使用隊列位而不是讀寫位給硬體下達任務,隊列位提供了硬體和軟體之間的良好握手。

1)軟體讀取隊列位

2)如果為0的話可以由軟體對這一位置1,通知硬體執行任務

3)置1後,軟體可以查詢硬體位,直到硬體清0。清0後,軟體直到硬體檢查到了這一位並執行任務。

4)硬體會偶爾檢查這一位

5)硬體檢測到這一位被置1後就可以執行任務。

6)硬體開始任務後並使隊列位清0.

硬體最佳實踐《嵌入式軟體工程》:

設定乙個由軟體置1由硬體清0的隊列位來在模組中啟動任務。如果乙個硬體任務是伴隨著r/w位下達的,一定要仔細檢查,因為太短或太長都可能出現問題,需記錄下軟體在做什麼以此來解決這些問題。

三、總結

以上內容總結了嵌入式系統設計中,硬體和軟體之間的協同關係。在具體的開發工程中,需根據具體硬體晶元,電路設計,晶元開發文件來進行軟體設計。硬體與軟體之間的協同執行關係的具體邏輯、軟體配置方法,都需

要體現在程式**設計中。所以理解掌握軟體和硬體之間協同關係對系統開發較為重要。

嵌入式軟體開發流程

1 嵌入式軟體開發流程在整個流程中,使用者首先需要建立工程並對工程做初步的配置,包括配置處理器和配置除錯裝置。編輯工程檔案,包括自己編寫的彙編和c語言源程式,還有工程編 譯時需要編寫的鏈結指令碼檔案,除錯過程中需要編寫儲存區映像檔案和命令指令碼檔案,以及上電復位時的程式執行入口的啟動程式檔案。對後四...

嵌入式軟體開發之我見

自己從事嵌入式系統開發有好多年了,在此想與大家分享我對於嵌入式開發的一點心得與體會。先大致說一說我的工作經歷。97年畢業後做了兩年的電氣與電子設計與開發,這一時期,我做過電路原理圖的設計和pcb板的設計。從99年開始,我進入了軟體行業。第一次做嵌入式開發是在2000年,在隨後的六年多的時間裡,我差不...

嵌入式軟體開發中的硬體電路概念總結一

上拉,就是通過乙個電阻將訊號接電源,將不確定的訊號通過乙個電阻嵌位在高電平,電阻起限流作用。一般用於時鐘訊號資料訊號等。下拉,就是通過乙個電阻將訊號接地,一般用於保護訊號。這是根據電路需要設計的,主要目的是為了防止干擾,增加電路的穩定性。上拉電阻 是從電源至輸出端的中間電阻。其作用如下 1 當ttl...