內容簡介
本書可以分為兩大部分:其中部分是第二部分的基礎。部分介紹如何安裝一個宿主機和開發係統以及如何通過串口控製颱訪問嵌入式平颱。首先將看到一些引導加載程序的命令以及C的編譯器和交叉編譯器,之後會介紹內核模塊、設備驅動程序以及一些基於網絡文件係統的文件係統。讀者會在主機上使用模擬器來運行一個完整的目標機Debian係統,包括在Bash、PHP和Python下麵的係統守護進程和腳本程序,以及閃存和Linux的MTD。接著會引入JFFS2和UBIFS係統,以及兩個非常的嵌入式係統Yocto和OpenWrt。第二部分開始深入介紹所有外圍設備,包括其所支持的嵌入式工具包以及如何訪問和使用它們,並通過實例展示如何管理它們。
目錄
目 錄?Contents
譯者序
前言
第一部分 基礎知識
第1章 開發係統的安裝 2
1.1 嵌入式術語 2
1.2 係統概述 4
1.2.1 BeagleBone Black開發平颱 4
1.2.2 SAMA5D3 Xplained開發平颱 6
1.2.3 Wandboard開發平颱 8
1.3 安裝開發係統 11
1.3.1 設置宿主機 12
1.3.2 設置BeagleBone Black開發平颱 14
1.3.3 設置SAMA5D3 Xplained開發平颱 24
1.3.4 設置Wandboard開發平颱 30
1.4 設置開發係統 35
1.4.1 通過USB、網絡、overlay係統設置BeagleBone Black 36
1.4.2 通過USB、網絡設置SAMA5D3 Xplained 39
1.4.3 通過USB、有綫網絡和無綫網絡設置Wandboard 42
1.4.4 通用設置 45
1.5 總結 46
第2章 管理係統控製颱 47
2.1 基本操作係統管理 47
2.1.1 文件操作和命令 47
2.1.2 軟件包管理 55
2.1.3 管理內核消息 60
2.2 快速瀏覽bootloader 62
2.2.1 環境 63
2.2.2 管理存儲設備 65
2.2.3 GPIO管理 69
2.2.4 訪問一個I2C設備 70
2.2.5 從網絡加載文件 71
2.2.6 內核命令行 75
2.3 總結 76
第3章 C編譯器、設備驅動及其開發技術 77
3.1 C編譯器 77
3.1.1 宿主機和目標闆不同的體係結構 78
3.1.2 編譯一個C程序 80
3.1.3 編譯一個內核模塊 85
3.2 內核和DTS文件 87
3.2.1 重新編譯內核 87
3.2.2 設備樹 91
3.3 什麼是設備驅動? 93
3.3.1 字符設備、塊設備和網絡設備 94
3.3.2 模塊與內置設備 95
3.3.3 modutils(管理內核模塊的一個軟件包) 95
3.3.4 編寫一個設備驅動 97
3.4 根文件係統 106
3.4.1 /dev目錄 107
3.4.2 tmpfs文件係統 109
3.4.3 procfs文件係統 110
3.4.4 sysfs文件係統 113
3.5 網絡文件係統 115
3.5.1 本機輸齣一個NFS 116
3.5.2 設置內核以掛載NFS 117
3.5.3 通過U-Boot和內核命令行使用NFS 119
3.5.4 NFS開發 122
3.6 模擬器的使用 122
3.6.1 執行一個程序 123
3.6.2 進入一個ARM的根文件係統樹 124
3.7 總結 128
第4章 使用腳本和係統守護進程的快速編程 129
4.1 設置係統 129
4.2 係統守護進程 130
4.2.1 有用的和即用的守護進程 131
4.2.2 係統守護進程管理 132
4.3 腳本編程語言 149
4.3.1 基於PHP管理LED 150
4.3.2 基於Python管理LED 153
4.3.3 基於Bash管理LED 155
4.4 編寫自定義守護進程 159
4.4.1 基於C的守護進程 160
4.4.2 基於PHP的守護進程 161
4.4.3 基於Python的守護進程 162
4.4.4 基於Bash的守護進程 162
4.5 總結 163
第5章 配置一個嵌入式操作係統 164
5.1 MTD與塊設備 164
5.1.1 什麼是MTD設備 165
5.1.2 管理MTD設備 167
5.1.3 Flash存儲係統 170
5.2 OpenWrt係統 179
5.2.1 使用缺省配置 180
5.2.2 添加(準)LAMP係統 188
5.2.3 添加自定義配置 197
5.3 Yocto係統 200
5.3.1 使用缺省配置 201
5.3.2 添加圖形支持 210
5.3.3 添加自定義程序 212
5.4 總結 215
第二部分 外圍設備
第6章 通用輸入輸齣信號——
GPIO 218
6.1 GPIO 218
6.1.1 BeagleBone Black係統下的
GPIO 221
6.1.2 SAMA5D3 Xplained係統下的GPIO 221
6.1.3 Wandboard係統下的GPIO 222
6.2 Linux下的GPIO 223
6.3 訪問GPIO 225
6.3.1 基於Bash的使用 225
6.3.2 基於C的使用 227
6.4 基於腳本語言使用GPIO 234
6.4.1 基於PHP的使用 235
6.4.2 基於Python的使用 236
6.5 內核管理GPIO 237
6.5.1 使用GPIO的輸入設備 238
6.5.2 LED和觸發器 244
6.6 總結 248
第7章 串行端口和TTY設備——
TYY 249
7.1 TTY、串行和串口綫 249
7.1.1 電氣綫路 250
7.1.2 BeagleBone Black係統下的
TTY 251
7.1.3 SAMA5D3 Xplained係統下的TTY 253
7.1.4 Wandboard係統下的TTY 254
7.2 串行端口的實現 254
7.3 Linux係統下的串行端口 255
7.4 通信參數 256
7.5 訪問TTY 256
7.5.1 距離傳感器 257
7.5.2 LF低頻RFID讀寫器 261
7.6 使用SLIP管理內核中的TTY 263
7.7 總結 268
第8章 通用串行總綫——USB 269
8.1 通用串行總綫 269
8.1.1 電氣綫路 270
8.1.2 BeagleBone Black係統下的
USB端口 270
8.1.3 SAMA5D3 Xplained係統下
的USB端口 270
8.1.4 Wandboard係統下的USB
端口 271
8.2 Linux下的USB總綫 271
8.2.1 USB主機介紹 272
8.2.2 USB設備介紹 275
8.3 USB工具 284
8.4 raw USB總綫 286
8.5 總結 290
第9章 內部集成電路——I2C 291
9.1 內部集成電路總綫 291
9.1.1 電子綫路 292
9.1.2 SAMA5D3 Xplained係統下的I2C端口 293
9.1.3 Wandboard係統下的I2C
端口 294
9.2 Linux係統下的I2C總綫 294
9.3 I2C工具 295
9.4 訪問I2C設備 296
9.4.1 EEPROM、ADC和IO
擴展闆 296
9.4.2 溫濕度和壓力傳感器 303
9.4.3 串行端口 307
9.5 raw I2C總綫 310
9.5.1
前言/序言
Preface?前 言嵌入式計算機在最近幾年變得非常復雜,而開發者專注的問題應該是如何解決當下的問題,而不用在尋找更好的外設(簡稱為外設)或者學習如何管理它們這些方麵浪費時間。 對於有經驗的嵌入式程序員和工程師來說,最大的挑戰是把一個想法變成現實到底需要多長時間,本書將展示如何做到這一點。
本書展示瞭行業中外部環境是如何通過特定的外設進行交互的。這裏將使用最新的Linux內核版本4.x,軟件係統基於Debian/Ubuntu係統,而嵌入式係統則使用OpenWrt和Yocto。
本書涉及的開發闆平颱基於目前元件市場和專業開發闆製造商中最流行的CPU。在簡要介紹完每個平颱之後,本書將展示如何設置這些平颱,使之能運行一個完整的發行版GNU/Linux並且獲得對其係統控製颱的訪問權。之後將介紹如何針對每個平颱安裝一個完整的開發係統,使開發者能夠運行自己開發的程序。
第一步將在嵌入式套件下進行編程,使用C、Bash腳本或者Python/PHP等語言來編程以訪問外設。之後將會介紹更多的設備驅動程序和訪問外設的內容以奠定堅實的基礎。讀者將學習通過C程序或者腳本語言(Bash/Python)和外設進行交互,以及如何為特定的硬件配置相應的設備驅動程序。
本書使用的硬件設備幾乎涵蓋我們所能見過的所有連接各種開發闆的方式,包括I2C、SPI、USB、1-wire總綫、串行總綫以及各類數字和模擬設備等。
本書中使用的編程語言依據的原則是,以最快速最簡單的解決方案來解決當前的問題。特彆是可以找到Bash、C、PHP、Python的示例代碼。
在這些章節中將會需要使用一個守護進程、一個內核模塊或者可能需要重新編譯整個內核。這種情況下添加瞭一個簡短的描述,包括讀者應該做什麼、可以從哪裏得到更多的信息和使用工具。但要說明的是,管理一個GNU/Linux係統或者內核模塊等一些基本的技能是必需的。
本書涵蓋內容本書可以分為兩大部分:其中第一部分是第二部分的基礎。第一部分介紹如何安裝一個宿主機和開發係統以及如何通過串口控製颱訪問嵌入式套件。首先將看到一些引導加載程序的命令以及C的編譯器和交叉編譯器,之後會介紹內核模塊、設備驅動程序以及一些基於網絡文件係統的文件係統。讀者也會在主機上使用模擬器來運行一個完整的目標機Debian係統,讀者也會在Bash、PHP和Python下麵看到係統的守護進程和腳本程序,讀者還會看到閃存和Linux的MTD(Memory Technology Device,內存技術設備)。其中會介紹JFFS2和UBIFS文件係統,以及兩個非常著名的嵌入式係統Yocto和OpenWrt。
下麵是第一部分中每章的簡短介紹:
第1章介紹目前工業應用中的最常用的三個開發環境:BeagleBone Black係統、SAMA5 D3 Xplained係統和WandBoard係統。在簡要介紹瞭每個開發闆之後,我們將看到如何設置它們以便運行一個完整的GNU/Linux係統。我們也將看到如何在每個平颱(和虛擬機中)上安裝一個完整的開發係統。
第2章首先將展示如何安裝開發包,然後將進一步探索串口控製颱和運行在其上的shell。最後將介紹引導係統bootLoader的命令。
第3章將講述C編譯器以及交叉編譯器,之後我們將看到內核模塊、設備驅動程序以及一些基於NFS的文件係統,最後會看到一個開發者在主機上如何使用模擬器來運行一個完整的目標機Debian係統。
第4章將介紹係統守護進程(描述它們是什麼以及如何使用它們),之後將使用Bash、PHP和Python語言來進行腳本編程。
第5章首先介紹閃存和管理閃存的軟件,之後將展示Linux的內存技術設備(MTD)和兩個主要的文件係統JFFS2和UBIFS,並運行它們。最後將展示如今兩個最著名的嵌入式係統——Yocto和OpenWrt,學習如何在這些嵌入式係統上編寫應用程序,並且把該程序添加到嵌入式係統中。
第二部分開始深入介紹所有外設。如果你是一位嵌入式開發人員,在你的職業生涯所遇到的各種外設都會涉及。在本書中,對於每一個外設,都會介紹其所支持的嵌入式套件以及如何訪問和使用它。對於每種設備類型,都會結閤實例展示如何管理它。
下麵是第二部分中每章的簡短介紹:
第6章首先簡短描述GPIO綫路,之後將會看到它們在嵌入式套件上是如何布局的,接著再詳細瞭解如何以非常簡單(但效率低)的方式訪問這些綫路,然後再以更智能(但更復雜)的方式重新再次訪問。最後會在內核中通過IRQ管理和LED設備支持再快速地介紹一下GPIO管理機製。
第7章將介紹串行端口(簡稱串口),串口是計算機中最重要的一個外設接口(至少可以讓計算機用於控製自動化行業等)。簡要描述串行端口和串行設備之後,我們將通過使用一個實際的串口設備來看如何在一個GNU/Linux係統中對其進行管理。最後我們將在內核中學會如何通過一條串行綫來實現網綫連接的兩個嵌入式係統(二者通過一條以太網電纜連接)之間的通信。
第8章將介紹USB總綫,這是一種通用的總綫,廣泛應用於現代計算機。人們可以將各種電子設備連接到計算機,例如硬盤、鍵盤或其他使用相同USB端口的串行設備。
第9章將介紹I2C總綫,它通常用於連接闆上設備,即主計算機會將所有設備都放在同一塊闆上。一些
GNU/Linux嵌入式快速編程 下載 mobi epub pdf txt 電子書 格式