學嵌入式Linux要先學以下幾點:
1.C語言。
要有C語言的基礎,當然越熟練越好,不熟也沒關系,具備基本技能就可以:比如寫一個數(shù)組排序、輸入數(shù)字求和什么的。C語言的學習就是多些多練。
2.Linux基礎
Linux操作系統(tǒng)的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell、 Makefile腳本編寫等知識,嵌入式開發(fā)環(huán)境的搭建。
3.Linux系統(tǒng)編程
重點學習標準I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發(fā)的理解和代碼調試的能力。
4.Linux網(wǎng)絡編程
計算機網(wǎng)絡在嵌入式Linux系統(tǒng)應用開發(fā)過程中使用非常廣泛,通過Linux網(wǎng)絡發(fā)展、TCP/IP協(xié)議、socket編程、TCP網(wǎng)絡編程、UDP網(wǎng)絡編程、Web編程開發(fā)等方面入手,全面了解Linux網(wǎng)絡應用程序開發(fā)。重點學習網(wǎng)絡編程相關API,熟練掌握TCP協(xié)議服務器的編程方法和并發(fā)服務器的實現(xiàn),了解HTTP協(xié)議及其實現(xiàn)方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網(wǎng)絡通信系統(tǒng)的設計,熟悉HTML,Javascript等Web編程技術及實現(xiàn)方法。
5.數(shù)據(jù)結構與算法
數(shù)據(jù)結構及算法在嵌入式底層驅動、通信協(xié)議、及各種引擎開發(fā)中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數(shù)據(jù)結構與算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序算法等應用及其C語言實現(xiàn)過程。
6.Cortex A8 、Linux 平臺開發(fā)
通過基于ARM Cortex-A8處理s5pv210了解芯片手冊的基本閱讀技巧,掌握s5pv210系統(tǒng)資源、時鐘控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平臺搭建做好準備。Linux平臺包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、制作與原理分析、根文件系統(tǒng)制作以及向內核中添加自己的模塊,并在s5pv210實驗平臺上運行自己制作的Linux系統(tǒng),集成部署Linux系統(tǒng)整個流程。同時了解Android操作系統(tǒng)開發(fā)流程。Android系統(tǒng)是基于Linux平臺的開源操作系統(tǒng),該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,是首個為移動終端打造的真正開放和完整的移動軟件,目前它的應用不再局限于移動終端,還包括數(shù)據(jù)電視、機頂盒、PDA等消費類電子產品。
7.驅動開發(fā)
驅動程序設計是嵌入式Linux開發(fā)工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的接口,掌握系統(tǒng)對設備的并發(fā)操作。熟悉所開發(fā)硬件的工作原理,具備ARM硬件接口的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字符設備、塊設備、網(wǎng)絡設備、USB設備等驅動開發(fā),在工作中能獨立勝任底層驅動開發(fā)。