-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

嵌入式Linux系統開發——基于ARM處理器通用平臺

( 簡體 字)
作者:馮新宇類別:1. -> 電腦組織與體系結構 -> 嵌入式系統 -> Cortex
譯者:
出版社:清華大學出版社嵌入式Linux系統開發——基于ARM處理器通用平臺 3dWoo書號: 47831
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:11/1/2017
頁數:392
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302482192
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

  嵌入式系統及其應用是一個龐大的知識體系,筆者在多年的授課過程中,也很難選擇一本合適的書作為本科學生的授課教材。結合課堂講稿和學生的部分畢業設計內容,以及在學生學習過程中經常遇到的問題,筆者整理成本書——《嵌入式Linux系統開發——基于ARM處理器通用平臺》,之所以這么命名,是打破了以前ARM9體系或者ARM11體系的框架。Linux操作系統在ARM9之上的處理器均有較好的兼容,讀者稍加修改,代碼就能應用,所以命名時就回避了某一款處理器的限定。關于嵌入式有太多的內容可以介紹,本書側重應用,并結合了當前嵌入式的發展和應用。
  嵌入式系統無疑是當前最熱門、最有發展前途的IT應用領域之一。嵌入式系統用在某些特定的專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時還對實時響應等要求很高。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平時常見的手機、PDA、電子字典、可視電話、數字相機、數字攝像機、機頂盒、高清電視、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等都是典型的嵌入式系統。
  嵌入式系統是軟硬結合的產品,嵌入式開發主要分為兩類。
  一類是無線電相關專業,例如電子工程、通信工程等專業出身的人,他們主要搞硬件設計,有時需要開發一些與硬件關系最密切的最底層軟件(例如BootLoader、Board Support Package)、最初級的硬件驅動程序等。他們的優勢是對硬件原理非常清楚,不足是他們更擅長定義各種硬件接口,但對復雜的軟件系統往往力不從心(例如嵌入式操作系統原理和復雜的應用軟件等)。
  另一類是軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。如果我們學軟件的人對硬件原理和接口有較好的掌握,也完全可以編寫BSP和硬件驅動程序。嵌入式硬件設計完成后,各種功能就全靠軟件來實現了。嵌入式設備的增值很大程度上取決于嵌入式軟件,設備越智能,系統越復雜,軟件的作用越關鍵,這也是目前的趨勢。
  目前,國內外的相關人才都很稀缺。一方面,該領域入門門檻較高,不僅要了解較底層的軟件(例如操作系統級、驅動程序級軟件),對軟件專業水平要求較高(嵌入式系統對軟件設計的時間和空間效率要求較高),而且必須熟悉硬件的工作原理,所以非專業IT人員很難切入這一領域;另一方面,該領域較新,發展太快,很多軟硬件技術出現時間不長或正在出現(例如ARM處理器、嵌入式操作系統、MPEG技術、無線通信協議等),掌握這些新技術的人較少。嵌入式人才稀缺,身價自然就高。嵌入式人才稀少的根本原因可能是大多數人無條件接觸該領域,這需要相應的嵌入式開發板和軟件,另外需要有經驗的人進行開發流程的指導。
  與企業計算等應用軟件的開發人員不同,嵌入式領域人才的工作強度通常較低,收入卻很高。從事企業應用軟件的IT人員,這個用戶的系統開發完成后,又要去開發下一個用戶的系統,并且每個用戶的需求和完成時間都必須按客戶要求改變,往往疲于奔命,重復勞動。相比而言,開發嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事,所開發的產品通常是通用的,不會因客戶的不同而修改。某一型號的產品開發完成后,往往有較長的一段空閑時間(或只是對軟件進行一些小修補),有時間進行充電和休整。另外,從事嵌入式軟件開發的人員的工作范圍相對狹窄,所涉及的專業技術范圍比較小(ARM、RTOS、MPEG、802.11等),隨著時間的累積,經驗也逐漸累積,可“倚老賣老”,寥寥數語的指導就足夠讓初入道者琢磨半年。如果從事應用軟件開發,可能不同的客戶的軟件開發平臺也完全不同,這會使得開發工作也相對更加辛苦。
  嵌入式開發更注重的是練習,嵌入式系統開發設計最難的是入門,嵌入式系統開發涉及知識較多,初學者很難從紛雜的知識中快速上手學習,現在市面上用于嵌入式開發的學習板比比皆是,價格都比較低廉,讀者可以買一款相對通用的開發板,按照書中的操作練習,本書將一步一步引導初學者進行嵌入式開發的學習。任何知識的學習都是由淺入深,由感性認識到理性認識,掌握了前幾章的學習,相信讀者一定能夠掌握嵌入式入門開發的基本要領。
  本書主要由馮新宇編寫。此外,本書第11~15章由蔣洪波編寫。參與編寫的還有楊昕宇、劉宇瑩、劉琳、史殿發、孟瑩等。
  感謝廣州碾展公司的技術支持!
  感謝您選擇了本書,希望我們的努力對您的工作和學習有所幫助,也希望您把對本書的意見和建議反饋給我們。
  
  作 者
  2017年4月




內容簡介:

本書系統論述了基于ARM處理器的嵌入式Linux系統開發的原理、方法與實踐。全書共15章,分別介紹了嵌入式Linux系統管理、Linux編程基礎、Linux高級編程、Linux內核開發、Linux系統移植和Linux驅動程序開發等。
  本書內容吸收了作者在Linux系統教學、科研和實際項目研發中的經驗,實踐性強。在內容編排上,按照讀者學習的一般性規律,結合大量實例論述,能夠使讀者高效地掌握嵌入式Linux系統的基本原理和應用方法。本書既可以作為高等院校相關專業的教材,也可以作為從事嵌入式系統開發人員的參考用書。
目錄:

第1章Linux概述與系統管理 1
1.1嵌入式系統概述 1
1.1.1嵌入式系統的發展歷史 1
1.1.2嵌入式系統的特點 2
1.1.3嵌入式系統的體系結構 2
1.1.4典型嵌入式系統介紹 3
1.2嵌入式Linux基礎 4
1.2.1Linux發行版本 4
1.2.2 Linux定制安裝 6
1.3Linux常用命令 18
1.3.1系統管理相關命令 18
1.3.2文件管理相關命令 19
1.3.3備份壓縮相關命令 25
1.3.4網絡通信相關命令 26
1.3.5其他常用命令 30
1.4服務器配置 34
1.4.1samba服務器 34
1.4.2NFS服務器 38
1.4.3TFTP服務器 40
習題與練習 42
第2章Linux腳本編程 43
2.1 常用shell命令 43
2.2 腳本編寫基礎 44
2.2.1 特殊字符 44
2.2.2 變量和參數 46
2.2.3退出和退出狀態 48
2.3流程控制 49
2.3.1條件測試 49
2.3.2操作符相關主題 51
2.3.3循環控制 53
2.3.4測試與分支 55
習題與練習 58
第3章Linux編程基礎 59
3.1編輯器介紹 59
3.1.1vi介紹 59
3.1.2vi的各模式功能鍵 60
3.2程序編譯與調試 63
3.2.1gcc編譯流程 64
3.2.2gcc編譯選項分析 64
3.2.3gdb程序調試 69
習題與練習 75
第4章C語言進階 76
4.1C語言的基本知識 76
4.2數據類型 77
4.2.1常量和變量 78
4.2.2進制 78
4.2.3字符 79
4.2.4轉義符與字符集 79
4.2.5類型轉換 79
4.2.6輸入輸出 82
4.2.7運算符 83
4.3控制語句 86
4.3.1分支語句 86
4.3.2循環語句 88
4.4數組與字符串 97
4.4.1數組的定義 97
4.4.2數組本質探討 98
4.4.3一維數組和二維數組 99
4.4.4字符串 101
4.5函數 103
4.5.1函數的定義 103
4.5.2函數的深度剖析 103
4.5.3函數的作用剖析 104
4.6指針 108
4.6.1指針的本質 108
4.6.2連續空間的內存地址 108
4.6.3指針變量 109
4.6.4指針數組和指針的指針 111
4.6.5函數和指針 115
4.7預處理指令 119
4.7.1宏定義 120
4.7.2#include 121
4.7.3條件編譯 121
習題與練習 123
第5章文件I/O編程 124
5.1文件和目錄 124
5.2目錄操作 126
5.3文件操作 134
5.3.1基本概念 134
5.3.2檢查文件及確定文件的權限 136
5.3.3創建文件 137
5.3.4打開文件 138
5.3.5關閉文件 139
5.3.6刪除文件 140
5.3.7文件指針移動 142
5.3.8其他常用函數 145
5.4設備控制 148
5.5Linux時間編程 159
5.5.1取得目前的時間 159
5.5.2取得目前時間和日期 160
5.5.3取得當地目前時間和日期 161
5.5.4將時間結構數據轉換成經過的秒數 162
5.5.5設置目前時間 162
5.5.6取得當前時間 163
5.5.7將時間和日期以ASCII碼格式表示 164
5.5.8將時間和日期以字符串格式表示 164
習題與練習 165
第6章進程控制 166
6.1進程控制概述 166
6.1.1進程的定義 166
6.1.2進程控制塊 167
6.1.3分配進程描述符 168
6.1.4進程的創建 168
6.1.5進程狀態 169
6.1.6進程調度 171
6.1.7虛擬內存 172
6.1.8文件鎖 172
6.2進程控制編程 173
6.2.1創建進程 173
6.2.2進程終止 181
6.2.3守護進程 186
習題與練習 187
第7章進程間通信 188
7.1進程間通信概述 188
7.2管道通信 190
7.2.1無名管道 190
7.2.2有名管道 192
7.2.3標準流管道 195
7.3消息隊列 196
7.3.1鍵值 196
7.3.2打開/創建消息隊列 197
7.3.3發送消息 197
7.3.4接收消息 198
7.3.5消息控制 198
7.4信號 201
7.4.1信號處理的方式 201
7.4.2信號操作指令 201
7.5信號量 207
7.5.1信號量創建 208
7.5.2信號量操作 208
7.6內存共享 214
7.6.1共享內存創建 214
7.6.2共享內存的操作 216
7.6.3共享內存段連接到本進程空間 216
7.6.4共享內存解除 217
習題與練習 220
第8章多線程技術 221
8.1Linux多線程概念 221
8.2Linux線程實現 222
8.2.1線程創建 222
8.2.2線程退出 224
8.2.3線程等待 226
8.2.4線程標識獲取 228
8.2.5線程清除 229
8.3線程函數傳遞及修改線程的屬性 232
8.3.1線程函數傳遞 232
8.3.2綁定屬性 235
8.3.3分離屬性 236
8.3.4優先級屬性 237
8.3.5線程的互斥 239
8.3.6線程的同步 241
8.3.7信號量 243
習題與練習 245
第9章網絡編程 246
9.1基本概念 246
9.1.1OSI模型 246
9.1.2常用命令 247
9.1.3網絡地址 247
9.1.4IP設置項 248
9.1.5端口 248
9.2TCP/IP協議 249
9.2.1整體構架概述 249
9.2.2IP協議 250
9.2.3ICMP協議 251
9.2.4UDP協議 251
9.2.5TCP協議 252
9.2.6TCP連接的建立 253
9.3基本網絡函數介紹 253
9.3.1建立一個socket通信 253
9.3.2對socket定位 254
9.3.3等待連接 255
9.3.4建立socket連線 255
9.4服務器和客戶端的信息函數 256
9.4.1字節轉換函數 256
9.4.2IP和域名的轉換 257
9.4.3字符串的IP和32位的IP轉換 259
9.4.4服務信息函數 260
9.5完整的讀寫函數 260
9.5.1 write 260
9.5.2 read 261
9.5.3數據的傳遞 261
9.6用戶數據報發送 262
9.6.1 recvfrom 262
9.6.2 sendto 262
9.7高級套接字函數 263
9.7.1 recv 263
9.7.2send 263
9.7.3 recvmsg 264
9.7.4sendmsg 264
9.7.5 套接字的關閉 265
9.8套接字選項 265
9.8.1getsockopt 265
9.8.2setsockopt 266
9.8.3ioctl 267
9.9服務器模型 267
9.9.1循環服務器:UDP服務器 267
9.9.2循環服務器:TCP服務器 268
9.9.3并發服務器:TCP服務器 271
9.9.4并發服務器:多路復用I/O 272
9.9.5并發服務器:UDP服務器 273
習題與練習 276
第10章內核開發基礎 277
10.1嵌入式開發環境搭建 277
10.1.1交叉編譯工具鏈 278
10.1.2終端軟件 281
10.2Linux內核簡介 282
10.2.1Linux內核 282
10.2.2Linux內核源代碼 285
10.3Linux內核配置與編譯 285
10.3.1Linux內核配置 286
10.3.2編譯內核 288
10.4Linux內核模塊 288
10.4.1內核模塊簡介 288
10.4.2內核模塊編譯與相關命令 289
10.5文件系統 289
10.5.1文件系統簡介 290
10.5.2根文件系統 291
10.5.3Busybox 293
10.5.4Ramdisk文件系統 299
習題與練習 299
第11章BootLoader 300
11.1BootLoader介紹 300
11.1.1BootLoader的安裝和啟動 300
11.1.2 BootLoader的操作模式 301
11.1.3 BootLoader與主機之間的通信方式 301
11.1.4 常用BootLoader介紹 301
11.2U-boot介紹 302
11.2.1目錄結構 302
11.2.2U-boot的主要功能 303
11.2.3U-boot的工具 303
11.3 U-boot工作流程 304
11.3.1stage1 305
11.3.2 stage2 306
11.4 U-boot編譯 308
習題與練習 309
第12章Linux驅動開發基礎與調試 310
12.1設備驅動簡介 310
12.1.1設備類型分類 311
12.1.2內核空間和用戶空間 312
12.1.3驅動程序層次結構 312
12.1.4驅動程序與外界接口 313
12.2打印調試 315
習題與練習 316
第13章字符設備驅動 317
13.1字符設備驅動程序基礎 317
13.1.1關鍵數據結構 317
13.1.2設備驅動開發的基本函數 319
13.1.3設備文件和設備號 324
13.1.4加載和卸載驅動程序 325
13.2LED設備驅動程序 326
13.2.1LED接口電路 326
13.2.2LED驅動程序 327
13.2.3 加載運行LED驅動程序 329
13.3按鍵設備驅動程序 330
13.3.1按鍵模塊硬件電路 330
13.3.2按鍵驅動程序 331
13.3.3加載運行按鍵驅動程序 335
13.4DS18B20驅動程序設計分析 336
13.4.1DS18B20基礎知識 336
13.4.2DS18B20代碼設計 337
習題與練習 344
第14章塊設備驅動 345
14.1塊設備驅動程序開發基礎 345
14.1.1塊設備的I/O操作特點 345
14.1.2塊設備主要數據結構 345
14.1.3塊設備的操作 353
14.2IDE硬盤設備驅動 359
14.2.1IDE硬盤設備原理 359
14.2.2S3C2440與IDE接口電路 360
14.2.3block_device_operations及成員函數 361
14.2.4I/O請求處理 363
14.2.5在內核中增加對新系統IDE設備的支持 369
習題與練習 372
第15章網絡設備驅動 373
15.1網絡設備驅動簡介 373
15.1.1驅動程序體系結構 373
15.1.2主要數據結構 374
15.1.3基本函數 376
15.2CS8900A網卡設備 378
15.2.1CS8900A簡介 378
15.2.2CS8900A網卡接口電路 379
15.3CS8900A設備驅動程序 380
15.3.1初始化網絡設備 380
15.3.2打開網絡設備 385
15.3.3關閉網絡設備 386
15.3.4中斷處理 387
15.3.5發送數據 389
15.3.6接收數據 391
習題與練習 392
參考文獻 393
序: