㈠ 嵌入式linux系統開發的具體步驟
第一步、建立岩困交叉編譯環境
沒有交叉開發經驗的讀者,可能一時很難接受這個概念。首先,要明白兩個概念:一般
我們工作的機器,稱為開發機、主機;我們製作好的系統將要放到某台機器,如手機或另一
台PC機,這台機我們稱為目標主機。
我們一般開發機上已經有一套開發工具,我們稱之為原生開發套件,我們一般就是用它
們來寫程序,那麼,那什麼又是交叉編譯環境呢?其實一點也不神秘,也就是在開發機上再
安裝一套開發工具,這套開發工具編譯出來的程序,如內核、系統工作或者我們自己的程序,
是放在目標主機上運行的。
那麼或許有初學者會問,直森姿接用原生開發工具為目標主機編譯程序不就完了?至少我當
初是這么想的。一般來說,我們的開發機都是X86 平台,原生開發套件開發的工具,也針
對X86 平台,而我們的目標主機可能是PowerPC、IXP、MIPS所以,我們的交叉編此棗絕譯
環境是針對某一類具體平台的。
一般來講,交叉開發環境需要二進制工具程序、編譯器、C鏈接庫,嵌入式開發常用的
這三類軟體是:
Binutils
G
uClibc
當然,GNU包含的工具套件不僅於此,你還要以根據實際需要,進行選擇
第二步、編譯內核
開發工具是針對某一類硬體平台,內核同樣也是。這一步,我們需要用第一步中建立的
工具,對內核進行編譯,對於有內核編譯經驗的人來說,這是非常簡單的;
第三步、建立根文件系統
也就是建立我們平常看到的bin、dev、proc這一大堆目錄,以及一些必備的文件;
另外,我們還需要為我們的目標系統安裝一些常用的工具軟體,如ls、ifconfig當然,
一個辦法是找到這些工具的源代碼,用第一步建立的交叉編譯工具來編譯,但是這些軟體一
是數量多,二是某些體積較大,不適合嵌入式系統,這一步,我們一般都是用busybox來完
成的,包括系統引導軟體init;
最後,我們為系統還需要建立初始化的引導文件,如inittab
㈡ Linux環境下C開發_linux搭建c語言開發環境
一:C語言嵌入式Linux工程師的學習需要具備一定的C語言基礎,C語言是嵌入式領域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操作、隊列、棧等。
二:Linux基礎Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI,編譯器GCC,調試器GDB和Make項目管理工具,ShellMakefile腳本編寫等知識,嵌入式開發環境的搭建。
三:Linux系統編程重點學習標准I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和代碼調試的能力。
四:Linux網路編程計算機網路在嵌入式Linux系統應用開發過程中使用非常廣泛,通過Linux網路發展、TCP/IP協議、socket編程、TCP網路編程、UDP網路編程、Web編程開發等方面入手,全面了解Linux網路應用程序開發。重點學習網路編程相關API,熟練掌握TCP協議伺服器的編程方法和並發伺服器的實現,了解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網路通信系統的設計,熟悉HTML,Javascript等Web編程技術及實現方法。
五:數據結構與演算法數據結構及演算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯旅瞎性。此階段的學習要重點理解數據結構與演算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序演算法等應用及其C語言實現過程。
六:C、QTC是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C的重要內容。圖形界面編程是嵌入式開發中非常重要的一個環節。由於QT具有跨平台、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中得到了廣范的應用,在本階段通過基於QT圖形庫的學習使學員可以熟練編寫GUI程序,並移植QT應用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息與槽機制的應用、滑鼠、鍵盤及繪圖事件處理及文件處理的應用。
七:CortexA8、Linux平台開發通過基於ARMCortex-A8處理s5pv210了解晶元手冊的基本閱讀技巧,掌握s5pv210系統資源、時鍾控制器、電源管理、異常中斷控制器、nandflash控制器等模塊,為底層平台搭建做好准備。Linux平台包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製作與原理分析、根文件系統製作以及向內核中添加自己的模塊,並在s5pv210實驗平台上運行自己製作的Linux系統,集成部署Linux系統整個流程。同時了解Android操作系統開發流程。Android系統是基於Linux平台的開源操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成,是首個為移動終端打造的真正開放和完整的移動軟體,目前它的應用不再局限於移動終端,還包括數據電視、機頂盒、PDA等消費類電子產品。
八:驅動開發拆顫空驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階洞租段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的介面,掌握系統對設備的並發操作。熟悉所開發硬體的工作原理,具備ARM硬體介面的基礎知識,熟悉ARMCortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字元設備、塊設備、網路設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。
以上就是列出的關於一名合格嵌入式Linux開發工程師所必學的理論知識,其實,作為一個嵌入式開發人員,專業知識和項目經驗同樣重要,所以在我們的理論學習中也要有一定的項目實踐,鍛煉自己的項目開發能力。
㈢ 求嵌入式linux開發詳細流程(步驟)
1.首先,建立交叉編譯環境:交叉編譯是指:在PC機上編譯,在目標板上執行,我PC是linux+ arm-elf-gcc編譯器.扳子是ARM3000.板子上的系統是uclinux,這時一個剪裁的很小的實時嵌入式linux操作系統.推薦使用這個.
2.然後就是你寫程序嘍,不過注意可能有些庫函數不能用,因為哪個編譯器稍微受限一點,不是所由的c庫函數都支持,不過一般開發的都有.
3.連起你的主機和開發板,這個你會不?要連兩個:串口(用來控制板子)和以太口(用來下載程序),我們板子上這些外設都有,你要使沒有可以用其他的口代替傳程序,但串口可是該有的阿!
4.在你主機上編譯程序生成目標代碼,建議用makefile文件來組織你的聯編關系.
5.把生成代碼下載到目標板執行調試.我是用的主機的NFS(網落文件)服務,下載到目標板的.
6.注:目標板是怎麼控制的呢?是用串口控制的,可用minicom,設置好你要控制的串口,也應該是你連板子的那個.在命令行里敲上minicom,即進入minicom截面,開啟你的板子,應該就是板子uclinux系統解壓安裝的畫面了.然後用ifconfig eth0.....
配置ip,這個ip就是你板子的ip了,注意與主機一個網段.然後mount -t nfs 主機ip:/uclinux /板子上的一個目錄,就把主機的 uclinux目錄放到板子上了(這么說其實不合理,應該叫掛載). 然後找到你剛才一經編譯好的哪個目標代碼執行即可.
因不了解你的具體環境和配置,暫說這些,有問題可再聯系:)
㈣ 嵌入式linux系統開發詳解_嵌入式linux系統介紹
嵌入式Linux開發從下到上分為:嵌入式硬體開發、嵌入式驅動開發、嵌入式系統開發、嵌入式軟體開發。
一、嵌入式硬體開發:熟悉電路等知識,非常熟悉各種常用元器件,掌握模擬電路和數字電路設計的開發能力。熟練掌握嵌入式硬體知識,熟悉硬體開發模式和設計模式,熟悉ARM32位處理器嵌入式硬體平台開發、並具備產品開發經驗。精通常用的硬體設計工具:Protel/PADS(PowerPCB)/Cadence/OrCad。一般需要有4~8層高速PCB設計經驗。
二、嵌入式驅動開發:熟練掌握Linux操作系統、系統結構、計算機組成原理、數據結構相關知識。熟悉嵌入式ARM開發,至少掌握Linux字元驅動程序開發。具有單片機、ARM嵌入式處理器的移植開發能力,理解硬體原理圖,能獨立完成相關硬體驅動調試,具有扎實的硬體知識,能夠根據晶元手冊編寫軟體驅動程序。
三、嵌入式系統開發:掌握Linux系統配置,精通處理器體系結構、編程環境、指令集、定址方式、調試、匯編和混合編程等方面的內容;掌握Linux文件系統製作,熟悉各種文件系統格式(YAFFS2、JAFFS2、RAMDISK等);熟悉嵌入式Linux啟動流程,熟悉Linux配置文件的修改;掌握內核裁減、內核移植、交叉編譯、內核調試、啟動程序Bootloader編寫、根文件系統製作和集成部前胡署Linux系統等整個流程;、熟悉搭建Linux軟體開發環境(庫文件的交叉編譯及環境配置等);
四、嵌入式軟體開發:精通Linux操作系統的概念和安裝方法、Linux下的基本命令、管理配置和編輯器,包括VI編輯器,GCC編譯器,GDB調試器和Make項目乎悔敗管理工具等知識;精通C語言的高級編程知識,包括函數與程序結構、指針、數組、常用演算法、庫函數的使用等知識、數據結構的基礎內容,包括鏈表、隊列等;掌握面向對象編程的基本思想,以及C語言的基礎內容;精通嵌入式Linux下的程序設計,精通嵌入式Linux開發環境,包括系統編程、文件I/O、多進程和多線程、網路編程、GUI圖形界面編程、資料庫;熟悉常用的歲顫圖形庫的編程,如QT、GTK、miniGUI、fltk、nano-x等。
所以如果你要做嵌入式軟體開發的話,上面那些知識基本夠用了。