返學(xué)費網(wǎng) > 培訓(xùn)機構(gòu) > 全國IT培訓(xùn)中心
初學(xué)者如何開始學(xué)習(xí)嵌入式linux開發(fā)技術(shù)棧 呢?新手入門全干貨!零基礎(chǔ)小白入門學(xué)習(xí)Linux嵌入式開發(fā)怎么樣呢,嵌入式Linux內(nèi)核和網(wǎng)絡(luò)協(xié)議棧的特點,和代表性產(chǎn)品有哪些,成為一名嵌入式Linux開發(fā)工程師需要學(xué)習(xí)哪些知識???必看
做這方面的,很多人是做軟件的,對下層不精,感覺現(xiàn)在的公司都不少這樣的人了,而且以前做單片機的都改做這個了,把它用于工程上也不是太難。學(xué)的人多了,可能不是件好事!我之前做這個的,主要是驅(qū)動,但是這點可憐的薪水不夠用啊,而且 工作壓力有點大(除非你的工作沒有太大的技術(shù)含量),還有一點:英語一定要好,不然你會很頭痛的!
首先,嵌入Linux內(nèi)核是可定制的內(nèi)核: 1 Linux內(nèi)核的配置系統(tǒng) 2 Linux內(nèi)核的模塊機制 3 Linux內(nèi)核的源代碼開放 4 經(jīng)裁減的 Linux內(nèi)核最小可達到 150KB以下,尤其適合嵌入式領(lǐng)域中資源受限的實際情況。 其次,它的性能優(yōu)越:Linux 系統(tǒng)內(nèi)核精簡、高效和穩(wěn)定,能夠充分發(fā)揮硬件的功能,因此它比其他操作系統(tǒng)的運行效率更高。 再者,它有良好的網(wǎng)絡(luò)支持: 1 支持 TCP/IP 協(xié)議棧 2 提供對包括十兆位、百兆位及千兆位的以太網(wǎng),還有無線網(wǎng)絡(luò)、Tokenring(令牌環(huán))和光纖甚至衛(wèi)星的支持 3 對現(xiàn)在依賴于網(wǎng)絡(luò)的嵌入式設(shè)備來說是很好的選擇。 至于網(wǎng)絡(luò)協(xié)議的話,有很多種,就目前主流的3種網(wǎng)絡(luò)協(xié)議是:NetBEUI、IPX/SPX及其兼容協(xié)議、TCP/IP,而其他的像Lwip、ZigBee、Sip等很多。 1 NetBEUI的前身是NetBIOS,這一協(xié)議是IBM1983年開發(fā)完成的,早期的微軟OS產(chǎn)品中都選擇該協(xié)議作為通信協(xié)議。它是一套用于實現(xiàn)僅僅在小型局域網(wǎng)上PC見相互通信的標(biāo)準(zhǔn)。該網(wǎng)絡(luò)最大用戶數(shù)不能超過30個,1985年,微軟對其改進,增加了SMB(Server Message Blocks,服務(wù)器消息塊)的組成部分,以降低網(wǎng)絡(luò)的通信阻塞,形成了現(xiàn)在的NetBEUI通信協(xié)議。 特點:體積小、效率高、速度快、占用內(nèi)存少。 2 IPX/SPX及其兼容協(xié)議:它的全稱是“ Packet Exchange/Sequence Packet Exchange”即網(wǎng)際包交換/順序包交換。 特點:體積較大、能夠連接多種網(wǎng)絡(luò)、具有強大的路由功能,適合大型網(wǎng)絡(luò)的使用。windows網(wǎng)絡(luò)中無法直接使用該協(xié)議。 3 TCP/IP是國際互聯(lián)網(wǎng)Internet采用的協(xié)議標(biāo)準(zhǔn),早期用于ARPANet網(wǎng)絡(luò),后來開放用于民間。 特點:靈活性,支持任意規(guī)模的網(wǎng)絡(luò),可以連接所有的計算機,具有路由功能,且TCP/IP的地址是分級的,容易確定并找到網(wǎng)上的用戶,提高了網(wǎng)絡(luò)代換的利用率。 而其他的像Lwip協(xié)議棧的特點: (1)支持多網(wǎng)絡(luò)接口的IP轉(zhuǎn)發(fā) (2)支持ICMP協(xié)議 (3)包括實驗性擴展的UDP (4)包括阻塞控制,RTT估算和快速恢復(fù)和快速轉(zhuǎn)發(fā)的TCP (5)提供專門的內(nèi)部回調(diào)接口用于提高應(yīng)用程序性能 (6)可選擇的Berkeley接口API (7)在最新的版本中支持ppp 不知道這些是不是你想要的。
面對如此火熱的行業(yè),如何才能成為嵌入式Linux開發(fā)工程師?成為一名合格的嵌入式Linux開發(fā)工程師需要學(xué)習(xí)哪些知識? 一:C語言 嵌入式Linux工程師的學(xué)習(xí)需要具備一定的C語言基礎(chǔ),C語言是嵌入式領(lǐng)域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎(chǔ)編程以及高級編程知識。包括:基本數(shù)據(jù)類型、數(shù)組、指針、結(jié)構(gòu)體、鏈表、文件操作、隊列、棧等。 二:Linux基礎(chǔ) Linux操作系統(tǒng)的概念、安裝方法,詳細(xì)了解Linux下的目錄結(jié)構(gòu)、基本命令、編輯器VI ,編譯器GCC,調(diào)試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發(fā)環(huán)境的搭建。 三:Linux系統(tǒng)編程 重點學(xué)習(xí)標(biāo)準(zhǔn)I/O庫,Linux多任務(wù)編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內(nèi)存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應(yīng)用開發(fā)的理解和代碼調(diào)試的能力。 四:Linux網(wǎng)絡(luò)編程 計算機網(wǎng)絡(luò)在嵌入式Linux系統(tǒng)應(yīng)用開發(fā)過程中使用非常廣泛,通過Linux網(wǎng)絡(luò)發(fā)展、TCP/IP協(xié)議、socket編程、TCP網(wǎng)絡(luò)編程、UDP網(wǎng)絡(luò)編程、Web編程開發(fā)等方面入手,全面了解Linux網(wǎng)絡(luò)應(yīng)用程序開發(fā)。重點學(xué)習(xí)網(wǎng)絡(luò)編程相關(guān)API,熟練掌握TCP協(xié)議服務(wù)器的編程方法和并發(fā)服務(wù)器的實現(xiàn),了解HTTP協(xié)議及其實現(xiàn)方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構(gòu)網(wǎng)絡(luò)通信系統(tǒng)的設(shè)計,熟悉HTML,等Web編程技術(shù)及實現(xiàn)方法。 五:數(shù)據(jù)結(jié)構(gòu)與算法 數(shù)據(jù)結(jié)構(gòu)及算法在嵌入式底層驅(qū)動、通信協(xié)議、及各種引擎開發(fā)中會得到大量應(yīng)用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學(xué)習(xí)要重點理解數(shù)據(jù)結(jié)構(gòu)與算法的基礎(chǔ)內(nèi)容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序算法等應(yīng)用及其C語言實現(xiàn)過程。 六:C++ 、QT C++是Linux應(yīng)用開發(fā)主要語言之一,本階段重點掌握面向?qū)ο缶幊痰幕舅枷胍约癈++的重要內(nèi)容。圖形界面編程是嵌入式開發(fā)中非常重要的一個環(huán)節(jié)。由于QT具有跨平臺、面向?qū)ο?、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領(lǐng)域的GUI開發(fā)中得到了廣范的應(yīng)用,在本階段通過基于QT圖形庫的學(xué)習(xí)使學(xué)員可以熟練編寫GUI程序,并移植QT應(yīng)用程序到Cortex-A8平臺。包括IDE使用、QT部件及布局管理器、信息與槽機制的應(yīng)用、鼠標(biāo)、鍵盤及繪圖事件處理及文件處理的應(yīng)用。 七:Cortex A8 、Linux 平臺開發(fā) 通過基于ARM Cortex-A8處理s5pv210了解芯片手冊的基本閱讀技巧,掌握s5pv210系統(tǒng)資源、時鐘控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平臺搭建做好準(zhǔn)備。Linux平臺包括內(nèi)核裁減、內(nèi)核移植、交叉編譯、GNU工具使用、內(nèi)核調(diào)試、介紹、制作與原理分析、根文件系統(tǒng)制作以及向內(nèi)核中添加自己的模塊,并在s5pv210實驗平臺上運行自己制作的Linux系統(tǒng),集成部署Linux系統(tǒng)整個流程。同時了解Android操作系統(tǒng)開發(fā)流程。Android系統(tǒng)是基于Linux平臺的開源操作系統(tǒng),該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,是首個為移動終端打造的真正開放和完整的移動軟件,目前它的應(yīng)用不再局限于移動終端,還包括數(shù)據(jù)電視、機頂盒、PDA等消費類電子產(chǎn)品。 八:驅(qū)動開發(fā) 驅(qū)動程序設(shè)計是嵌入式Linux開發(fā)工作中重要的一部分,也是比較困難的一部分。本階段的學(xué)習(xí)要熟悉Linux的內(nèi)核機制、驅(qū)動程序與用戶級應(yīng)用程序的接口,掌握系統(tǒng)對設(shè)備的并發(fā)操作。熟悉所開發(fā)硬件的工作原理,具備ARM硬件接口的基礎(chǔ)知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設(shè)備驅(qū)動原理框架,熟悉工程中常見Linux高級字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備、USB設(shè)備等驅(qū)動開發(fā),在工作中能獨立勝任底層驅(qū)動開發(fā)。 以上就是列出的關(guān)于一名合格嵌入式Linux開發(fā)工程師所必學(xué)的理論知識,其實,作為一個嵌入式開發(fā)人員,專業(yè)知識和項目經(jīng)驗同樣重要,所以在我們的理論學(xué)習(xí)中也要有一定的項目實踐,鍛煉自己的項目開發(fā)能力。
看了以上有關(guān)的嵌入式linux開發(fā)技術(shù)棧講解,如果還有什么疑問可以直接來電咨詢。
只要一個電話
我們免費為您回電