How to entry in Embedded Linux System.

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

有許多人大概跟我一樣, 剛開始玩ARM Base 的Embedded Linux , 在一開始一定面臨到, 不知從何下手的困擾. 看著許多坊間許多套件商開發出的開法板, ... JustLinux 跳到主文 歡迎EmbeddedLinuxSystem界的菜鳥老手們,一起來討論吧 部落格全站分類:圖文創作 相簿 部落格 留言 名片 Jan16Wed200810:44 HowtoentryinEmbeddedLinuxSystem.       有許多人大概跟我一樣,剛開始玩ARMBase的EmbeddedLinux,在一開始一定面臨到,不知從何下手的困擾.看著許多坊間許多套件商開發出的開法板,照著書籍,及裏面提供的應用程式做了一遍後,卻仍不知道自己玩這一個領域 ,該從那裏為學習的啟始點. 我分享一下我個人的學習規劃方向,當然啦,這不代表我已經練成了金剛護體的九陽神功.畢竟我沒有張無忌的資質.但至少這不可失為是一個練功的階段進程,足以讓我stepbystep的前進..... 1.熟悉ARM組語指令及ADS/Rearview等IDE工具: 套件板上應該會提供一些簡單的sourcecode,這可以讓你試著在類似ADS等IDE工具,一步步的Trace系統的運作過程.其中在bootstarpcode(類似init.s)的部份,運用大量的組合語言與助譯碼,我想使用這不一定要熟記,但至少不能太陌生, 至少當要modifycode時,能夠在書籍上,找到相關的訊息.2.試著修改sourcecode& buildingtoexecution :學習EmbeddedLinux領域,別告訴我是想做學術研究.究底應該是修改程式,以符合硬體介面上的驅動使用.終極目標,當然是希望藉由產品在市場大賣,賺取利潤.所以動手改code , 然後compiler &link,最後downloadelffile到targetboard來驗證.這可以試著去修改板子所附的一些硬體周邊來來實習,如點亮LED等。

    上述的步驟,主要還是讓你學會如何透過ARM提供的IDE介面,來熟悉ARMBaseMCU的指令,以及大致一個EmbeddedSystem的架構.但還算不上是個EmbeddedLinux的開發計劃.  Linux之所以為業界稱道,除了是個free的opensource外,其內部的網路支援性,以及透過廣大的網路傳播,相當人數的使用與修改.,所以累積了一定程度的系統穩定性.而透過許多玩家或是ThirdParty,刪除了部份核心龐大的部份,衍生出像是uClinux,ArmLinux等被使用在不同的MCU架構上的系統.得以讓引用該MCU的產品,能夠擁有Linux的穩定系統,以及便捷的網路的傳輸服務.這也是我們學習EmbeddedLiunxSystem,最大魅力的所在.但很抱歉的是,在移植到類似的MCU過程中,多數的先進是使用Toolchain來進行Build系統,所以當你從網路上獲取相關於EmbeddedLinux的資源時,大概很難將其sourcecode轉成為ADS/REARVIEW所能handle的project.也因此,接下來必須試著去熟悉Toolchain的建立.至少,必須能找到一套符合你系統的toolchain.3.學會架EmbeddedLinuxEnviroment:包括x86系統上,建立一個Linuxos的系統,從網路上找詢相關的toolchain,像是gcc,glibc,binutils等,並且在compiler後,能夠將bin或是executionfileprogrammingordownload到targetboard的flash或是RAM去執行.4.試著撰寫Devicedriver:一套完整的EmbeddedLinux,應該可以分為Bootload,Kernel,Devicedriver,Application幾個部份.除了Kernal外,因為GPL的規範,在修改後,必須release出來,sharewitheverybody.所以,大部份的業界,大概都不大會去更動這一部份.但其它像是bootloader及Devicedriver,都將因為開發出的硬體架構不同,而必須做出程度上的修改.而其中又以Devicedriver所面臨的狀況更多.所以,試著學著去撰寫一份屬於該硬體的Devicedriver,例如是讓speaker發聲或是LED驅動的driver,這會讓學習過程變的有趣.另外,如果學的精,保證在業界是相當的吃香.5.ApplicationDesign:即使是很單純的單機產品,像是汽車電子或是IPPhone等,在建置了系統的bootloader ,Devicedriver後,仍須透過一些application的coding ,透過devicedriver來操做硬體的反應.所以試著去玩一些Applicationdesign,這除了能夠寫一些人機界面的應用程式外,再開發Linuxdriver時,也可以拿來做debug.相當的受用.6.GoGUIDesign:這一個部份不一定是必須的.但在許多PDA或是iPhone,以及導航產品等產品,在業界引領風潮後,透過一個LCD來實現一個GraphicUserInterface的操作模式,看來是勢在必行的.這個部份的學習,該算是獨立於EmbeddedLinux的部份,畢竟即使你使用WINCEMobile5.0 ,你仍必須看懂如何操作LCD顯示的Spec.只不過,在市場上現有的套件板中,多提供了LCD驅動的solution,再加上Linux業界的嵌入需求.透過這樣的界面,並且熟練於上述的4,5兩項,我想在業界混口飯吃,應該也不是難事.另外在GUI的設計中,又分有像是Qt/miniGui等,每一行都算是們學問唷.7.Portingx86Linux到EmbeddedLinux或是StudyLinuxKernel:能走到這一步驟,或許他不一定是高手,但至少他要面對的挑戰,絕對不輕鬆.要portingx86linux的一些套件或是系統到EmbeddedLinux,所要面對的就是對Kernel有一定的程度的熟悉,因為在過程中,必須了解硬體的特性,試著去修改符合該硬體的Kernel,這必須在整個Linux架構的編排上,像是Stack規劃,thread的研究,就像是當玩家從Linux2.4移值到Linux2.6時,必須面對系統相當大幅度的修正.絕非只是改幾行程式,就可以完成的,這還牽涉到系統的穩定性及效率.      上面的七項,除了第1到第3,需要循序步驟的去實作與熟悉,剩下的幾項,可能會依不同的環境需求,而有著不同順序的編排.而就算是熟練前面六項,也只能算是精於EmbeddedLinux的操作與使用,真正的挑戰還是在於,面對不同的硬體需求,像是bluetooth,smartphone等產品,都必須先對spec.有一定程度的了解,才能下手.這相對於許多業界販賣許多能應用在WINCEMOBILE的套件,能用在Linux上的,相對的就少之又少.這也就是許多公司,想聘用EmbeddedLinuxengineer來porting相關的Devicedriver或是AP在其產品上的意義.至少公司可以在產品售出前,不必先付出一定費用,購買WINCEMobile,或是相關套件的費用.當然啦,也有許多大公司,是WINCE及Linux兩系統並進.畢竟,產品能早一點上市獲利,對公司來說也是另一考量.      許多大學生畢業, 找不到工作,我覺得問題是在於,許多學校的訓練不足,加上學生在技能上及工作態度不佳,造成公司寧可聘用有經驗的員工. EmbeddedSystem  , 學生們可以好好的耕耘,至少熟練前面的1~4項, 找份工作絕對不會是件難事的唷.     [補註]我想補充的是,許多剛入門的玩家,很容易一開始就迷失在Linux的瀚海中,常以為買一塊開發板,然後透過套件裏提供的一些程序,可以燒錄Image,玩玩LED燈,就算是進入EmbededLinux的世界中.這絕對是一個錯誤的觀念,也可能是書局太多這類以開發板為介紹環境的書籍,所誤導的結果.進入EmbeddedLinux的第一個關鍵,一定是先了解Linux的初步架構,又因為不同的HW別,可以uClinux,ARMLinux ,或是執行在i386上的Linux,另外又因為支援的程度與否,像是2.6版本能夠supportMMU,更穩定的USB2.0等,就成為初學者要思考的第一步.一般會比較建議使用ARMBase的開發板 ,並不表示這是Linux運作的最佳平台,而是因為ARMBase的Controller,被廣泛的運用,所以市面上有許多引以為設計的產品,再家上高手們都在上面有po上不同版本的LINUXimage,所以要取得資源會容易很多.但其實,只要手邊能拿到一個硬體,裏頭有足夠的記憶體空間,合適的MCU,能夠燒入,及簡易的除錯方法,當然,要能夠很容易的燒入Image,其實這都會是一個很隨性入門EmbeddedLinux的環境的.另外,不管你一開始入門的是i386,或是直接玩在ARMBASEMCU或著是PowerPC ,你都需要一台能Workinggcctoolchain的電腦,有些人會單獨的拿一台電腦灌成LinuxOS,也有人使用VM-WARE來模擬,這都可以,只要你能在PC上,將你修改的程式,Modified-Build -然後download當targetboard上執行 ,你就能驗證自己修改的code對硬體表現出什麼樣的反應.....當然啦,開始的第一步,多是呈現死當,但只要別灰心,多摸幾次,多上網找相關高手的經驗,多能漸入佳境的. 全站熱搜 創作者介紹 jslinux JustLinux jslinux發表在痞客邦留言(8)人氣() E-mail轉寄 全站分類:不設分類個人分類:EmbeddedLinux此分類上一篇:What'stopictoworkhardintheEmbeddedLinuxfield? 此分類下一篇:一個學習EmbeddedLinux的資訊園地---StudyArea 上一篇:What'stopictoworkhardintheEmbeddedLinuxfield? 下一篇:一個學習EmbeddedLinux的資訊園地---StudyArea 歷史上的今天 2008:一個學習EmbeddedLinux的資訊園地---StudyArea 2008:What'stopictoworkhardintheEmbeddedLinuxfield? ▲top 留言列表 發表留言 月曆 « 十二月2021 » 日 一 二 三 四 五 六       1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31   近期文章 我的連結 學習論壇 ARMLinuxProjectDasu-bootProjectu-boot論壇ARMbootProject鳥哥的私房菜凱思的Linux嵌入式系統論壇LinuxUSB 文章分類 bootloader(2) U-boot(6)BootLoader(2) Devicedriver(2) EmbeddedLinuxDevicedriver(0)i386Devicedriver(1) CrossCompilertools(1)TrainningCourse(1)EmbeddedLinux(7)RedHatLinux(9)未分類文章(2) 最新迴響 參觀人氣 本日人氣: 累積人氣: QRCode POWEREDBY (登入) 回到頁首 回到主文 免費註冊 客服中心 痞客邦首頁 ©2003-2021PIXNET 關閉視窗



請為這篇文章評分?