1. 程式人生 > >嵌入式系統開發實用教程

嵌入式系統開發實用教程

主  編:     張同光
ISBN號:     978-7-302-32917-6   9787302329176
出版日期:   2013-09-01
出版社:     清華大學出版社

頁碼:430      定價:¥45元

http://www.tup.com.cn/book/Showbook.asp?CPBH=053746-01&DJ=45

配套資源下載



圖書簡介:
    本書介紹了嵌入式系統軟體開發的相關技術,並以嵌入式軟體的基本開發技術為主線,以ARM+Linux為基本架構,系統講述了嵌入式軟體開發的基本知識、基本流程和基本方法。採用理論和例項相結合的編寫方法,內容實用、結構清晰、圖文並茂、通俗易懂,力求使讀者輕鬆學習嵌入式軟體開發技術。本書共8章,主要內容包括: 嵌入式系統開發技術基礎、嵌入式系統開發環境、嵌入式軟體開發基礎、引導載入程式BootLoader的移植、Linux在ARM平臺的移植、根檔案系統、嵌入式Linux裝置驅動程式開發、嵌入式Linux的圖形使用者介面。
    本書的主要特點是通過模擬器(QEMU、SkyEye)學習嵌入式軟體系統,並詳細介紹基於SkyEye的移植三部曲(U-Boot、核心、檔案系統)。
    本書適合於高等院校電子資訊類專業教學使用,也可用於技能型緊缺人才的培養。本書適合剛接觸嵌入式軟體開發的人員,能夠幫助讀者快速入門。



1  嵌入式系統開發技術基礎... 2

1.1  嵌入式系統概述... 2

1.1.1  嵌入式系統的定義、分類與特點... 3

1.1.2  嵌入式系統的組成... 5

1.1.3  嵌入式系統的應用領域及發展趨勢... 5

1.2  嵌入式處理器... 9

1.2.1   嵌入式處理器的分類與特點... 9

1.2.2   ARM微處理器簡介... 11

1.2.3  ARM微處理器基礎... 12

1.2.4 

ARM微處理器的指令系統... 25

1.2.5  ARM記憶體管理單元... 42

1.3  嵌入式作業系統... 43

1.3.1  嵌入式作業系統的種類、特點與發展... 44

1.3.2  嵌入式Linux概述... 48

1.4  嵌入式系統的結構、開發流程、開發要點... 50

1.4.1  嵌入式系統的結構... 50

1.4.2  開發模式及開發流程... 51

1.4.3  嵌入式Linux系統開發要點... 53

... 54

  1. 54



2  嵌入式系統開發環境... 2

2.1  嵌入式系統開發環境簡介... 2

2.2  OK2440-II開發平臺介紹... 3

2.2.1  OK2440-II開發板構成... 3

2.2.2  OK2440-II開發板硬體資源... 4

2.2.3  例項—OK2440-II開發板的基本使用... 6

2.2.4  例項—引導Windows CE. 15

2.2.5  例項—引導Linux. 17

2.3  交叉編譯的基本知識... 20

2.3.1  ARM編譯環境... 20

2.3.2  ARM交叉編譯工具鏈... 21

2.3.3  嵌入式軟體開發流程... 22

2.4  例項—建立交叉編譯環境... 24

2.5  例項—QEMUGDB的安裝及簡單使用... 28

2.5.1  QEMU的安裝... 28

2.5.2  GDB的安裝... 28

2.5.3  執行ARM彙編程式... 29

2.5.4  除錯ARM彙編程式... 30

2.6  SkyEye的安裝及簡單使用... 32

2.6.1  SkyEye簡介... 32

2.6.2  例項—安裝SkyEye-1.2.6. 34

2.6.2  例項—使用SkyEye-1.2.6. 38

2.7  例項—TFTP伺服器的搭建... 41

2.8  例項—NFS務器的搭建... 42

... 45

    2. 45



3  嵌入式軟體開發基礎... 2

3.1  Linux C語言程式設計基礎知識... 2

3.1.1  程式安裝目錄、標頭檔案、庫檔案... 2

3.1.2  gcc編譯器... 4

3.1.3  例項—使用gcc編譯器... 8

3.1.4  GNU make工具Makefile檔案... 12

3.1.5  例項—使用makeMakefile檔案... 15

3.1.6  glibc. 29

3.1.7  gdb. 30

3.1.8  例項—使用gdb偵錯程式... 31

3.1.9  Binutils工具包... 36

3.2  彙編分類... 39

3.2.1  AT&TIntel組合語言的比較... 40

3.2.2  ARM ASMGNUARM ASM.. 43

3.3  GNU ARM彙編語... 43

3.3.1  簡單的GNU ARM彙編源程式舉例... 44

3.3.2  GNU ARM彙編程式中的語句格式... 47

3.3.3  GNU ARM彙編源程式中的標號... 47

3.3.4  GNU ARM彙編程式中的分段... 48

3.3.5  GNU ARM彙編程式中定義入口點... 49

3.3.6  GNU ARM彙編程式中的巨集定義... 49

3.3.7  GNU ARM彙編程式中的常數... 49

3.3.8  GNU ARM彙編程式中的常用偽操作... 50

3.3.9  GNU ARM彙編程式中的特殊字元和語法... 51

3.3.10  ATPCS. 51

3.4  ARM彙編&C語言混合程式設計... 53

3.4.1  C內聯ARM彙編... 54

3.4.2  模組化程式設計... 59

3.4.3  ARM彙編&C語言混合程式設計... 61

3.5  x86彙編&C語言混合程式設計... 64

3.6  ELF檔案的格式... 66

3.6.1  目標檔案的格式... 67

3.6.2  可執行檔案的格式... 72

3.7  GNU-ld連結指令碼... 76

... 79

    3. 79



4  引導載入程式BootLoader的移植... 2

4.1  BootLoader 2

4.1.1  BootLoader概述... 3

4.1.2  BootLoader的工作流程... 4

4.2  常見BootLoader介紹... 8

4.3  U-Boot-1.1.4原始碼分析... 10

4.3.1  U-Boot的程式碼結構... 11

4.3.2  U-Boot的啟動流程... 11

4.3.3  cpu/arm920t/start.S. 11

4.3.4  lowlevel_init.S. 18

4.3.5  lib_arm/board.c. 19

4.3.6  init_sequence[] 23

4.3.7  common/main.c. 29

4.4  移植U-Boot-1.1.4S3C2440A平臺... 32

4.4.1  U-Boot的配置與編譯... 32

4.4.2  例項—移植U-BootS3C2440A平臺... 41

4.4.3  例項—燒寫U-BootFlash. 42

4.5  例項—使用U-Boot 43

4.5.1  U-Boot的常用命令... 44

4.5.2  U-Boot的環境變數... 49

4.5.3  U-Boot與核心的關係... 49

4.5.4  新增U-Boot命令... 54

4.6  例項—基於skyeye的移植三部曲之一:Bootloader 56

... 68

  4. 68



5  LinuxARM平臺的移植... 2

5.1  Linux核心... 2

5.1.1  Linux核心簡介... 2

5.1.2  Linux核心原始碼結構... 4

5.1.3  Linux核心原始碼的配置... 5

5.1.4  MakefileKconfig.config的關... 6

5.2  Linux核心的移植... 7

5.3  zImage核心的生成過程... 11

5.4  例項—基於skyeye的移植三部曲之二:Kernel 13

5.5  Linux核心啟動流程分析... 24

... 25

    5. 25

 


6  根檔案系統... 2

6.1  嵌入式Linux的檔案系統... 2

6.1.1  基於FLASH的檔案系統... 3

6.1.2  基於RAM的檔案系統... 7

6.1.3  網路檔案系統NFS. 8

6.1.4  Linux根檔案系統... 10

6.1.5  Linux根檔案系統的目錄結構... 11

6.2  Linux系統的引導過程... 11

6.3  建立根檔案系統... 18

6.3.1  例項—用BusyBox建立檔案系統... 18

6.3.2  例項—建立JFFS2根檔案系統... 24

6.3.3  例項—建立Ramdisk檔案系統... 27

6.3.4  例項—建立Cramfs檔案系統... 32

6.3.5  例項—建立romfs檔案系統... 32

6.3.6  例項—建立YAFFS2根檔案系統... 34

6.4  例項—基於skyeye的移植三部曲之三:RootFS. 37

... 41

    6. 41



7  嵌入式Linux裝置驅動程式開發... 2

7.1  Linux裝置驅動程式的相關知識... 2

7.1.1  裝置驅動程式的概念... 3

7.1.2   裝置型別... 3

7.1.3  Linux裝置驅動程式概述... 4

7.1.4 裝置驅動程式中關鍵的資料結構... 5

7.2  Linux裝置驅動程式設計... 7

7.2.1 例項—動態載入模組... 7

7.2.2 例項—簡單字元驅動程式... 11

... 15

    7. 15



8  嵌入式Linux的圖形使用者介面... 2

8.1   嵌入式Linux中的GUI簡介... 2

8.2   Qt/Embedded. 2

8.3   Microwindows 4

8.4   MiniGUI 5

8.5  OpenGUI 8

... 8

    8. 9