嵌入式 Linux 接口開發技術
內容描述
本書主要介紹嵌入式Linux接口開發技術,首先介紹Linux的基礎知識、嵌入式Linux C的開發基礎和Linux系統的文件操作,然後在此基礎上詳細介紹嵌入式系統常用接口的編程,最後通過一個完整的案例開發來介紹嵌入式系統的綜合設計。對於每種接口,本書先介紹其原理,然後通過典型的外設來介紹嵌入式Linux的接口編程。在編程過程中採用示波器和邏輯分析儀來進行驗證,通過形象化的手段來提高讀者的動手能力,加深讀者對本書知識點的理解。
目錄大綱
目錄
第壹章Linux基礎(1)
1.1 Linux簡介(1)
1.1.1 Linux的發展(1)
1.1.2常見的Linux發行版(1)
1.1.3 Linux系統的下載(2)
1.2在虛擬機上安裝Linux系統(3)
1.2.1什麼是虛擬機(3)
1.2.2 VMware Workstation虛擬機的配置(3)
1.2.3安裝Linux系統(7)
1.2.4使用Ubuntu系統的注意事項(10)
1.3 Linux的文件系統(14)
1.4 Linux系統的常用命令(16)
1.4.1系統命令(16)
1. 4.2文本文件編輯命令(19)
1.4.3工作目錄命令(20)
1.4.4打包壓縮與搜索命令(23)
1.4.5命令在Linux系統中的執行(25)
1 .5鏈接方式(26)
1.5.1軟鏈接和硬鏈接(26)
1.5.2 ln命令(26)
1.6輸入/輸出重定向、管道符與環境變量(27)
1.6.1輸入/輸出重定向(27)
1.6.2管道符(29)
1.6.3重要的環境變量(29)
1.7 Vim編輯器與Shell腳本命令(30)
1. 7.1 Vim編輯器(30)
1.7.2 Shell腳本命令(32)
1.8用戶身份與文件權限(35)
1.8.1 passwd命令(35)
1.8.2文件權限(36 )
1.8.3 chmod命令(37)
1.8.4 su命令與sudo命令(37)
練習題1 (38)
第2章嵌入式Linux C開發基礎(41)
2.1 C語言概述(41 )
2.2嵌入式Linux C開發工具(41)
2.3嵌入式編譯器gcc (42)
2.3.1初識gcc編譯器(43)
2.3.2 gcc命令的常用選項及編譯過程(43)
2.3.3庫的使用(45)
2.4構建工具(47)
2.4.1 Makefile文件(47)
2.4.2 Makefile文件的特性(49)
練習題2 (52)
第3章Linux系統的文件操作(55)
3.1 Linux系統的文件類型(55)
3.2 Linux系統的文件描述符(56)
3.3不帶緩存的文件I/O操作涉及的函數( 56)
3.3.1 creat函數(57)
3.3.2 open函數(58)
3.3.3 read函數(61)
3.3.4 write函數(61)
3.3.5 lseek函數( 61)
3.3.6 close函數(62)
3.3.7經典範例:文件複製(62)
3.4帶緩存的文件I/O操作涉及的函數(64)
3.4.1標準I/ O庫中的緩存類型(64)
3.4.2 fopen函數(66)
3.4.3 fclose函數(67)
3.4.4 fwrite函數(67)
3.4.5 fread函數(68)
3 .4.6 fseek函數(69)
3.4.7 fgetc、getc和getchar函數(70)
3.4.8 fputc、putc和putchar函數(72)
3.4.9字符串讀取函數fgets與gets (74)
3.5格式化輸入/輸出函數(76)
3.5.1格式化輸入函數:scanf、fscanf和sscanf (76)
3.5.2格式化輸出函數:printf、fprintf和sprintf (78)
練習題3 (81)
第4章嵌入式開發板(83)
4.1嵌入式開發板簡介(83)
4.1.1嵌入式開發板的核心板(85)
4.1.2嵌入式開發板的底板(87)
4.2嵌入式Linux系統的安裝和嵌入式開發板的初步使用(92)
4.2.1在嵌入式開發板中安裝嵌入式Linux系統(92)
4.2.2嵌入式開發板的初步使用(93)
4.2.3文件傳輸(98)
4.3編譯方式(100)
練習題4 (102)
第5章嵌入式Linux接口編程:GPIO和PWM (103)
5.1示波器的基本用法(103)
5.1.1示波器簡介(103)
5.1.2示波器的觸發方式和触發條件(107)
5.1.3示波器的運算功能(109)
5.2 GPIO編程( 110)
5.2.1 bsp_gpio接口函數簡介(112)
5.2.2 GPIO的輸入和輸出(114)
5.2.3通過示波器三種觸發方式觀察電壓信號波形(116)
5.3 PWM編程(118)
5.3.1 PWM原理(118)
5 .3.2 bsp_pwm接口函數簡介(119)
5.3.3通過軟件PWM控制LED的亮滅(120)
5.3.4通過硬件PWM控制蜂鳴器的聲音(121)
5.3.5軟件PWM和硬件PWM的對比(123)
練習題5 (125)
第6章嵌入式Linux接口編程:UART (127)
6.1串行通信協議的基礎(127)
6.1.1串行通信協議的數據格式(127)
6.1.2串行通信協議的電氣規則和電路連接方式(129)
6.2 UART接口信號的波形分析(130)
6.2.1 UART接口信號的生成(130)
6 .2.2通過示波器捕獲UART接口信號的波形(131)
6.2.3通過邏輯分析儀捕獲UART接口信號的波形(133)
6.3 UART編程(137)
6.3.1嵌入式Linux的UART接口函數(137)
6.3.2串口測試程序(138)
6.4藍牙模塊的原理與編程(141)
6.4.1藍牙模塊的原理(141)
6.4.2藍牙模塊的接口函數(141)
6.4.3藍牙模塊的編程(145)
6 .5 485型溫濕度傳感器的原理與編程(148)
6.5.1 RS-485接口的通信原理(149)
6.5.2 485型溫濕度傳感器簡介(151)
6.5.3 485型溫濕度傳感器接口函數(152)
6.5.4 485型溫濕度傳感器的編程(155)
練習題6 (157)
第7章嵌入式Linux接口編程:I2C (159)
7.1 I2C總線協議的基礎(159)
7.1.1 I2C總線的物理層特點(160)
7.1.2 I2C總線的通信時序(160)
7.2 I2C總線的接口函數(163)
7.3通過邏輯分析儀測試I2C總線協議(167)
7.4 ADC和DAC的原理與編程(169)
7.4.1 PCF8591芯片的基礎知識(170)
7.4.2 PCF8591芯片的接口函數(172)
7.4.3 PCF8591芯片的編程(173)
7.5 E2PROM的原理與編程(175)
7.5.1 AT24C02芯片的基礎知識(176)
7.5.2 AT24C02芯片的接口函數(178)
7.5.3 AT24C02芯片的編程(179)
7 .6 OLED顯示屏的原理與編程(181)
7.6.1 OLED顯示屏的原理(181)
7.6.2 OLED顯示屏的接口函數(183)
7.6.3 OLED顯示屏的編程( 187)
練習題7 (190)
第8章嵌入式Linux接口編程:SPI (193)
8.1 SPI總線協議的基礎(193)
8.1.1 SPI總線的接口定義(193)
8.1.2單從機模式(194)
8.1.3多從機模式(194)
8.1.4 SPI總線的起始信號和停止信號(194)
8.1.5 SPI總線的數據有效性(194)
8.1.6 SPI總線的通信模式(195)
8.2 SPI總線的接口函數(196)
8.3通過邏輯分析儀測試SPI總線的信號波形(199)
8.4三軸加速度傳感器的原理與編程(201)
8.4.1 ADXL345芯片的工作原理(202)
8.4.2 ADXL345芯片的接口函數(206)
8.4.3 ADXL345芯片的編程(210)
8.5 UART、I2C和SPI的對比(213 )
練習題8 (213)
第9章嵌入式系統的綜合設計(215)
9.1嵌入式系統開發流程(215)
9.2基於RS-485的分佈式溫濕度監控和報警系統(216)
9 .2.1項目論證和需求(216)
9.2.2系統的總體設計(216)
9.2.3系統硬件的設計(217)
9.2.4系統通信協議的設計(218)
9. 2.5系統軟件的設計(220)
9.2.6系統的測試和調試(228)
附錄A底板電路圖(231)
參考文獻(233)
作者介紹
鄧寬,男,副教授,博士,畢業於南京理工大學,現為金陵科技學院專任教師。
研究方向為嵌入式系統、物聯網、通信、人工智能。
曾就職於中興通訊股份有限公司,任職軟件工程師。