淺談嵌入式以及嵌入式系統(tǒng)的入門和提高
本文主要做科普,給小白看,因?yàn)槭紫?,嵌入式有不少組合名詞,例如嵌入式系統(tǒng),嵌入式軟件,Linux嵌入式,Android嵌入式,嵌入式Web,等等。
通常對(duì)嵌入式的定義其實(shí)是對(duì)“嵌入式系統(tǒng)”的定義。
網(wǎng)上對(duì)嵌入式系統(tǒng)的中文定義實(shí)在是不好理解,比較官方的中文定義是:
嵌入式系統(tǒng)是:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
當(dāng)然了,這段定義是正確的,不過就是有點(diǎn)學(xué)究味,不夠形象,不夠“接地氣”。
那么如何來(lái)給嵌入式系統(tǒng)一個(gè)接地氣的定義呢?
我可以先列舉目前用到嵌入式系統(tǒng)的IT領(lǐng)域:
Android嵌入式開發(fā)。
Linux嵌入式開發(fā)。
智能手機(jī),平板,智能手表。
可穿戴設(shè)備,例如Google眼鏡,小米手環(huán)。
微軟的Xbox和Kinect。
無(wú)人機(jī)。
VR頭盔。
無(wú)線路由器。
還有很多~
嵌入式正在滲透到我們生活的方方面面,而且會(huì)越來(lái)越多地被使用。
但是,例如Android,iOS純app開發(fā)的話一般就不能算是嵌入式了吧,只能算軟件開發(fā)。未來(lái),也許我們可以有一身輕便的可穿戴設(shè)備,衣食住行都用得到。甚至未來(lái)可以穿一身輕薄的“飛行衣”,想去哪都行。
嵌入式編程,最近幾年越來(lái)越火,雖然入門門檻比較高,但是學(xué)好了薪資水平不錯(cuò)哦。例如Linux嵌入式的高級(jí)工程師。而且如果你能啃下嵌入式這個(gè)“硬柿子”,學(xué)了很多方面的知識(shí),那么其他一些編程領(lǐng)域,也許就能比較輕松地掌握了。就好比你如果熟練掌握了C++語(yǔ)言和C++,那么其他一些編程語(yǔ)言一般都可以輕松駕馭了。
在嵌入式編程中還有一個(gè)交叉編譯的概念:什么是交叉編譯呢?
簡(jiǎn)單來(lái)說(shuō),就是“在一個(gè)平臺(tái)上生成另一個(gè)平臺(tái)上的可執(zhí)行代碼”。
普通的軟件開發(fā)過程中,如果是編譯型的編程語(yǔ)言,例如C語(yǔ)言,C++,Java,等等,你想要運(yùn)行你寫的程序,需要用編譯器將代碼編譯成可執(zhí)行程序(當(dāng)然,中間還有幾個(gè)步驟,比如匯編,鏈接,在此就不提了)。
但是嵌入式系統(tǒng)的計(jì)算能力有限,內(nèi)存有限,儲(chǔ)存空間有限,因此無(wú)法完成比較需要資源和速度的編譯過程。
比如在Android嵌入式開發(fā)中,你不可能在Android手機(jī)里直接讓它編譯自己的系統(tǒng)或軟件吧。
因此,我們會(huì)先在普通電腦(比Android手機(jī)的計(jì)算能力更強(qiáng),內(nèi)存更大,儲(chǔ)存空間更大)里將程序編譯(需要不同于我們編譯普通軟件的編譯器,稱為“交叉編譯器/軟件”,比較常見的有arm-linux-gcc一族)成適配Android手機(jī)的特定可執(zhí)行文件(一般會(huì)打包成鏡像文件),然后通過專門的工具“燒錄”到Android手機(jī)里。
入門和提高嵌入式
1、嵌入式軟件的話不一定需要學(xué)很多硬件知識(shí)的(有的話當(dāng)然是多多益善)。會(huì)用一些燒寫工具,編譯,調(diào)試工具(比如JTAG)就可以了,到時(shí)候要用了現(xiàn)學(xué)。開發(fā)工具也沒什么固定的,一般也不一定要IDE,用文本編輯器就可以寫代碼(比如Vim,Emacs,nano,Sublime)了。編譯一般用GCC的變種。
2、嵌入式一般要學(xué)C語(yǔ)言
3、C++不一定會(huì)用到,但也可以學(xué)一下。
4、Linux是要學(xué)習(xí)的。因?yàn)榻徊婢幾g經(jīng)常要用到Linux系統(tǒng),即使在Windows下也要用到Cygwin這類的。
5、最好花點(diǎn)時(shí)間學(xué)一下匯編,對(duì)理解計(jì)算機(jī)的原理,特別是內(nèi)存,指針,二進(jìn)制,十六進(jìn)制都有很好幫助,不需要學(xué)很深。
6、嵌入式目前主流的處理器架構(gòu)是ARM(以前是ARM7,ARM9,ARM11,現(xiàn)在都Cortex系列了)。手機(jī),平板,大部分開發(fā)板都是ARM的天下。所以需要學(xué)一下ARM架構(gòu),有個(gè)了解。一開始對(duì)ARM不需要太深入,視以后情況而定。ARM的集成開發(fā)環(huán)境有ADS(ARMDeveloperSuite),是ARM處理器下主要的開發(fā)工具。
7、可以去買一塊便宜的開發(fā)板來(lái)開始學(xué)習(xí)。