內嵌作業系統: ARM Linux驅動程式開發動手做 | 誠品線上

內嵌作業系統: ARM Linux驅動程式開發動手做

作者 左忠凱
出版社 聯合發行股份有限公司
商品描述 內嵌作業系統: ARM Linux驅動程式開發動手做:【豐富實驗內容】【完整Linux系統燒錄】嵌入式Linux開發環境架設、CortexA7架構及ARM組合語言MX6U、STM32之LED燈、啟動方

內容簡介

內容簡介 【豐富實驗內容】 【完整Linux系統燒錄】  嵌入式Linux開發環境架設、CortexA7架構及ARM組合語言  MX6U、STM32之LED燈、啟動方式  C語言版本LED燈、STM32驅動開發  SDK移植、BSP專案管理、蜂嗚器、按鍵輸入實驗  主頻和時脈設定、GPI中斷實驗、EPIT計時、高精度延遲時間  UART及序列埠格式移植、DDR3實驗  RGB LCD顯示、RTC即時時脈、I2C實驗、SPI實驗  多點電容觸控式螢實驗,LCD背光調節、ADC實驗  u-boot使用、Makefile詳解、啟動流程、u-boot移植、圖形化原理  Linux Makefile詳解、核心啟動流程、核心移植  Linux root檔案系統建置(BusyBox) 本書一共分兩篇,每篇對應一個不同的階段。第一篇主要是基本常識及最重要的裸機開發,從本篇正式開始開發板的學習。透過數十個裸機常式來幫助讀者了解I.MX6ULL這顆CPU,為以後的Linux驅動開發做準備。讀者可以掌握在Ubuntu下進行ARM開發的方法。第二篇則是系統移植,講解如何將uboot、Linux和root檔案系統移植到開發板上,為後面的Linux驅動開發做準備。把uboot、Linux核心和root檔案系統都在開發板上移植好以後,就可以開始Linux驅動開發了。 Linux最重要的三大類驅動程式,包括字元裝置驅動、區塊裝置驅動和網路裝置驅動,本書都有完整的範例說明,是從事內嵌式Linux開發者最想看到的內容。

作者介紹

作者介紹 左忠凱(左盟主) 正點原子Linux總監,十年嵌入式開發工作經驗,主要研究方向為ARM內核的MCU以及MPU的開發工作,參與多款Cortex-A M內核芯片的研發。擁有豐富的RTOS以及嵌入式Linux開發經驗,參與編寫並出版多本嵌入式開發書籍,並且錄製了大量的嵌入式學習影片,深受廣大讀者好評。

產品目錄

產品目錄 第一篇裸機開發 第1章開發環境架設 1.1Ubuntu和Windows檔案互傳 1.2Ubuntu下NFS和SSH服務開啟 1.3Ubuntu交叉編譯工具鏈安裝 1.4Visual Studio Code軟體的安裝和使用 1.5CH340序列埠驅動安裝 1.6MobaXterm軟體安裝和使用 第2章Cortex-A7 MPCore架構 2.1Cortex-A7 MPCore簡介 2.2Cortex-A處理器執行模型 2.3Cortex-A暫存器組 第3章ARM組合語言基礎 3.1GNU組合語言語法 3.2Cortex-A7常用組合語言指令 第4章組合語言LED燈實驗 4.1I.MX6U GPIO詳解 4.2硬體原理分析 4.3實驗程式撰寫 4.4編譯、下載和驗證 第5章I.MX6U啟動方式詳解 5.1啟動方式選擇 5.2BOOT ROM初始化內容 5.3啟動裝置 5.4鏡像燒錄 第6章C語言版LED燈實驗 6.1C語言版LED燈簡介 6.2硬體原理分析 6.3實驗程式撰寫 6.4編譯、下載和驗證 第7章模仿STM32驅動開發格式實驗 7.1模仿STM32暫存器定義 7.2硬體原理分析 7.3實驗程式撰寫 7.4編譯、下載和驗證 第8章官方SDK移植實驗 8.1官方SDK移植簡介 8.2硬體原理分析 8.3實驗程式撰寫 8.4編譯、下載和驗證 第9章BSP專案管理實驗 9.1BSP專案管理簡介 9.2硬體原理分析 9.3實驗程式撰寫 9.4編譯、下載和驗證 第10章蜂鳴器實驗 10.1主動蜂鳴器簡介 10.2硬體原理分析 10.3實驗程式撰寫 10.4編譯、下載和驗證 第11章按鍵輸入實驗 11.1按鍵輸入簡介 11.2硬體原理分析 11.3實驗程式撰寫 11.4編譯、下載和驗證 第12章主頻和時脈設定實驗 12.1I.MX6ULL時脈系統詳解 12.2硬體原理分析 12.3實驗程式撰寫 12.4編譯、下載和驗證 第13章GPIO中斷實驗 13.1Cortex-A7中斷系統詳解 13.2硬體原理分析 13.3實驗程式撰寫 13.4編譯、下載和驗證 第14章EPIT計時器實驗 14.1EPIT計時器簡介 14.2硬體原理分析 14.3實驗程式撰寫 14.4編譯、下載和驗證 第15章計時器按鍵消抖實驗 15.1計時器按鍵消抖簡介 15.2硬體原理分析 15.3實驗程式撰寫 15.4編譯、下載和驗證 第16章高精度延遲時間實驗 16.1高精度延遲時間簡介 16.2硬體原理分析 16.3實驗程式撰寫 16.4編譯、下載和驗證 第17章UART序列埠通訊實驗 17.1I.MX6ULL序列埠通訊簡介 17.2硬體原理分析 17.3實驗程式撰寫 17.4編譯、下載和驗證 第18章序列埠格式化函數移植實驗 18.1序列埠格式化函數移植簡介 18.2硬體原理分析 18.3實驗程式撰寫 18.4編譯、下載和驗證 第19章DDR3實驗 19.1DDR3記憶體簡介 19.2DDR3關鍵時間參數 19.3I.MX6ULL MMDC控制器簡介 19.4ALPHA開發板DDR3L原理圖 19.5DDR3L初始化與測試 第20章RGB LCD顯示實驗 20.1LCD和eLCDIF簡介 20.2硬體原理分析 20.3實驗程式撰寫 20.4編譯、下載和驗證 第21章RTC即時時脈實驗 21.1I.MX6ULL RTC即時時脈簡介 21.2硬體原理分析 21.3實驗程式撰寫 21.4編譯、下載和驗證 第22章I2C實驗 22.1I2C和AP3216C簡介 22.2硬體原理分析 22.3實驗程式撰寫 22.4編譯、下載和驗證 第23章SPI實驗 23.1SPI & ICM-20608簡介 23.2硬體原理分析 23.3實驗程式撰寫 23.4編譯、下載和驗證 第24章多點電容觸控式螢幕實驗 24.1多點電容觸控式螢幕簡介 24.2硬體原理分析 24.3實驗程式撰寫 24.4編譯、下載和驗證 第25章LCD背光調節實驗 25.1LCD背光調節簡介 25.2硬體原理分析 25.3實驗程式撰寫 25.4編譯、下載和驗證 第26章ADC實驗 26.1ADC簡介 26.2硬體原理分析 26.3實驗程式撰寫 26.4編譯、下載和驗證 第二篇系統移植 第27章U-Boot使用實驗 27.1U-Boot簡介 27.2U-Boot初次編譯 27.3U-Boot燒錄與啟動 27.4U-Boot命令使用 第28章U-Boot頂層Makefile詳解 28.1U-Boot專案目錄分析 28.2VSCode專案建立 28.3U-Boot頂層Makefile分析 第29章U-Boot啟動流程詳解 29.1連結指令稿u-boot.lds詳解 29.2U-Boot啟動流程解析 29.3bootz啟動Linux核心過程 第30章U-Boot移植 30.1NXP官方開發板uboot編譯測試 30.2在U-Boot中增加自己的開發板 30.3bootcmd和bootargs環境變數 30.4uboot啟動Linux測試 第31章U-Boot圖形化設定及其原理 31.1U-Boot圖形化設定體驗 31.2menuconfig圖形化設定原理 31.3增加自訂選單 第32章Linux核心頂層Makefile詳解 32.1Linux核心獲取 32.2Linux核心初次編譯 32.3Linux專案目錄分析 32.4VSCode專案建立 32.5頂層Makefile詳解 第33章Linux核心啟動流程 33.1連結指令稿vmlinux.lds 33.2Linux核心啟動流程分析 第34章Linux核心移植 34.1建立VSCode專案 34.2NXP官方開發板Linux核心編譯 34.3在Linux中增加自己的開發板 34.4CPU主頻和網路驅動修改 第35章root檔案系統建構 35.1root檔案系統簡介 35.2BusyBox建構root檔案系統 35.3root檔案系統初步測試 35.4完善root檔案系統 35.5root檔案系統其他功能測試 第36章系統燒錄 36.1MfgTool工具簡介 36.2MfgTool工作原理簡介 36.3燒錄NXP官方系統 36.4燒錄自製的系統 36.5改造自己的燒錄工具

商品規格

書名 / 內嵌作業系統: ARM Linux驅動程式開發動手做
作者 / 左忠凱
簡介 / 內嵌作業系統: ARM Linux驅動程式開發動手做:【豐富實驗內容】【完整Linux系統燒錄】嵌入式Linux開發環境架設、CortexA7架構及ARM組合語言MX6U、STM32之LED燈、啟動方
出版社 / 聯合發行股份有限公司
ISBN13 / 9786267273692
ISBN10 /
EAN / 9786267273692
誠品26碼 / 2682423876004
頁數 / 1088
裝訂 / P:平裝
語言 / 1:中文 繁體
尺寸 / 17x23x4.7
級別 / N:無

試閱文字

自序 : 前 言
本書主要講解嵌入式Linux中的驅動開發,也會涉及裸機開發的內容,相信大部分讀者和作者經歷一樣,以前從事過微控制器開發的工作,比如51或STM32等。微控制器開發很難接觸到更高層次的系統方面的知識,用到的系統都很簡單,比如μC/OS、FreeRTOS等,這些作業系統都使用一個Kernel,如果需要網路、檔案系統、GUI等就需要開發者自行移植。而移植又是非常痛苦的一件事情,而且移植完成以後的穩定性也無法保證。即使移植成功,後續的開發工作也比較煩瑣,因為不同的元件其API操作函數都不同,沒有一個統一的標準,使用起來學習成本比較高。這時候一個功能完整的作業系統就顯得尤為重要: 具有統一的標準,提供完整的多工管理、儲存管理、裝置管理、檔案管理和網路等。Linux就是這樣一個系統,這樣的系統還有很多,比如Windows、macOS、UNIX等。本書講解Linux,而Linux開發可以分為底層驅動開發和應用程式開發,本書講解的是Linux驅動開發,主要使用過STM32導向的開發者。平心而論,如果此前只會51微控制器開發,筆者不建議直接上手Linux驅動開發,因為51微控制器和Linux驅動開發的差異太大。筆者建議在學習嵌入式Linux驅動開發之前一定要學習STM32這種Cortex-M核心的MCU,因為STM32這樣的MCU其內部資源和可以執行Linux的CPU差不多,如果會STM32,則上手Linux驅動開發就會容易很多。筆者就是此前做了4年STM32開發工作,然後轉做Linux驅動開發,整個過程比較順暢。
鑑於當前STM32非常流行,學習者多,如何幫助STM32學習者順利地轉入Linux驅動開發有以下幾點需要注意。
1) 選取合適的CPU
理論上來講,如果ST公司有可以執行的Linux的晶片那再好不過了,因為大家對STM32很熟悉,但是在撰寫本書時,ST公司尚沒有可以執行Linux的CPU。Linux驅動開發入門的CPU一定不能複雜,比如像三星的Exynos 4412、Exynos 4418等,這些CPU性能很強大,帶有GPU,支援硬體視訊解碼,可以執行Android。但是正是它們的性能過於強大,功能過於繁雜,所以不適合Linux驅動開發入門。一款外接裝置和STM32H7這樣的MCU相似的CPU就非常適合Linux入門,三星的S3C2440就非常合適,但是S3C2440早已停產了,學了以後工作上又用不到,又得學習其他的CPU,有點浪費時間。筆者花了不少時間終於找到了一款合適的CPU,那就是NXP的I.MX6ULL。I.MX6ULL就是一款可以跑Linux的STM32,外接裝置功能和STM32相似,如果此前學習過STM32,那麼會非常容易上手I.MX6ULL。而且I.MX6ULL可以正常出貨,這是一款工業級的CPU,是三星S3C2440、S3C6410產品替代的絕佳之選,學習完I.MX6ULL以後,在工作中就可以直接使用了。本書選取正點原子的I.MX6U-ALPHA開發板,其他廠商的I.MX6ULL開發板也可以參考本書。
2) 開發環境講解
STM32的開發都是在Windows系統下進行的,使用MDK或IAR這樣的整合IDE,但是嵌入式Linux驅動開發需要的主機是Linux平台的,也就是必須先在自己的電腦上安裝Linux系統。Linux系統發行版本有Ubuntu、CentOS、Fdeora、Debian等。本書使用Ubuntu作業系統。
3) 合理的裸機常式
學習嵌入式Linux驅動開發建議大家先學習裸機開發(如果學習過STM32,則可以跳過裸機學習),Linux驅動開發非常煩瑣。要想進行Linux驅動開發,必須要先移植uboot,然後移植Linux系統和root檔案系統到開發平台上。而uboot又是一個超大的裸機綜合常式,因此如果沒有學習過裸機常式,那麼uboot移植會有困難,尤其是要修改uboot程式時。STM32基本都是裸機開發,在整合IDE下撰寫程式,可以使用ST公司提供的函數庫。但是在Ubuntu下撰寫I.MX6ULL裸機常式就沒有這麼方便了,沒有MDK和IAR這樣的IDE,所有的一切都需要自己架設,本書提供了詳細的講解。本書還提供了數十個裸機常式,由淺入深,涵蓋了大部分常用的功能,比如I/O輸入輸出、中斷、序列埠、計時器、DDR、LCD、I2C等。學習完裸機常式以後就對I.MX6ULL這顆CPU非常熟悉了,再去學習Linux驅動開發就很輕鬆了。
4) uboot、Linux和root檔案系統移植
學習完裸機常式以後就是Linux驅動開發了,但是在進行Linux驅動開發之前要先在使用的開發板平台上移植好uboot、Linux和root檔案系統。這是Linux驅動開發的第一個攔路虎,因此本書和對應的視訊會著重講解uboot/Linux和root檔案系統的移植。
5) 嵌入式Linux驅動開發
當我們把uboot、Linux核心和root檔案系統都在開發板上移植好以後,就可以開始Linux驅動開發了。Linux驅動有3大類: 字元裝置驅動、區塊裝置驅動和網路裝置驅動。對於這3大類內容,本書都有詳細的講解,並且配有數十個對應的教學常式,從最簡單的點燈到最後的網路裝置驅動。

最佳賣點

最佳賣點 : 【豐富實驗內容】
【完整Linux系統燒錄】