幫助中心 | 我的帳號 | 關於我們

嵌入式Linux驅動開發實踐

  • 作者:朱文偉//李建英|責編:夏毓彥
  • 出版社:清華大學
  • ISBN:9787302649243
  • 出版日期:2024/01/01
  • 裝幀:平裝
  • 頁數:356
人民幣:RMB 89 元      售價:
放入購物車
加入收藏夾

內容大鋼
    人們日常生活中打交道最多的就是嵌入式系統,目前廣泛使用的手機、MP3播放器、智能家用電器、無人機、自動駕駛汽車、機器人等都用到了嵌入式系統,嵌入式系統的開發占整個電腦系統開發的比重也越來越大。本書詳細講解嵌入式Linux驅動開發和設備端系統構建,並配套全書實例源代碼和作者QQ答疑服務。
    本書共分12章,內容包括嵌入式系統概述、搭建Linux安全開發環境、必會的嵌入式開發應用層技術、內核模塊開發、字元設備驅動、驅動模塊的併發控制、塊設備驅動、Linux平台驅動、基於AArch64的內核和文件系統、設備樹、I2C驅動實戰、SPI驅動實戰。
    本書適合作為嵌入式Linux驅動開發初學者的入門書,以及嵌入式Linux開發人員的參考書,也適合作為高等院校電子、通信、自動化、電腦等專業「嵌入式操作系統」課程的教材和教學參考書。

作者介紹
朱文偉//李建英|責編:夏毓彥
    朱文偉,名校電腦專業統招碩士。擁有20年C/C++、Java開發經驗,主導開發過密碼、圖形、人工智慧等方面的產品。精通Linux、Windows系統開發及資料庫開發技術。著有圖書《LinuxC/C++伺服器開發實踐》《OpenCV4.5電腦視覺開發實戰:基於Python》《OpenCV 4.5電腦視覺開發實戰(基於VC++)》《Qt6.×從入門到精通》《Windows C/C++加密解密實戰》《密碼學原理與Java實現》《Linux C與C++ 一線開發實踐》《VisualC++2017從入門到精通》。

目錄
第1章  嵌入式系統概述
  1.1  嵌入式系統
  1.2  Linux操作系統
  1.3  Linux作為嵌入式操作系統的優勢
  1.4  嵌入式系統的開發流程
  1.5  嵌入式Linux系統的體系結構
    1.5.1  嵌入式處理器
    1.5.2  嵌入式外圍硬體設備
    1.5.3  嵌入式操作系統
    1.5.4  設備驅動
    1.5.5  嵌入式應用軟體
  1.6  嵌入式Linux系統的設計與實現
  1.7  Linux操作系統內核
    1.7.1  Linux內核的組成
    1.7.2  Linux內核各部分的工作機制
  1.8  Linux設備驅動程序
    1.8.1  Linux設備驅動概述
    1.8.2  設備驅動的功能
    1.8.3  設備的分類
    1.8.4  驅動的分類
    1.8.5  設備驅動與內核的關係
    1.8.6  設備驅動的結構
    1.8.7  設備驅動的設計和實現步驟
第2章  搭建Linux驅動開發環境
  2.1  準備虛擬機環境
    2.1.1  在VMware下安裝Linux
    2.1.2  開啟登錄時的root賬號
    2.1.3  關閉內核自動更新
    2.1.4  解決Ubuntu上的vi方向鍵問題
    2.1.5  關閉防火牆
    2.1.6  配置安裝源
    2.1.7  安裝網路工具包
    2.1.8  安裝基本開發工具
    2.1.9  啟用SSH
    2.1.10  做個快照
    2.1.11  連接虛擬機Linux
    2.1.12  和虛擬機互傳文件
  2.2  安裝編譯工具
  2.3  使用VS Code開發內核驅動程序
  2.4  使用Visual C++ 2017開發應用程序
第3章  嵌入式開發必會應用層技術
  3.1  Linux啟動過程
  3.2  圖形模式與命令模式的切換方式
  3.3  在文件中搜索
  3.4  Linux關機和重啟
  3.5  開機自啟動
  3.6  查看Ubuntu的內核版本
  3.7  查看Ubuntu操作系統的版本
  3.8  配置文件的區別
  3.9  讓/etc/profile文件修改後立即生效

  3.10  測試Web伺服器的性能
    3.10.1  架設Web伺服器Apache
    3.10.2  在Windows下測試Web伺服器的性能
    3.10.3  在Linux下測試Web伺服器的性能
  3.11  Linux中的文件許可權
  3.12  環境變數的獲取和設置
  3.13  解析命令行參數函數
第4章  內核模塊開發
  4.1  Linux內核概述
  4.2  內核模塊簡介
    4.2.1  何為內核模塊
    4.2.2  增加內核功能的兩種方法
    4.2.3  使用模塊的優缺點
    4.2.4  常用的模塊操作命令
    4.2.5  Linux內核程序結構
第5章  字元設備驅動
  5.1  Linux設備框架
  5.2  字元設備的概念
  5.3  字元設備驅動
    5.3.1  file_operations結構體
    5.3.2  字元設備驅動開發步驟
    5.3.3  設備號的分配
  5.4  驅動開發的常用函數
    5.4.1  copy_from_user函數
    5.4.2  copy_to_user函數
    5.4.3  printk函數
    5.4.4  register_chrdev函數
    5.4.5  register_chrdev_region函數
    5.4.6  alloc_chrdev_region函數
    5.4.7  cdev_init函數
    5.4.8  cdev_alloc函數
    5.4.9  cdev_add函數
    5.4.10  cdev_del函數
    5.4.11  宏class_create
    5.4.12  device_create函數
    5.4.13  device_del函數
    5.4.14  unregister_chrdev函數
    5.4.15  實戰字元設備驅動
  5.5  字元設備的ioctl介面
    5.5.1  什麼是ioctl介面
    5.5.2  為什麼要引入ioctl介面
    5.5.3  ioctl如何使用
    5.5.4  定義命令
    5.5.5  ioctl的基本應用
    5.5.6  ioctl處理結構體
  5.6  Linux虛擬驅動框架設計
  5.7  虛擬LED驅動的實現
第6章  驅動模塊的併發控制
  6.1  嵌入式Linux系統的空間組成
    6.1.1  操作系統內核

    6.1.2  操作系統的空間組成及模式
    6.1.3  用戶空間訪問內核空間及模式切換
  6.2  進程的基本概念
    6.2.1  進程和線程的定義
    6.2.2  進程的類型
    6.2.3  進程的內存結構
    6.2.4  多任務機制
    6.2.5  進程與程序
    6.2.6  進程標識符
    6.2.7  線程標識符
    6.2.8  線程組及其標識符TGID
    6.2.9  進程描述符
    6.2.10  會話、進程組以及控制終端
  6.3  PID的管理
    6.3.1  PID散列表
    6.3.2  PID命名空間
    6.3.3  局部ID和全局ID
    6.3.4  進程PID結構
    6.3.5  pid_link哈希表存儲
  6.4  進程切換分析
    6.4.1  進程的模式和分類
    6.4.2  進程的5種基本狀態
    6.4.3  進程的切換過程分析
  6.5  內核進程和線程管理編程
    6.5.1  獲得進程PID結構體
    6.5.2  從命名空間下的PID找到對應的PID結構體
    6.5.3  獲取進程的進程號
    6.5.4  改變PID結構體的count欄位
    6.5.5  獲取進程描述符信息
    6.5.6  釋放進程所佔用的Cache空間
    6.5.7  喚醒進程
    6.5.8  創建一個新的內核線程
    6.5.9  終止指定進程
    6.5.10  結束當前正在執行的進程
  6.6  併發控制的基本概念
    6.6.1  什麼是併發
    6.6.2  臨界資源與臨界區
    6.6.3  原子操作
    6.6.4  併發控制的內容
    6.6.5  為何要併發控制
  6.7  設備驅動的併發控制機制
    6.7.1  併發控制的基礎操作
    6.7.2  自旋鎖
    6.7.3  信號量
    6.7.4  其他的併發控制機制
    6.7.5  驅動併發控制的設計方法
  6.8  內核同步編程
    6.8.1  設置原子類型的變數並讀取
    6.8.2  遞增遞減原子變數值
    6.8.3  初始化信號量

    6.8.4  獲取信號量並減1(不可中斷)
    6.8.5  獲取信號量並減1(可中斷)
    6.8.6  在指定的時間內獲取信號量
    6.8.7  釋放信號量
第7章  塊設備驅動
  7.1  塊設備的概念
    7.1.1  什麼是塊設備
    7.1.2  常用的塊設備
    7.1.3  塊設備和字元設備的區別
    7.1.4  塊設備相關的幾個單位
    7.1.5  塊設備的訪問
  7.2  塊設備驅動程序的概念
    7.2.1  什麼是塊設備驅動程序
    7.2.2  為什麼需要了解塊設備驅動
    7.2.3  塊設備驅動的組成部分
    7.2.4  塊設備驅動框架
  7.3  塊設備驅動的關鍵數據結構
    7.3.1  通用硬碟結構gendisk
    7.3.2  塊設備對象結構block_device
    7.3.3  bio結構
    7.3.4  請求隊列request_queue結構
    7.3.5  請求結構request
    7.3.6  磁碟操作結構block_device_operations
  7.4  塊設備驅動中的I/O請求處理函數
    7.4.1  使用請求隊列處理I/O請求
    7.4.2  不使用請求隊列處理I/O請求
  7.5  塊設備驅動編寫的步驟
  7.6  重要函數
    7.6.1  註冊
    7.6.2  塊設備操作
  7.7  實戰案例:用RAM模擬一個塊設備
第8章  Linux平台驅動
  8.1  平台設備驅動模型
    8.1.1  驅動的分隔與分離
    8.1.2  驅動的分層
    8.1.3  基本概念
    8.1.4  什麼是platform匯流排
  8.2  platform驅動
    8.2.1  platform_driver結構體
    8.2.2  platform主要函數
    8.2.3  platform驅動框架
    8.2.4  platform_device的註冊過程
  8.3  platform設備
  8.4  實現platform驅動
第9章  基於AArch64的內核和文件系統
  9.1  認識QEMU
    9.1.1  QEMU是什麼
    9.1.2  QEMU的兩種執行模式
    9.1.3  QEMU的用途
    9.1.4  使用QEMU虛擬機的幾種選擇

  9.2  不編譯運行AArch64程序
    9.2.1  準備一個現成的AArch64程序
    9.2.2  安裝Linux版的QEMU
    9.2.3  下載交叉編譯器
    9.2.4  讓AArch64程序運行起來
  9.3  編譯運行AArch64程序
  9.4  製作簡易文件系統
    9.4.1  BusyBox簡介
    9.4.2  編譯/安裝BusyBox
    9.4.3  製作根文件系統的映像文件
  9.5  非嵌入式方式啟動內核
    9.5.1  BusyBox啟動過程簡要分析
    9.5.2  在新內核系統中運行C程序
  9.6  基本功能的完善
    9.6.1  掛載proc支持ifconfig
    9.6.2  掛載sysfs支持lspci
    9.6.3  實現文件系統可寫
  9.7  QEMU用戶網路模式
    9.7.1  不使用-net選項
    9.7.2  使用-net選項
  9.8  QEMU橋接網路模式
    9.8.1  網橋的概念
    9.8.2  TUN/TAP的工作原理
    9.8.3  帶TAP的QEMU系統架構
    9.8.4  brctl的簡單用法
    9.8.5  三個網路配置選項
    9.8.6  實戰橋接模式網路
    9.8.7  手工命令創建TAP網卡
    9.8.8  使用qemu-ifup
  9.9  QEMU運行國產操作系統
    9.9.1  安裝Windows版的QEMU
    9.9.2  UEFI固件下載
    9.9.3  安裝麒麟操作系統
    9.9.4  運行麒麟系統
第10章  設備樹
  10.1  設備樹的概念
    10.1.1  什麼是設備樹
    10.1.2  設備樹的起源
    10.1.3  Linux內核對硬體的描述方式
    10.1.4  設備樹和內核的關係
  10.2  DTS文件和DTSI文件
  10.3  DTB文件和DTC文件
  10.4  設備樹框架
    10.4.1  布局與節點
    10.4.2  節點名
    10.4.3  引用
    10.4.4  cpus節點
  10.5  屬性
    10.5.1  兼容性屬性
    10.5.2  model屬性

    10.5.3  status屬性
    10.5.4  #address-cells和#size-cells
    10.5.5  reg屬性
    10.5.6  ranges屬性
    10.5.7  name屬性
    10.5.8  device_type屬性
    10.5.9  address屬性
    10.5.10  interrupts屬性
  10.6  設備樹操作常用API
    10.6.1  device_node
    10.6.2  查找節點API
    10.6.3  提取通用屬性API
    10.6.4  提取addr屬性API
    10.6.5  提取resource屬性API
    10.6.6  提取GPIO屬性API
    10.6.7  提取irq屬性API
    10.6.8  從設備樹中提取MAC地址
  10.7  編寫設備樹並編譯
第11章  I2C驅動實戰
  11.1  I2C的基本概念
    11.1.1  匯流排的定義
    11.1.2  什麼是I2C
    11.1.3  I2C匯流排
    11.1.4  I2C匯流排規範
    11.1.5  I2C匯流排的特點
  11.2  I2C驅動實戰
第12章  SPI驅動實戰
  12.1  SPI概述
    12.1.1  什麼是SPI
    12.1.2  SPI工作模式
    12.1.3  SPI傳輸機制
    12.1.4  I2C和SPI的對比
  12.2  SPI驅動軟體架構
    12.2.1  SPI通用設備驅動程序
    12.2.2  SPI控制器驅動程序
    12.2.3  SPI協議驅動程序
    12.2.4  隊列化
  12.3  SPI虛擬驅動實戰

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032