查看: 3407|回復: 0
打印 上一主題 下一主題

[提問(wèn)] 入坑嵌入式開(kāi)發(fā)多年!一位資深工程師談怎樣才能保證自己不被歷史洪流沖走....

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2018-9-25 14:39:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: 嵌入式、stm32
我時(shí)常在想,現代社會(huì )發(fā)展變化速度之快超越了很多人的認知。羅胖子說(shuō)跟不上時(shí)代要交認知稅,很有道理。半導體和IT行業(yè)又是旋渦中心,發(fā)展更加快,其實(shí)想想其他行業(yè)的創(chuàng )新(美團外賣(mài)、滴滴打車(chē)、微信社交、淘寶京東電商,以及最新的新零售自動(dòng)售貨機、自動(dòng)駕駛汽車(chē)等)本質(zhì)上都是半導體行業(yè)的創(chuàng )新驅動(dòng)的,都要靠先有芯片,先有配套的軟件資源和開(kāi)發(fā)人才,才能有人在這些行業(yè)創(chuàng )新。

入坑嵌入式開(kāi)發(fā)多年的我,面對芯片及其相關(guān)的軟件開(kāi)發(fā)技術(shù)的快速發(fā)展變化,經(jīng)常會(huì )去思考,這些發(fā)展變化的內在推動(dòng)力和外在合理性在哪里,這些發(fā)展變化對我們有哪些啟發(fā)和引導,身處旋渦中心應該何去何從,才能保證自己不被歷史洪流沖走,才能不斷提升自己的價(jià)值。


單片機
單片機是中文名,對應的英文名稱(chēng)是“Single Chip Microomputer”,很多人可能奇怪平時(shí)不是都說(shuō)MCU(Micro Control Unit)嗎?其實(shí)MCU準確翻譯過(guò)來(lái)應該叫微控制器,現在很多中文書(shū)籍都用這個(gè)詞,不用單片機了。因為單片機這個(gè)詞是很多年前的概念了,在那個(gè)年代半導體工藝還在起步階段,集成能力很差,往往是CPU一個(gè)芯片,SRAM一個(gè)芯片,Flash一個(gè)芯片,需要中斷的話(huà)又得有個(gè)專(zhuān)門(mén)處理中斷的芯片,所以一個(gè)完整可用的計算機系統是很多個(gè)芯片(Chip)做在一個(gè)PCB板上構成的。

單片機呢?就是在一個(gè)芯片(Chip)上集成了CPU、SRAM、Flash及其他需要模塊,在一個(gè)Chip上實(shí)現一個(gè)微型計算機系統,所以就叫Single Chip Microcomputer,也就是單片機了。其實(shí)從這個(gè)角度來(lái)講,單片機這個(gè)詞現在已經(jīng)沒(méi)意義了,因為現在的半導體工藝早就很厲害了,現在你買(mǎi)到的所有都是“單片機”,根本不存在分離式的所謂“多片機”。而且現代的單片機不但集成了CPU、SRAM、Flash等微型計算機不可少的部件,而且大多集成了很多內部外設,如Nand控制器、LCD控制器、串口通信、定時(shí)器、RTC等等,所以現在的單片機其實(shí)應該叫SoC(System on Chip)。

英文是很準確的。這里有好幾個(gè)詞你可以體會(huì )下各自含義:microcomputer、computer、system、microcontroller。不嚴格區分的話(huà)這些詞很多時(shí)候可以互相替換和通用的,但是嚴格說(shuō)其實(shí)各自有不同代指的。譬如computer,指的就是電腦,你可以理解為就是電腦,譬如筆記本、臺式機這些。當然很多年前的電腦很龐大很笨重,所以computer就是指的這種有機箱外殼,有鍵盤(pán)鼠標,很龐大笨重,通用性強的電腦。而microcomputer指的就是單片機這類(lèi)東西,它也是一個(gè)獨立的電腦系統,有CPU和內存和外設這些,能跑計算機程序。但是他相對于computer來(lái)說(shuō)體積很小,而且不是通用的而是專(zhuān)用的,所以叫microcomputer。system呢?更傾向于整個(gè)系統,也就是說(shuō)system=microcomputer+各種外設。簡(jiǎn)單理解就是,當串口、LCD控制器等模塊進(jìn)入了Chip內部時(shí),整個(gè)microcomputer就成為system了。所以其實(shí)system才是更有意義,更適合現代單片機芯片的一個(gè)名字。所以現在我們都把芯片叫SoC,這個(gè)名字更有價(jià)值。那microcontroller呢?現在很多單片機廠(chǎng)商都把自己的單片機叫microcontroller(微控制器),其實(shí)我個(gè)人理解,覺(jué)得microcontroller的重點(diǎn)在于controller,也就是說(shuō)他們想強調這個(gè)chip中集成的system是一個(gè)controller,擅長(cháng)控制。而不是一個(gè)DSP(擅長(cháng)運算)。


嵌入式
嵌入式的全稱(chēng)是嵌入式系統,英文是Embeded system,所以可以看出嵌入式是一個(gè)system。為什么叫嵌入式呢?這里的嵌入指的是我們把這個(gè)system(硬件上表現為一個(gè)Chip)嵌入到某個(gè)設備中去。譬如冰箱的板卡上的芯片就是一個(gè)嵌入到冰箱中的system,負責控制用戶(hù)按鍵、冰箱照明燈、制冷系統等?梢钥闯,嵌入式系統這個(gè)名字主要是從芯片在使用時(shí)的組織形態(tài)來(lái)命名的。所以從這個(gè)角度講,只要是被嵌入到設備中的芯片都可以被叫做嵌入式系統。

那這個(gè)范圍太寬了,說(shuō)真的你很難找到不屬于嵌入式的system······所以我經(jīng)常覺(jué)得嵌入式這個(gè)名詞根本是廢話(huà),根本沒(méi)意義。好在這個(gè)理解只是廣義上的嵌入式的定義,但是我們平時(shí)講嵌入式大多時(shí)候是從狹義上理解的。

狹義上講,嵌入式是為了區別于單片機。我們經(jīng)常把芯片中不帶MMU(memory management unit)從而不支持虛擬地址,只能跑裸機或RTOS(典型如ucos、華為L(cháng)iteOS、RT-Thread、freertos等)的system叫單片機(典型如STM32、NXP LPC系列、新的NXP imxRT1052系列等),而把芯片自帶MMU可以支持虛擬地址,能夠跑Linux、Vxworks、WinCE、Android這樣的操作系統的system叫嵌入式。所以linux WinCE等也常被叫做嵌入式操作系統,就是這么回事。你仔細回顧下,其實(shí)大部分人在講單片機和嵌入式時(shí)都是從狹義角度出發(fā)的,并非廣義。



單片機的技術(shù)和市場(chǎng)狀況
單片機是出貨量最大的一類(lèi)計算機。這個(gè)很好理解,因為單片機用途太廣泛了,所有家電內置的控制系統幾乎都是單片機的,這個(gè)數目就很驚人了。還有各種公共設施,工廠(chǎng)自動(dòng)化設備等幾乎也都是單片機控制的。單片機的廠(chǎng)商和品類(lèi)也是非常多,我下面列舉幾類(lèi)常用的。

· 8位和4位機。這類(lèi)單片機性能低配置低,但是優(yōu)勢是價(jià)格便宜。所以很多低端家電產(chǎn)品都會(huì )用到,小家電是這類(lèi)單片機最大的市場(chǎng)。為了降低成本,這類(lèi)單片機很多只能用匯編編程(當然近幾年很多也提供了C編譯器),很多芯片采用bounding封裝(就是芯片內核直接貼在PCB上然后用黑乎乎硬膠黏住,大家玩過(guò)LCD1602的看那后面那個(gè)圓盤(pán)型黑色的就是)。做這類(lèi)產(chǎn)品的以前都是臺灣一些小芯片廠(chǎng)商。這些年中國大陸也涌現了很多這類(lèi)芯片廠(chǎng)商,這些單片機行業(yè)大多對標某個(gè)具體應用領(lǐng)域,對行業(yè)需求很熟悉,直接推出適用這個(gè)行業(yè)的解決方案。外行的人可能根本都沒(méi)聽(tīng)說(shuō)過(guò)這種單片機的型號和相關(guān)信息?偟膩(lái)說(shuō),這屬于比較低端的行業(yè),不太建議大家學(xué)習和進(jìn)入。尤其現在中國在搞產(chǎn)業(yè)升級,落后的傳統家電產(chǎn)品不斷降價(jià)還賣(mài)不出去,相反各種高端功能和外觀(guān)的“產(chǎn)業(yè)升級”型家電產(chǎn)品利潤很高。所以這種適用于傳統老舊電子產(chǎn)品的芯片和技術(shù)其實(shí)并不值得去投入。

· 51單片機。其實(shí)51單片機也是8位機,之所以單獨拿出來(lái)說(shuō)是因為51單片機實(shí)在太出名了。實(shí)際上當年單片機百家爭鳴的時(shí)候(大約1980年代吧)51單片機只是其中一種,還有很多其他很厲害的,可惜都被時(shí)間給雨打風(fēng)吹去了。51單片機之所以出名并活到現在,是因為Intel后來(lái)開(kāi)放了51內核的版權,所以很多公司很多人可以毫無(wú)顧忌的使用它而不擔心付費或版權風(fēng)險。實(shí)際上到了現在(2018年),51單片機已經(jīng)是很老很沒(méi)有技術(shù)優(yōu)勢的解決方案了,但是為什么還在大量使用?主要有以下幾個(gè)原因:一是大量存量項目和存量開(kāi)發(fā)者,這些人很熟悉51單片機,甚至很多老工程師可能只會(huì )51單片機,很多老的項目也不可能再去重新開(kāi)發(fā)所以沿用了51單片機。二是51單片機也夠便宜,很多對性能沒(méi)有過(guò)多要求的產(chǎn)品干脆就用51也挺好。三是51內核開(kāi)放,所以很多需要內置單片機核的SoC(譬如很多電容觸摸屏芯片,很多指紋識別芯片等)就會(huì )選擇用51核,不要錢(qián)還夠用嘛,不選這個(gè)選誰(shuí)。很多同學(xué)問(wèn)我還要不要學(xué)51單片機?我認為還是要學(xué)。一個(gè)原因是51單片機的開(kāi)發(fā)用到的技術(shù)技能在開(kāi)發(fā)別的單片機時(shí)照樣有用,所以學(xué)了51將來(lái)再學(xué)其他的也會(huì )快很多,時(shí)間不會(huì )白花的。另一個(gè)原因是確實(shí)有時(shí)候實(shí)際開(kāi)發(fā)也會(huì )遇到用到51單片機的,所以學(xué)會(huì )了也算是個(gè)拿得出手的技能。所以如果你要學(xué)習單片機開(kāi)發(fā),從51單片機入手絕對不會(huì )錯。但是要記得不要沉迷于51了,要迅速學(xué)會(huì )51單片機后,迅速繼續學(xué)習更現代更實(shí)用的其他單片機(譬如stm32)。很多人學(xué)會(huì )51后就不動(dòng)了,這就好像幼兒園畢業(yè)就不繼續讀書(shū)了一樣,是不對的。

· STM32單片機。終于到了STM32這個(gè)當紅辣子雞了,ST于2007年發(fā)布了第一款STM32,至今已經(jīng)11年了。STM32是ARM Cortex-M內核的單片機,實(shí)際上同樣使用ARM Cortex-M系列內核的單片機還有很多(譬如NXP的LPC系列,原Freescale的K60系列,臺灣新唐的M051系列,國內如兆易創(chuàng )新的GD32系列等),STM32只是其中的代表作而已。ARM這些年風(fēng)頭很強,在application級別的SoC中大勝I(mǎi)ntel,現在手機行業(yè)的芯片都被ARM吃掉了,MIPS之類(lèi)的更是被壓的生不如死。在單片機領(lǐng)域,ARM的Cortex-M系列(M0、M3、M4、M7)也是大獲全勝,很多半導體廠(chǎng)商都放棄了自己原來(lái)的架構轉而做ARM內核的單片機了。怎么說(shuō)呢,個(gè)人覺(jué)得ARM內核的單片機很適合當前時(shí)代,尤其STM32這種,不管硬件配置還是開(kāi)發(fā)工具都深得市場(chǎng)認可,普及度越來(lái)越高。強烈建議大學(xué)學(xué)單片機就學(xué)STM32,會(huì )玩STM32很有價(jià)值。至于GD32之類(lèi)國產(chǎn)的類(lèi)似STM32的單片機,我認為后面會(huì )越來(lái)越強,甚至會(huì )主導市場(chǎng)把洋品牌趕出中國。這些芯片的開(kāi)發(fā)方式也很類(lèi)同于STM32,所以會(huì )了STM32開(kāi)發(fā)很容易切過(guò)去,不用擔心。
· 其他單片機。我指的是PIC、ATmega、MSP430、STM8之類(lèi)的,這些不是很熟悉所以不予詳細論述?偟膩(lái)說(shuō),這些單片機性?xún)r(jià)比都不錯,在各自領(lǐng)域都有一定競爭力,但是還是不如STM32使用領(lǐng)域寬廣。所以除非是公司研發(fā)用到,否則不建議主動(dòng)學(xué)習。

· 高性能高價(jià)格單片機。這里我特指的是如STM32F7、STM32H7、NXP imxRT1052之類(lèi)的單片機。這類(lèi)雖然是單片機,但是性能比一般單片機強勁很多,外設也復雜很多,甚至需要外接SDRAM來(lái)提供更大內存,外接SLC Nand或Spiflash來(lái)提供存儲。同時(shí)從價(jià)格角度講這些單片機大多在人民幣30元以上,甚至高達100多元。這些真的是單片機中的戰斗機,價(jià)格都能?chē)標廊肆。對于這類(lèi)單片機,我個(gè)人其實(shí)很不看好。其實(shí)寫(xiě)這篇長(cháng)文,就是想解釋我為什么不看好這類(lèi)單片機。感興趣的同學(xué)可以繼續看下文分析。


嵌入式的技術(shù)和市場(chǎng)狀況
·
嵌入式領(lǐng)域目前最火的就是ARM+linux和ARM+android。
芯片都是基于A(yíng)RM的,低端的有ARM9、ARM11,高端的有Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A53、Cortex-A57等。從單核心到雙核心、四核心、八核心都有。廠(chǎng)商也一大堆,國產(chǎn)進(jìn)口臺產(chǎn)等都有。覆蓋面也廣,消費級、工業(yè)級、車(chē)規級都有。
·
嵌入式級別的ARM因為有MMU所以可以很好的跑復雜OS,因此雖然芯片本身也可以裸機運行,但是基本沒(méi)有人用這類(lèi)芯片來(lái)跑裸機或者RTOS的。都會(huì )上操作系統。簡(jiǎn)單說(shuō),如果產(chǎn)品不需要華麗美觀(guān)的人機界面就上linux(譬如路由器、網(wǎng)絡(luò )攝像機),如果需要人機界面但是界面簡(jiǎn)單注重功能和穩定性,那就上linux+QT(譬如工控HMI、電動(dòng)車(chē)充電樁、停車(chē)場(chǎng)顯示),如果產(chǎn)品很注重人機交互的用戶(hù)體驗,那就上Android(譬如智能手機、智能電視機、游戲機等)。

總的來(lái)說(shuō),嵌入式系統的復雜性高、開(kāi)發(fā)難度大、學(xué)習曲線(xiàn)長(cháng)。因為軟件上的復雜性,導致出bug的可能性大。一旦出bug查找起來(lái)也更加需要技巧和經(jīng)驗。所以很多公司用嵌入式linux或android做產(chǎn)品問(wèn)題很多,這一方面和開(kāi)發(fā)者的技術(shù)能力有關(guān),另一方面和公司不能花時(shí)間和成本去潛心把產(chǎn)品做穩定做成熟有關(guān)。
以下課程可免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、Python、安卓等。
想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了宋工QQ3524659088 Tel/V17317951908


您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页