淺談軟件硬件聯系
軟件硬件看似兩個分家的東西,其實內在有千絲萬縷的聯系。我舉一些小例子:
開關電源的電感在一個時鐘周期內,要滿足伏秒平衡。物理意義是,開關周期內電感吸收的能量和釋放的能量應該是相等的。否則,系統(tǒng)不會平衡,不穩(wěn)定。對于軟件系統(tǒng),特別是復雜的大型系統(tǒng),雖然有嚴謹的理論去判斷一個軟件模塊的穩(wěn)定性。但對于程序員調試,并不是一個簡單輕松的過程。可以借鑒伏秒平衡的思路,一個大型的代碼在一個狀態(tài)結束時,除了一些統(tǒng)計變量之外,應該是回到最初的狀態(tài),具體的體現:內存釋放與申請,系統(tǒng)輸出的結果等應和最初狀態(tài)一致。棧在沒有中斷回到初始位置時,應該也是回到最初位置的。否則,系統(tǒng)會不穩(wěn)定。
關于初始化,一直不被軟件工程師所重視。硬件工程師有時候也會忽視這個問題。軟件中的初始化,從宏觀上講,模塊的初始化;啟動操作系統(tǒng)的準備工作;任務棧,堆的準備。從微觀上講,變量的初始化,全局構造函數,全局變量初始化。對于硬件,上電的順序;芯片管腳上電的狀態(tài)。數字芯片的初始邏輯狀態(tài)。模擬信號的初始范圍等等。有一些音箱,開機的時候會砰一聲。這個是上電產生的電流沖擊,比較難抑制。消音電路很難做好。一些高級的CPU,會有上電順序要求。一些可靠的系統(tǒng),要求上電,掉電,信號都必須有確定的狀態(tài)。單純的硬件去做,有時候很困難?赡苄枰浖布黄鸾Y合著做。Bootloader 為了后續(xù)的應用代碼做了很多初始化工作。
在軟件抽象一些客觀事物時,可以參考硬件的抽象。比如說以太網相對于處理器是個低速設備,為了解決無休止的中斷,DMA 可以大大緩解處理器的壓力。如果處理器抽象成一個類、以太網抽象成一個類,那么DMA可以看作一個通信關聯類了。其參數的抽象和深入的分析,對軟件設計和硬件設計都是個極大的促進。
芯片是別人給你的庫函數。完成各種各樣的功能。軟件開發(fā)過程中,需要了解庫函數的執(zhí)行行為,參數范圍,使用技巧,應用場景。其實,芯片的應用也是一樣的。需要了解管腳的功能定義,芯片的動作行為,應用場景,功耗等等各方面的信息。了解得越細,對應用越有幫助。
軟件硬件的結合,主要是洞悉背后解決問題的方法,處理實際的工程問題。
編輯:admin 最后修改時間:2018-01-05