你的位置:首頁(yè) > 互連技術(shù) > 正文

ZTE資深工程師大談通透Linux設(shè)計(jì)“寶典”

發(fā)布時(shí)間:2014-10-17 責(zé)任編輯:sherryyu

【導(dǎo)讀】還在大學(xué)的你,不知道未來(lái)何去何從?都說(shuō)迷茫是大事做不了,小事不想做。還在做程序袁的你,是不是也想創(chuàng)業(yè)?程序袁好創(chuàng)業(yè)嗎?Linux好學(xué)嗎? 學(xué)會(huì)了這個(gè)能找到咋樣的工作?下面就跟著小編的采訪(fǎng)揭開(kāi)上述迷霧吧!
 
1、大家都比較想了解您個(gè)人學(xué)習(xí)的歷程與感想,可否與大家分享一下?
 
韋東山:
 
我從2003年開(kāi)始工作,那時(shí)候的技術(shù)真是差勁啊:直到2005年,在硬件方面我只會(huì)設(shè)計(jì)兩層板,在軟件方面我用的一直是51單片機(jī)。有一次老板的朋友來(lái)做技術(shù)指導(dǎo),聊起ARM、wince、Linux、操作系統(tǒng),讓人真是大開(kāi)眼界。
 
操作系統(tǒng)才是未來(lái)!必須改變!
 
在硬件方面沒(méi)人指導(dǎo)很難有長(zhǎng)進(jìn),但是軟件方面我可以自學(xué)啊。于是我開(kāi)始買(mǎi)各種ARM的書(shū),買(mǎi)周立功的2104板和書(shū),用它來(lái)學(xué)習(xí)過(guò)UCOS,感覺(jué)他們還在延續(xù)著單片機(jī)的思路。這不行?。〉蒙喜僮飨到y(tǒng)!學(xué)WINCE?還是學(xué)LINUX?WINCE可是要錢(qián)的,咱學(xué)個(gè)免費(fèi)的LINUX吧。買(mǎi)個(gè) S3C2440開(kāi)發(fā)板,就這樣開(kāi)始了LINUX的自學(xué)之路。
 
多謝友善之臂的老板楊斌,我買(mǎi)的是個(gè)二手的2440開(kāi)發(fā)板,他還是認(rèn)真的提供技術(shù)支持,那時(shí)我沒(méi)少請(qǐng)教他問(wèn)題。他應(yīng)該發(fā)達(dá)!
 
2005年那會(huì),嵌入式LINUX方面的書(shū)是沒(méi)有的,所以我的學(xué)習(xí)過(guò)程完全依賴(lài)網(wǎng)絡(luò)、論壇,現(xiàn)在回首那個(gè)時(shí)候的提問(wèn),可以發(fā)現(xiàn)很多幼稚問(wèn)題(特意去試了下,我才發(fā)現(xiàn)那個(gè)網(wǎng)站已經(jīng)關(guān)閉了,世事難料啊)。
 
工作后再難有在校時(shí)的心態(tài)與大段時(shí)間……,直到公司倒閉……,我于是回老家閉門(mén)學(xué)習(xí)半年。在外租房,有家不回;沒(méi)日沒(méi)夜,不是在電腦前就是在床上,要不就是去吃飯的路上;自學(xué)、翻書(shū)、發(fā)貼、編程試驗(yàn)、問(wèn)題解決不了時(shí)苦悶得想砸電腦;現(xiàn)在回想起來(lái)感覺(jué)也挺勵(lì)志的。就這樣,用了半年終于入了門(mén),bootloader完全掌握,基本的Linux驅(qū)動(dòng)會(huì)寫(xiě)了,錢(qián)也用完了,要出來(lái)工作了(想想也挺郁悶,大學(xué)4年工作2年,竟然技術(shù)不過(guò)關(guān)要回爐重造)。
 
我沒(méi)有Linux工作經(jīng)驗(yàn)啊,怎么辦?那就自己寫(xiě)個(gè)操作系統(tǒng)混經(jīng)驗(yàn)值吧,仿照UCOS、LINUX,寫(xiě)一個(gè)簡(jiǎn)單的操作系統(tǒng):基于MMU的操作系統(tǒng) (MOS)。就用它作為敲門(mén)磚,寫(xiě)到簡(jiǎn)歷上去顯得有點(diǎn)料。去面試了三家公司,華為惠通、UT斯達(dá)康、中興,全中!因?yàn)殄X(qián)沒(méi)了,而中興的通知來(lái)得最早,就去它吧。
 
說(shuō)實(shí)話(huà),那時(shí)我的Linux水平只是剛?cè)腴T(mén),好在2006年那會(huì)中興也剛從vxwork轉(zhuǎn)為L(zhǎng)inux,大家都不懂都在學(xué)習(xí),我倒也不顯得丟人。在中興里,又是沒(méi)日沒(méi)夜地工作、學(xué)習(xí)了2年。期間碰到過(guò)無(wú)數(shù)的疑難問(wèn)題,煅煉了能力。說(shuō)真的,只有在解決問(wèn)題的同時(shí),你才會(huì)東想西想,把有關(guān)、無(wú)關(guān)的技術(shù)都想清楚并掌握得扎實(shí)。
 
2007年從中興辭職開(kāi)始寫(xiě)書(shū)。不要笑我只有2年Linux工作經(jīng)驗(yàn)就敢寫(xiě)書(shū),自學(xué)半年工作兩年,是這輩子最用功的時(shí)刻,遠(yuǎn)比高考時(shí)努力。這2年半所學(xué)到的東西遠(yuǎn)超大學(xué)4年。工作和寫(xiě)書(shū)對(duì)技術(shù)的要求完全不同,工作上你能寫(xiě)出程序解決問(wèn)題就可以,而寫(xiě)書(shū)則要求你對(duì)知識(shí)理解透徹。書(shū)寫(xiě)了1年,也可以認(rèn)為繼續(xù)學(xué)習(xí)了1年。2008年那會(huì)還沒(méi)有手把手教、從零搭系統(tǒng)開(kāi)始學(xué)習(xí)嵌入式Linux的書(shū),這本書(shū)《嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)》又火了一把。
 
書(shū)出了,我也稍有點(diǎn)名氣,于是從2009年開(kāi)始在幾個(gè)培訓(xùn)機(jī)構(gòu)講課,去過(guò)華清遠(yuǎn)見(jiàn)、尚觀(guān),都是兼職,因?yàn)槲耶?dāng)時(shí)還想著自己創(chuàng)業(yè)呢。業(yè)沒(méi)創(chuàng)好錢(qián)又沒(méi)了,只能去兼職。這樣又持續(xù)了2年,這又是一個(gè)煅煉:怎么講,別人才容易學(xué)會(huì)。
 
這就是我的學(xué)習(xí)工作經(jīng)歷,生活推著我在Linux上歷煉了9年。如果你還是學(xué)生,勸你盡早找到自己的興趣,全力鉆研;如果你已經(jīng)進(jìn)入社會(huì),最好能找到相關(guān)的工作,白天上班也是煅煉,晚上繼續(xù)學(xué)習(xí)。
 
2、自從業(yè)以來(lái),遇到最大的困難與挑戰(zhàn)是什么?能否給我們分享些您的經(jīng)驗(yàn)以及心路歷程?
 
韋東山:
 
轉(zhuǎn)行!轉(zhuǎn)行是最困難的,這意味著你前面積累的經(jīng)驗(yàn)幾乎沒(méi)用了,還需要學(xué)習(xí)全新的知識(shí)──這需要大量的時(shí)間。我的第1份工作是做硬件的,后來(lái)由于工作需要也寫(xiě)一下單片機(jī)程序,但是軟件水平是很低的。決定轉(zhuǎn)行學(xué)習(xí)Linux時(shí),這需要有操作系統(tǒng)的概念知識(shí)、全新的ARM體系架構(gòu)知識(shí)、完全沒(méi)接觸過(guò)的軟件設(shè)計(jì)理念(寫(xiě)單片機(jī)時(shí)就是一個(gè)while循環(huán),Linux里都是面向?qū)ο蟮乃枷耄?/div>
 
這千頭萬(wàn)緒,要學(xué)習(xí)的知識(shí)很多,從哪里入手,從哪里抽出時(shí)間,這就是2個(gè)最大的困難。
  
· 對(duì)于時(shí)間,我是暫停工作閉門(mén)自學(xué)了半年;
  
· 對(duì)于從哪里學(xué)習(xí),我是先學(xué)習(xí)了趙炯的《LINUX內(nèi)核完全注釋》,這讓我對(duì)操作系統(tǒng)有比較深的認(rèn)識(shí);接著把 ARM開(kāi)發(fā)板當(dāng)作單片機(jī)學(xué)習(xí)裸板,把bootloader涉及的硬件操作單獨(dú)寫(xiě)程序試驗(yàn);最后開(kāi)始學(xué)習(xí)驅(qū)動(dòng)程序的編寫(xiě)。從裸板程序開(kāi)始,直到Linux驅(qū)動(dòng),這就是我的主要學(xué)習(xí)方法,這也是《嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)》的章節(jié)順序。
  
3、IP Camera帶音頻視頻功能、可以聯(lián)網(wǎng)互動(dòng),因此可能會(huì)被惡意入侵、隱私泄密,工程師如何做到保護(hù)?
  
韋東山:
  
IP Camera的使用涉及3個(gè)部件:用來(lái)錄像錄音的IP Camera、提供數(shù)據(jù)傳輸或存儲(chǔ)的服務(wù)器、觀(guān)看音視頻的客戶(hù)端(PC或手機(jī)等)。
  
我們會(huì)根據(jù)IP Camera的使用場(chǎng)景,為每一個(gè)階段提供數(shù)據(jù)保護(hù),比如:
  
a. 客戶(hù)拿到IP Camera時(shí),要登錄服務(wù)器注冊(cè)帳號(hào),并綁定設(shè)備。在服務(wù)器上的WEB服務(wù)就要注意隱私保護(hù),必要時(shí)引入手機(jī)驗(yàn)證。
  
b. 客戶(hù)端向服務(wù)器提出請(qǐng)求時(shí),要輸入用戶(hù)名和密碼,這可以參考Linux的遠(yuǎn)程登錄密碼驗(yàn)證功能。比如使用ssh協(xié)議登錄Linux服務(wù)器時(shí),會(huì)提示你輸入用戶(hù)名和密碼。相信這一套機(jī)制非??煽浚覀兛梢灾苯右?。
  
c. 三者之間傳輸數(shù)據(jù)時(shí),數(shù)據(jù)要先加密再傳輸??梢允褂霉妹荑€等加密方式。
  
d. 在服務(wù)器上存儲(chǔ)的數(shù)據(jù),如果你對(duì)安全保護(hù)不在行,可以使用大公司提供的云服務(wù)。
  
我只是給出一個(gè)思路,經(jīng)驗(yàn)不豐富。歡迎探討。
  
4、IP Camera運(yùn)動(dòng)控制部分可以實(shí)現(xiàn)拍攝角度的調(diào)節(jié),能否通過(guò)自動(dòng)控制攝像頭的角度實(shí)現(xiàn)人臉、頭部信息的鎖定、實(shí)時(shí)運(yùn)動(dòng)捕捉,大概怎么實(shí)現(xiàn)的,能否介紹一下?
  
韋東山:
  
術(shù)業(yè)有專(zhuān)攻,圖像處理不是我們的專(zhuān)長(zhǎng)。但是要做這一塊,我們會(huì)這樣做:先使用開(kāi)源軟件比如OpenCV,如果它達(dá)不到要求,再求助于專(zhuān)業(yè)人士。
[page]  
5、傳統(tǒng)的Linux驅(qū)動(dòng)開(kāi)發(fā)和Android驅(qū)動(dòng)開(kāi)發(fā)有何區(qū)別?現(xiàn)在android那么火,它跟LINUX是什么關(guān)系?學(xué)好了你們的視頻,對(duì)學(xué)習(xí)android有何幫助?你們后續(xù)有無(wú)錄制android視頻的計(jì)劃?
  
韋東山:
  
簡(jiǎn)單地說(shuō),Android驅(qū)動(dòng)=Linux驅(qū)動(dòng)+封裝。 Android應(yīng)用程序是使用java編寫(xiě)的,Linux內(nèi)核和驅(qū)動(dòng)程序是使用C語(yǔ)言編寫(xiě)的,java APP要訪(fǎng)問(wèn)驅(qū)動(dòng)程序,這中間需要插入一個(gè)封裝接口。核心還是底下的Linux驅(qū)動(dòng)程序;對(duì)于封裝,你只要了解了封裝規(guī)則,基本就可以一通百通了。所以,如果你的目標(biāo)是掌握Android驅(qū)動(dòng),那么我們的視頻很適合你。我們后面也會(huì)講講Android驅(qū)動(dòng)的封裝,它不會(huì)太難。
  
對(duì)于A(yíng)ndroid應(yīng)用程序,可以認(rèn)為它跟Linux的關(guān)系不大。即使你沒(méi)有Linux知識(shí),也可以在1個(gè)月內(nèi)入門(mén)Android應(yīng)用開(kāi)發(fā)──我只是說(shuō),你會(huì)開(kāi)發(fā)簡(jiǎn)單的界面。程序的核心永遠(yuǎn)是在界面之后,所以不要沾沾自得。比如手機(jī)游戲,背后的圖像處理算法、游戲的邏輯,這才是重點(diǎn)。如果你的目標(biāo)是掌握Android應(yīng)用,我反而覺(jué)得你應(yīng)該跳出“Android”來(lái)學(xué)習(xí)。應(yīng)用程序的領(lǐng)域?qū)嵲谔啵芯W(wǎng)絡(luò)、圖像處理、安全、搜索等等,由你的興趣來(lái)選擇方向吧。Android應(yīng)用只是一個(gè)人機(jī)界面,把背后的復(fù)雜系統(tǒng)展示給客戶(hù)來(lái)使用,如果你只滿(mǎn)足于“寫(xiě)界面”,好吧,1個(gè)月速成,再花幾個(gè)月深入理解 Android的框架。容易上手的,就容易掉價(jià)。前幾年Android應(yīng)用開(kāi)發(fā)由于會(huì)的人還不多,工資挺高;這兩年就開(kāi)始往下掉了;要保住你的薪資水平,除了界面你還需要掌握“核心技能”:界面背后的支撐。
  
我沒(méi)有打擊Android應(yīng)用的意思,對(duì)于急于找到工作的人,我反而建議去學(xué)習(xí)Android應(yīng)用。你應(yīng)聘到工作后,公司自然會(huì)壓著你去了解產(chǎn)品的相關(guān)知識(shí),否則你也寫(xiě)不出界面啊。
  
6、工程師一般時(shí)間都是比較緊張的,您是在什么情況下寫(xiě)的《嵌入式LINUX應(yīng)用開(kāi)發(fā)完全手冊(cè)》這本書(shū)呢?這本書(shū)是想給大家分享些什么呢?
  
韋東山:
  
辭職寫(xiě)的。我2005年自學(xué)Linux時(shí)在網(wǎng)上發(fā)布了“S3C2410完全開(kāi)發(fā)流程”的學(xué)習(xí)筆記,被出版社的編輯看到。他們?cè)?006年聯(lián)系我寫(xiě)書(shū),那時(shí)我在中興上班。在公司上班期間,根本沒(méi)有時(shí)間寫(xiě)書(shū):工作累個(gè)半死,回來(lái)哪有精力寫(xiě)。于是決定2007年辭職專(zhuān)門(mén)寫(xiě)書(shū)。
  
我學(xué)習(xí)時(shí),大部分的知識(shí)都是從網(wǎng)上搜索得來(lái),這需要耗費(fèi)巨大的精力去尋找,并且不系統(tǒng)。作為初學(xué)者,不知道去搜什么來(lái)入門(mén),也不知道搜什么來(lái)深入。所以,我想出一套“完全教程”,讓零基礎(chǔ)的入只看這本書(shū),就可以入門(mén)并掌握比較深的、工作中可以使用的知識(shí)。
  
好吧,其實(shí)也是被編輯以名利相誘,然后催我寫(xiě)寫(xiě)寫(xiě)!
 
7、“電子從業(yè)人員的發(fā)展方向”大概分為兩類(lèi):軟件工程師、硬件工程師,軟件工程師一般又可以分為:底層系統(tǒng)、上層應(yīng)用。您如何看待這三種方向的職業(yè)發(fā)展呢?
  
韋東山:
  
我剛工作時(shí)也曾是個(gè)硬件工程師,但是發(fā)現(xiàn)沒(méi)人帶的話(huà)很難有進(jìn)步,于是轉(zhuǎn)行做軟件了。對(duì)于他的職業(yè)發(fā)展,我也只能簡(jiǎn)單說(shuō)說(shuō)。
  
不少人問(wèn)我,到底是學(xué)驅(qū)動(dòng)還是學(xué)應(yīng)用?
  
我只能說(shuō)憑興趣,并且驅(qū)動(dòng)和應(yīng)用并不是截然分開(kāi)的
  
a. 我們說(shuō)的驅(qū)動(dòng),其實(shí)并不局限于硬件的操作,還有操作系統(tǒng)的原理、進(jìn)程的休眠喚醒調(diào)度等概念。想寫(xiě)出一個(gè)好的應(yīng)用,想比較好的解決應(yīng)用碰到的問(wèn)題,這些知識(shí)你應(yīng)該懂
  
b. 做應(yīng)用門(mén)檻低,特別是現(xiàn)在的ANDROID,純JAVA。做應(yīng)用的發(fā)展路徑個(gè)人認(rèn)為有兩個(gè)方向:一是業(yè)務(wù)純熟,二是成為某個(gè)專(zhuān)業(yè)領(lǐng)域的專(zhuān)家。比如在通信行業(yè)、IPTV行業(yè)、手機(jī)行業(yè),你了解行業(yè)的業(yè)務(wù)需求。所以,當(dāng)領(lǐng)導(dǎo)的人,多是做業(yè)務(wù)應(yīng)用的。另一個(gè)方面就是在網(wǎng)絡(luò)傳輸、圖像處理、人工智能等等領(lǐng)域的鉆研,這更多的時(shí)候像是在研究學(xué)術(shù)問(wèn)題,而不僅僅是寫(xiě)程序。
  
c. 做驅(qū)動(dòng),其實(shí)我不想稱(chēng)為“做驅(qū)動(dòng)”,而是想稱(chēng)為“做底層系統(tǒng)”,做好了這是通殺各行業(yè)。我工作幾年,做過(guò)手機(jī)、IPTV、會(huì)議電視,但是這些產(chǎn)品對(duì)我毫無(wú)差別,因?yàn)槲抑蛔龅讓?。他們的業(yè)務(wù)跟我沒(méi)關(guān)系。
  
當(dāng)應(yīng)用出現(xiàn)問(wèn)題,他們解決不了時(shí),我就會(huì)從內(nèi)核角度給他們出主意,給他們提供工具。
  
在實(shí)際工作中,寫(xiě)驅(qū)動(dòng)的活反而不多,更多的是從系統(tǒng)的角度解決難題。底層涉及的絕不僅僅是驅(qū)動(dòng),更多在于“系統(tǒng)”:它上接應(yīng)用,下接硬件。很多疑難問(wèn)題只能由底層的人解決。做底層的發(fā)展方向,個(gè)人認(rèn)為是著眼于整個(gè)系統(tǒng)的技術(shù)專(zhuān)家。
  
d. 其實(shí),做底層還是做應(yīng)用,之間并沒(méi)有一個(gè)界線(xiàn),有底層經(jīng)驗(yàn),再去做應(yīng)用,你會(huì)感覺(jué)很踏實(shí)。有了業(yè)務(wù)經(jīng)驗(yàn)或是掌握某項(xiàng)核心技術(shù),你再了解一下底層,很快就可以組成一個(gè)團(tuán)隊(duì)。
  
e. 我建議你上下兼通,做應(yīng)用讓你視野更廣闊,做底層讓你技術(shù)扎實(shí)。
  
f. 就職位而言,永遠(yuǎn)是應(yīng)用的職位多于底層的職位。所以,如果你找不到底層的工作,完全可以先做應(yīng)用。在工作中把底層的本領(lǐng)也學(xué)會(huì)。在公司中,那些被稱(chēng)為“系統(tǒng)工程師”的人絕對(duì)是上下兼通的
  
8、工程師經(jīng)常在談如何找一個(gè)好的平臺(tái),您是如何看待這個(gè)問(wèn)題的?
  
韋東山:
  
找平臺(tái),這是個(gè)技術(shù)活,或是個(gè)運(yùn)氣活。我有同學(xué)一直在騰迅做游戲,估計(jì)身家豐厚;也有朋友在公司分股票之前離職。就我個(gè)人經(jīng)驗(yàn)來(lái)說(shuō),我先是在小公司上班,后來(lái)到大公司,各有利蔽:
  
· 對(duì)于技術(shù)能力:在小公司里你會(huì)成為多面手,軟件硬件生產(chǎn)調(diào)試你都會(huì)插上一腳,如果能潛心學(xué)習(xí),對(duì)往后發(fā)展有好處。我在小公司里設(shè)計(jì)過(guò)硬件,到中興做驅(qū)動(dòng)時(shí),可以跟硬件工程師一起研究原理圖。現(xiàn)在創(chuàng)業(yè)了,還可以自己設(shè)計(jì)產(chǎn)品。在大公司里,每人專(zhuān)門(mén)負(fù)責(zé)一小塊,你可以學(xué)得深入,并且有各種設(shè)計(jì)規(guī)范。
  
· 對(duì)于人際關(guān)系:在大公司里,你會(huì)認(rèn)識(shí)更多的人,認(rèn)識(shí)各個(gè)部門(mén)的人,這對(duì)今后發(fā)展也有幫助。我辭職后接到的獵頭電話(huà),都是中興的同事推薦的。現(xiàn)在缺乏哪方面的技能,也可以向原來(lái)的同事請(qǐng)教。
  
· 對(duì)于收入:呵呵,看運(yùn)氣吧。有人被微軟拒絕后成為了億萬(wàn)富翁,有人則終身在微軟里寫(xiě)代碼;有人創(chuàng)業(yè)失敗,有人單憑公司年終獎(jiǎng)就資產(chǎn)豐厚。
  
根據(jù)你的需求,能承擔(dān)風(fēng)險(xiǎn)的能力,來(lái)選擇平臺(tái)──這似乎是廢話(huà),確實(shí)是。
要采購(gòu)開(kāi)發(fā)板么,點(diǎn)這里了解一下價(jià)格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉