一個(gè)從應(yīng)用層到IC層的嵌入式牛人學(xué)習(xí)經(jīng)歷
由于是全新的行業(yè),我把自己降到了零點(diǎn),我學(xué)的VC、Delphi、數(shù)據(jù)庫(kù)派不上用場(chǎng),擺在我面前的是嵌入式、協(xié)議、信令一些我從未接觸過(guò)的知識(shí)。我知道我沒(méi)有退路,于是拼命的學(xué)習(xí),我把自己當(dāng)做一個(gè)應(yīng)屆畢業(yè)生一樣,一分努力一分收獲,半年過(guò)去我終于熟悉了工作,并且得到了公司的表彰,薪水也加了一級(jí)。后面的日子里我們省吃儉用,把欠朋友的1萬(wàn)多塊錢還了,日子終于上了正軌。這時(shí)女朋友告訴我她想考研究生,我也很支持,于是她辭職在家備考。
本文引用地址:http://butianyuan.cn/article/215670.htm另外,在這里我要感謝我的ProjectManager,他原來(lái)是一個(gè)大通信公司的產(chǎn)品經(jīng)理,對(duì)人非常和善,我從他那里學(xué)到了很多知識(shí),而且他也給了我許許多多無(wú)私的幫助。在工作上他給我充分的空間和信任。記得公司安排我維護(hù)一個(gè)接入服務(wù)器軟件,由于代碼量不算太小(5萬(wàn)行),資料和文檔都不齊全,我維護(hù)起來(lái)非常吃力,所以想重新把它做一遍,公司領(lǐng)導(dǎo)不太支持,可能覺(jué)得工作量太大,但是他極力支持我,私下里他讓我放手去做,我的維護(hù)工作他擠時(shí)間做。在他的支持下,我花了半年時(shí)間完成了接入服務(wù)器的軟件,并且實(shí)現(xiàn)了一個(gè)相對(duì)完整的TCP/IP協(xié)議棧。在這里我學(xué)會(huì)了嵌入式系統(tǒng)設(shè)計(jì)、驅(qū)動(dòng)開(kāi)發(fā)、TCP/IP和很多通信的知識(shí),我花了一年時(shí)間終于使自己從MIS開(kāi)發(fā)轉(zhuǎn)到了通信行業(yè),并且站穩(wěn)了腳跟。我的開(kāi)發(fā)大量是對(duì)硬件的直接操作,不再受微軟的操作系統(tǒng),VC、Delhpi這些開(kāi)發(fā)工具的約束,我終于看到了另外一片天空。
我做事情喜歡追根問(wèn)底,隨著開(kāi)發(fā)的深入,軟件開(kāi)發(fā)與硬件聯(lián)系越來(lái)越緊密,硬件知識(shí)的匱乏又對(duì)我的發(fā)展產(chǎn)生了障礙,而且芯片技術(shù)基本上掌握在國(guó)外公司的手里,這對(duì)做系統(tǒng)級(jí)設(shè)計(jì)是一個(gè)非常大的制約,一個(gè)新產(chǎn)品出來(lái),第一道利潤(rùn)(也往往是最豐厚的利潤(rùn))常常都被IC公司如Intel、Motorola賺去了,國(guó)內(nèi)的廠商只能喝點(diǎn)湯。所以我決心解決自己的硬件技術(shù)障礙,并打算離開(kāi)通信行業(yè),進(jìn)入IC設(shè)計(jì)相關(guān)領(lǐng)域。
當(dāng)然我明白如果我對(duì)硬件了解的非常少,沒(méi)有哪家IC公司會(huì)仁慈到招我這樣一個(gè)一竅不通的人來(lái)培訓(xùn)。所以我必須努力打好基礎(chǔ),學(xué)一些相關(guān)知識(shí)為以后做準(zhǔn)備。就像我開(kāi)始從MIS轉(zhuǎn)到通信一樣,我看過(guò)大量通信方面的書,并且給一個(gè)ISP做過(guò)RADIUS計(jì)費(fèi)分揀臺(tái),在這樣的背景下這家通信公司才給了我這個(gè)機(jī)會(huì)。我在的通信公司是做系統(tǒng)設(shè)計(jì)的,有不少PCBLayout硬件人員,平常我就注意向他們學(xué)習(xí),由于我做的是軟件,在公司看硬件資料不好意思,所以開(kāi)始只好在家看,剛來(lái)上海工作我連續(xù)一年都在加班,后來(lái)不加了,因?yàn)槲乙獢D出時(shí)間學(xué)習(xí),通常我12點(diǎn)左右睡,第二天5點(diǎn)半起,我上班比較早,地鐵上如果人不多我也用來(lái)看書。學(xué)習(xí)當(dāng)然不會(huì)是一帆風(fēng)順的,有些實(shí)在不懂的問(wèn)題就積累起來(lái)問(wèn)硬件人員,他們的幫助使我學(xué)習(xí)進(jìn)度快了很多,因?yàn)樵跊](méi)有人點(diǎn)撥的情況下自學(xué),我的一半時(shí)間是花在解決疑難問(wèn)題上,但這種問(wèn)題經(jīng)常是別人的一句話就可以讓我豁然開(kāi)朗,我非常慶幸我有這樣的學(xué)習(xí)環(huán)境。在后面的一年里,我學(xué)會(huì)了看硬件原理圖,學(xué)會(huì)了簡(jiǎn)單的硬件設(shè)計(jì)
(模擬電路方面還有不小的差距),事情就是這樣的,當(dāng)你安安份份做軟件,別人永遠(yuǎn)認(rèn)為你是軟件開(kāi)發(fā)人員,在你開(kāi)始學(xué)習(xí)硬件時(shí)別人未必會(huì)認(rèn)同,有位中興通訊的朋友還對(duì)我說(shuō)過(guò),一個(gè)人不可能把所有東西都學(xué)完。我也明白這一點(diǎn),但我希望自己做的更好。但當(dāng)你熟悉硬件后大家又會(huì)覺(jué)得你好像原本就是軟硬件都懂的,同事們也都習(xí)以為常了。這個(gè)時(shí)候我可以把硬件資料堂堂正正的拿到公司看,沒(méi)有人再大驚小怪了。讓我比較自豪的是我通過(guò)自己的努力做了一個(gè)IAD(軟交換的終端設(shè)備)系統(tǒng)方案,包含軟硬件的選型、設(shè)計(jì)等內(nèi)容,這個(gè)方案得到了公司和同事們的認(rèn)同,讓我感到非常欣慰。
技術(shù)是相輔相成的,當(dāng)我的硬件有了一定的進(jìn)步后,我的軟件設(shè)計(jì)也有了很大的提高,我可以從更深層次理解問(wèn)題,我做的接入服務(wù)器CPU是MotorolaPowerPC860,熟悉的朋友都知道860QMC與軟件的批量數(shù)據(jù)傳輸通常采用BD表的方式,硬件人員做驅(qū)動(dòng)的時(shí)候習(xí)慣采用固定BD表,每接收或發(fā)送數(shù)據(jù)都將數(shù)據(jù)從BD表拷貝到用戶Buffer,或從用戶Buffer拷貝到BD表,由于理解的比較深入,我自己重新實(shí)現(xiàn)了這個(gè)過(guò)程,采用動(dòng)態(tài)BD表的方式,驅(qū)動(dòng)從一個(gè)網(wǎng)口接收數(shù)據(jù),提交給我的軟件進(jìn)行三層交換,直至從另外的接口發(fā)送出去,沒(méi)有進(jìn)行一次拷貝。這樣的設(shè)計(jì)大大提高了性能,使系統(tǒng)的指標(biāo)接近理論值。軟硬件的結(jié)合使我的設(shè)計(jì)水平上了一個(gè)臺(tái)階。我現(xiàn)在寫的這個(gè)操作系統(tǒng),編譯后我把程序反編譯成匯編,找出其中不優(yōu)化的代碼,然后在C程序中進(jìn)行調(diào)整。舉個(gè)例子,很多CPU沒(méi)有專門的乘法指令,這個(gè)大家應(yīng)該都知道,在這種CPU上進(jìn)行一個(gè)乘法操作常常會(huì)花費(fèi)大量的指令周期,有的朋友會(huì)說(shuō)這個(gè)我知道,我會(huì)盡量避免采用×號(hào),但是事情往往不是那么簡(jiǎn)單,你知道C語(yǔ)言中數(shù)組的下標(biāo)操作是怎么實(shí)現(xiàn)的嗎?仔細(xì)看看反匯編的代碼你就會(huì)明白,同樣是通過(guò)下標(biāo)的定位操作,C編譯器會(huì)有時(shí)候會(huì)產(chǎn)生位移指令,但有時(shí)候會(huì)用乘法實(shí)現(xiàn),兩者效率往往是天壤之別,所以明白這些問(wèn)題你才能將系統(tǒng)性能提升到極致。這些問(wèn)題就不多說(shuō)了,有興趣的話以后可以共同探討。
話說(shuō)遠(yuǎn)一點(diǎn),我由衷的希望在軟件上做的比較深入的朋友們有機(jī)會(huì)學(xué)學(xué)硬件以及其它相關(guān)知識(shí),尤其是做底層開(kāi)發(fā)和嵌入式設(shè)計(jì)的。這對(duì)軟件技術(shù)的提高有非常大的幫助,否則很多事情你只知道該這樣但不會(huì)明白為什么該這樣。我這個(gè)觀點(diǎn)在我現(xiàn)在的IC公司ProjectManager那里也得到了驗(yàn)證。他告訴我們公司現(xiàn)在的802.11芯片產(chǎn)品的軟件經(jīng)理原本是做該芯片硬件設(shè)計(jì)的,某某某原本是做軟件的,現(xiàn)在在做IC,類似的例子還有很多,只是在國(guó)內(nèi)這樣的風(fēng)氣不是非常流行。
我有一些心得體會(huì)與大家分享,只有當(dāng)我干好本職工作后,我才會(huì)學(xué)習(xí)與工作關(guān)系不大的技術(shù),這樣公司的上司才不至于反感,在入門階段的問(wèn)題我通常不去問(wèn)那些資深人士,而是問(wèn)一些資歷比較淺的朋友,比如剛畢業(yè)不久的學(xué)生,因?yàn)樗麄兺鶗?huì)跟你詳細(xì)的講解,而資深人士通常覺(jué)得你的問(wèn)題太簡(jiǎn)單,所以回答的也很簡(jiǎn)單,我又不好意思多問(wèn)。等技術(shù)上了一定的層次后我才會(huì)問(wèn)他們,他們也能給你比較深入的回答。另外,有些朋友說(shuō)我機(jī)會(huì)比較好,他們也希望能從事新的工作可惜沒(méi)有機(jī)會(huì),我聽(tīng)了只有苦笑,我的機(jī)會(huì)了解的人都應(yīng)該知道,我沒(méi)有出生在什么IT世家:)也沒(méi)有誰(shuí)一路提拔我,所有的路都是自己走出來(lái)的,我母親去世比較早,我的后母(我叫她阿姨)看著我努力過(guò)來(lái)的,一次她看我大年30還在寫程序,她說(shuō)像我這樣努力木頭都能學(xué)出來(lái)。
我的最終目的是IC而不是PCB,所以我下一步的準(zhǔn)備開(kāi)始學(xué)習(xí)IC設(shè)計(jì)的知識(shí)。公司的同事沒(méi)有懂IC設(shè)計(jì)的,后面的路又要靠自己了,我買了不少相關(guān)的書,在網(wǎng)上也查了很多的資料,我花了大量的時(shí)間去學(xué)習(xí)VHDL,并且用軟件進(jìn)行了一些簡(jiǎn)單的設(shè)計(jì)和仿真(沒(méi)有設(shè)計(jì)ASIC,只是針對(duì)FPGA),隨著學(xué)習(xí)的深入,我漸漸明白了IC設(shè)計(jì)的基本流程,同時(shí)也明白了這條路的艱辛。這個(gè)時(shí)候我已經(jīng)做好了跳槽的準(zhǔn)備,我向一家業(yè)界又一定知名度的IC設(shè)計(jì)公司投了簡(jiǎn)歷,并通過(guò)了漫長(zhǎng)的面試(4個(gè)多小時(shí))。其他的一切我都比較滿意,唯獨(dú)薪資差強(qiáng)人意,我也明白原因,因?yàn)槲沂沁@個(gè)行業(yè)的新人,我沒(méi)有經(jīng)驗(yàn),我再一次將自己清零了。公司老板問(wèn)我6000多一個(gè)月能不能接受,我知道他也是照章辦事。想想我通信行業(yè)的朋友們,基本上都是年薪10萬(wàn)以上,月薪過(guò)萬(wàn)的也比比皆是,朋友們也幫我介紹了不少待遇不錯(cuò)的公司,我該怎么選擇,當(dāng)時(shí)我很猶豫,我熱愛(ài)我的事業(yè),我向往我的追求,但我也是一個(gè)普通的人,我也需要養(yǎng)家糊口,我也想早一點(diǎn)買房買車。生活給我出了一道難題。
愛(ài)因斯坦在63歲時(shí)說(shuō)過(guò)“一個(gè)人沒(méi)有在30歲以前達(dá)成科學(xué)上的最大成就,那他永遠(yuǎn)都不會(huì)有。”這句話給了我很大的壓力和震動(dòng),我馬上就26歲了,離30只有四年時(shí)間,我必須抓緊這幾年寶貴的時(shí)間,努力達(dá)到我技術(shù)上的最高峰。為了這個(gè)理想,為了能離自己的夢(mèng)更近一些,我選擇了這家IC公司,我明白自己的薪資和公司剛進(jìn)來(lái)的碩士研究生相差無(wú)幾,但為了今后的發(fā)展只能忍受,一切又得重新開(kāi)始。換行業(yè)是一個(gè)非常痛苦的過(guò)程,尤其從一個(gè)春風(fēng)得意的位置換到一個(gè)陌生的崗位,感覺(jué)象從溫暖的被子里鉆出來(lái)跳進(jìn)冰水中,讓人難以接受。在原來(lái)那家通信公司,我是唯一兩年時(shí)間漲了五次工資的員工,公司和同事都給了我極大的認(rèn)可,工作上也常常被委以重任。但現(xiàn)在這一切都成了過(guò)去,在新的公司我只是一個(gè)新人,沒(méi)有人知道也沒(méi)有人在意我過(guò)去的成績(jī)。我決定重新開(kāi)始,我把自己看作新畢業(yè)的學(xué)生,我要用自己的努力得到公司的認(rèn)可。進(jìn)入新的行業(yè)是非常痛苦的,我告訴自己必須忍受這一切,雖然外面有很多誘惑,但是既然作出了選擇我就不允許自己輕易放棄。
我現(xiàn)在已經(jīng)在這家新公司上了一個(gè)多月的班,開(kāi)始非常艱難,現(xiàn)在慢慢適應(yīng)了。第一個(gè)月結(jié)束時(shí),TeamLeader找我談話,說(shuō)我是新進(jìn)員工中最優(yōu)秀的一個(gè),我心里很欣慰,這也算對(duì)我努力的一個(gè)肯定吧。在這里還要感謝我的女朋友,她給了我很大的支持和鼓舞,每次在我動(dòng)搖的時(shí)候她都在鼓勵(lì)我,讓我堅(jiān)持自己的理想,剛來(lái)上海是她讓我不要勉強(qiáng)去做MIS,這次也是她讓我頂住了月薪過(guò)萬(wàn)的誘惑,沒(méi)有她我可能不會(huì)有今天的成績(jī)?,F(xiàn)在的公司有自己的操作系統(tǒng),自己的CPU、DSP和其它芯片,在這里我能學(xué)到世界上最先進(jìn)的技術(shù),我們的設(shè)計(jì)開(kāi)發(fā)不再完全依賴別人的硬件和系統(tǒng),這讓我很開(kāi)心。我打算等工作步入正軌后,全力學(xué)習(xí)新的知識(shí),實(shí)現(xiàn)我的理想。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
c++相關(guān)文章:c++教程
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論