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