《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 活動(dòng) > 免費(fèi)送書(shū)|好書(shū)推薦第三彈——從零開(kāi)始學(xué)ARM

免費(fèi)送書(shū)|好書(shū)推薦第三彈——從零開(kāi)始學(xué)ARM

2023-05-17
2023-05-19


電子技術(shù)應(yīng)用網(wǎng)的朋友們大家好,好書(shū)推薦活動(dòng)第三彈來(lái)啦!


本次給大家?guī)?lái)的是電子技術(shù)應(yīng)用專欄作家 一口Linux公眾號(hào)號(hào)主彭丹老師最新書(shū)籍

640.jpg

( 彭老師親筆簽名版  本次活動(dòng)僅此一本 先到先得)


本期送書(shū)規(guī)則:


       1.將本活動(dòng)轉(zhuǎn)發(fā)至朋友圈,截止至5月19號(hào)中午12點(diǎn),朋友圈獲得點(diǎn)贊數(shù)目最多的用戶可免費(fèi)獲得本書(shū)。


      2.收到書(shū)一個(gè)月之內(nèi)需要在電子技術(shù)應(yīng)用技術(shù)專欄發(fā)布一篇該書(shū)的讀書(shū)心得體會(huì),不少于500字。

 

 注:心得體會(huì)中至少要回答以下問(wèn)題中的任意四個(gè)。

1.ARM有哪些工作模式?

2.各設(shè)備驅(qū)動(dòng)使用的寄存器有哪些?功能是什么?

3.系統(tǒng)上電后,執(zhí)行的第一條指令是什么?

4.在C語(yǔ)言環(huán)境下調(diào)用函數(shù)時(shí),參數(shù)是如何傳遞的?

5.當(dāng)實(shí)現(xiàn)同樣的功能時(shí),為什么有些C語(yǔ)言程序的執(zhí)行效率比匯編語(yǔ)言的高?

6.異常源有哪些?

7.什么是異常向量表?

8.如何使能關(guān)閉中斷?

9.中斷發(fā)生后CPU是如何處理的?

10.CPU 如何操作LED、按鍵、蜂鳴器、滑動(dòng)變阻器、RTC、看門狗、MPU6050等常見(jiàn)外設(shè)并使它們有條不紊地工作?

11.U-Boot的啟動(dòng)流程是什么?如何實(shí)現(xiàn)程序自搬移?

12.U-Boot是如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)協(xié)議棧的?




請(qǐng)將朋友圈點(diǎn)贊截圖發(fā)給電子技術(shù)應(yīng)用網(wǎng)站小編,微信如下


123.png


書(shū)籍介紹:


從零開(kāi)始學(xué)ARM》 彭丹 周海濤 著   官方售價(jià):99.8元

彭丹:公眾號(hào)『一口Linux』號(hào)主彭老師,擁有15年嵌入式開(kāi)發(fā)經(jīng)驗(yàn)和培訓(xùn)經(jīng)驗(yàn)。曾任職ZTE,某研究所,華清遠(yuǎn)見(jiàn)教學(xué)總監(jiān)。擁有多篇網(wǎng)絡(luò)協(xié)議相關(guān)專利和軟件著作。精通計(jì)算機(jī)網(wǎng)絡(luò)、Linux系統(tǒng)編程、ARM、Linux驅(qū)動(dòng)、龍芯、物聯(lián)網(wǎng)。

本書(shū)主要介紹ARM開(kāi)發(fā)的相關(guān)知識(shí),詳細(xì)講解常用的ARM指令及如何基于ARM架構(gòu)的外設(shè)編寫(xiě)驅(qū)動(dòng)程序,并分析了開(kāi)源軟件U-Boot的啟動(dòng)程序和網(wǎng)絡(luò)協(xié)議棧。

本書(shū)第1~4章為基礎(chǔ)篇,主要介紹CPU與ARM、搭建環(huán)境、ARM編程、異常等;

第5~13章為編程篇,主要介紹基于Exynos 4412的常用外設(shè)的工作原理及驅(qū)動(dòng)程序等;

第14~17章為應(yīng)用篇,主要介紹開(kāi)源軟件U-Boot的使用及啟動(dòng)程序、網(wǎng)卡DM9000AE的驅(qū)動(dòng)和網(wǎng)絡(luò)協(xié)議棧,以及關(guān)于匯編的兩點(diǎn)補(bǔ)充。

本書(shū)適合從事嵌入式開(kāi)發(fā)的工程師和有一定計(jì)算機(jī)基礎(chǔ)和C語(yǔ)言編程經(jīng)驗(yàn)的初學(xué)者學(xué)習(xí)參考。

640.png

本書(shū)推薦語(yǔ)


本書(shū)特點(diǎn)


一是循序漸進(jìn),由淺入深。本書(shū)針對(duì)零基礎(chǔ)的初學(xué)者,以FS4412開(kāi)發(fā)板(基于ARMCortex-A9架構(gòu))為例,首先從開(kāi)發(fā)環(huán)境的安裝和配置及ARM基本指令等相關(guān)基礎(chǔ)知識(shí)開(kāi)始講解,然后詳細(xì)說(shuō)明常見(jiàn)硬件的功能原理,進(jìn)而結(jié)合硬件原理圖、用戶手冊(cè)逐個(gè)分析這些硬件的驅(qū)動(dòng)編程方法,最后介紹開(kāi)源項(xiàng)目U-Boot的使用及啟動(dòng)程序,使讀者將ARM相關(guān)知識(shí)點(diǎn)融會(huì)貫通。

二是實(shí)例豐富,內(nèi)容翔實(shí)。本書(shū)中包含大量匯編實(shí)例,且所有匯編指令都在KEIL軟件中測(cè)試過(guò);硬件裸機(jī)驅(qū)動(dòng)源程序均在開(kāi)發(fā)板上調(diào)試過(guò),并有詳細(xì)的分析注解;U-Boot的啟動(dòng)源程序和U-Boot中的網(wǎng)絡(luò)協(xié)議棧也有詳細(xì)的程序注解,使讀者能夠復(fù)現(xiàn)實(shí)例,學(xué)以致用。 

三是提供配套電子資源。本書(shū)的配套資源包含安裝工具、源程序、PPT課件等。


面向人群


本書(shū)主要面向想學(xué)習(xí)ARM開(kāi)發(fā)技術(shù)、嵌入式底層開(kāi)發(fā)的初學(xué)者,

大部分內(nèi)容是從事單片機(jī)、Linux驅(qū)動(dòng)開(kāi)發(fā)工程師甚至硬件工程師備知識(shí)。

內(nèi)容的組織由淺入深,關(guān)鍵知識(shí)點(diǎn)均有源碼實(shí)例,資料詳盡,

配合B站視頻學(xué)習(xí)效果更佳。



資料獲取


本書(shū)涉及的開(kāi)發(fā)環(huán)境,和文中所有資料、源代碼,均無(wú)償提供。

一口Linux 公眾號(hào)后臺(tái)回復(fù):arm

微信截圖_20230517165500.png

微信圖片_20220701092006.jpg

(電子技術(shù)應(yīng)用專欄作家  一口Linux微信公眾號(hào)二維碼)



配套視頻


為了更好的讓各位讀者學(xué)習(xí)本書(shū)內(nèi)容,彭老師正在錄制本書(shū)配套的視頻,并免費(fèi)發(fā)布在B站(全網(wǎng)同名:一口Linux


https://space.bilibili.com/661326452


目前已經(jīng)錄制了第一期視頻,第二期視頻對(duì)應(yīng)ppt已經(jīng)制作完畢,后續(xù)會(huì)陸續(xù)更新。




本書(shū)目錄:


第1章 CPU與ARM 2

1.1 CPU 2

1.1.1 CPU概述 2

1.1.2 計(jì)算機(jī)結(jié)構(gòu) 4

1.1.3 CPU的組成 5

1.1.4 指令的運(yùn)行 9

1.2 ARM 10

1.2.1 ARM的發(fā)展史 10

1.2.2 ARM架構(gòu) 11

1.2.3 ARM處理器 13

1.3 SoC 26

第2章 搭建環(huán)境 30

2.1 KEIL軟件安裝 30

2.1.1 KEIL、μVision、MDK之間的關(guān)系 30

2.1.2 安裝KEIL 31

2.1.3 創(chuàng)建工程 32

2.1.4 編譯程序 34

2.1.5 如何debug程序 34

2.2 編譯環(huán)境搭建 36

2.2.1 安裝VMware Workstation 37

2.2.2 安裝ubuntu 38

2.3 交叉編譯工具安裝 41

第3章 ARM編程 44

3.1 ARM指令格式 44

3.2 數(shù)據(jù)處理指令 45

3.2.1 mov指令 45

3.2.2 移位操作 47

3.2.3 cmp比較指令 49

3.2.4 tst條件指令 49

3.2.5 運(yùn)算指令 50

3.3 跳轉(zhuǎn)指令 52

3.4 訪問(wèn)程序狀態(tài)寄存器指令 55

3.4.1 mrs指令 55

3.4.2 msr指令 55

3.4.3 綜合實(shí)例 56

3.5 訪問(wèn)外部寄存器指令 60

3.5.1 ldr指令 60

3.5.2 str指令 60

3.5.3 ldrb指令 61

3.5.4 ldrh指令 62

3.6 ARM尋址方式 62

3.7 GNU書(shū)寫(xiě)風(fēng)格 69

3.7.1 MDK書(shū)寫(xiě)風(fēng)格與GNU書(shū)寫(xiě)風(fēng)格 69

3.7.2 標(biāo)號(hào)symbol(或label)70

3.7.3 語(yǔ)句格式 71

3.7.4 分段 72

3.8 偽操作 73

3.8.1 數(shù)據(jù)定義偽操作 74

3.8.2 匯編控制偽操作 75

3.8.3 .if.else.end if 75

3.8.4 雜項(xiàng)偽操作 76

3.9 GNU程序的編譯 77

3.9.1 交叉編譯工具 77

3.9.2 交叉編譯工具命名規(guī)則 77

3.9.3 程序編譯過(guò)程 77

3.9.4 編譯選項(xiàng) 79

3.9.5 elf與bin文件 82

3.9.6 編譯舉例 83

3.10 ATPCS和AAPCS 87

3.11 內(nèi)聯(lián)匯編 89

3.12 C語(yǔ)言和匯編語(yǔ)言相互調(diào)用舉例 91

第4章 異常 93

4.1 異?;A(chǔ)知識(shí) 93

4.2 異常處理 95

4.2.1 異常發(fā)生后硬件操作 95

4.2.2 異常向量表 95

4.2.3 保存執(zhí)行現(xiàn)場(chǎng) 97

4.2.4 異常處理的返回 97

4.2.5 異常恢復(fù) 98

4.3 中斷異常 99

4.3.1 中斷概念 99

4.3.2 中斷處理流程 99

4.4 軟中斷 100

4.4.1 swi指令 100

4.4.2 bkpt指令 101

4.4.3 舉例 101

4.4.4 同時(shí)執(zhí)行跳轉(zhuǎn)指令并切換模式 103

4.4.5 獲取中斷號(hào) 103

編程篇

第5章 GPIO及LED 106

5.1 GPIO 106

5.1.1 Exynos 4412 GPIO的特性 107

5.1.2 LED電路圖 108

5.1.3 如何操作GPIO 108

5.2  LED驅(qū)動(dòng)程序編寫(xiě) 110

5.2.1 匯編程序 110

5.2.2 C語(yǔ)言程序?qū)崿F(xiàn) 111

5.2.3 燒寫(xiě)程序 113

第6章 PWM 114

6.1 Exynos 4412 PWM 114

6.1.1 PWM基礎(chǔ)知識(shí) 114

6.1.2 Exynos 4412 PWM的特性 115

6.1.3 PWM的工作步驟 116

6.2 蜂鳴器驅(qū)動(dòng)程序編寫(xiě) 117

6.2.1 參考電路 117

6.2.2 寄存器 118

6.2.3 程序?qū)崿F(xiàn) 120

第7章 中斷 122

7.1 GIC 122

7.1.1 分發(fā)器 123

7.1.2 CPU接口 124

7.1.3 中斷處理 125

7.2 按鍵驅(qū)動(dòng)程序編寫(xiě) 125

7.2.1 電路圖 125

7.2.2 配置按鍵為中斷觸發(fā)方式 126

7.2.3 寄存器 127

7.2.4 程序?qū)崿F(xiàn) 131

7.3 輪詢方式 133

第8章 UART 135

8.1 UART概述 135

8.1.1 UART通信方式 135

8.1.2 UART數(shù)據(jù)幀格式 137

8.2 Exynos 4412 UART控制器 138

8.2.1 UART的特性 138

8.2.2 UART內(nèi)部功能模塊 139

8.2.3 時(shí)鐘源 140

8.3 UART的操作 141

8.3.1 參考電路 141

8.3.2 寄存器 142

8.3.3 程序?qū)崿F(xiàn) 145

8.3.4 移植printf 148

第9章 RTC 149

9.1 Exynos 4412 RTC 149

9.1.1 Exynos 4412 RTC的特性 149

9.1.2 RTC模塊 149

9.1.3 備用電池 150

9.1.4 晶體振蕩器 150

9.2 RTC寄存器 151

9.3 RTC的操作 153

9.4 程序?qū)崿F(xiàn) 157

第10章 看門狗 160

10.1 Exynos 4412 看門狗 160

10.1.1 看門狗模塊圖 160

10.1.2 工作原理 161

10.2 驅(qū)動(dòng)編寫(xiě) 161

10.2.1 看門狗軟件程序設(shè)計(jì)流程 161

10.2.2 看門狗寄存器設(shè)置 161

10.2.3 程序?qū)崿F(xiàn) 163

第11章 ADC 165

11.1 信號(hào)基礎(chǔ)知識(shí) 165

11.1.1 信號(hào)分類 165

11.1.2 脈沖編碼調(diào)制(PCM)166

11.2 Exynos 4412 ADC控制器 166

11.2.1 Exynos 4412 ADC控制器的特性 166

11.2.2 ADC控制器寄存器 167

11.2.3 中斷組合器 169

11.2.4 A/D轉(zhuǎn)換時(shí)間計(jì)算 171

11.3 程序?qū)崿F(xiàn) 171

11.3.1 參考電路 171

11.3.2 程序?qū)崿F(xiàn) 172

第12章 I2C 175

12.1 I2C總線 175

12.1.1 開(kāi)始條件和停止條件 175

12.1.2 數(shù)據(jù)有效性 176

12.1.3 數(shù)據(jù)傳輸格式 176

12.2 Exynos 4412 I2C控制器 177

12.2.1 Exynos 4412 I2C控制器概述 177

12.2.2 Exynos 4412 I2C總線接口的特點(diǎn) 178

12.2.3 數(shù)據(jù)讀寫(xiě)格式 178

12.2.4 數(shù)據(jù)讀寫(xiě)流程 179

12.2.5 I2C總線控制器寄存器 181

12.3 MPU6050及驅(qū)動(dòng)程序編寫(xiě) 184

12.3.1 MPU6050 184

12.3.2 MPU6050參考電路 186

12.3.3 MPU6050內(nèi)部寄存器 187

12.3.4 程序?qū)崿F(xiàn) 188

第13章 SPI 192

13.1 SPI基礎(chǔ)知識(shí) 192

13.1.1 SPI的特點(diǎn) 192

13.1.2 極性和相位 194

13.1.3 數(shù)據(jù)交換 196

13.2 Exynos 4412 SPI控制器 197

13.3 SPI的操作 198

13.3.1 參考電路 198

13.3.2 寄存器 200

13.3.3 初始化流程 202

13.3.4 收發(fā)數(shù)據(jù)流程 205

13.4 MCP2515 206

13.4.1 MCP2515簡(jiǎn)介 207

13.4.2 MCP2515的特點(diǎn) 207

13.4.3 結(jié)構(gòu)框圖 207

13.4.4 SPI 協(xié)議模塊 208

13.4.5 SPI 指令集 208

13.4.6 MCP2515初始化 211

13.4.7 數(shù)據(jù)發(fā)送 217

13.4.8 數(shù)據(jù)接收 219

13.4.9 MCP2515驅(qū)動(dòng)程序?qū)崿F(xiàn) 221

應(yīng)用篇

第14章 U-Boot 226

14.1 U-Boot概述 226

14.1.1 U-Boot的特性 227

14.1.2 工作模式 227

14.1.3 U-Boot常用命令228

14.1.4 配置舉例 230

14.2 U-Boot源程序 231

14.2.1 U-Boot源程序簡(jiǎn)介 231

14.2.2 U-Boot源程序配置 234

14.2.3 U-Boot源程序編譯 236

14.3 移植硬件驅(qū)動(dòng) 238

14.3.1 實(shí)現(xiàn)串口輸出 238

14.3.2 移植網(wǎng)卡驅(qū)動(dòng) 239

14.3.3 移植Flash 241

14.4 制作SD卡 246

14.4.1 燒寫(xiě)腳本 246

14.4.2 制作SD卡的步驟 247

14.4.3 通過(guò)SD卡啟動(dòng)燒寫(xiě)U-Boot 248

14.4.4 網(wǎng)絡(luò)燒寫(xiě)U-Boot 250

第15章 U-Boot程序啟動(dòng)分析 251

15.1 內(nèi)核啟動(dòng)流程概述251

15.1.1 U-Boot啟動(dòng)Linux內(nèi)核一般流程 251

15.1.2 Exynos 4412內(nèi)存映射 252

15.1.3 啟動(dòng)順序 252

15.1.4 SD卡鏡像布局 254

15.1.5 lds文件 255

15.2 U-Boot啟動(dòng)流程程序詳解 256

15.2.1 U-Boot啟動(dòng)程序流程 256

15.2.2 U-Boot啟動(dòng)詳解 257

第16章 網(wǎng)卡DM9000AE 273

16.1 網(wǎng)卡概述 273

16.2 DM9000AE 274

16.2.1 DM9000AE概述 274

16.2.2 引腳說(shuō)明 275

16.2.3 DM9000AE內(nèi)部寄存器 279

16.3 SROM 控制器 284

16.3.1 SROM控制器概述 284

16.3.2 寄存器SROM_BW和SROM_BC 284

16.3.3 配置SROM功能 288

16.3.4 SROM初始化 293

16.4 DM9000AE驅(qū)動(dòng)分析 297

16.4.1 網(wǎng)卡注冊(cè) 297

16.4.2 相關(guān)結(jié)構(gòu)體 298

16.4.3 網(wǎng)卡的初始化 301

16.4.4 數(shù)據(jù)的發(fā)送 305

16.4.5 數(shù)據(jù)的接收 306

16.4.6 網(wǎng)卡注銷 309

16.5 U-Boot中的網(wǎng)絡(luò)協(xié)議棧 309

第17章 關(guān)于匯編的兩點(diǎn)補(bǔ)充 321

17.1 為什么使用結(jié)構(gòu)體效率會(huì)高 321

17.1.1 定義多個(gè)全局變量 321

17.1.2 使用結(jié)構(gòu)體 323

17.1.3 文字池 325

17.1.4 繼續(xù)優(yōu)化 325

17.2  位置無(wú)關(guān)碼 326

17.2.1 為什么需要位置無(wú)關(guān)碼 326

17.2.2 如何編寫(xiě)位置無(wú)關(guān)碼 326

17.2.3 舉例 327



本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。