第2版前言
近年來,“嵌入式繫統原理及應用”課程在全國多所高校都有開設,我們編寫的最早的一本教材《ARM9嵌入式開發基礎與實例進階》在2012年由清華大學出版社出版,本書也是在此基礎上經過多年的教學和科研積累重新編寫完成的。“嵌入式繫統原理及應用”課程在不同的學校,教學內容差異很大,授課的側重點也不同,如單片機(51、STM32)、微機原理、操作繫統都可以歸到嵌入式繫統範疇。典型的嵌入式產品開發涉及內容很廣,一本書很難覆蓋。從近幾年學生的就業情況來看,嵌入式應用軟件開發、驅動開發、硬件設計的工作崗位較多,而且對應的領域呈現專業細分趨勢。基於此,在教學過程中我們試圖給學生一個全面的學習線路,讓學生沿著這條線路學習,深入了解嵌入式領域。傳統的嵌入式開發包括硬件設計、板級支持、應用程序開發、驅動程序開發等。
本書的內容主線:嵌入式操作繫統Ubuntu的使用→應用程序開發→內核→簡單驅動程序開發。因為學時限制,對於大部分開設該課程的院校,其授課內容隻能到第9章網絡編程,這些內容相當於嵌入式繫統學習的入門知識。而後面的內容,如內核、驅動程序開發,對於嵌入式繫統整個體繫又非常重要。通過前9章的課堂學習,部分學生覺得適合學習這門課,想繼續該領域的研究,這些學生可以利用開發板完成內核驅動等相關知識的學習,掌握其核心內容。這次改版刪除了比較難的知識點:塊設備驅動和網絡設備驅動。這些知識點涉及內容較多,限於篇幅,無法講述清楚,對於已經熟練掌握了字符設備驅動的學生建議參考更為專業的資料學習。
本書第2版與第1版相比,主要的改動如下:一是操作繫統由“紅帽5”改為Ubuntu操作繫統,目前Ubuntu操作繫統在實際應用中更為普遍,支持也更友好,本書中所有的代碼均用Ubuntu重新編譯,同樣適用於不同的ARM處理器平臺;二是所有的代碼在i.MX8平臺驗證通過,該平臺由北京博創智聯科技有限公司提供,i.MX8平臺屬於嵌入式人工智能教學科研平臺,對於嵌入式的後續學習,如深度學習、人工智能和算法相關的課程都可以使用;三是結合現代教學手段講解,書中重要知識點通過微課視頻的方式呈現,讓初學者快速上手,同時還提供程序代碼、教學大綱、教學課件、開源工具、實驗指導等配套 資源。
嵌入式繫統開發涉及內容較多,隻要堅持學習,有疑問之處通過多種方式解決,舉一反三,相信一定能夠掌握。
本書第1~5章由蔣洪波編寫,第6~9章由程坤編寫,第10~14章由馮新宇編寫,全書由馮新宇負責統編,第4~9章視頻講解內容由程坤錄制完成,其他視頻內容由馮新宇錄制完成。
在本書再版過程中得到了北京博創智聯科技有限公司的大力支持,該公司提供了全套的實驗平臺,感謝蔣輝軍研發總監的技術支持,陸海軍總經理、張經緯副總經理的協調配合。特別感謝清華大學出版社盛東亮編輯多年給予的支持。
感謝廣大讀者的支持,希望本書對您的學習和工作有所幫助,也希望您把對本書的意見和建議反饋給我們。
作 者
2023年10月
第1版前言
嵌入式繫統及其應用是一個龐大的知識體繫,筆者在多年的授課過程中,也很難選擇一本合適的書作為本科生的授課教材。結合課堂講稿和學生的部分畢業設計內容,以及在學生學習過程中經常遇到的問題,筆者整理成本書——《嵌入式Linux繫統開發——基於ARM處理器通用平臺》,之所以這麼命名,是打破了以前ARM9體繫或者ARM11體繫的框架。Linux操作繫統在ARM9之上的處理器均有較好的兼容,讀者稍加修改,代碼就能應用,所以命名時就回避了某一款處理器的限定。關於嵌入式有太多的內容可以介紹,本書側重應用,並介紹了當前嵌入式的發展。
嵌入式繫統無疑是當前熱門、很有發展前途的IT應用領域。嵌入式繫統用在某些特定的專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,並且對成本很敏感,有時還對實時響應等要求很高。特別是隨著消費家電的智能化,嵌入式更突顯重要。像我們平時常見的手機、PDA、電子字典、可視電話、數字相機、數字攝像機、機頂盒、高清電視、遊戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制繫統、醫療儀器、航空航天設備等都是典型的嵌入式繫統。
嵌入式繫統是軟硬件結合的產品,從事嵌入式開發的人員主要分為如下兩類。
一類是無線電相關專業出身的人員,如電子工程、通信工程等專業出身的人員,主要從事硬件設計,有時需要開發一些與硬件關繫密切的底層軟件(如BootLoader、Board Support Package)、初級的硬件驅動程序等。他們的優勢是對硬件原理非常清楚,不足是他們更擅長定義各種硬件接口,但對復雜的軟件繫統往往力不從心(如嵌入式操作繫統原理和復雜的應用軟件等)。
另一類是軟件、計算機專業出身的人員,主要從事嵌入式操作繫統和應用軟件的開 發。如果學軟件的人員對硬件原理和接口有較好的掌握,也完全可以編寫BSP和硬件驅動程序。嵌入式硬件設計完成後,各種功能就全靠軟件來實現。嵌入式設備的增值很大程度上取決於嵌入式軟件,設備越智能,繫統越復雜,軟件的作用也就越關鍵,這是目前的發展趨勢。
目前,國內外嵌入式的相關人纔都很稀缺。一方面,該領域入門門檻較高,不僅要了解較底層的軟件(如操作繫統級、驅動程序級軟件),對軟件專業水平要求較高(如嵌入式繫統對軟件設計的時間和空間效率要求較高),而且還必須熟悉硬件的工作原理,所以非專業IT人員很難切入這一領域;另一方面,該領域較新,發展太快,很多軟、硬件技術出現時間不長或正在出現(如ARM處理器、嵌入式操作繫統、MPEG技術、無線通信協議等),掌握這些新技術的人較少。嵌入式人纔稀缺的根本原因可能是大多數人無條件接觸該領 域,這需要相應的嵌入式開發板和軟件,另外需要有經驗的人員進行開發流程的指導。
與企業計算等應用軟件的開發人員不同,嵌入式領域人纔的工作強度通常較低,收入卻很高。而從事企業應用軟件的IT人員,開發完這個用戶的繫統,又要去開發下個用戶的繫統,並且每個用戶的需求和完成時間都必須按客戶要求改變,往往疲於奔命,重復勞動。相比而言,開發嵌入式繫統的公司,都有自己的產品計劃,按自己的節奏行事,所開發的產品通常是通用的,不會因客戶的不同而修改(或隻是對軟件進行一些小修補)。某一型號的產品開發完成後,往往有較長的一段空閑時間,可進行充電和休整。另外,從事嵌入式軟件開發的人員的工作範圍相對狹窄,所涉及的專業技術範圍比較小(如ARM、RTOS、MPEG、802.11等),隨著時間的累積,經驗也逐漸累積,寥寥數語的指導就足夠讓初學者琢磨半年。如果從事應用軟件開發,可能不同的客戶的軟件開發平臺也完全不同,這會使得開發工作也相對更加辛苦。
嵌入式開發更注重的是練習,而嵌入式繫統開發設計最難的是入門,所涉及知識較多,初學者很難從紛雜的知識中快速上手學習,現在市面上用於嵌入式開發的學習板比比皆是,價格都比較低廉,讀者可以購買一款相對通用的開發板,按照書中的操作練習,一步一步進行嵌入式開發的學習。任何知識的學習都是由淺入深,由感性認識到理性認識,掌握了本書的內容,相信讀者一定能夠掌握嵌入式入門開發的基本要領。
本書主要由馮新宇編寫。此外,第11~15章由蔣洪波編寫。參與編寫的還有楊昕宇、劉宇瑩、劉琳、史殿發、孟瑩等。
感謝廣州碾展公司的技術支持!感謝您選擇了本書,希望我們的努力對您的工作和學習有所幫助,也希望您把對本書的意見和建議反饋給我們。
作 者
2017年4月