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