給想從事Embedded Linux 開發工作的新手一個方向~

文章推薦指數: 80 %
投票人數:10人

1. PC硬體零組件取得容易(除非真的要開發ARM driver or porting AP 再考慮買特定的實驗板) · 2. 可以藉此瞭解Linux開機流程(想做embedded system必定要瞭解) 酷!學園 歡迎光臨,訪客。

請登入或註冊帳號。

您沒有收到認證信嗎? 一小時 一天 一週 一個月 永遠 請輸入帳號,密碼以及預計登入時間   最新消息: StudyAreaFacebook粉絲團http://www.facebook.com/sataiwan 首頁 說明 搜尋 登入 註冊 酷!學園» 技術討論區» Embedded討論版» 主題: 給想從事EmbeddedLinux開發工作的新手一個方向~ «上一篇下一篇» 列印 頁:[1] 作者 主題:給想從事EmbeddedLinux開發工作的新手一個方向~ (閱讀53045次) 0會員與1訪客正在閱讀本文。

andrew 實習板主 懷疑的國中生 文章數:69 給想從事EmbeddedLinux開發工作的新手一個方向~ «於:2009-10-1002:34» 首先,其實在下並不是什麼高手,進這一行的資歷比起版上的高手算是資淺很多,本身也並非很資深的工程師。

這篇文章是給跟我一樣同為新手的人一點方向,也請熱心的大家一起來補充!我當初也是跌跌撞撞地進入這一行~不過我覺得自己還算幸運,好像不小心走對了方向....版上很多人都在問,要怎樣入門?需不需要去上課?有沒有參考的書?這裡我提一個比較不一樣的觀點,也許實際上很難達到.....但是先不管!以我工作到現在的感想是,你想近這個領域的話,就去『找一份這樣的工作』這樣最快!也最有系統~比上一堆課都還有用!---你一定會想問?哪有這麼容易就能找到這樣的工作?你會發現,只要在討論區上問說『新手要怎麼入門』?會得到一些五花八門的答案,像是『C語言必備』『組合語言要懂』『電子電路的基礎』『複習計算機組織』『修單晶片的課程會有幫助』.....等等不過,等全部學完,人都往生了....其實這些答案都對,但是你可能不知道的是,其實不是每個工作都需要知道這件事情,一個嵌入式產品從誕生到量產,都需要很多不同職務內容的RD來幫忙,每個RD所需具備的知識內容一定是不一樣的。

所以就看你所在的公司,在這個產品開發的流程中,扮演什麼樣的角色!---就我目前所在公司(ODM廠)看到的流程來說,假如要做一個網路產品,wirelessrouter好了,通常就是先決定cpu要用哪一家的,wirelesschip要用哪一家的,switchchip要用哪一家的?這些公司,就是我們口中說的vendors(協力廠)。

決定好了之後,你用的開發環境(SDK),通常vendors都會提供(通常是提供cpu的那家公司)我們ODM廠要做的事情,就是把這包SDK的架構弄懂,然後把我們要加上去的service一一加上去,比方說一台wirelessrouter上面會有什麼服務?dhcp,NAT,routing總要有吧?或許還會有vpn,ddns....等等的服務。

然後負責的工程師可能就會去網路上找OpenSource的dhcpd,iptables...然後嘗試將它修改後porting到SDK的環境上,最後build出可以在targetboard上執行的firmware。

簡單的說,整個開發工作就大致上是這樣,而且遇到比較難解的問題的時候,vendors廠的工程師也會來協助!所以假如你找的公司是ODM廠,就是做產品的software,做系統整合。

通常你要熟悉的就是C語言,還有學會在Linux上進行編譯的那一套流程(Makefile...等等),其他的知識,你都可以在工作中慢慢補強~假如你是我口中所說的那些vendors廠,尤其是cpu廠(系統晶片廠),我個人覺得那對技術門檻的要求比較高,你可能真的要懂組合語言,懂compiler,懂一堆比較偏底層機制的知識,因為你可能要負責生出SDK。

說真的,每次chipvendors來support的時候,我都覺得他們很厲害,講的東西對我來說是另一個世界講的語言!=="不過利用這個project的機會,多跟他們打交道,自然會學到一些東西的!---所以你只要知道該公司扮演的角色,進入這一行的機會還是有的。

你一定想不到,我當初近這一行的時候,並不是負責很核心的開發工作,而是在負責寫webUI。

沒錯!就是寫網頁啦!看起來我的工作跟EmbeddedSystem很不相關,事實上我寫HTML的時間比寫C還多很多~而且我還寫了很久哩....但是這個工作卻是我覺得入門最好的進入點。

很多網路設備都需要有人寫使用者介面,這也是整個嵌入式產品的一部分。

你放心,還是可以學到東西的;你知道一支沒有filesystem的wifi-phone要怎麼弄出webUI嗎?當你從UI上填一個值,按OK之後,你知道系統偷偷做了哪些事情嗎?而且你還真得要知道這些事情才行,因為寫系統服務的人會告訴你,從UI上傳下去的值要檢查什麼,要注意什麼?然後你只要花點心思去trace整個流程,跟寫service的人多聊聊,就會在工作中,漸漸地建立整個系統觀~只要用心,多思考,總是會有很多有趣的議題的~到現在我也幾乎不寫UI了,已經在做其它更有趣的事情了~---書的話,市面上的書也很多,很多書是那種需要搭配板子實習的,假如你沒有板子,說真的也沒什麼用!而且我覺得我過去買的那些書,我看的時候完全都沒感覺,反而是工作一陣子之後,在回頭去看看,才會跟現有的經驗做連結,才會有豁然開朗的感覺!其實在下並非資訊系本科的學生,而且科系還差真遠,所以我工作後,花了很多時間自己再進修。

關於上課,其實在下也曾去上過一些課,我對上課這件事情,是支持的,我也覺得我當初上的那些課程給我的幫助是正向的~但是慎選補習班是很重要的!一定要有實習,時數要夠~不可能會有『快快樂樂無痛學會EmbeddedLinux』這種事情~另外,非常強烈建議你,假如你決定要去上課!一定一定一定一定一定一定一定一定一定一定要熟悉Linux到一定的程度,不是架server這種事情喔,是至少了解Linux的指令,開機流程,和系統設計的邏輯,因為我之前去上課的時候,總是會發現有些學員連基本的Linux使用都有問題,常常老師已經在繼續講下一段了,他還很困惑於剛剛的指令在做什麼事情~只是一股腦的想學就來上課,效果是有限的~這點還好我當初做對了選擇,我先去上了LinuxLPI的課,當然不是為了要考證照啦!只是為了要了解Linux。

而且我忍不住要提一件事情,我還真他X的幸運!我在台南念書時,有報名LPI的課,沒想到老師是netman大大!後來我到新竹工作後,可以重聽一次,沒想到老師是小州大大,你說說我是不是很幸運!我始終都記得netman大大在第一堂上課時所提的金字塔學習觀念~我一直都非常感謝兩位老師幫我紮下的基礎,他們教會我的是一個學習Linux的方法!這對我後續的學習新東西時,有很大的幫助!所以一定得把基礎打好,Linux就像積木一樣,你手中握的積木越多,學習的彈性會越大。

你手中握的都是別人用積木組好的套件時,你會在學習上有一種很虛的不安全感!---以上,只是個人淺見,也請各位有經驗的大大多多分享與指導囉,感謝!順便提一下,之前我翻到一本書,我其實還沒時間去看它,但是我覺得寫的不錯:『Linux系統架構與目錄之解析。

作者:邱世華』它講了很多我覺得不錯的系統觀念,可以參考看看囉~在此祝各位工作愉快! 記錄 find/my_braintypesleepy-execrm-rf{}\; ploakimo 可愛的小學生 文章數:16 回覆:給想從事EmbeddedLinux開發工作的新手一個方向~ «回覆#1於:2009-10-1511:05» 不錯的建議方向!小弟是屬於MIS的職位(LAMP=Linux+Apache+Mysql+PHP)~但開發公司的WebUI(ERP系統+管理系統....等等)居多,也是今年剛踏入EmbeddedLinux的新手,剛上完課(108小時)不久,說真的我聽懂上課內容只有30%剩下的完全聽不懂,我並非抱住上完課就一定要學會,我個人想法是先有個基礎概念跟學習方向,不要讓自己盲目的無頭緒的亂看書籍,畢竟EmbeddedLinux很廣,千萬別把捕習班當成上完課就一定會的想法,補習班真的只是讓自己有好的學習方向+基礎概念,剩下的還是要靠自己去深入研究,實習版是一定要的,現階段小弟在學習將各種opensource軟體porting到ARM平台上RUN(因為Porting算是EmbeddedLiunx最簡單的入門)~持續學習努力中~剛踏入新手們~我們一起加油吧!未來期盼自己能撰寫DEVICEDRIVER(這真的不好懂~有難度!) 記錄 kgwkevin 可愛的小學生 文章數:4 回覆:給想從事EmbeddedLinux開發工作的新手一個方向~ «回覆#2於:2009-10-1919:59» 不知道能不能在這邊問一件事呢?小弟是比較喜歡有一個實際的東西學習,所以是否買一個練習版來搭配學習比較好呢?可以請教一下買哪種的版子比較好呢?看網路上似手大多都是ARM的資料,請問跟vortex86DX這種比較是否有人能夠解說給小弟何種比較合適呢? 記錄 thx 鑽研的研究生 文章數:510 回覆:給想從事EmbeddedLinux開發工作的新手一個方向~ «回覆#3於:2009-10-2010:39» vortex86DX是x86系..目前多用於工控效能.......還有另外一顆類似的Soc叫RDChttp://www.rdc.com.tw/en/news_more.php?Id=13 基本上x86東西是這樣.拿台大台PC開發環境都是一模一樣的!頂多是驅動上問題如果走x86路線因為現成軟體多,sourcescode也多.學習方面建議1.挑定要做啥應用軟體Firewall,UTM,IPPBX,套裝server,mediaplayer,工控等2.x86比較大的重點在於Storage怎樣處理量產USB工具,CFDOM,要有啥保護或防寫機制等..請參考http://wiki.osslab.org.tw/%E5%AF%A6%E9%A9%97%E5%B0%88%E6%A1%88/OSSBox2 記錄 精神病患熊https://plus.google.com/u/0/112696891245220190011/posts anderson1127 訪客 回覆:給想從事EmbeddedLinux開發工作的新手一個方向~ «回覆#4於:2009-10-2022:09» 其實,我也是建議先從x86baseLinux開始瞭解起會好很多,好處是1.PC硬體零組件取得容易(除非真的要開發ARMdriverorportingAP再考慮買特定的實驗板)2.可以藉此瞭解Linux開機流程(想做embeddedsystem必定要瞭解)3.練習rebuildkernelforhardware4.可以執行emulation5.DRAM空間大很多,可以免除很多不方便6.新手可以練習從HD移轉system到另一個HD/FlashDisk,然後測試移轉過去的系統開機如果新手可以將上面這幾個項目玩得很熟,那要跨到ARMseries的hardware相信也是很容易的!!目前我就是在做PCfornetworking,最主要的還是將系統放在RAMdiskFlashdisk只是拿來暫存initrdfile而已... 記錄 andrew 實習板主 懷疑的國中生 文章數:69 回覆:給想從事EmbeddedLinux開發工作的新手一個方向~ «回覆#5於:2009-10-2316:23» 引述:anderson1127於2009-10-2022:09其實,我也是建議先從x86baseLinux開始瞭解起會好很多,好處是1.PC硬體零組件取得容易(除非真的要開發ARMdriverorportingAP再考慮買特定的實驗板)2.可以藉此瞭解Linux開機流程(想做embeddedsystem必定要瞭解)3.練習rebuildkernelforhardware4.可以執行emulation5.DRAM空間大很多,可以免除很多不方便6.新手可以練習從HD移轉system到另一個HD/FlashDisk,然後測試移轉過去的系統開機非常贊同!我覺得新手可以做看看這種練習~用VMWare或是VirtualBox之類的環境也可以練習歐~1.自己在Linux建立一個資料夾,ex:rootfs2.在rootfs資料夾下建立Linux開機所需的基本rootfilesystem  (可參閱LinuxFromScratch:LFS文件)3.編譯linuxkernel,拿掉不需要的東西,精簡化4.利用各種能將rootfs封裝成image的tools進行封裝,ex:genromfs   (http://freshmeat.net/projects/genromfs/)5.修改grub的選單6.開機測試!----Tip:假如你不想處理busybox的話,有個我以前用過的驗證方式,因為Linuxkernel開機時,會去執行/bin/init(事實上他有很多選擇啦,不詳述...)所以你只要用C寫一個無窮迴圈ex:每隔3sec一直印"HelloLinux~I'mNOTinit"然後編譯成執行檔之後,故意把他取名叫做init,然後放在rootfs/bin下面.開機之後,假如你成功 mountedrootfs,就會執行你的init(當然是假的init辣)就會一直印"HelloLinux~I'mNOTinit""HelloLinux~I'mNOTinit""HelloLinux~I'mNOTinit""HelloLinux~I'mNOTinit"試試看^^很好玩喔~ «上次編輯:2009-10-2316:28由andrew» 記錄 find/my_braintypesleepy-execrm-rf{}\; spocklee 可愛的小學生 文章數:11 回覆:給想從事EmbeddedLinux開發工作的新手一個方向~ «回覆#6於:2010-05-1815:36» 可以考慮一下beagleboard:http://beagleboard.org/畢竟ARM在embedded世界裡佔有率遠比x86高,與其學了x86再學ARM還不如一開始就去學ARM好了...假如怕花錢可以考慮QEMU 記錄 列印 頁:[1] «上一篇下一篇» 酷!學園» 技術討論區» Embedded討論版» 主題: 給想從事EmbeddedLinux開發工作的新手一個方向~   SMF2.0.18| SMF©2016,SimpleMachines XHTML RSS WAP2 本頁花了0.29秒和19次資料庫查詢。



請為這篇文章評分?