【?聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing @163.com】
? ? ? ? soc一般是指跑linux的芯片,而mcu默認是跑rtos的芯片,兩者在基本原理方面其實差異不大。只不過,前者由于性能的原因,會被用在性能較高的場景之下,后者則多用于實時應用的場合,本質上兩者的差別沒有大家想象的那么大。
1、soc+ddr+flash=mcu
? ? ? ? mcu可以看成是soc、ddr、flash的一個集合體。mcu的cpu一般是8051,或者是arm,頻率不是很高,通常是幾十到上百M不等,內部集成了232等低速接口。ddr就是ram,一般幾k到上百k,當然soc的內部用mmu管理ddr。flash就是代碼存儲的地方,一般也是幾十到1M不等。這部分集成在一起,就是mcu。
? ? ? ? 當然現在也有一種mcu是集成在soc里面,這種mcu,當成soc的一個設備節點就可以了。
2、mcu電源要求不高
? ? ? ? mcu的電壓,大多數情況都是5v轉3.3v。soc則要復雜的多,很多時候除了3.3v,可能還需要2.5v、1.8v、1.2v等等,所以為了簡便,soc的外圍很多時候會集成一個pmic芯片,專門用來負責不同電壓的輸出。
3、燒入方式稍有差異
? ? ? ? mcu目前swd燒入基本是標配,soc的話,則是usb otg燒入為主。mcu就是內部flash啟動,soc則是spi nor、spi nand、emmc或者tf卡啟動。至于晶振和復位,兩者一樣。
4、除非特定camera產品,mcu一般低速接口為主
? ? ? ? 這里的低速接口就是大家一直使用的gpio、232、485、can、spi、i2c、pwm,少部分集成了sdio、usb和eth。有一些mcu是專門用來處理camera數據的,左邊從mipi進來之后,經過isp,通過usb uvc協議送出去,這種專門處理camera的mcu芯片也是存在的,很多的usb相機也是這么做的。只不過這種芯片都是專款專用,除了camera,就不能用在其他方面了。與此相比較,soc則是聚集了很多高速的接口,這些接口都是以差分總線的形式存在。
5、mcu價格普遍不高
? ? ? ? 大多數mcu的價格都是在10塊錢以下,2-3塊錢的mcu也是不稀奇,甚至是1塊錢、幾毛錢。當然,很多高端的mcu還是不便宜的,比如m7的mcu。soc的價格則相對貴一點,大部分都是10塊錢以上,哪怕是f1c100s這樣內部集成32m ddr的soc,價格也在1.5個美金,大約10塊錢左右。
? ? ? ? 當然要想soc運行起來,外部還要一個nandflash,這相當于成本上又多了幾塊錢。
6、mcu可以實現soc的大多數功能
? ? ? ? 一般soc可以做的,mcu都可以做。比如傳感器數據的處理、普通接口的處理、屏幕顯示、網絡通信、文件系統、usb通信等等,這部分mcu都可以完成。所以,mcu能做的工作事實上,要比大家認為的多得多。
7、圖像數據是mcu、soc應用的分水嶺
? ? ? ? 對于低速數據,mcu和soc差異不大,但是高速總線部分,兩者就慢慢拉開差距。比如復雜的soc,一般默認集成了isp,可以對圖像數據進行編碼、解碼的處理,除此之外,soc通常還會集成npu,實現圖像ai處理,這些都是目前為止soc才有的功能。
? ? ? ? 圖象處理是生產、生活中很大的一個應用,從最基礎的顯示、截圖和錄制,到rtsp低時延訪問,再到工業相機、內窺鏡、ai部分,這塊市場其實非常大。mcu雖然也可以做一部分usb camera的工作,不過主力的實現還是通過soc+linux+加速ip來完成的。哪怕是usb camera,用mipi+soc+usb otg實現,效果也會更好,功能也會更全。
? ? ? ? 有了圖像數據,所有的配套都要修改,比如cpu頻率要提高,ddr要擴大,flash要增大,算法要硬加速,網絡傳輸也要更快,所以數據量的提高、需求的變化是嵌入式技術發展最本質的原因。
8、實時控制是mcu的拿手好戲
? ? ? ? 一開始mcu就是被用來進行控制處理的,比如電機的控制周期是6ms、8ms這樣,用windows或者linux是沒有辦法完成的,但是對mcu來說卻是很容易做到的事情。所以,只要是涉及到實時處理的部分,哪怕外掛都會外掛一個mcu來處理。
9、mcu非常適合個人來做
? ? ? ? 從軟硬件協同的角度說,mcu非常適合個人來做,本身電路不復雜,而且大部分mcu的應用就是while(1)+中斷的形式來進行,就算是需要上位機適配,做一個qt上位機就好了,自己可以把大部分精力放在業務端來進行,養活自己肯定是沒有問題的。
? ? ? ? 相比較而言,soc要復雜一點,首先電路涉及到soc+ddr+nand+pmic,弄好了硬件,接著還得繼續搭建uboot/kernel/rootfs的框架,不同的外設還得找不同的驅動,哪怕是一個屏幕,還有spi、iic、rgb、mcu接口、mipi、hdmi、lvds等很多的標準。等到這些都做好了,才能開始業務開發。為了突出業務的競爭力,必須適配廠家的sdk平臺,尋找開源代碼,這方面自然就沒有mcu方便。這一切都做好了之后,才能慢慢去找客戶,找市場。相比較而言,mcu的開發要容易一點。
10、用到什么學什么
? ? ? ? mcu和soc沒有明顯的分水嶺,不存在誰比誰高級的問題,客戶需要什么,我們就做什么。技術再好,賣出去才行。所以大家沒必要畫地為牢、固步自封,只需要知道兩者的區別,在不同的場景下選擇哪種方案合適就好。