前言
嵌入式系統自20世紀70年代以來,至今已有30多年發展歷史。嵌入式系統大致經歷了四個發展階段。
(1)第一階段是以可編程序控制器系統為核心的研究階段;
(2)第二階段是以嵌入式中央處理器CPU為基礎,以簡單操作系統為核心的階段;
(3)第三階段是以嵌入式操作系統為標志的階段;
(4)第四階段是基于網絡操作的嵌入式系統發展階段。
近幾年,嵌入式系統技術得到了廣泛的應用和爆發性的發展,分布控制、無線傳感、數字化通信、云計算、可重構計算、多媒體網絡及應用等新興技術的出現為嵌入式產業的研究及應用注入了新的活力,而面向實時信號處理算法的DSP產品則向著高速度、高精度、低功耗的方向發展。隨著硬件實時性要求的提高,嵌入式系統的軟件規模也不斷擴大,逐漸形成了實時多任務操作系統(RTOS),并開始成為嵌入式系統的主流。這一階段嵌入式系統的主要特點是:操作系統的實時性得到了很大改善,已經能夠運行在各種不同類型的微處理器上,具有高度的模塊化和擴展性。此時的嵌入式操作系統已經具備了文件和目錄管理、設備管理、多任務、網絡、圖形用戶界面等功能,并提供了大量的應用程序接口,從而使得應用軟件的開發變得更加簡單。隨著互聯網應用的進一步發展,互聯網技術與信息家電、工業控制技術等日益緊密結合,嵌入式設備與互聯網的結合、物聯網終端系統成為嵌入式技術未來研究與應用的重點。近幾年中國嵌入式芯片和嵌入式軟件技術的突飛猛進,已成為世界眾多企業家的共識,而“中國制造”也推動了嵌入式的高速發展,同時也為中國嵌入式產業的發展提供了良好的機遇。因此普及嵌入式技術,加快嵌入式技術人才的培養迫在眉睫。
本書內容豐富,輔以圖表和代碼的講解,使思路更為清楚直觀,通俗易解。本書尤其強調實踐動手能力,本書的實驗都以“理論+在線仿真實踐”的方法貫穿始終,從簡單到復雜,循序漸進,層層深入。并且配有齊全的實例程序和完備的程序注釋,具有較強的實踐性和應用性。
本書以實際的開發板為線索,共12章,包括十個常見硬件接口編程,結合各種外圍接口電路原理和設計、接口硬件結構及時序、datasheet的理解,給出了調試通過的接口程序,并輔以JLINK/ULINK在線實時仿真調試。
第1章:嵌入式硬件概述 本章主要以ARM為例描述了嵌入式硬件,并對硬件電路的設計做出了具體的描述。設計一個電子產品需要三大步驟。硬件電話的設計很大程度上決定了驅動代碼的編寫,對已成品的硬件進行驅動編程,主要是對硬件電路圖的識別,即對框圖、原理圖、PCB圖、時序圖等的理解。
第2章:GPIO接口編程 本章主要介紹的是ARM通用的I/O端口GPIO。它是一組輸入引腳或輸出引腳,CPU對它們能夠進行存取。本章節用了兩個實驗:蜂鳴器和LED燈GPIO端口控制實驗,從硬件原理圖、數據手冊分析等來說明GPIO的用法,首先通過配置寄存器將其配置成輸入、輸出或者其他特殊功能模式,然后通過數據寄存器來控制端口輸入電壓的高低,從而達到控制所連接端口硬件的目的。
第3章:UART串口通信 本章主要介紹串口通信的原理及通信方式,UART的基本概念,串口通信最重要的參數等,并根據對UART通信原理,結合對UART相關寄存器的理解做出程序接口設計,實現對串口的收/發功能。
第4章:AD轉換接口 本章主要學習AD轉換的概念、分類及主要技術指標,AD轉換的四個主要過程:采樣、保持、量化和編碼,結合AD的硬件設計原理配置ADCCON寄存器,使能預配置比例因數,設置預配置比例因數值,配置AD轉換通道號,做出ADC程序的設計方案并實現。
第5章:中斷INT接口 本章首先介紹了中斷的概念,然后介紹了2440中斷相關寄存器的功能及配置,在異常中斷流程一節中,中斷處理函數的入口地址關聯在中斷向量表中。中斷發生時,系統硬件強制程序跳轉到了表中相關地址處,該地址是一個跳轉指令,跳轉到中斷函數地址解析程序IRQ_Handler,最終轉到中斷處理函數(SystemIrqHandler)。接著對中斷優先級進行了敘述。最后以內部中斷看門狗中斷定時器,和外部中斷鍵盤中斷的程序剖析了中斷的整個過程。
第6章:RTC實時時鐘 本章學習了為系統提供可靠時間的RTC模塊,RTC為運行的應用程序提供了一個時間基準。當前的日期和時間由一組時間寄存器提供,每秒更新一次,RTC的外圍電路簡單卻實用,RTC模塊有三種功能:產生時鐘滴答、實時計時和作為系統的觸發喚醒器。
第7章:觸摸屏接口 本章講述了人機交互較為重要的一種工具觸摸屏,首先對常見的幾種觸摸屏做了簡單的介紹,接著以電阻式觸摸屏為例對四線電阻式觸摸屏的物理結構及其等效電路、觸摸屏的接口原理及相關寄存器的配置方法進行了詳細講述,最后在理解觸摸屏相關數據手冊及觸摸屏中斷原理的基礎上對觸摸屏驅動進行了設計并講解了程序實現的整個過程。
第8章:LCD顯示屏接口 本文先對LCD顯示屏的發明及原理做了總體的介紹,接著對ARM芯片上的LCD控制器的邏輯進行了詳細的敘述,8.3節也是最重要的一節,對LCD中常見的種類TFT屏時序做了詳細的分析和圖解,并對根據TFT屏的時序對LCD控制器的配置做了說明及方法的介紹。8.4節中針對LCD控制器的配置實現對LCD屏的驅動及代碼。
第9章:IIC接口控制 本章主要介紹的是IIC接口,首先介紹IIC接口的概念及總線特點。接著對IIC控制器進行了講解,最后根據IIC的四種操作模式設計并實現了IIC程序。
第10章:SD卡接口控制 本章主要介紹的是SD卡接口,SD卡需要高速讀/寫,特設有兩個訪問接口:SD模式接口和SPI接口。其中SD接口是為高速專有設備而設計,使設備能對卡進行高速可靠的傳輸。
第11章:MMU內存管理單元 本章主要介紹的MMU,它負責虛擬地址到物理地址的映射,MMU使得每個用戶進程擁有自己獨立的地址空間,并通過內存訪問權限的檢查保護每個進程所用的內存不被其他進程破壞。MMU重點就在于地址映射:頁表的結構與建立、映射的過程。本章主要是理論部分,可作為MMU實現機制的參考。
第12章:ARM-Keil集成開發環境 本章主要介紹了ARM RealView MDK集成開發環境的使用,本書所有章節的實驗都是基于這個開發環境的,所以必須要熟練掌握REALVIEW MDK的配置、使用及相關功能,以及Keil MDK編譯器與JLINK/ULINK等仿真器的使用。
本書所配套的PPT、課程大綱、代碼等內容,可到華信教育資源網(www.hxedu.com.cn)免費下載。
在編寫本書的過程中,得到了中軟國際的很多領導、同事及朋友的支持和幫助。特別是CTO辦公室的各位專家同仁,在此表示感謝。由于作者知識所限,書中難免有不足之外,敬請廣大讀者海涵,并懇請賜正。
編者
- 數字道路技術架構與建設指南
- 硬件產品經理手冊:手把手構建智能硬件產品
- Learning Stencyl 3.x Game Development Beginner's Guide
- R Deep Learning Essentials
- Arduino BLINK Blueprints
- Java Deep Learning Cookbook
- 單片微機原理及應用
- Arduino項目開發:智能生活
- 微服務實戰(Dubbox +Spring Boot+Docker)
- 基于S5PV210處理器的嵌入式開發完全攻略
- The Reinforcement Learning Workshop
- 從企業級開發到云原生微服務:Spring Boot實戰
- Unreal Engine 4 AI Programming Essentials
- Spring微服務實戰(第2版)
- SOA架構:服務和微服務分析及設計(原書第2版)