嵌入式軟件開(kāi)發(fā)好,還是硬件開(kāi)發(fā)好?

近些天許多學(xué)嵌入式的小伙伴前來(lái)咨詢,問(wèn):嵌入式軟件開(kāi)發(fā)好,還是硬件開(kāi)發(fā)好?在小編看來(lái),想要成為一名優(yōu)秀的嵌入式開(kāi)發(fā)師,還是軟硬兼修為好,我們來(lái)看看這是為啥。

 

軟硬兼修,后顧無(wú)憂

 

據(jù)網(wǎng)友光華居士表示嵌入式軟件工程師,兩手都要硬!嵌入式軟件編程顯然不同于PC軟件開(kāi)發(fā),它和硬件密切相關(guān)。想寫好嵌入式軟件代碼,就必須了解清楚所使用MCU的硬件特性、各個(gè)外圍電路和接口電路的原理。不僅要深挖細(xì)究MCU內(nèi)核架構(gòu)的知識(shí),是否支持浮點(diǎn)處理器/DSP,是否支持協(xié)處理器、指令數(shù)據(jù)緩存。

 

還要了解MCU的編程模型、各種存儲(chǔ)器的地址空間分配及其訪問(wèn)效率如何,在MCU之外,還必須了解各種電路知識(shí),什么地方需要上下拉,什么地方需要加濾波電路,什么地方必須隔離,哪里必須加抑制器件,等等不一而足。

 

 

軟硬結(jié)合,可以更好地實(shí)現(xiàn)用戶需求

 

比如輸入捕捉,如果是通過(guò)上升沿或者下降沿捕捉,加了不合適的濾波電容會(huì)造成對(duì)沿的破壞,不加濾波電容就會(huì)受困于各種空間干擾產(chǎn)生的雜波。

 

倘若硬件工程師搬來(lái)的是加了不合適電容的電路,搞得沿之間位寬失真,便會(huì)出現(xiàn)數(shù)據(jù)不正常的偶發(fā)故障,倘若硬件工程師搬來(lái)的是不加電容的電路,搞得軟件工程師必須進(jìn)行軟件濾波,把代碼搞得又復(fù)雜又難解,你說(shuō)這怨誰(shuí)來(lái)著?

 

方便定位Bug

 

鉆研硬件電路可以幫助軟件工程師提出更多解決問(wèn)題的思路,發(fā)現(xiàn)導(dǎo)致Bug的更多可能性。一般來(lái)說(shuō),當(dāng)遇到Bug時(shí),對(duì)硬件一知半解的軟件工程師只在代碼層面上打轉(zhuǎn)轉(zhuǎn),基本不會(huì)在硬件方面提出問(wèn)題,最終為了迎合蹩腳的硬件設(shè)計(jì)出別扭無(wú)比的代碼,卻不曾想,只要稍稍改變一下硬件設(shè)計(jì),就可以輕松且優(yōu)雅地完成代碼設(shè)計(jì)。

 

技多不壓身

 

當(dāng)我們對(duì)硬件電路設(shè)計(jì)起了懷疑,倘若自己悄沒(méi)聲地拿起烙鐵飛個(gè)線、換個(gè)元件,驗(yàn)證了自己的思路,這時(shí)直起腰版、拿著板子理直氣壯地去找硬件工程師,豈不是順順利利,又送順?biāo)饲椋?/span>

 

倘若直接拿著板子,心底發(fā)虛面上露怯地去找硬件工程師理論,一場(chǎng)唇槍舌戰(zhàn)在所難免,腥風(fēng)血雨不說(shuō),到頭來(lái)硬件工程師硬著頭皮給你調(diào)調(diào)電路,真是解決了問(wèn)題還好說(shuō),若是自己思路錯(cuò)了,那不是自找苦吃?上個(gè)班,掙點(diǎn)錢養(yǎng)家糊口而已,當(dāng)個(gè)老好人,和同事其樂(lè)融融多好,吵來(lái)吵去,搞得那么辛苦,何必來(lái)著?

 

但是實(shí)際中嵌入式開(kāi)發(fā)需要的知識(shí)體系和技能,80%其實(shí)跟硬件平臺(tái)無(wú)沒(méi)有無(wú)關(guān)系的。比如計(jì)算機(jī)系統(tǒng)原理、編程技能、程序的編譯鏈接、你對(duì)Linux內(nèi)核的理解、設(shè)備模型、驅(qū)動(dòng)架構(gòu)、項(xiàng)目管理等等。

 

結(jié)語(yǔ):嵌入式學(xué)習(xí)偏軟還是偏硬?就找工作而言,主要看大家是編程能力強(qiáng),還是硬件操作能力強(qiáng),但就個(gè)人提升而言,軟硬兼修,一定會(huì)讓你走向更廣闊的的舞臺(tái)!

the end

評(píng)論(0)