嵌入式linux小項目實例
㈠ 嵌入式linux應用層開發有哪些實例
一:c語言 嵌入式Linux工程師的學習需要具備一定的C語言基礎,C語言是嵌入式領域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操作、隊列、棧等。
二:Linux基礎 Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發環境的搭建。
三: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++ 、QT C++是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C++的重要內容。圖形界面編程是嵌入式開發中非常重要的一個環節。由於QT具有跨平台、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中得到了廣范的應用,在本階段通過基於QT圖形庫的學習使學員可以熟練編寫GUI程序,並移植QT應用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息與槽機制的應用、滑鼠、鍵盤及繪圖事件處理及文件處理的應用。
七:Cortex A8 、Linux 平台開發 通過基於ARM Cortex-A8處理s5pv210了解晶元手冊的基本閱讀技巧,掌握s5pv210系統資源、時鍾控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平台搭建做好准備。Linux平台包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製作與原理分析、根文件系統製作以及向內核中添加自己的模塊,並在s5pv210實驗平台上運行自己製作的Linux系統,集成部署Linux系統整個流程。同時了解Android操作系統開發流程。Android系統是基於Linux平台的開源操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成,是首個為移動終端打造的真正開放和完整的移動軟體,目前它的應用不再局限於移動終端,還包括數據電視、機頂盒、PDA等消費類電子產品。
八:驅動開發 驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的介面,掌握系統對設備的並發操作。熟悉所開發硬體的工作原理,具備ARM硬體介面的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字元設備、塊設備、網路設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。
以上就是列出的關於一名合格嵌入式Linux開發工程師所必學的理論知識,其實,作為一個嵌入式開發人員,專業知識和項目經驗同樣重要,所以在我們的理論學習中也要有一定的項目實踐,鍛煉自己的項目開發能力。
㈡ 嵌入式ARM linux操作系統中如何構建交叉開發環境
這個問題相當專業了,之前我去周立功那邊了解過的。
按照以下步驟進行安裝:
1) 安裝32位的兼容庫和libncurses5-dev庫
在安裝交叉編譯工具之前需要先安裝32位的兼容庫和libncurses5-dev庫,安裝32兼容庫需要從ubuntu的源庫中下載,所以需要在Linux主機系統聯網的條件下,通過終端使用如下命令安裝:
vmuser@Linux-host ~$sudo apt-get install ia32-libs
若Linux主機系統沒有安裝32位兼容庫,在使用交叉編譯工具的時候可能會出現錯誤:
-bash: ./arm-fsl-linux-gnueabi-gcc: 沒有那個文件或目錄
在終端中使用如下命令則可以安裝libncurses5-dev庫。
vmuser@Linux-host ~$sudo apt-get install libncurses5-dev
如果沒有安裝此庫,在使用make menucofig時出現如下所示的錯誤:
*** Unableto find the ncurses libraries or the
*** required headerfiles.
*** 'makemenuconfig' requires the ncurses libraries.
***
Installncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 錯誤 1
make: *** [menuconfig] 錯誤 2
2) 安裝交叉編譯工具鏈
將交叉編譯工具「gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2」文件通過U盤的方式拷貝到Linux主機的「/tmp」目錄下,然後執行如下命令進行解壓安裝交叉編譯工具鏈:
vmuser@Linux-host ~$ cd /tmp
vmuser@Linux-host ~$ sudo tar -jxvfgcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2 -C /opt/
vmuser@Linux-host /tmp$ # 輸入vmuser用戶的密碼「vmuser」
執行完解壓命令後,交叉編譯工具鏈將被安裝到「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0」目錄下。交叉編譯器的具體目錄是「/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin」,為了方便使用,還需將該路徑添加到PATH環境變數中,其方法為:修改「/etc/profile」文件,具體操作方法如下:
在終端中輸入如下指令
vmuser@Linux-host ~$ sudo vi /etc/profile # 若提示輸入密碼,則輸入「vmuser」
用vi編輯器打開「/etc/profile」文件後,在文件末尾增加如下一行內容:
export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin
文件修改並保存後,再在終端中輸入如下指令,更新環境變數,使設置生效。
vmuser@Linux-host ~$source /etc/profile
在終端輸入arm-fsl-linux-gnueabi-並按TAB鍵,如果能夠看到很多arm-fsl-linux-gnueabi-前綴的命令,則基本可以確定交叉編譯器安裝正確,如下圖所示。
㈢ 跪求一份完整的嵌入式Linux方面的C項目實例
怎樣的人適合學習嵌入式?
學習嵌入式需要有一定的基礎,這些基礎大概包括下面兩點:
學過c語言,匯編;
對微控制器有一定了解。
一般理工類(計算機,自動化,電子類專業)的學生大三學比較合適。因為到了大三,一般學過了c語言及匯編,雖然大部分學生沒有獨立寫過一個程序,但至少上過這門課,自己也看過相關知識點;而且上過8051等微控制器原理的課程,也看過類似的教課書。
具備以上基礎的人,也不是誰都可以學。因為嵌入式學習門檻比較高,難度比較大,不但要有一定的毅力,而且要觸類旁通,如果太死板也很難學會。
概括的說學習嵌入式還必備下列性格:
熱愛研發!
切忌浮躁!
執著,頑強,自信!
舉一反三!
如果你符合以上條件,完全可以經過努力把嵌入式學好,我了解到的在華清遠見學習的一個同學,之前基本上什麼基礎都沒有,寫一個「hello world」程序都為難,編譯了幾次才通過,但是經過四個月的努力,在華清遠見專業老師和同學們的熱心幫助下,從一個完全的菜鳥變成了入門級別的linux工程師了,找到了一份做應用開發的工作,工資大概有四千吧,還算不錯。
LZ要自學的話,可以多到華清遠見的網站上看看他們的課程設置,就知道自己該學些什麼,還有很多學習資料和視頻可以下載,另外華清遠見出版的40多本嵌入式專業暢銷書,外面各大書店和圖書館都有,你都可以去翻翻看看。
祝你早日學有所成!
請參考,希望能幫到你。
㈣ 嵌入式Linux程序設計案例與實驗教程的目錄
前言
教學建議
第1章LiFlUX開發基礎
1.1Linux系統概述
1.1.1Linux簡介
1.1.2Linux系統的特點
1.1.3Linux系統的組成
1.2Linux系統的使用
實驗1.1熟悉Linux基本命令與文件目錄系統
1.3全屏幕編輯器與vi
1.3.1vi簡介
1.3.2基本命令
1.3.3常用操作
實驗1.2全屏幕編輯器vi的使用
1.4LinuxS11ell編程
1.4.1Shell程序的編寫和執行
1.4.2Shell的變數
1.4.3Shell的測試命令
1.4.4條件語句
1.4.5循環語句
1.4.6函數
實驗1.3Shell腳本編程實驗
第2章嵌入式Linux系統基礎
2.1構建嵌入式Linux系統環境
2.1.1交叉編譯
2.1.2交叉編譯器
2.1.3NFS
實驗2.1嵌入式Linux開發環境的建立
2.2Linuxc程序設計
2.2.1C程序設計概述
2.2.2Makefile介紹
2.2.3Makefile中的變數
2.2.4Makefile隱含規則
實驗2.2Makefite與helloworld
2.3Linux多線程庫編程
2.3.1多線程
2.3.2Linux下的多線程
2.3.3生產者-消費者模型簡述
2.3.4緩沖區操作概述
2.3.5幾個線程API
實驗2.3Linux多線程使用實例生產者-消費者協議
2.4進程創建以及進程間通信
2.4.1進程概述
2.4.2進程的相關函數
2.4.3信號概述
2.4.4信號的相關函數
2.4.5管道概述
2.4.6管道的相關函數
實驗2.4進程相關的應用程序設計
綜合實驗一嵌入式平台的進程管理模擬實驗
第3章嵌入式Linux內核、引導系統和文件系統
3.1Linux內核定製、裁剪和添加
3.1.1概述
3.1.2內核目錄簡介
3.1.3配置文件和配置工具
3.1.4內核的編譯命令
實驗3.1Linux內核裁剪與編譯
3.2嵌入式引導系統技術
3.2.1概述
3.2.2Linux的引導系統vivi與ubOOt
3.3文件系統的構建
3.3.1概述
3.3.2BusyBox
綜合實驗二軟盤Linux操作系統的實現
第4章嵌入式Liflux介面設計與驅動程序
4.1驅動程序設計基礎
4.1.1Linux驅動程序簡介
4.1.2開發驅動程序的方法
4.1.3設備驅動程序的分類
4.1.4主設備號和次設備號
4.1.5設備文件系統(devfs)與Udevfs
實驗4.1虛擬驅動模塊實驗
4.2AD介面驅動程序
4.2.1AD轉換器
4.2.2AD轉換有關參數
4.2.3ARM自帶的AD轉換裝置
實驗4.2AD介面驅動程序
4.3直流電機驅動
4.3.1直流電機介紹
4.3.2直流電機的PWM原理
4.3.3PWMTIMER結構
4.3.4基於ARM的PWM相關寄存器
4.3.5關於程序實現
實驗4.3直流電機PWM驅動實驗
4.4觸摸屏介面設計與驅動
4.4.1觸摸屏的工作原理
4.4.2觸摸屏驅動晶元ADS7843
4.4.3S3C2410晶元的觸摸屏相關配置寄存器
實驗4.4tslib移植和使用
4.5顯示介面與LinuxFrameBuffer
4.5.1FrameBuffer機制介紹
4.5.2LCD簡介
實驗4.5FrameBuffer實驗
4.6V4L程序設計
4.6.1V4L概述
4.6.2V4L設備的體系結構
實驗4.6Linux視頻V4L驅動實驗
4.7OSS程序設計
4.7.1oSS概述
4.7.2OSS設備的體系結構
4.7.30SS驅動分析
4.7.4OSS用戶空間編程
實驗4.7Linux音頻OSS驅動實驗
綜合實驗三五子棋游戲的實現
第5章嵌入式Linux開源軟體移植與應用
5.1嵌入式WebServerGoAhead的移植與應用
5.1.1嵌入式web伺服器
5.1.2GoAhead介紹
5.1.3GoAhead在ARM平台上的移植
5.1.4頁面操作
實驗5.1嵌入式WebServerGoAhead實驗
5.2嵌入式WebServicegSOAP的移植與應用
5.2.1gSOAP介紹
5.2.2gSOAP裁剪
5.2.3gSOAP應用
實驗5.2WebServicegSOAP實驗
5.3嵌入式資料庫SQLite的移植與使用
5.3.1嵌入式資料庫
5.3.2SQLite介紹
5.3.3SQLite在ARM平台上的移植
5.3.4SQLite的使用
實驗5.3SQLite移植實驗
5.4播放器Mplayer的移植
5.4.1Mplayer介紹
5.4.2Mplayer在ARM平台上的移植
實驗5.4Mplayer到ARM平台上的移植
5.5ffmpeg應用:
5.5.1ffmpeg簡介
5.5.2ffmpeg在ARM上的移植
5.5.3ffmpeg命令應用實例
5.5.4ffmpeg中幾個重要的數據結構
5.5.5ffmpeg應用開發
實驗5.5ffmpeg移植與應用
5.6開源軟體移植的一般過程
5.6.1軟體移植的概念
5.6.2軟體移植過程
5.7JIME—phoneME移植
5.7.1phoneME簡介
5.7.2軟體移植過程與效果
5.8嵌入式瀏覽器konqueror移植
5.8.1konqueror簡介
5.8.2軟體移植過程與效果
綜合實驗四基於WebServiee的嵌入式計算器
第6章嵌入式Linux圖形用戶界面
6.1嵌入式GUI簡介
6.1.1嵌入式GUI的特點
6.1.2嵌入式GUI的種類
6.2嵌入式GUI—Qt
6.2.1Qt與Qt/Embedded簡介
6.2.2Qt的特點
6.2.3Qt的執行過程
6.2.4Qt的插槽機制
6.2.5一個完整的Qt程序
6.2.6QtDesigner介紹
實驗6.1Qt圖形界面相關實驗
6.3基於Qt技術的Qtopia
6.3.1Qtopia簡介
6.3.2Qtopia的功能
6.3.3Qtopia編程
實驗6.2Qtopia的移植以及編程
綜合實驗五電子點菜系統
第7章嵌入式Unux下的通信應用
7.1嵌入式Linux下的串口通信
7.1.1串口簡介
7.1.2串口編程
7.1.3串口編程應用實例
實驗7.1串口通信實驗
7.2嵌入式Linux網路編程
7.2.1網路通信
7.2.2Socket簡介
7.2.3網路編程
實驗7.2Socket相關程序設計
7.3嵌入式藍牙技術
7.3.1藍牙技術
7.3.2藍牙體系結構
7.3.3藍牙通信網路
7.3.4LinuxBluetooth軟體層
7.3.5USB適配器
實驗7.3藍牙相關實驗
7.4CAN匯流排
7.4.1CAN匯流排簡介
7.4.2CAN匯流排硬體特徵
7.4.3CAN控制器驅動
實驗7.4CAN匯流排實驗
第8章嵌入式系統硬體設計基礎與標准
8.1嵌入式系統的硬體組成
8.1.1嵌入式微處理器
8.1.2存儲器
8.1.3輸入/輸出設備
8.1.4通信與擴展介面
8.2硬體設計基礎知識
8.2.1計算機體系結構
8.2.2電子技術
8.2.3抗干擾技術
8.2.4印製電路板
8.3硬體設計中應注意的一些問題
8.3.1IC元件的選擇
8.3.2元件封裝設計
8.3.3PCB設計精度
8.3.4分離元件的正確使用
8.3.5高速PCB設計方法
8.3.6PCB設計的一般原則
實驗8.1常用模擬電路和數字電路原理
實驗8.22410—S電路原理圖閱讀
實驗8.32410—S所用晶元數據手冊閱讀
實驗8.4OMAP5910核心板電路原理
綜合實驗六基於OMAP的加密終端硬體設計
第9章OMAP5910與LinuxGateway
9.1OMAP5910體系結構
9.1.1MPU子系統
9.1.2DSP子系統
9.2LinuxDSPGateway
9.2.1DSPGateway的由來
9.2.2DSPGateway的Mailbox機制
9.2.3通信緩沖
9.2.4Mailbox命令協議
9.2.5DSPGateway的設備介面
實驗9.1OMAP910雙核間基本通信
9.3OMAP5910圖像處理
9.3.1圖片格式
9.3.2數字圖像演算法
實驗9.2OMAP圖像處理實驗
綜合實驗七基於OMAP的加密終端的實現(軟體部分)
第10章嵌入式Linux綜合項目實例
10.1基於嵌入式平台的電梯監控系統
10.1.1系統概述
10.1.2系統設計
10.1.3系統實現
10.1.4項目小結
10.2基於藍牙技術的嵌入式點菜系統
10.2.1系統概述
10.2.2系統設計
10.2.3系統實現
10.2.4項目小結
10.3基於WebSenrice的數字油田監控系統
10.3.1系統概述
10.3.2系統設計
10.3.3系統實現
10.3.4項目小結
10.4基於嵌入式與WebService的智能家居系統
10.4.1系統概述
10.4.2系統設計
10.4.3系統實現
10.4.4項目小結
10.5基於OMAP的音頻與視頻處理
10.5.1概述
10.5.2MPEG壓縮
10.5.3音視頻數據在雙處理器間的傳輸模塊設計
10.5.4音頻處理方案設計
10.5.5視頻處理方案設計
10.5.6項目小結
參考文獻
……
㈤ 嵌入式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等。
所以如果你要做嵌入式軟體開發的話,上面那些知識基本夠用了。