標(biāo)題: 對(duì)比stm32,arm9研究方向的猜想 [打印本頁(yè)]

作者: wendi    時(shí)間: 2013-7-11 01:57
標(biāo)題: 對(duì)比stm32,arm9研究方向的猜想
       大二上的寒假,受老師的邀請(qǐng),去到東莞實(shí)習(xí)了10天。雖然不是第一次去,但是這次的體會(huì)和上次有了很大的不同。這篇文章本來(lái)想從東莞回來(lái)就寫(xiě)了,但是一直拖到現(xiàn)在才寫(xiě)。在東莞,我工作位置的旁邊是一個(gè)約27歲的大學(xué)生,他的職位大概是嵌入式工程師,他每天都在使用上了ucos2的STM32芯片進(jìn)行編程。剛好我在學(xué)ARM9+LINUX,于是有時(shí)候我們也私下討論了一下STM32和ARM9的那些事兒。
STM32是這幾年很火的,有哈佛架構(gòu),性價(jià)比高,開(kāi)發(fā)使用的函數(shù)庫(kù)齊全等優(yōu)點(diǎn),這個(gè)芯片我本來(lái)也想在大一下的時(shí)候買(mǎi)塊開(kāi)發(fā)板來(lái)學(xué),不過(guò)后來(lái)項(xiàng)目需要,所以學(xué)了ARM9。

       在講之前,問(wèn)一個(gè)問(wèn)題。假設(shè)有這樣的一個(gè)項(xiàng)目,讓你做一個(gè)數(shù)字示波器的控制和顯示部分的模塊,而采集模塊和保護(hù)由其他芯片完成。問(wèn)你應(yīng)該采用ARM9還是STM32?(本文的ARM9代表馮諾依曼架構(gòu)的芯片,而STM32代表的是哈佛架構(gòu)的芯片)

個(gè)人覺(jué)得可能用STM32會(huì)實(shí)際很多。主要原因如下:
         1. 芯片成本高。STM32的芯片大概十幾元一片,而且像單片機(jī)一樣,幾乎一塊芯片就可以做出一個(gè)最小系統(tǒng)。對(duì)比ARM9,不但要買(mǎi)相對(duì)比較貴的ARM9芯片,還要買(mǎi)上Nand flash和nor flash才能做出最小系統(tǒng)。TQ2440的核心板淘寶就買(mǎi)到200多了。
         2. 做PCB的復(fù)雜。據(jù)說(shuō)采用ARM9芯片的TQ2440的開(kāi)發(fā)板中,它的最小系統(tǒng)用到6層板。據(jù)說(shuō)做6層板,一次開(kāi)模費(fèi)就要1K多了。而且假如不按照TQ2440,選用自己的硬件方案來(lái)做最小系統(tǒng),不知道又要畫(huà)多少次板才行。
         3. 對(duì)于項(xiàng)目,假如采用普通的界面(如儀器類(lèi)界面)加普通的外設(shè)(如按鍵,串口等),真的要上Linux嗎?上Linux系統(tǒng)的確會(huì)增加不少難度。從驅(qū)動(dòng)編寫(xiě),到Qt程序編寫(xiě),再到系統(tǒng)移植等,從內(nèi)核到應(yīng)用層,這對(duì)于不少人來(lái)說(shuō),的確有不少難度。假如功夫不到家,還可能開(kāi)發(fā)周期延長(zhǎng),甚至做出來(lái)的產(chǎn)品還不如用STM32做得好。而這方面STM32雖然是有點(diǎn)瑕疵,但是也做得不錯(cuò)。
        4. 采用ARM9比STM32需要更多的人手。對(duì)于ARM9,假設(shè)上了Linux系統(tǒng),又要做驅(qū)動(dòng),又要做界面,還要搞系統(tǒng)移植,每一項(xiàng)都是挺有挑戰(zhàn)性的。大型項(xiàng)目用STM32可能就做不來(lái)了,但是小型項(xiàng)目,STM32的確不需要太多人手就能完成。而且,聘請(qǐng)一個(gè)嵌入式Linux的工程師也是價(jià)格不菲的。

       以上就是我覺(jué)得ARM9的不足之處了。從上面看出來(lái),假如用ARM9去開(kāi)發(fā)一個(gè)用51單片機(jī),或者用STM32就能完成的項(xiàng)目,真的有點(diǎn)大材小用了。所以,我覺(jué)得學(xué)ARM9,就應(yīng)該研究一些STM32等哈佛架構(gòu)的芯片無(wú)法比擬的方向。哈哈,假如別人用STM32或者AVR甚至51就能完成大部分功能,要你的ARM9干什么啊。
學(xué)ARM9,其實(shí)好多時(shí)間就是在學(xué)Linux。因?yàn)長(zhǎng)inux這個(gè)操作系統(tǒng)真的很強(qiáng)大了,比ucos要豐富得多。

因此,下面我覺(jué)得學(xué)ARM9可以研究的一些方向:
       1. 網(wǎng)絡(luò)通信類(lèi)。眾所周知,世界上絕大部分的超級(jí)計(jì)算機(jī)和服務(wù)器都是采用Linux的。這歸功于Linux優(yōu)秀的網(wǎng)絡(luò)棧。Linux的網(wǎng)絡(luò)棧的出錯(cuò)幾率小,支持的網(wǎng)絡(luò)協(xié)議豐富。通信協(xié)議從互聯(lián)網(wǎng)的到如今流行的wifi,藍(lán)牙等都能夠支持。網(wǎng)絡(luò)這方面是STM32等哈佛架構(gòu)的單片機(jī)無(wú)法比擬的。
       2. 文件管理類(lèi)。Linux有虛擬文件系統(tǒng),支持絕大部分的文件系統(tǒng),可以對(duì)磁盤(pán)里面的文件進(jìn)行很好的管理。因此假如一些如MP4,PDA等需要對(duì)多文件操作的項(xiàng)目,更多會(huì)采用ARM9。
       3. 絢麗的多界面類(lèi)(或游戲機(jī)類(lèi))。普通的界面(如示波器等),用STM32是可以完成的。但是對(duì)于復(fù)雜的界面,用Linux就好多了。在Linux上,可以用Qt等軟件制作特殊的絢麗的界面。此外,太多的界面也會(huì)讓STM32吃不消。多界面會(huì)使程序的空間增大得很快,對(duì)于Linux那樣,采用虛擬內(nèi)存管理,1G的程序可以在只有128M的物理內(nèi)存的機(jī)器上跑。但是STM32就不行了,沒(méi)有MMU就沒(méi)有虛擬內(nèi)存的功能(暫時(shí)看來(lái)是沒(méi)有MMU),假如128M的物理內(nèi)存的機(jī)器就只能跑不超過(guò)128M的程序。況且,STM32有128M的內(nèi)存嗎?
      4. 多種芯片的支持。Linux的可移植性好,假如一個(gè)項(xiàng)目需要換另外一種CPU,只要移植好Linux和相應(yīng)的驅(qū)動(dòng),應(yīng)用層基本不用改。但是移植Linux也是不容易的。
ARM9最大的優(yōu)勢(shì)就是可以跑Linux系統(tǒng)。假如能夠真正發(fā)揮出Linux系統(tǒng)的優(yōu)勢(shì),真的能讓STM32等哈佛架構(gòu)的單片機(jī)感到望塵莫及。但是STM32等哈佛架構(gòu)的芯片,對(duì)于大部分中小型普通類(lèi)控制項(xiàng)目,也是很有優(yōu)勢(shì)的。

        既然選擇了,就要風(fēng)雨兼程。選擇了STM32,就要挖掘STM32獨(dú)特的優(yōu)勢(shì),學(xué)精它;選擇了ARM9,就要發(fā)揮出嵌入式Linux的優(yōu)勢(shì)。學(xué)東西最怕就是見(jiàn)到一樣好就學(xué)一樣,祝大家能夠放下浮躁的心,學(xué)到自己喜歡的東西。學(xué)精一門(mén)總比樣樣都學(xué)而學(xué)而不精要好。

作者: 工程師¥    時(shí)間: 2015-9-1 10:11
你們覺(jué)得,學(xué)完c語(yǔ)言單片機(jī)編程,再學(xué)習(xí)java語(yǔ)言,再學(xué)習(xí)嵌入式ARM9,這種方向可以嗎
作者: 1399791321    時(shí)間: 2015-10-20 11:13
樓主說(shuō)的不錯(cuò),曾經(jīng)一直糾結(jié)到底是不是該拋開(kāi)32去學(xué)習(xí)ARM9后來(lái)發(fā)現(xiàn)其實(shí)學(xué)好一個(gè),精通就好
作者: a271705780    時(shí)間: 2020-4-15 23:09
樓主,現(xiàn)在搞的哪一個(gè),感覺(jué)怎么樣
作者: cr8526    時(shí)間: 2020-4-17 21:10
2013年的文章,,估計(jì)樓主現(xiàn)在做老板了吧





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1