 linux開發工程師需(xu)要具(ju)備哪(na)些基礎
							時(shi)間(jian):2018-09-29      來源:未(wei)知(zhi)
							linux開發工程師需(xu)要具(ju)備哪(na)些基礎
							時(shi)間(jian):2018-09-29      來源:未(wei)知(zhi) 
							
 
在總結linux開(kai)(kai)(kai)(kai)發工程(cheng)師需(xu)要(yao)(yao)具備哪(na)些基(ji)礎(chu)之前,我想(xiang)(xiang)強(qiang)調一(yi)(yi)下,linux學習(xi)是可(ke)以(yi)零基(ji)礎(chu)的(de)(de)。下面(mian)總結的(de)(de)linux需(xu)要(yao)(yao)的(de)(de)基(ji)礎(chu)雖(sui)然多,看上去很(hen)難,但是你完(wan)全可(ke)以(yi)從(cong)它們先開(kai)(kai)(kai)(kai)始(shi)(shi)學,一(yi)(yi)步一(yi)(yi)步進入(ru)linux的(de)(de)世界。所謂萬事開(kai)(kai)(kai)(kai)頭(tou)難,剛(gang)開(kai)(kai)(kai)(kai)始(shi)(shi)學一(yi)(yi)門知識肯(ken)定是不(bu)容易接受(shou)和消化的(de)(de),但是慢(man)慢(man)的(de)(de)你會(hui)發現,很(hen)多知識順(shun)理成章的(de)(de)就學會(hui)了,完(wan)全沒有想(xiang)(xiang)象中的(de)(de)困(kun)難。下面(mian)就來看看linux開(kai)(kai)(kai)(kai)發工程(cheng)師需(xu)要(yao)(yao)具備哪(na)些基(ji)礎(chu),為你的(de)(de)學習(xi)之路打(da)打(da)基(ji)礎(chu)。
第一(yi)、態度(du)(du):學(xue)習任何知識(shi)都需要端正(zheng)的態度(du)(du),以(yi)及堅持不懈的恒(heng)(heng)心。唯有擺正(zheng)態度(du)(du),持之(zhi)以(yi)恒(heng)(heng),才可以(yi)在學(xue)習路上披荊斬棘,不斷突(tu)破。
第二(er)、linux基(ji)礎:linux開發工(gong)(gong)程師(shi)需要了解linux操作系統(tong)的概念、安裝方法,Linux下的目錄結構、基(ji)本命令(ling)、編輯器VI ,編譯器GCC,調(diao)試器GDB和 Make 項(xiang)目管理工(gong)(gong)具, Shell Makefile腳本編寫等知識,嵌(qian)入式開發環境(jing)的搭建(jian)。
第(di)三(san)、C語言(yan)(yan):作為(wei)一名(ming)合格的(de)嵌入式linux工程(cheng)師,必須具備一定的(de)C語言(yan)(yan)基礎(chu),C語言(yan)(yan)是嵌入式領域重(zhong)要也(ye)是主要的(de)編(bian)程(cheng)語言(yan)(yan),通過大量編(bian)程(cheng)實(shi)例重(zhong)點理解(jie)C語言(yan)(yan)的(de)基礎(chu)編(bian)程(cheng)以及高級編(bian)程(cheng)知識。包括:基本(ben)數據類型、數組(zu)、指針、結構體(ti)、鏈表、文件操作、隊列、棧等。
第(di)四、C++ 、QT:C++是Linux應(ying)用開(kai)發主要語言之一,本階段(duan)重點掌握(wo)面(mian)向對(dui)(dui)象(xiang)編(bian)程(cheng)(cheng)的(de)基(ji)本思想以及(ji)C++的(de)重要內容。圖形界面(mian)編(bian)程(cheng)(cheng)是嵌入(ru)式(shi)開(kai)發中非常(chang)重要的(de)一個環節。由于QT具(ju)有跨(kua)平臺(tai)、面(mian)向對(dui)(dui)象(xiang)、豐富(fu)API、支持(chi)2D/3D渲染、支持(chi)XML、多國語等(deng)強(qiang)大功(gong)能,在(zai)嵌入(ru)式(shi)領域的(de)GUI開(kai)發中得(de)到(dao)了(le)廣范的(de)應(ying)用,在(zai)本階段(duan)通過基(ji)于QT圖形庫的(de)學習使學員可(ke)以熟練編(bian)寫GUI程(cheng)(cheng)序,并移植QT應(ying)用程(cheng)(cheng)序到(dao)Cortex-A8平臺(tai)。包括IDE使用、QT部件及(ji)布局管理(li)器、信(xin)息與槽機制的(de)應(ying)用、鼠標、鍵盤及(ji)繪圖事件處理(li)及(ji)文件處理(li)的(de)應(ying)用。
第五、Cortex A8 、Linux 平臺(tai)開(kai)(kai)(kai)發(fa):通過基(ji)于ARM Cortex-A8處理s5pv210了解(jie)(jie)芯(xin)片手(shou)冊的(de)基(ji)本閱讀(du)技巧(qiao),掌握(wo)s5pv210系(xi)(xi)(xi)(xi)統(tong)(tong)資源(yuan)、時鐘控(kong)(kong)制(zhi)器、電源(yuan)管理、異(yi)常中(zhong)斷(duan)控(kong)(kong)制(zhi)器、nand flash控(kong)(kong)制(zhi)器等模(mo)塊,為底層平臺(tai)搭建做好準(zhun)備。Linux平臺(tai)包(bao)括(kuo)內核裁(cai)減、內核移(yi)植、交叉編譯、GNU工具(ju)使用(yong)、內核調(diao)試、Bootloader介紹、制(zhi)作(zuo)與(yu)原理分析(xi)、根(gen)文件系(xi)(xi)(xi)(xi)統(tong)(tong)制(zhi)作(zuo)以(yi)及向內核中(zhong)添加自己的(de)模(mo)塊,并在(zai)s5pv210實驗平臺(tai)上運行自己制(zhi)作(zuo)的(de)Linux系(xi)(xi)(xi)(xi)統(tong)(tong),集(ji)成部署Linux系(xi)(xi)(xi)(xi)統(tong)(tong)整(zheng)個(ge)(ge)流程(cheng)。同時了解(jie)(jie)Android操作(zuo)系(xi)(xi)(xi)(xi)統(tong)(tong)開(kai)(kai)(kai)發(fa)流程(cheng)。Android系(xi)(xi)(xi)(xi)統(tong)(tong)是(shi)基(ji)于Linux平臺(tai)的(de)開(kai)(kai)(kai)源(yuan)操作(zuo)系(xi)(xi)(xi)(xi)統(tong)(tong),該平臺(tai)由操作(zuo)系(xi)(xi)(xi)(xi)統(tong)(tong)、中(zhong)間件、用(yong)戶界面和應用(yong)軟件組成,是(shi)首(shou)個(ge)(ge)為移(yi)動終端打造(zao)的(de)真正開(kai)(kai)(kai)放和完整(zheng)的(de)移(yi)動軟件,目前它的(de)應用(yong)不(bu)再局限于移(yi)動終端,還(huan)包(bao)括(kuo)數據電視、機頂盒、PDA等消(xiao)費類電子產品。
第六(liu)、linux系(xi)統編程(cheng)(cheng):linux系(xi)統編程(cheng)(cheng)重點學(xue)習標準I/O庫,Linux多任務(wu)編程(cheng)(cheng)中的多進(jin)程(cheng)(cheng)和多線程(cheng)(cheng),以及進(jin)程(cheng)(cheng)間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步(bu)與(yu)互(hu)斥對共享資(zi)源訪問控制等重要知識,主要提(ti)升對Linux應用開發的理(li)解和代碼(ma)調試的能力。
第(di)七(qi)、linux網(wang)絡編程:計算機網(wang)絡在(zai)嵌入式Linux系統應(ying)用(yong)開發過程中使用(yong)非常廣泛,通過Linux網(wang)絡發展(zhan)、TCP/IP協(xie)議(yi)(yi)、socket編程、TCP網(wang)絡編程、UDP網(wang)絡編程、Web編程開發等(deng)(deng)方(fang)面入手(shou),全面了(le)(le)解(jie)Linux網(wang)絡應(ying)用(yong)程序開發。重點學習(xi)網(wang)絡編程相(xiang)關API,熟(shu)練(lian)掌(zhang)握(wo)TCP協(xie)議(yi)(yi)服務器的(de)編程方(fang)法和并發服務器的(de)實(shi)現(xian),了(le)(le)解(jie)HTTP協(xie)議(yi)(yi)及其(qi)實(shi)現(xian)方(fang)法,熟(shu)悉UDP廣播、多(duo)播的(de)原理及編程方(fang)法,掌(zhang)握(wo)混(hun)合(he)C/S架構網(wang)絡通信(xin)系統的(de)設(she)計,熟(shu)悉HTML,Javascript等(deng)(deng)Web編程技術及實(shi)現(xian)方(fang)法。
第八(ba)、數(shu)據(ju)結構(gou)(gou)與算(suan)法:數(shu)據(ju)結構(gou)(gou)及(ji)算(suan)法在嵌入式底層驅動(dong)、通信協議、及(ji)各(ge)種(zhong)引擎開發(fa)中會得(de)到(dao)大量應用(yong)(yong),對其掌握的好壞(huai)直(zhi)接影(ying)響程序的效率、簡潔及(ji)健壯性。此階段的學習(xi)要重點(dian)理解(jie)數(shu)據(ju)結構(gou)(gou)與算(suan)法的基礎內容,包括(kuo)順序表(biao)、鏈表(biao)、隊(dui)列、棧、樹、圖、哈(ha)希(xi)表(biao)、各(ge)種(zhong)查找排序算(suan)法等應用(yong)(yong)及(ji)其C語言實現過(guo)程。
第九(jiu)、驅(qu)(qu)(qu)動(dong)開(kai)發(fa):驅(qu)(qu)(qu)動(dong)程(cheng)序(xu)設計(ji)是(shi)嵌入式(shi)Linux開(kai)發(fa)工(gong)(gong)作(zuo)(zuo)中(zhong)重要的(de)一(yi)部分,也是(shi)比較困難的(de)一(yi)部分。本階(jie)段的(de)學習要熟悉Linux的(de)內核機(ji)制、驅(qu)(qu)(qu)動(dong)程(cheng)序(xu)與(yu)用戶級(ji)應(ying)用程(cheng)序(xu)的(de)接口,掌(zhang)握(wo)系統對設備(bei)(bei)的(de)并(bing)發(fa)操(cao)作(zuo)(zuo)。熟悉所(suo)開(kai)發(fa)硬(ying)件(jian)的(de)工(gong)(gong)作(zuo)(zuo)原理,具備(bei)(bei)ARM硬(ying)件(jian)接口的(de)基(ji)礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌(zhang)握(wo)Linux設備(bei)(bei)驅(qu)(qu)(qu)動(dong)原理框(kuang)架,熟悉工(gong)(gong)程(cheng)中(zhong)常見Linux高級(ji)字符設備(bei)(bei)、塊設備(bei)(bei)、網絡設備(bei)(bei)、USB設備(bei)(bei)等(deng)驅(qu)(qu)(qu)動(dong)開(kai)發(fa),在工(gong)(gong)作(zuo)(zuo)中(zhong)能獨立勝(sheng)任底層(ceng)驅(qu)(qu)(qu)動(dong)開(kai)發(fa)。
我相信(xin),以(yi)上總結的(de)九點(dian)linux開(kai)發工程師需要具(ju)備(bei)哪些基礎,如果你都學(xue)會了,那么你一(yi)定是一(yi)名合(he)格的(de)linux開(kai)發工程師了。

