本書是面向嵌入式Linux學(xué)習(xí)和產(chǎn)品開發(fā)的入門教程,分3篇,共18章,圍繞嵌入式Linux產(chǎn)品開發(fā)的應(yīng)用編程展開,內(nèi)容涵蓋Linux操作系統(tǒng)介紹、安裝和基本使用、嵌入式Linux開發(fā)平臺(tái)以及
嵌入式Linux的應(yīng)用編程.全面介紹了嵌入式Linux產(chǎn)品應(yīng)用開發(fā)的方方面面,包括應(yīng)用基礎(chǔ)、文件和I/O操作、進(jìn)程和線程、外圍硬件接口編程、串口編程、網(wǎng)絡(luò)編程、Qt編程和Shell編程.
本書由淺入深、結(jié)構(gòu)合理、圖文并茂,可操作性強(qiáng),讀者可跟著一步步進(jìn)行操作和學(xué)習(xí),非常適合
嵌入式Linux開發(fā)初級(jí)工程師及準(zhǔn)備往嵌入式Linux方向發(fā)展的電子工程師和單片機(jī)工程師使用,也可作為高校非計(jì)算機(jī)專業(yè)高年級(jí)學(xué)生學(xué)習(xí)嵌入式Linux的參考教材.
時(shí)光荏苒,白駒過(guò)隙.如果時(shí)光能夠倒流,回到10年前,對(duì)于那時(shí)的嵌入式工程師,掌握1~2種單片機(jī),能用匯編或者C編寫應(yīng)用程序,就是合格的嵌入式工程師;倒回到5年前,能掌握1~2種ARM 處理器,能用C編寫應(yīng)用程序,同樣也是合格的嵌入式工程師.而如今,如果僅僅具備上述技能,恐怕很難成為企業(yè)所需要的嵌入式技術(shù)核心人才,這絕非危言聳聽,筆者就曾見過(guò)有的企業(yè)招聘硬件工程師要求能寫Linux驅(qū)動(dòng),盡管這只是少數(shù)個(gè)案,但至少反映了一種趨勢(shì).時(shí)代的進(jìn)步迫使我們不得不學(xué)習(xí)和掌握新的技能,以跟上時(shí)代的腳步,適應(yīng)企業(yè)的發(fā)展.掌握一種嵌入式操作系統(tǒng),幾乎成為嵌入式工程師的標(biāo)配技能.在新時(shí)期如何轉(zhuǎn)型,也成為擺在很多嵌入式工程師面前的一道難題.嵌入式系統(tǒng)多彩紛呈,一直角逐不斷,近些年嵌入式Linux勢(shì)頭強(qiáng)勁,成為事實(shí)上的熱門.
市面上已經(jīng)有很多Linux或者嵌入式Linux的書籍,可謂汗牛充棟,但能夠讓初學(xué)者快速掌握嵌入式Linux的“葵花寶典”不多.也正因?yàn)榇?很多人覺得嵌入式Linux很難,也讓不少人望而卻步.本書正是為破解這樣的困局而寫,從浩瀚的Linux知識(shí)海洋中,精挑細(xì)選,將必要的、最有用的知識(shí)點(diǎn)呈現(xiàn)出來(lái).本書不求讓讀者能夠精通嵌入式Linux,只求能幫助讀者快速進(jìn)入嵌入式Linux的大門.所謂“師傅領(lǐng)進(jìn)門,修行在個(gè)人”;本書也不奢望能讓讀者學(xué)到嵌入式Linux的全部,只希望能成為嵌入式工程師往嵌入式Linux道路上轉(zhuǎn)型的領(lǐng)路人.Linux海洋浩瀚無(wú)垠,嵌入式Linux也是廣袤無(wú)邊,在嵌入式Linux的世界里,學(xué)習(xí)只有起點(diǎn),沒(méi)有終點(diǎn).
本書由多位具有多年嵌入式Linux工作經(jīng)驗(yàn)的資深工程師編寫,與工程應(yīng)用緊密結(jié)合,具有以下特色:
取舍有度,針對(duì)性強(qiáng).從始至終都圍繞嵌入式Linux開發(fā)而展開,拋開無(wú)關(guān)內(nèi)容.Linux包羅萬(wàn)象,進(jìn)行Linux相關(guān)開發(fā),如果沒(méi)有很強(qiáng)的針對(duì)性和目的性,很容易在Linux浩淼的海洋中迷失,如何從中獲取最有用的知識(shí)并用于學(xué)習(xí)和產(chǎn)品開發(fā),這需要有人指引.本書就可以提供這樣的指引.例如在介紹Linux命令部分,僅僅針對(duì)性地介紹了嵌入式Linux開發(fā)的常用命令,而不是像一般書籍那樣介紹全部的Linux操作命令.
緊貼實(shí)際,實(shí)用性強(qiáng).本書所介紹的全部知識(shí)點(diǎn)以及工具,都能在實(shí)際應(yīng)用中發(fā)揮有效作用,有不少內(nèi)容是筆者多年開發(fā)經(jīng)驗(yàn)的積累總結(jié).例如,本書介紹Linux的命令,并非遵循常規(guī)介紹方式,對(duì)命令的各種用法進(jìn)行逐一介紹,而是根據(jù)實(shí)際應(yīng)用,介紹最實(shí)用的方法.
圖文并茂,可讀性強(qiáng).本書插圖分兩類,一類用于輔助內(nèi)容理解,另一類用于直觀顯示實(shí)際操作和結(jié)果.配備的插圖與內(nèi)容相得益彰,極大增強(qiáng)了可讀感和可讀性.
本書分3篇共18章,各章節(jié)內(nèi)容安排如下:
第一篇Linux基礎(chǔ),包括第1~6章,是進(jìn)行嵌入式Linux開發(fā)的基礎(chǔ),介紹了Linux操作系統(tǒng)、安裝和使用,還介紹了Vi編輯器以及嵌入式Linux開發(fā)環(huán)境的搭建.
第二篇EasyARM i.MX283A開發(fā)平臺(tái),包括第7~9章,介紹本書實(shí)際的操作平臺(tái),包括平臺(tái)介紹、基本操作和系統(tǒng)固件燒寫等內(nèi)容.第三篇Linux應(yīng)用編程,包括第10~18章,是本書的重點(diǎn),全方位闡述了嵌入式Linux應(yīng)用編程,內(nèi)容涵蓋LinuxC編程、文件I/O、Linux進(jìn)程和線程、外圍硬件編程、串口編程、網(wǎng)絡(luò)編程、Qt編程以及Shell編程等方面.參與本書規(guī)劃和編寫的人員還有陳錫炳、張波、彭國(guó)文、華啟延、張展威和沈桂廷等,在此一并表示感謝.
Linux是一個(gè)誕生、發(fā)展和壯大于網(wǎng)絡(luò)的操作系統(tǒng),網(wǎng)絡(luò)上有無(wú)窮無(wú)盡的參考資料,本書在編寫過(guò)程中也不可避免地參考或者引用了其中的內(nèi)容,由于無(wú)法追溯到原作者,只能在此表示感謝.
由于編者水平有限,書中難免存在不足和錯(cuò)誤,還望讀者來(lái)信進(jìn)行批評(píng)指正.
周立功
2015年11月21日
第一篇Linux基礎(chǔ)
第1章Linux操作系統(tǒng)簡(jiǎn)介
1.1Linux內(nèi)核
1.1.1簡(jiǎn)介
1.1.2特點(diǎn)
1.1.3內(nèi)核版本號(hào)
1.1.4組成部分
1.2Linux發(fā)行版
1.3嵌入式Linux
1.3.1嵌入式Linux的特點(diǎn)
1.3.2嵌入式Linux的產(chǎn)品形態(tài)
第2章安裝Linux操作系統(tǒng)
2.1獲得Linux環(huán)境的三種方式
2.2發(fā)行版選擇和ISO下載
2.3VMwarePlayer軟件
2.3.1下載和安裝
2.3.2設(shè)置虛擬化支持
2.4使用現(xiàn)成的虛擬機(jī)
2.5創(chuàng)建和配置虛擬機(jī)
2.5.1創(chuàng)建虛擬機(jī)
2.5.2虛擬機(jī)設(shè)置
2.6安裝Ubuntu
2.6.1實(shí)體機(jī)安裝前準(zhǔn)備
2.6.2虛擬機(jī)安裝前準(zhǔn)備
2.6.3正式安裝Ubuntu
2.7初識(shí)Ubuntu
2.7.1Ubuntu桌面
2.7.2輸入法
2.7.3系統(tǒng)設(shè)置
2.7.4搜索軟件和文件
2.7.5打開終端
2.7.6安裝軟件
第3章開始使用Linux
3.1LinuxShell
3.1.1Shell是什么
3.1.2Shell的種類和特點(diǎn)
3.2Linux常見命令
3.2.1導(dǎo)航命令
3.2.2目錄操作命令
3.2.3文件操作命令
3.2.4網(wǎng)絡(luò)操作命令
3.2.5安裝和卸載文件系統(tǒng)
3.2.6使用內(nèi)核模塊和驅(qū)動(dòng)
3.2.7重啟和關(guān)機(jī)
3.2.8其他命令
3.3Shell文件
3.4Linux環(huán)境變量
3.4.1環(huán)境變量
3.4.2修改環(huán)境變量
第4章Linux文件系統(tǒng)
4.1Linux目錄結(jié)構(gòu)
4.1.1Linux目錄樹
4.1.2Linux目錄樹標(biāo)準(zhǔn)
4.2Linux的文件
4.2.1Linux文件結(jié)構(gòu)
4.2.2Linux文件名稱
4.2.3文件類型
4.3Linux文件系統(tǒng)
4.3.1Ext3文件系統(tǒng)特點(diǎn)
4.3.2Ext4文件系統(tǒng)特點(diǎn)
4.3.3其他文件系統(tǒng)
第5章Vi編輯器
5.1Vi/Vim編輯器
5.2Vi的模式
5.3Vim的安裝
5.4啟動(dòng)和關(guān)閉Vi
5.5光標(biāo)移動(dòng)
5.6文本編輯
5.6.1文本輸入
5.6.2文本處理
5.7配置Vi
5.8文件對(duì)比
第6章嵌入式Linux開發(fā)環(huán)境構(gòu)建
6.1嵌入式Linux開發(fā)模型
6.1.1交叉編譯
6.1.2交叉編譯器
6.2安裝交叉編譯器
6.2.1解壓工具鏈壓縮包
6.2.2設(shè)置環(huán)境變量
6.3SSH服務(wù)器
6.3.1SSH能做什么
6.3.2安裝SSH服務(wù)器
6.3.3測(cè)試SSH服務(wù)
6.3.4用Putty測(cè)試
6.3.5用SSHSecureShell測(cè)試
6.4NFS服務(wù)器
6.4.1NFS能做什么
6.4.2安裝NFS軟件包
6.4.3添加NFS共享目錄
6.4.4啟動(dòng)NFS服務(wù)
6.4.5測(cè)試NFS服務(wù)器
6.5TFTP服務(wù)器
6.5.1TFTP能做什么
6.5.2安裝配置TFTP軟件
6.5.3配置TFTP服務(wù)器
6.5.4啟動(dòng)TFTP服務(wù)
6.5.5測(cè)試TFTP服務(wù)器
第二篇EasyARMi.MX283A開發(fā)平臺(tái)
第7章EasyARMi.MX283A開發(fā)套件介紹
7.1開發(fā)套件簡(jiǎn)介
7.2硬件資源
7.3軟件資源
7.4開發(fā)所需配件
7.5產(chǎn)品組裝
7.6AP283Demo擴(kuò)展板
7.6.1硬件特性
7.6.2外設(shè)接口布局
第8章EasyARMi.MX283A入門實(shí)操
8.1開機(jī)和登錄
8.1.1啟動(dòng)方式設(shè)置
8.1.2供電連接
8.1.3串口硬件連接
8.1.4Windows環(huán)境串口登錄
8.1.5Linux環(huán)境串口登錄
8.2關(guān)機(jī)和重啟
8.3查看系統(tǒng)信息
8.3.1查看系統(tǒng)內(nèi)核版本
8.3.2查看內(nèi)存使用情況
8.3.3查看磁盤使用情況
8.3.4查看CPU等的信息
8.4設(shè)置開機(jī)自動(dòng)啟動(dòng)
8.5加載驅(qū)動(dòng)模塊
8.5.1在Shell終端上加載和使用驅(qū)動(dòng)模塊
8.5.2在腳本文件中加載和使用驅(qū)動(dòng)模塊
8.6網(wǎng)絡(luò)設(shè)置
8.7通過(guò)SSH登錄系統(tǒng)
8.8TF卡的使用
8.9U盤的使用
8.10USBDevice的使用
8.10.1把TF卡作為虛擬U盤的儲(chǔ)存空間
8.10.2使用普通文件作為虛擬U盤的存儲(chǔ)空間
8.11LED使用
8.11.1LED的操作接口
8.11.2觸發(fā)條件設(shè)置
8.12蜂鳴器的使用
8.13LCD背光控制
8.14觸摸屏的校準(zhǔn)
8.15GPIO操作
8.16進(jìn)階操作
8.16.1掛載NFS目錄
8.16.2使用NFS根文件系統(tǒng)
8.16.3使用TFTP啟動(dòng)內(nèi)核
8.16.4內(nèi)存文件系統(tǒng)
第9章系統(tǒng)固件的燒寫
9.1NandFlash存儲(chǔ)器分區(qū)
9.2燒寫流程圖
9.3格式化NandFlash
9.3.1通過(guò)USBBoot引導(dǎo)格式化NandFlash
9.3.2通過(guò)SDBoot方式格式化NandFlash
9.4TF卡燒寫方案
9.4.1TF卡燒寫用的固件
9.4.2制作TF啟動(dòng)卡
9.4.3固件燒寫步驟
9.5USB燒寫方案
9.6使用網(wǎng)絡(luò)升級(jí)內(nèi)核或文件系統(tǒng)
9.6.1網(wǎng)絡(luò)升級(jí)用的固件
9.6.2升級(jí)步驟
9.6.3故障排除
第三篇Linux應(yīng)用編程
第10章LinuxC編程環(huán)境
10.1GCC
10.1.1GCC簡(jiǎn)介
10.1.2GCC工具軟件
10.1.3GCC基本使用方法
10.1.4GCC編譯控制選項(xiàng)
10.1.5創(chuàng)建靜態(tài)庫(kù)和共享庫(kù)
10.1.6armlinuxgcc
10.2GNUmake
10.2.1make和GNUmake
10.2.2給hello.c編寫一個(gè)Makefile
10.2.3Makefile的規(guī)則
10.2.4make命令
10.3GDB
10.3.1GDB介紹
10.3.2GDB基本命令
10.3.3GDB調(diào)試范例
10.3.4GDB遠(yuǎn)程調(diào)試
10.3.5GDB圖形前端DDD
10.4用于C/C++語(yǔ)言的EclipseIDE
10.4.1Eclipse簡(jiǎn)介
10.4.2安裝用于C/C++語(yǔ)言的EclipseIDE
10.4.3啟動(dòng)Eclipse
10.4.4創(chuàng)建C工程
10.4.5本地編譯和調(diào)試
10.4.6交叉編譯和遠(yuǎn)程調(diào)試
10.4.7Eclipse中的GCC設(shè)置
10.4.8導(dǎo)入已有的工程文件
10.5Windows下開發(fā)Linux應(yīng)用程序
10.5.1安裝交叉編譯器
10.5.2安裝JDK
10.5.3安裝用于C/C++Developers的EclipseIDE
10.5.4啟動(dòng)Eclipse
10.5.5創(chuàng)建C工程
10.5.6交叉編譯工程
10.5.7建立遠(yuǎn)程SSH連接
10.5.8遠(yuǎn)程調(diào)試
第11章Linux文件I/O
第12章進(jìn)程與進(jìn)程間通信
第13章Linux多線程編程
第14章嵌入式GUI編程
第15章特殊硬件接口編程
第16章Linux串口編程
第17章C語(yǔ)言網(wǎng)絡(luò)編程入門
第18章Shell編程初步
參考文獻(xiàn)
a