![](/c49/99/11913468.jpg)
出版社:人民郵電出版社 ISBN:9787115402516 版次:1 商品編碼:11913468 品牌:異步圖書 包裝:平裝 開本:16開 出版時間:2016-04-01 用紙:膠版紙 頁數:468 正文語種:中文 作者:斯裡克裡斯漢·溫卡特斯瓦蘭,宋寶華,何昭然,史海濱,吳國成
" 編輯推薦 適讀人群 :適合中高級Linux開發人員閱讀。 全面深入的Linux設備驅動程序名著 Linux技術大師力作 大量底層技術內幕首次公開 時至今日,Linux操作繫統充分體現了其跨平臺、開源、支持眾多應用軟件和網路協議等優點,已經成為應用廣泛的開發平臺。 在這部貼近實戰、實例豐富的著作中,享譽世界的Linux驅動程序開發大師將與你面對面,繫統深入地闡述如何為各種設備開發可靠的驅動程序。在回顧了驅動程序開發的各種基礎知識和新的Linux 2.6內核相關特性之後,作者不僅講述了其他設備驅動程序圖書中都會涉及的比較容易的內容,更迎難而上,深入探討了包括嵌入式Linux開發在內的驅動程序開發中必須面對的難點,比如PCMCIA、USB、I2C、視頻、音頻、內存、無線通信等,節食了許多技術內幕。對每種驅動程序,書中除了剖析關鍵技術,還帶你查看相關的內核源代碼,提供完整的實例。 內容簡介 《精通Linux設備驅動程序開發》是Linux設備驅動程序開發領域的著作。全書基於2.6內核,不僅透徹講解了基本概念和技術,更深入探討了其他書沒有涵蓋或淺嘗輒止的許多重要主題和關鍵難點,如PCMCIA、I2C和USB等外部總線以及視頻、音頻、無線連網和閃存等驅動程序的開發,並講解了相關的內核源碼文件,給出了完整的開發實例。 《精通Linux設備驅動程序開發》適合中高級Linux開發人員閱讀。 作者簡介 Sreekrishnan Venkateswaran,世界Linux開發技術專家。在IBM工作多年,有豐富的嵌入式Linux和驅動程序開發經驗,曾將Linux移植到了手表、音樂播放器、VoIP電話、心髒起搏器以及遠程門診監控繫統等設備上。目前是IBM印度公司的嵌入式解決方案組負責人。他曾擔任Linux Magazine的特邀編輯,主持內核技術專欄。 目錄 第1章引言\t1 1.1演進\t1 1.2GNU Copyleft\t2 1.3kernel.org\t2 1.4郵件列表和論壇\t3 1.5Linux發行版\t3 1.6查看源代碼\t4 1.7編譯內核\t7 1.8可加載的模塊\t8 1.9整裝待發\t9 第2章內核\t11 2.1啟動過程\t11 2.1.1BIOS-provided physical RAM map\t12 2.1.2758MB LOWMEM available\t14 2.1.3Kernel command line: ro root=/dev/hda1\t14 2.1.4Calibrating delay...1197.46 BogoMIPS (lpj=2394935)\t15 2.1.5Checking HLT instruction\t16 2.1.6NET: Registered protocol family 2\t17 2.1.7Freeing initrd memory: 387k freed\t17 2.1.8io scheduler anticipatory registered (default)\t18 2.1.9Setting up standard PCI resources\t18 2.1.10EXT3-fs: mounted filesystem\t19 2.1.11INIT: version 2.85 booting\t19 2.2內核模式和用戶模式\t20 2.3進程上下文和中斷上下文\t20 2.4內核定時器\t21 2.4.1HZ和Jiffies\t21 2.4.2長延時\t22 2.4.3短延時\t24 2.4.4Pentium時間戳計數器\t24 2.4.5實時鐘\t25 2.5內核中的並發\t26 2.5.1自旋鎖和互斥體\t26 2.5.2原子操作\t30 2.5.3讀—寫鎖\t31 2.5.4調試\t32 2.6proc文件繫統\t32 2.7內存分配\t33 2.8查看源代碼\t34 第3章內核組件\t37 3.1內核線程\t37 3.1.1創建內核線程\t37 3.1.2進程狀態和等待隊列\t41 3.1.3用戶模式輔助程序\t42 3.2輔助接口\t43 3.2.1鏈表\t44 3.2.2散列鏈表\t49 3.2.3工作隊列\t49 3.2.4通知鏈\t51 3.2.5完成接口\t54 3.2.6kthread輔助接口\t56 3.2.7錯誤處理助手\t57 3.3查看源代碼\t58 第4章基本概念\t61 4.1設備和驅動程序介紹\t61 4.2中斷處理\t63 4.2.1中斷上下文\t63 4.2.2分配IRQ號\t64 4.2.3設備實例:導航杆\t65 4.2.4softirq和tasklet\t68 4.3Linux設備模型\t71 4.3.1udev\t71 4.3.2sysfs、kobject和設備類\t73 4.3.3熱插撥和冷插撥\t76 4.3.4微碼下載\t76 4.3.5模塊自動加載\t77 4.4內存屏障\t78 4.5電源管理\t79 4.6查看源代碼\t79 第5章字符設備驅動程序\t81 5.1字符設備驅動程序基礎\t81 5.2設備實例:繫統CMOS\t82 5.2.1驅動程序初始化\t83 5.2.2打開與釋放\t86 5.2.3數據交換\t88 5.2.4查找\t92 5.2.5控制\t94 5.3檢測數據可用性\t95 5.3.1輪詢\t95 5.3.2Fasync\t98 5.4和並行端口交互\t99 5.5RTC子繫統\t108 5.6偽字符驅動程序\t109 5.7混雜驅動程序\t110 5.8字符設備驅動程序注意事項\t115 5.9查看源代碼\t115 第6章串行設備驅動程序\t118 6.1層次架構\t119 6.2UART驅動程序\t121 6.2.1設備實例:手機\t122 6.2.2RS-485\t132 6.3TTY驅動程序\t132 6.4線路規程\t134 6.5查看源代碼\t141 第7章輸入設備驅動程序\t143 7.1輸入事件驅動程序\t144 7.2輸入設備驅動程序\t150 7.2.1serio\t150 7.2.2鍵盤\t150 7.2.3鼠標\t152 7.2.4觸摸控制器\t157 7.2.5加速度傳感器\t158 7.2.6輸出事件\t158 7.3調試\t159 7.4查看源代碼\t160 第8章I2C協議\t161 8.1I2C/SMBus是什麼\t161 8.2I2C核心\t162 8.3總線事務\t164 8.4設備實例:EEPROM\t164 8.4.1初始化\t165 8.4.2探測設備\t167 8.4.3檢查適配器的功能\t169 8.4.4訪問設備\t169 8.4.5其他函數\t170 8.5設備實例:實時時鐘\t171 8.6i2c-dev\t174 8.7使用LM-Sensors監控硬件\t174 8.8SPI總線\t174 8.91-Wire總線\t176 8.10調試\t176 8.11查看源代碼\t176 第9章PCMCIA和CF\t179 9.1PCMCIA/CF是什麼\t179 9.2Linux-PCMCIA子繫統\t181 9.3主機控制器驅動程序\t183 9.4PCMCIA核心\t183 9.5驅動程序服務\t183 9.6客戶驅動程序\t183 9.6.1數據結構\t184 9.6.2設備實例:PCMCIA卡\t185 9.7將零件組裝在一起\t188 9.8PCMCIA存儲\t189 9.9串行PCMCIA\t189 9.10調試\t191 9.11查看源代碼\t191 第10章PCI\t193 10.1PCI繫列\t193 10.2尋址和識別\t195 10.3訪問PCI\t198 10.3.1配置區\t198 10.3.2I/O和內存\t199 10.4DMA\t200 10.5設備實例:以太網—調制解調器卡\t203 10.5.1初始化和探測\t203 10.5.2數據傳輸\t209 10.6調試\t214 10.7查看源代碼\t214 第11章USB\t216 11.1USB體繫架構\t216 11.1.1總線速度\t218 11.1.2主機控制器\t218 11.1.3傳輸模式\t219 11.1.4尋址\t219 11.2Linux-USB子繫統\t220 11.3驅動程序的數據結構\t221 11.3.1usb_device結構體\t221 11.3.2URB\t222 11.3.3管道\t223 11.3.4描述符結構\t223 11.4枚舉\t225 11.5設備實例:遙測卡\t225 11.5.1初始化和探測過程\t226 11.5.2卡寄存器的訪問\t230 11.5.3數據傳輸\t233 11.6類驅動程序\t236 11.6.1大容量存儲設備\t236 11.6.2USB-串行端口轉換器\t241 11.6.3人機接口設備\t243 11.6.4藍牙\t243 11.7gadget驅動程序\t243 11.8調試\t244 11.9查看源代碼\t245 第12章視頻驅動程序\t247 12.1顯示架構\t247 12.2Linux視頻子繫統\t249 12.3顯示參數\t251 12.4幀緩衝API\t252 12.5幀緩衝驅動程序\t254 12.6控制臺驅動程序\t265 12.6.1設備實例:手機\t266 12.6.2啟動logo\t270 12.7調試\t270 12.8查看源代碼\t271 第13章音頻驅動程序\t273 13.1音頻架構\t273 13.2Linux聲音子繫統\t275 13.3設備實例:MP3播放器\t277 13.3.1驅動程序函數和結構體\t278 13.3.2ALSA編程\t287 13.4調試\t288 13.5查看源代碼\t289 第14章塊設備驅動程序\t291 14.1存儲技術\t291 14.2Linux塊I/O層\t295 14.3I/O調度器\t295 14.4塊驅動程序數據結構和方法\t296 14.5設備實例:簡單存儲控制器\t298 14.5.1初始化\t299 14.5.2塊設備操作\t301 14.5.3磁盤訪問\t302 14.6高級主題\t304 14.7調試\t306 14.8查看源代碼\t306 第15章網絡接口卡\t308 15.1驅動程序數據結構\t308 15.1.1套接字緩衝區\t309 15.1.2網絡設備接口\t310 15.1.3激活\t311 15.1.4數據傳輸\t311 15.1.5看門狗\t311 15.1.6統計\t312 15.1.7配置\t313 15.1.8總線相關內容\t314 15.2與協議層會話\t314 15.2.1接收路徑\t314 15.2.2發送路徑\t315 15.2.3流量控制\t315 15.3緩衝區管理和並發控制\t315 15.4設備實例:以太網NIC\t316 15.5ISA網絡驅動程序\t321 15.6ATM\t321 15.7網絡吞吐量\t322 15.7.1驅動程序性能\t322 15.7.2協議性能\t323 15.8查看源代碼\t324 第16章Linux無線設備驅動\t326 16.1藍牙\t327 16.1.1BlueZ\t328 16.1.2設備實例:CF卡\t329 16.1.3設備實例:USB適配器\t330 16.1.4RFCOMM\t331 16.1.5網絡\t332 16.1.6HID\t334 16.1.7音頻\t334 16.1.8調試\t334 16.1.9關於源代碼\t334 16.2紅外\t335 16.2.1Linux-IrDA\t335 16.2.2設備實例:超級I/O芯片\t337 16.2.3設備實例:IR Dongle\t338 16.2.4IrCOMM\t340 16.2.5聯網\t340 16.2.6IrDA套接字\t341 16.2.7LIRC\t341 16.2.8查看源代碼\t342 16.3WiFi\t343 16.3.1配置\t343 16.3.2設備驅動程序\t346 16.3.3查看源代碼\t347 16.4蜂窩網絡\t347 16.4.1GPRS\t347 16.4.2CDMA\t349 16.5當前趨勢\t350 第17章存儲技術設備\t352 17.1什麼是閃存\t352 17.2Linux-MTD子繫統\t353 17.3映射驅動程序\t353 17.4NOR芯片驅動程序\t358 17.5NAND芯片驅動程序\t359 17.6用戶模塊\t361 17.6.1塊設備模擬\t361 17.6.2字符設備模擬\t361 17.6.3JFFS2\t362 17.6.4YAFFS2\t363 17.7MTD工具\t363 17.8配置MTD\t363 17.9XIP\t364 17.10FWH\t364 17.11調試\t367 17.12查看源代碼\t367 第18章嵌入式Linux\t369 18.1挑戰\t369 18器件選擇\t370 18.3工具鏈\t371 18.4Bootloader\t372 18.5內存布局\t374 18.6內核移植\t375 18.7嵌入式驅動程序\t376 18.7.1閃存\t377 18.7.2UART\t377 18.7.3按鈕和滾輪\t378 18.7.4PCMCIA/CF\t378 18.7.5SD/MMC\t378 18.7.6USB\t378 18.7.7RTC\t378 18.7.8音頻\t378 18.7.9觸摸屏\t379 18.7.10視頻\t379 18.7.11CPLD/FPGA\t379 18.7.12連接性\t379 18.7.13專用領域電子器件\t380 18.7.14更多驅動程序\t380 18.8根文件繫統\t380 18.8.1NFS掛載的根文件繫統\t381 18.8.2緊湊型中間件\t382 18.9測試基礎設施\t383 18.10調試\t383 18.10.1電路板返工\t384 18.10.2調試器\t385 第19章用戶空間的驅動程序\t386 19.1進程調度和響應時間\t387 19.1.1原先的調度器\t387 19.1.2O(1)調度器\t387 19.1.3CFS\t388 19.1.4響應時間\t388 19.2訪問I/O區域\t390 19.3訪問內存區域\t393 19.4用戶模式SCSI\t395 19.5用戶模式USB\t397 19.6用戶模式I2C\t400 19.7UIO\t401 19.8查看源代碼\t402 第20章其他設備和驅動程序\t403 20.1ECC報告\t403 20.2頻率調整\t407 20.3嵌入式控制器\t408 20.4ACPI\t408 20.5ISA與MCA\t410 20.6火線\t410 20.7智能輸入/輸出\t411 20.8業餘無線電\t411 20.9VoIP\t411 20.10高速互聯\t412 20.10.1InfiniBand\t413 20.10.2RapidIO\t413 20.10.3光纖通道\t413 20.10.4iSCSI\t413 第21章調試設備驅動程序\t414 21.1kdb\t414 21.1.1進入調試器\t415 21.1.2kdb\t415 21.1.3kgdb\t417 21.1.4gdb\t420 21.1.5JTAG調試器\t421 21.1.6下載\t423 21.2內核探測器\t423 21.2.1kprobe\t423 21.2.2jprobe\t427 21.2.3返回探針\t429 21.2.4局限性\t431 21.2.5查看源代碼\t431 21.3kexec與kdump\t431 21.3.1kexec\t432 21.3.2kdump與kexec協同工作\t432 21.3.3kdump\t433 21.3.4查看源代碼\t437 21.4性能剖析\t437 21.4.1利用OProfile剖析內核性能\t438 21.4.2利用gprof剖析應用程序性能\t440 21.5跟蹤\t441 21.6LTP\t444 21.7UML\t444 21.8診斷工具\t444 21.9內核修改配置選項\t444 21.10測試設備\t445 第22章維護與發布\t446 22.1代碼風格\t446 22.2修改標記\t446 22.3版本控制\t447 22.4一致性檢查\t447 22.5構建腳本\t448 22.6可移植代碼\t450 第23章結束語\t451 23.1流程一覽表\t451 23.2下一步該做什麼\t452 附錄ALinux彙編\t453 附錄BLinux與BIOS\t457 附錄Cseq文件\t461 查看全部↓
" |