嵌入式linux應(yīng)用開發(fā)要掌握什么 linux系統(tǒng)是基于什么開發(fā)的?哪些領(lǐng)域應(yīng)用廣?
linux系統(tǒng)是基于什么開發(fā)的?哪些領(lǐng)域應(yīng)用廣?回答本領(lǐng)域問題Linux內(nèi)核是由C語言和匯編語言編譯程序,現(xiàn)在大家都養(yǎng)成的習(xí)慣將Linux支持為L(zhǎng)inux操作系統(tǒng)。在應(yīng)用領(lǐng)域Linux應(yīng)用肯定挺應(yīng)用范
linux系統(tǒng)是基于什么開發(fā)的?哪些領(lǐng)域應(yīng)用廣?
回答本領(lǐng)域問題
Linux內(nèi)核是由C語言和匯編語言編譯程序,現(xiàn)在大家都養(yǎng)成的習(xí)慣將Linux支持為L(zhǎng)inux操作系統(tǒng)。
在應(yīng)用領(lǐng)域Linux應(yīng)用肯定挺應(yīng)用范圍的,例如:服務(wù)器、手機(jī)、PC電腦、嵌入式產(chǎn)品等,下面我將將對(duì)這幾個(gè)領(lǐng)域參與簡(jiǎn)單啊簡(jiǎn)要說明。
服務(wù)器
linux嵌入式開發(fā)是做什么的?
嵌入式系統(tǒng)的定義:“用于控制、暗中監(jiān)視也可以血法你的操作機(jī)器和設(shè)備的裝置”(原文為:DevicesUsedtoControl,MonitororAssisttheOperationofEquipment,MachineryorPlants)。這要注意是從應(yīng)用對(duì)象上略加定義,從這一眼就可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還這個(gè)可以范圍涵蓋機(jī)械等附屬裝置。
國(guó)內(nèi)比較高信服的嵌入式系統(tǒng)定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪制作,不適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格具體的要求的有帶計(jì)算機(jī)系統(tǒng)。
嵌入式通常要用的是C語言,C,但Java也主要是用于嵌入式技術(shù),要注意是用在嵌入式游戲開發(fā),移動(dòng)開發(fā)等,主要側(cè)重點(diǎn)不同JAVA的J2ME方向。
嵌入式的發(fā)展前景跟就業(yè)前景很確實(shí)不錯(cuò),目前國(guó)內(nèi)這方面的人才也比較比較緊缺。因?yàn)槟銓W(xué)這方面的專業(yè)也很好。
嵌入式主要統(tǒng)稱三大塊:
1.嵌入式Linux系統(tǒng)開發(fā):側(cè)重于的新環(huán)境搭建、內(nèi)核原理、中間交叉編譯器等
2.嵌入式Linux應(yīng)用開發(fā):側(cè)重于Linux應(yīng)用編程、內(nèi)核編譯、用戶態(tài)。
3.嵌入式Linux驅(qū)動(dòng)開發(fā):側(cè)重嵌入式Linux系統(tǒng)下的驅(qū)動(dòng)開發(fā)、內(nèi)核的深入分析。
目前市場(chǎng)上專業(yè)的嵌入式培訓(xùn)很多很亂,是因?yàn)槭亲罱鼛啄臧l(fā)展起來起來的。我只知道最權(quán)威最比較好的專業(yè)的要數(shù)東方賽富嵌入式培訓(xùn)學(xué)院了,位于清華大學(xué)東門,跟清華大學(xué)有很深的淵源關(guān)系。特別是師資,師資團(tuán)隊(duì)是整個(gè)嵌入式培訓(xùn)領(lǐng)域最好就是的。80%的老師不知從何而來清華大學(xué)、世界500強(qiáng)企業(yè)和頂尖的IT公司。
要是時(shí)間及經(jīng)濟(jì)條件愿意的話,培訓(xùn)吧幫一下忙還是有很好的,既學(xué)一點(diǎn)了專業(yè)知識(shí),同樣也解決了就業(yè)問題,就業(yè)單位也比自己找的要好很多!如必須陪訓(xùn)他們是不二的選擇!
linux驅(qū)動(dòng)開發(fā)和單片機(jī)驅(qū)動(dòng)的區(qū)別?
.lonux安裝驅(qū)動(dòng)開發(fā)和單片機(jī)驅(qū)動(dòng)開發(fā)的區(qū)別塞200元以內(nèi)幾點(diǎn)?ARM-Linux應(yīng)用開發(fā)和單片機(jī)lonux:
這里先去做一個(gè)說明,對(duì)于ARM的應(yīng)用開發(fā)要注意有兩種一種是就在ARM芯片上進(jìn)行應(yīng)用開發(fā),不常規(guī)操作系統(tǒng),也稱作裸機(jī)編程,這種的新通常應(yīng)用于一些低端的ARM芯片上,其旗下過程更加的的單片機(jī),這里太少概括。
還有一個(gè)一種是在ARM芯片上正常運(yùn)行操作系統(tǒng),對(duì)于硬件的操作需要匯編語言或者的驅(qū)動(dòng)程序,應(yīng)用開發(fā)則是設(shè)計(jì)和實(shí)現(xiàn)操作系統(tǒng)的,這種的嵌入式應(yīng)用開發(fā)與單片機(jī)開發(fā)差異較小。ARM-Linux應(yīng)用開發(fā)和單片機(jī)的開發(fā)主要注意有以下幾點(diǎn)不同:
(1)應(yīng)用開發(fā)環(huán)境的硬件設(shè)備相同
單片機(jī):開發(fā)板,仿真器(調(diào)試器),USB線;
ARM-Linux:開發(fā)板,網(wǎng)線,串口線,SD卡;
對(duì)此ARM-Linux開發(fā),大多是沒有硬件的調(diào)試器的,尤其是在應(yīng)用開發(fā)的過程中,很少可以使用硬件的調(diào)試器,程序的調(diào)試主要是串口通過現(xiàn)場(chǎng)調(diào)試的;但必須只能證明的是,這對(duì)ARM芯片也有硬件仿真器的,但常見主要用于裸機(jī)開發(fā)。
(2)程序去下載有所不同
單片機(jī):仿真器(調(diào)試器)上網(wǎng)下載,或者是串口上網(wǎng)下載;
ARM-Linux:串口下載、tftp網(wǎng)絡(luò)可以下載、的或再寫操作SD、MMC卡等存儲(chǔ)設(shè)備,基于程序去下載;
這個(gè)與開發(fā)環(huán)境的硬件設(shè)備是有真接關(guān)系的,的原因沒有硬件仿真器,故ARM-Linux開發(fā)時(shí)大多不按結(jié)構(gòu)仿真器直接下載;這樣的表面上看來不方便,反正給ARM-Linux的應(yīng)用開發(fā)提供給了更多的下載。
(3)芯片的硬件資源差別
單片機(jī):大多是兩個(gè)發(fā)下的計(jì)算機(jī)系統(tǒng),中有片內(nèi)RAM,片內(nèi)FLASH,包括UART、I2C、AD、DA等各種外設(shè);
ARM:正常情況僅有CPU,必須外部電路提供給RAM以供ARM正常運(yùn)行,外部電路能提供FLASH、SD卡等存儲(chǔ)系統(tǒng)映像,并通過外部電路利用各種外設(shè)功能。的原因ARM芯片的處理能力很強(qiáng),通過外部電路是可以實(shí)現(xiàn)程序各種奇怪的功能,其功能遠(yuǎn)遠(yuǎn)強(qiáng)于單片機(jī)。
(4)固件的存儲(chǔ)位置相同
單片機(jī):大多數(shù)擁有片內(nèi)flash存儲(chǔ)器,固件程序大多數(shù)讀取在該區(qū)域,若固件較大則是需要實(shí)際外部電路設(shè)計(jì)外部flash主要用于存儲(chǔ)固件。
ARM-Linux:由于其沒有片內(nèi)的flash,但是需要運(yùn)行操作系統(tǒng),整個(gè)系統(tǒng)映像通常會(huì)增大,故ARM-Linux旗下的操作系統(tǒng)映像和應(yīng)用正常情況儲(chǔ)存在外部的MMC、SD卡上,或是常規(guī)SATA設(shè)備等。
(5)啟動(dòng)有所不同
單片機(jī):其結(jié)構(gòu)簡(jiǎn)單,內(nèi)部集成顯卡flash,正常情況是芯片廠商在程序上電時(shí)加入固定的跳轉(zhuǎn)指令,真接自動(dòng)跳轉(zhuǎn)程序入口(正常情況在flash上);的新的應(yīng)用程序?qū)嶋H編譯器編譯,需要專用下載工具就上網(wǎng)下載到或者的地址空間;所以才系統(tǒng)上電后直接啟動(dòng)到或則的程序入口,實(shí)現(xiàn)程序系統(tǒng)的啟動(dòng)。
ARM-Linux:而按結(jié)構(gòu)ARM芯片,執(zhí)行效率高,功能強(qiáng)大,外設(shè)相對(duì)豐富地,是功能強(qiáng)大的計(jì)算機(jī)系統(tǒng),而且必須運(yùn)行操作系統(tǒng),所以其啟動(dòng)后和單片機(jī)有減小的差別,不過和家用型計(jì)算機(jī)的啟動(dòng)基本完全相同。其啟動(dòng)時(shí)一般包括BIOS,bootloader,內(nèi)核啟動(dòng),應(yīng)用啟動(dòng)等階段;
(a)啟動(dòng)BIOS:BIOS是設(shè)備廠家(芯片或則是電路板廠家)設(shè)置中的相對(duì)應(yīng)啟動(dòng)時(shí)信息,在設(shè)備上電后,其將讀取數(shù)據(jù)或則硬件設(shè)備信息,并且硬件設(shè)備的初始化工作,然后把跳轉(zhuǎn)到bootloader所在位置(該位置是兩個(gè)固定不動(dòng)的位置,由BIOS設(shè)置)。(依據(jù)什么個(gè)人表述,BIOS的啟動(dòng)和單片機(jī)啟動(dòng)相似,需要需要或則的硬件調(diào)試器通過固件的中寫入,儲(chǔ)存在一定的flash空間,設(shè)備上電起動(dòng)后無法讀取flash空間的指令,進(jìn)而啟動(dòng)后BIOS程序。)
(b)正常啟動(dòng)bootloader:該部分巳經(jīng)屬于嵌入式Linux軟件開發(fā)的部分,可以是從代碼可以修改定制相應(yīng)的bootloader程序,bootloader的下載大多數(shù)是需要就讀寫SD卡等。即編譯程序個(gè)性定制相對(duì)應(yīng)的bootloader,編譯程序生成bootloader映象文件后,依靠工具(清潔液或沒限制)直接下載到SD卡的MBR區(qū)域(正常情況是存儲(chǔ)區(qū)的第一個(gè)扇區(qū))。此時(shí)是需要在BIOS中系統(tǒng)設(shè)置,或是按照電路板的硬件電路設(shè)置,你選擇bootloader的程序加載位置;若BIOS中設(shè)置從SD卡啟動(dòng),則BIOS初始化結(jié)束了后,將跳轉(zhuǎn)SD卡的位置去執(zhí)行bootloader,從而實(shí)現(xiàn)方法bootloader的啟動(dòng)。
Bootloader主要注意作用是系統(tǒng)初始化必要的硬件設(shè)備,創(chuàng)建家族內(nèi)核需要的一些信息并將這些信息通過咨詢機(jī)制訊息傳遞給內(nèi)核,進(jìn)而將系統(tǒng)的軟硬件環(huán)境送到另一個(gè)適合的狀態(tài),最終動(dòng)態(tài)鏈接庫(kù)操作系統(tǒng)內(nèi)核,真正發(fā)揮作用強(qiáng)行和打開程序內(nèi)核的作用。
(c)啟動(dòng)后內(nèi)核:bootloader啟動(dòng)成功系統(tǒng)初始化等相關(guān)工作之后,將動(dòng)態(tài)鏈接庫(kù)內(nèi)核啟動(dòng)程序。這就剛剛進(jìn)入了求實(shí)際的操作系統(tǒng)相關(guān)內(nèi)容的啟動(dòng)了,除開或則的硬件配置,任務(wù)管理,資源管理等內(nèi)核程序的啟動(dòng)。
(d)啟動(dòng)后應(yīng)用:在操作系統(tǒng)內(nèi)核啟動(dòng)后之后,就也可以開始啟動(dòng)后必須的應(yīng)用,去結(jié)束完全的業(yè)務(wù)操作了。