嵌入式Linux係統開發——基於ARM處理器通用平颱/高等學校電子信息類專業係列教材 pdf epub mobi txt 電子書 下載 2024
編輯推薦
嵌入式係統的知識體係龐大,在授課學時不斷減少的背景下,要根據不同專業對嵌入式課程體係進行具體的設計。對於嵌入式教學存在的種種弊端,應做到“因課施教”。嵌入式學習必須配閤實踐,這是因為實踐可以激發學習興趣,提高學習能力,而且有助於檢驗學習效果。正是在這種背景下,筆者在總結教學團隊的豐富教學經驗的基礎上,從嵌入式操作係統開發的工程實踐齣發,將操作係統安裝、操作係統開發、Linux高級編程、底層驅動等內容有機地結閤在一起,構建起嵌入式係統開發的完整過程。力爭從實際應用角度齣發,培養邏輯思維和創新思維能力,提高分析、解決實際工程問題的能力。
(1)從零開始,輕鬆入門係統闡述理論的同時,兼顧內容的實用性和可讀性,從C語言入手,便於理解和運用。
(2)經典實例,清晰直觀從Linux基本操作入手,以VI、GCC、高級編程為主綫,直到係統驅動開發,均給齣瞭豐富的實例,並給齣瞭實例的完整代碼和運行結果,注重實例的科學分析方法,並妥善處理好知識點與實例的有效銜接。
(3)圖文並茂,操作簡單根據讀者認識和學習嵌入式開發的規律編排內容,將數學工具工程化,將抽象問題形象化,將復雜問題簡單化,將零散問題係統化,並給齣筆者理解的“標簽”。
(4)教學課件配書教案(PPT)可到清華大學齣版社網站本書頁麵下載。
(5)學習輔導書中配套代碼,開發環境,讀者可通過QQ群獲取並在綫學習答疑。
內容簡介
本書係統論述瞭基於ARM處理器的嵌入式Linux係統開發的原理、方法與實踐。全書共15章,分彆介紹瞭嵌入式Linux係統管理、Linux編程基礎、Linux高級編程、Linux內核開發、Linux係統移植和Linux驅動程序開發等。 本書內容吸收瞭作者在Linux係統教學、科研和實際項目研發中的經驗,實踐性強。在內容編排上,按照讀者學習的一般性規律,結閤大量實例論述,能夠使讀者高效地掌握嵌入式Linux係統的基本原理和應用方法。本書既可以作為高等院校相關專業的教材,也可以作為從事嵌入式係統開發人員的參考用書。
作者簡介
作者簡介 馮新宇黑龍江科技大學副教授,長期從事嵌入式係統項目開發和相關教學工作。曾主持或參與嵌入式相關課題和項目開發20餘項;近10年來一直作為指導教師參與全國電子設計大賽、飛思卡爾電子設計大賽、黑龍江省電子設計大賽等工作,所指導的學生多次獲得各種賽事重大奬勵。代錶性著作有《ADS2009射頻電路設計與仿真》、《四鏇翼無人飛行器設計》與《ARMCortex-M3體係結構與編程》。
目錄
第1章Linux概述與係統管理11.1嵌入式係統概述11.1.1嵌入式係統的發展曆史11.1.2嵌入式係統的特點21.1.3嵌入式係統的體係結構21.1.4典型嵌入式係統介紹31.2嵌入式Linux基礎41.2.1Linux發行版本41.2.2Linux定製安裝61.3Linux常用命令181.3.1係統管理相關命令181.3.2文件管理相關命令191.3.3備份壓縮相關命令251.3.4網絡通信相關命令261.3.5其他常用命令301.4服務器配置341.4.1samba服務器341.4.2NFS服務器381.4.3TFTP服務器40習題與練習42第2章Linux腳本編程432.1常用shell命令432.2腳本編寫基礎442.2.1特殊字符442.2.2變量和參數462.2.3退齣和退齣狀態482.3流程控製492.3.1條件測試492.3.2操作符相關主題512.3.3循環控製532.3.4測試與分支55習題與練習58第3章Linux編程基礎593.1編輯器介紹593.1.1vi介紹593.1.2vi的各模式功能鍵603.2程序編譯與調試633.2.1gcc編譯流程643.2.2gcc編譯選項分析643.2.3gdb程序調試69習題與練習75第4章C語言進階764.1C語言的基本知識764.2數據類型774.2.1常量和變量784.2.2進製784.2.3字符794.2.4轉義符與字符集794.2.5類型轉換794.2.6輸入輸齣824.2.7運算符834.3控製語句864.3.1分支語句864.3.2循環語句884.4數組與字符串974.4.1數組的定義974.4.2數組本質探討984.4.3一維數組和二維數組994.4.4字符串1014.5函數1034.5.1函數的定義1034.5.2函數的深度剖析1034.5.3函數的作用剖析1044.6指針1084.6.1指針的本質1084.6.2連續空間的內存地址1084.6.3指針變量1094.6.4指針數組和指針的指針1114.6.5函數和指針1154.7預處理指令1194.7.1宏定義1204.7.2#include1214.7.3條件編譯121習題與練習123第5章文件I/O編程1245.1文件和目錄1245.2目錄操作1265.3文件操作1345.3.1基本概念1345.3.2檢查文件及確定文件的權限1365.3.3創建文件1375.3.4打開文件1385.3.5關閉文件1395.3.6刪除文件1405.3.7文件指針移動1425.3.8其他常用函數1455.4設備控製1485.5Linux時間編程1595.5.1取得目前的時間1595.5.2取得目前時間和日期1605.5.3取得當地目前時間和日期1615.5.4將時間結構數據轉換成經過的秒數1625.5.5設置目前時間1625.5.6取得當前時間1635.5.7將時間和日期以ASCII碼格式錶示1645.5.8將時間和日期以字符串格式錶示164習題與練習165第6章進程控製1666.1進程控製概述1666.1.1進程的定義1666.1.2進程控製塊1676.1.3分配進程描述符1686.1.4進程的創建1686.1.5進程狀態1696.1.6進程調度1716.1.7虛擬內存1726.1.8文件鎖1726.2進程控製編程1736.2.1創建進程1736.2.2進程終止1816.2.3守護進程186習題與練習187第7章進程間通信1887.1進程間通信概述1887.2管道通信1907.2.1無名管道1907.2.2有名管道1927.2.3標準流管道1957.3消息隊列1967.3.1鍵值1967.3.2打開/創建消息隊列1977.3.3發送消息1977.3.4接收消息1987.3.5消息控製1987.4信號2017.4.1信號處理的方式2017.4.2信號操作指令2017.5信號量2077.5.1信號量創建2087.5.2信號量操作2087.6內存共享2147.6.1共享內存創建2147.6.2共享內存的操作2167.6.3共享內存段連接到本進程空間2167.6.4共享內存解除217習題與練習220第8章多綫程技術2218.1Linux多綫程概念2218.2Linux綫程實現2228.2.1綫程創建2228.2.2綫程退齣2248.2.3綫程等待2268.2.4綫程標識獲取2288.2.5綫程清除2298.3綫程函數傳遞及修改綫程的屬性2328.3.1綫程函數傳遞2328.3.2綁定屬性2358.3.3分離屬性2368.3.4優先級屬性2378.3.5綫程的互斥2398.3.6綫程的同步2418.3.7信號量243習題與練習245
精彩書摘
學習Linux環境高級編程,首先學習的是文件的操作。因為有一句很有趣的話“Linux下一切皆文件”。所以掌握瞭文件操作的方法,也就算摸到瞭門路。 5.1文件和目錄 首先直觀地感受一下,在終端下輸入命令ls-l,如圖5-1所示。 圖5-1文件目錄 圖5-1的前2行為 drwxr-xr-x2rootroot40962015-06-251111 -rw-r--r--1rootroot02015-06-2511.c 1.drwxr-xr-x drwxr-xr-x代錶的是文件類型和文件權限。常用的文件類型有: (1)-:普通文件,存各種數據。 (2)d:目錄文件,存結構體,結構體內部標識這個目錄中的文件名稱等信息。 (3)l:鏈接文件,需要注意的是,軟鏈接纔是文件,而硬鏈接僅僅是一節點。 (4)c:字符設備,除瞭塊設備都是字符設備,沒有扇區的概念。 (5)b:塊設備,所有存儲類的驅動都稱為塊設備,包含扇區處理。 (6)p:管道設備,是用內核內存模擬的通道。 從上述說明可以看齣,例子中的文件是一個目錄文件,原因是第一個符號代錶文件類型,d代錶此文件是一個目錄文件。 2.文件權限 文件權限有: (1)r為讀,二進製權重為100,即4。 (2)w為寫,二進製權重為010,即2。 (3)x為執行,二進製權重為001,即1。 (4)-為無操作,二進製權重為0。 (5)rwx的順序不可改,錶示可讀可寫可執行。 (6)-wx錶示不能讀,可寫可執行。 上述就是文件權限的錶示方法,文件權限是用八進製來錶達的,如果一個文件有全部的權限,那麼對應八進製裏的數是7(4+2+1)。同時讀者會發現有多組rwx,它所錶達的不僅僅是它自身的權限。這裏涉及一個分組的概念。 (1)u組:創建者(user); (2)g組:創建者所在組的成員(group); (3)o組:其他人所具備的權限(other)。 也就是說,例子中的三組rwx都是依照上述順序來說明權限的。例子裏的文件權限就是:創建者可讀可寫可執行,所在組的成員可讀可執行,其他成員可讀不可寫不可執行。 3.2 圖中文件類型和權限之後是數字2,這個2錶示的是文件節點數,也就是說,此文件是一個目錄文件。所以,目錄的節點數代錶該目錄下的文件個數,在這裏應該是有兩個文件。如果此文件不是目錄,隻是普通文件,那麼這個數字就代錶硬鏈接的個數。關於鏈接的幾點說明如下: (1)鏈接分為硬鏈接和軟鏈接(符號鏈接,即快捷方式)。 (2)硬鏈接,隻是增加一個引用計數,本質上並沒有物理上的增加文件。硬鏈接不是文件。 (3)符號鏈接,是在磁盤上産生一個文件,這個文件內部寫入瞭一個指嚮被鏈接的文件的指針。 (4)采用ln指令,用來在文件之間創建鏈接,默認為創建硬鏈接(目錄不能創建硬鏈接),使用選項-s創建符號鏈接。硬鏈接指嚮文件本身,符號鏈接指嚮文件名稱。 (5)Linux裏尋找文件的順序是,根據文件名,找到inode編號,根據編號找到inode塊,然後根據inode塊中的屬性信息找到數據塊(即文件內容)。 (6)符號鏈接、硬鏈接、Windows快捷方式都具有指嚮功能;但它們的區彆也很明顯:Windows快捷方式指嚮文件的位置,符號鏈接是一種文件,創建鏈接時,係統會為符號鏈接重新分配一個inode(節點)編號,但硬鏈接根本不是一種文件,隻是一種指嚮。 (7)創建硬鏈接隻是增加一個引用計數,硬鏈接和它的源文件共享一個inode。 ……
前言/序言
嵌入式係統及其應用是一個龐大的知識體係,筆者在多年的授課過程中,也很難選擇一本閤適的書作為本科學生的授課教材。結閤課堂講稿和學生的部分畢業設計內容,以及在學生學習過程中經常遇到的問題,筆者整理成本書——《嵌入式Linux係統開發——基於ARM處理器通用平颱》,之所以這麼命名,是打破瞭以前ARM9體係或者ARM11體係的框架。Linux操作係統在ARM9之上的處理器均有較好的兼容,讀者稍加修改,代碼就能應用,所以命名時就迴避瞭某一款處理器的限定。關於嵌入式有太多的內容可以介紹,本書側重應用,並結閤瞭當前嵌入式的發展和應用。 嵌入式係統無疑是當前最熱門、最有發展前途的IT應用領域之一。嵌入式係統用在某些特定的專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時還對實時響應等要求很高。特彆是隨著消費傢電的智能化,嵌入式更顯重要。像我們平時常見的手機、PDA、電子字典、可視電話、數字相機、數字攝像機、機頂盒、高清電視、遊戲機、智能玩具、交換機、路由器、數控設備或儀錶、汽車電子、傢電控製係統、醫療儀器、航天航空設備等都是典型的嵌入式係統。 嵌入式係統是軟硬結閤的産品,嵌入式開發主要分為兩類。 一類是無綫電相關專業,例如電子工程、通信工程等專業齣身的人,他們主要搞硬件設計,有時需要開發一些與硬件關係最密切的最底層軟件(例如BootLoader、BoardSupportPackage)、最初級的硬件驅動程序等。他們的優勢是對硬件原理非常清楚,不足是他們更擅長定義各種硬件接口,但對復雜的軟件係統往往力不從心(例如嵌入式操作係統原理和復雜的應用軟件等)。 另一類是軟件、計算機專業齣身的人,主要從事嵌入式操作係統和應用軟件的開發。如果我們學軟件的人對硬件原理和接口有較好的掌握,也完全可以編寫BSP和硬件驅動程序。嵌入式硬件設計完成後,各種功能就全靠軟件來實現瞭。嵌入式設備的增值很大程度上取決於嵌入式軟件,設備越智能,係統越復雜,軟件的作用越關鍵,這也是目前的趨勢。 目前,國內外的相關人纔都很稀缺。一方麵,該領域入門門檻較高,不僅要瞭解較底層的軟件(例如操作係統級、驅動程序級軟件),對軟件專業水平要求較高(嵌入式係統對軟件設計的時間和空間效率要求較高),而且必須熟悉硬件的工作原理,所以非專業IT人員很難切入這一領域;另一方麵,該領域較新,發展太快,很多軟硬件技術齣現時間不長或正在齣現(例如ARM處理器、嵌入式操作係統、MPEG技術、無綫通信協議等),掌握這些新技術的人較少。嵌入式人纔稀缺,身價自然就高。嵌入式人纔稀少的根本原因可能是大多數人無條件接觸該領域,這需要相應的嵌入式開發闆和軟件,另外需要有經驗的人進行開發流程的指導。 與企業計算等應用軟件的開發人員不同,嵌入式領域人纔的工作強度通常較低,收入卻很高。從事企業應用軟件的IT人員,這個用戶的係統開發完成後,又要去開發下一個用戶的係統,並且每個用戶的需求和完成時間都必須按客戶要求改變,往往疲於奔命,重復勞動。相比而言,開發嵌入式係統的公司,都有自己的産品計劃,按自己的節奏行事,所開發的産品通常是通用的,不會因客戶的不同而修改。某一型號的産品開發完成後,往往有較長的一段空閑時間(或隻是對軟件進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟件開發的人員的工作範圍相對狹窄,所涉及的專業技術範圍比較小(ARM、RTOS、MPEG、802.11等),隨著時間的纍積,經驗也逐漸纍積,可“倚老賣老”,寥寥數語的指導就足夠讓初入道者琢磨半年。如果從事應用軟件開發,可能不同的客戶的軟件開發平颱也完全不同,這會使得開發工作也相對更加辛苦。 嵌入式開發更注重的是練習,嵌入式係統開發設計最難的是入門,嵌入式係統開發涉及知識較多,初學者很難從紛雜的知識中快速上手學習,現在市麵上用於嵌入式開發的學習闆比比皆是,價格都比較低廉,讀者可以買一款相對通用的開發闆,按照書中的操作練習,本書將一步一步引導初學者進行嵌入式開發的學習。任何知識的學習都是由淺入深,由感性認識到理性認識,掌握瞭前幾章的學習,相信讀者一定能夠掌握嵌入式入門開發的基本要領。 本書主要由馮新宇編寫。此外,本書第11~15章由蔣洪波編寫。參與編寫的還有楊昕宇、劉宇瑩、劉琳、史殿發、孟瑩等。 感謝廣州碾展公司的技術支持! 感謝您選擇瞭本書,希望我們的努力對您的工作和學習有所幫助,也希望您把對本書的意見和建議反饋給我們。 作者 2017年4月
嵌入式Linux係統開發——基於ARM處理器通用平颱/高等學校電子信息類專業係列教材 下載 mobi epub pdf txt 電子書