今天師弟又拿到個offer,mcu驗證,問我怎么樣,我只能說,二者確實有區(qū)別,但是公司也很重要,盡量選個穩(wěn)定的,能讓你安全度過第一個合同期~
結(jié)論:
(以上這是一個典型的soc包括進去的東西)
?
(這是常見的soc,一般很多外面都有一個殼子,這個就是個殼子,東西都在里面,就是上圖的那些東西,等于一個完整的單片機,當然也可以增或者減少)
注意郵票孔不是直接接在Pcb板子上的,而是中間有一層金屬板注意郵票孔不是直接接在Pcb板子上的,而是中間有一層金屬板
?
(中間這個金屬板,就是為了把這個soc殼子里的東西,搞成一個相對獨立的模塊,并且隔開和接在pcb上的普通的外設,引腳等這些屌絲設備的關系,防止電磁干擾,讓soc獨立成一個安全,完備的獨立指揮部)
所以結(jié)論:
芯片--就是IC,集成電路板。就是連線做成了板子,就是線。等于城市的交通的地皮+道路。
MCU--由三大件和其他的外部接口組成,就是微型計算機。等于城市的行政區(qū),功能完備。
SOC--MCU的爹,很多MCU組成,MCU在SOC上充當控制器,留出引腳和SOC主體進行溝通。相當于城市的市級或者省級,反正比區(qū)級高,又是區(qū)的集合。
比SOC更大的系統(tǒng)也有,比如在汽車上,前面的儀表和大屏是IMX8,后面通訊的模塊是IMX6,那么這IMX6和8都算是兒子系統(tǒng)。
MCU=單片機,是一塊集成電路芯片,是個完整的計算機。里面有負責處理指令的cpu(也可以是dsp或者gpu),負責跑程序的ram和負責存數(shù)據(jù)的rom,這幾個必須的部分。這樣一來它就已經(jīng)是一個微型計算機了,因為第一臺單片機就是這3大件組成的,只是那時候是4位處理器現(xiàn)在市面上都8位為主。然后的話,它這個微型計算機會根據(jù)情況搭載上一些周邊接口,像內(nèi)存、計數(shù)器、USB、A/D轉(zhuǎn)換、UART、PLC、DMA等周邊接口。
在這里插入圖片描述
其中,mcu中的8位處理器的8051,16位的AVR單片機,32位的STM單片機。
MCU里面也是可以有控制器的,比如如圖內(nèi)部集成了處理器和各類模塊,比如USB控制器、UART控制器、內(nèi)存、Flash等等。只需要外接少量的器件,就可以搭建一個電子系統(tǒng)。
芯片的話通常都不能編程,因為芯片不是計算機。它就是一塊集成電路板子而已
比如說,MCU的定義是芯片級計算機,意思就是,MCU上面處理器,ROM,RAM這些東西都是要放在一塊板子上才行,這塊板子就是集成電路板,就是芯片。但是由于你看到實物的時候看到的都是一塊板,而不是處理器ROM,RAM,接口等這些東西,所以一般就指著MCU或者SOC說這塊MCU/soc芯片如何如何,實際就是指的這塊板。
SOC就是集成了很多個MCU的功能,以前的由多個MCU協(xié)同干的事情被集成了,MCU沒有了,取而代之的是對外的IO引腳,連接IO引腳就可以實現(xiàn)交互,完成以前MCU的功能。
為什么說SOC是MCU的爹呢,因為它SOC上面可以是MCU,也可以是MCU的同類同級別的產(chǎn)品比如DSP或者MPU:左邊的圖是MPU,右邊是MCU控制器。更多時候SOC之所以不同于MCU是因為SOC上面同時有MCU,DSP,MPU等等,比如這些都放在一起配合工作的話,SOC功能會很強大,可以快速地執(zhí)行算法運算。當然了,這個時候SOC除了要伺候上面的這些MCU外還要提供他們工作所需的別的工具如外設等。就等于說是SOC是類似于一個航空母艦了,自己沒有作戰(zhàn)能力,靠的是航母上的飛機大炮等作戰(zhàn)單元。
SOC如果要簡單的話,也可以很簡單,比如最簡單的SOC就等于單片機了,這個時候SOC就是僅僅是在單個的MCU的基礎上實現(xiàn)的整個芯片系統(tǒng)。
MCU如果沒有系統(tǒng)的話,那一次就只能運行一個控制回路,即運行一個線程。這種東西叫裸機,工作就是靠的所謂的裸機接口。任何其他的程序要得到服務,都得等這個線程完畢才行。這時候它就退化為一個最簡單原始的,所謂微控制器,controller;如果它MCU有了操作系統(tǒng),那么它就可以搞多進程來操控多線程來運行。(這就是為什么操作系統(tǒng)5大件其中一個就是進程管理)
無系統(tǒng)裸機--啟動前,跑啟動引導的匯編程序.s文件;啟動后,跑驅(qū)動硬件的單進程程序(即引導程序)。這個引導程序,就是等于linux啟動的uboot,只不過uboot還有后半段。有系統(tǒng)--啟動前,跑uboot,其中uboot前半邊也是匯編,后半段可以看做是針對有系統(tǒng)的客制化,是c程序;啟動后,跑多線程多進程,還有文件系統(tǒng),各種五花八門。
等于這個中斷向量表這一端,都是匯編寫的,不管是裸機還是有系統(tǒng)的,這部分是公共的,跑不了的。這是萬物之始。靠偏移中斷向量表從引導程序(固件),調(diào)到引導程序后的單進程的裸機也好,多進程的系統(tǒng)也好,進入正文
所以,裸機簡單很多,就是中斷向量一定義,然后進去main。而且裸機里面可以有多個中斷向量表,也就是多個main程序,一般用來升級
比如裸機st的官方引導程序,一個.s文件,代碼實際上不是從main開始的,是從中斷向量表開始的,一般中斷向量是從0偏移地址開始,但是main函數(shù)的地址肯定不是0偏移。
架構(gòu)上,SOC就是MCU+外圍控制器,也可以理解成為就是以前的MCU芯片變成了一些控制器controller,這些controller來處理問題,然后對外給出IO腳就夠了。
MCU就是一塊芯片,然后外圍都是一些硬件接口,MCU芯片控制這些硬件接口實現(xiàn)各種功能。它并不是多塊芯片的集成。但是SOC是多塊芯片(MCU)的集成。(圖:imx6)
總而言之,MCU實現(xiàn)功能靠的是外圍的一些硬件接口,變成了SOC后,實現(xiàn)功能靠的是外圍控制器。
等于就是MCU是一個獨立的國家,國家可以實現(xiàn)各種職能;SOC就是一個獨立國家組成的聯(lián)合國,它是多個國家的聯(lián)合,但是功能上又和一個獨立的國家別無二致。
這樣做的好處是集成化程度更高,體積成本等可以得到壓縮。
編輯:黃飛
評論
查看更多