ARM Linux 入門與實(shí)踐:基于TI AM335x 處理器
定 價(jià):69 元
- 作者:程昌南,沈建華 著
- 出版時(shí)間:2018/3/1
- ISBN:9787512426467
- 出 版 社:北京航空航天大學(xué)出版社
- 中圖法分類:TP316.85
- 頁(yè)碼:404
- 紙張:膠版紙
- 版次:1
- 開本:16開
《ARM Linux 入門與實(shí)踐:基于TI AM335x 處理器》可以算是《ARM Linux入門與實(shí)踐——一個(gè)嵌入式愛好者的自學(xué)體驗(yàn)》的姊妹篇,但因?qū)⑷茿RM9處理器S3C2410改成了TI的Cortex—A8處理器AM335x,所以除保留了前一《ARM Linux 入門與實(shí)踐:基于TI AM335x 處理器》的思路及少部分章節(jié)外,大部分的內(nèi)容都做了修改。
《ARM Linux 入門與實(shí)踐:基于TI AM335x 處理器》分為三篇:ARM硬件、ARM前后臺(tái)系統(tǒng)、基于Linux系統(tǒng)的應(yīng)用。第一篇ARM硬件,包括TI官方評(píng)估板ARM335x Starter Kit的硬件分析和評(píng)估板入門指南;第二篇ARM前后臺(tái)系統(tǒng),包括TI官方無(wú)操作系統(tǒng)平臺(tái)下的應(yīng)用庫(kù)——Starterware開發(fā)環(huán)境搭建及應(yīng)用分析、啟動(dòng)代碼分析、Boot源代碼分析、LCD和觸摸屏源代碼分析、前后臺(tái)系統(tǒng)應(yīng)用等;第三篇Linux系統(tǒng)的應(yīng)用,包括基于PC的操作、應(yīng)用編程和驅(qū)動(dòng)、嵌入式Linux開發(fā)環(huán)境創(chuàng)建、嵌入式Linux驅(qū)動(dòng)開發(fā)和網(wǎng)絡(luò)編程等。
1.ARM和Linux的學(xué)習(xí)體會(huì)
如何才能學(xué)好并盡快上手ARM和Linux?這是很多初學(xué)者想問的,也是曾經(jīng)在網(wǎng)上熱烈討論過的。其實(shí)學(xué)習(xí)沒有捷徑,不管您是否特別聰明,主要還是取決于您的態(tài)度和一定的方法,嵌入式ARM和Linux的學(xué)習(xí)也一樣。在此筆者想根據(jù)自己在自學(xué)ARM與I.inux過程中的體會(huì)并結(jié)合網(wǎng)上的討論做一下總結(jié)。
對(duì)于ARM的學(xué)習(xí),如果您已經(jīng)有了單片機(jī)或計(jì)算機(jī)結(jié)構(gòu)的基本知識(shí),并且也有了C語(yǔ)言的基礎(chǔ),那么上手還是比較容易的。首先,應(yīng)該了解一下ARM的體系結(jié)構(gòu),它有哪些版本,哪些模式,哪些寄存器、異常等,這方面的內(nèi)容可以參考《ARM體系結(jié)構(gòu)與編程》一書。這本書介紹的內(nèi)容還是比較全面的,可以先快速地瀏覽,特別是匯編指令不需要記住,以后應(yīng)用時(shí)再查。其實(shí)很多內(nèi)容筆者也早已經(jīng)忘記,但并不妨礙正常理解和應(yīng)用ARM。其次,選定一種具體廠家型號(hào)的ARM處理器,學(xué)習(xí)該處理器相關(guān)開發(fā)工具的使用,如開發(fā)環(huán)境、仿真器及評(píng)估板等。然后,可以分析該處理器的外圍擴(kuò)展方法,如SDRAM、NANDFlash、NORFlash、SD卡等,一般官方或第三方都會(huì)提供原理圖,可以嘗試分析原理圖。接著,要理解該處理器的啟動(dòng)過程,嘗試從一塊裸板逐步運(yùn)行自己的應(yīng)用程序,也可以參考官方的啟動(dòng)代碼及例程。最后,就可以調(diào)試、測(cè)試該處理器的各種外圍部件,如定時(shí)器PWM、串口、LCD等,特別是中斷及執(zhí)行過程。
對(duì)于Linux的學(xué)習(xí),盡管我們最終應(yīng)用的是嵌入式Linux,但還是要先在PC下學(xué)習(xí),原因是,無(wú)論基于PC還是嵌入式處理器,其Linux開發(fā)、編程、調(diào)試等都是相近的,而PC的性能、資源等都更加豐富,嵌入式Linux的開發(fā)環(huán)境通常也都建立在PC的Linux環(huán)境下,同時(shí)有大量Linux的相關(guān)專著、編程書籍等都是針對(duì)PC編寫的。至于學(xué)習(xí)的順序,筆者覺得應(yīng)該先在PC上安裝一種常用的Linux發(fā)行版系統(tǒng)(以前是RedHat.現(xiàn)在常用Ubuntu),再買一兩本相應(yīng)的入門書籍,熟悉一下Linux環(huán)境,學(xué)習(xí)常用的命令和操作(不一定多,基本、常用的就可以,以后在使用過程中再慢慢積累),理解Linux下的目錄結(jié)構(gòu)與作用等。其次,學(xué)習(xí)在Linux環(huán)境下編程,《GNU/Linux編程指南》或《UNIX環(huán)境高級(jí)編程》都可以,它們都是非常經(jīng)典的專著,對(duì)文件描述符的概念,打開、讀、寫等操作的系列基礎(chǔ)知識(shí)都有介紹,如果沒有這些基礎(chǔ)而直接看《Linux設(shè)備驅(qū)動(dòng)程序》會(huì)覺得困難。再次,拿本內(nèi)核的書翻翻,了解一下Linux內(nèi)核源代碼樹的目錄結(jié)構(gòu)、編譯等。最后,學(xué)習(xí)《Linux設(shè)備驅(qū)動(dòng)程序》,理解驅(qū)動(dòng)程序的結(jié)構(gòu)框架等。根據(jù)實(shí)際需要,讀者也可學(xué)習(xí)網(wǎng)絡(luò)編程和圖形用戶界面GUI編程,比較權(quán)威的書是《UNIX網(wǎng)絡(luò)編程》和《C++GUIQT4編程》;另外由于QTGUI是基于C++的,所以需要學(xué)習(xí)C++的知識(shí),可參考《C++程序設(shè)計(jì)教程》一書。如果不想學(xué)C++,也可以選擇其他如MicroWindows、MiniGUI等。有了PC的Linux基礎(chǔ)及編程知識(shí)后,就可以直接應(yīng)用于嵌入式系統(tǒng)了!此時(shí)需要一個(gè)硬件平臺(tái)(如開發(fā)板或直接的產(chǎn)品等目標(biāo)系統(tǒng))和該平臺(tái)的開發(fā)環(huán)境。開發(fā)環(huán)境,一般的處理器原廠或第三方都會(huì)提供,所以不需要移植。它包括建立在PC宿主機(jī)上的編譯等工具和嵌入式Linux內(nèi)核(包括硬件BSP等驅(qū)動(dòng))源碼。此時(shí)只需學(xué)習(xí)開發(fā)環(huán)境的建立和使用,并將PC所學(xué)的知識(shí)應(yīng)用于具體的嵌入式平臺(tái)。如果涉及硬件及驅(qū)動(dòng),那么應(yīng)該具備一定的硬件調(diào)試和解決問題的能力,此時(shí)單片機(jī)、ARM基礎(chǔ)知識(shí)及外圍設(shè)備接口的調(diào)試能力將起到很重要的作用。很多朋友(包括非電子、自動(dòng)化專業(yè)的朋友)都希望自己將來(lái)能從事Linux驅(qū)動(dòng)方面的工作,認(rèn)為學(xué)習(xí)了Linux驅(qū)動(dòng)方面的知識(shí)就行了,而往往忽略硬件本身的調(diào)試和解決問題的能力,我覺得這是不正確的。因?yàn)長(zhǎng)inux驅(qū)動(dòng)與前后臺(tái)控制硬件外設(shè)的區(qū)別只在于它與應(yīng)用程序的接口,它要按照一定的結(jié)構(gòu)和規(guī)則去驅(qū)動(dòng),這種規(guī)則涉及的也就是通常講的Linux的驅(qū)動(dòng)知識(shí)和技術(shù)。它是固定的,容易掌握的,只要去遵循就不會(huì)出問題。而硬件及外設(shè)是千變?nèi)f化的,所涉及的技術(shù)是多方面的,除處理器本身外,還有各種接口及協(xié)議,數(shù)字、模擬技術(shù)等,在設(shè)計(jì)、調(diào)試時(shí)是很容易出現(xiàn)問題的。此時(shí)就要求我們有一定的調(diào)試、測(cè)試手段和方法。所以筆者認(rèn)為要想成為一名優(yōu)秀的ARMLinux驅(qū)動(dòng)工程師,首先必須是一名優(yōu)秀的、具有豐富調(diào)試經(jīng)驗(yàn)的單片機(jī)或ARM處理器應(yīng)用工程師,所以希望那些想從事ARMLinux底層驅(qū)動(dòng)相關(guān)工作的朋友在還沒有機(jī)會(huì)接觸ARM和Linux時(shí),不要對(duì)目前的單片機(jī)工作產(chǎn)生抵觸情緒,因?yàn)槿绻麤]有一個(gè)扎實(shí)的單片機(jī)基礎(chǔ)和調(diào)試能力,即使有一個(gè)ARM和Linux的工作機(jī)會(huì),您也很難成為這方面最優(yōu)秀的工程師。
程昌南,網(wǎng)名阿南,2000年開始自學(xué)單片機(jī),2003年獲得全國(guó)大學(xué)生電子競(jìng)賽全國(guó)一等獎(jiǎng),2004年大學(xué)畢業(yè)即開始從事基于ARMLinux等嵌入式軟件、硬件技術(shù)的產(chǎn)品開發(fā),熟悉51系列、STM32等單片機(jī),三星、NXP和海思系列的ARM處理器,從事過音視頻傳輸控制、車載GPS、無(wú)人機(jī)和機(jī)器人等多個(gè)行業(yè),著有《ARMLinux入門與實(shí)踐——一個(gè)嵌入式愛好者的自學(xué)體驗(yàn)》、《ARMCortex—A8硬件設(shè)計(jì)DIY》。
第一篇 ARM硬件
第1章 概述
1.1 嵌入式系統(tǒng)、單片機(jī)、ARM及Linux
1.2 ARM處理器的選擇
1.3 AM335x簡(jiǎn)介和公版資源
1.4 AM335x官方開發(fā)資源
1.4.1 硬件開發(fā)板
1.4.2 軟件開發(fā)包
1.5 ARM開發(fā)工具及調(diào)試方法
1.5.1 集成開發(fā)環(huán)境
1.5.2 硬件仿真器
1.5.3 前后臺(tái)系統(tǒng)的調(diào)試方法
1.5.4 嵌入式Linux的開發(fā)調(diào)試方法
1.6 “實(shí)踐再實(shí)踐”在ARM學(xué)習(xí)中的意義
第2章 AM335x Starter Kit實(shí)驗(yàn)平臺(tái)硬件分析
2.1 AM335x Starter Kit實(shí)驗(yàn)平臺(tái)概述及功能組成
2.2 地址空間分配
2.2.1 AM335x處理器內(nèi)存映射
2.2.2 AM335x Starter Kit平臺(tái)地址空間分配
2.3 常用元件概述
2.3.1 電阻標(biāo)稱值
2.3.2 肖特基二極管
2.3.3 功率電感
2.3.4 鐵氧體磁珠
2.3.5 自恢復(fù)保險(xiǎn)絲PPTC
2.3.6 有源和無(wú)源蜂鳴器
2.4 AM335x Starter Kit(TMDSSK3358)原理圖分析
2.4.1 MPU AM3358
2.4.2 時(shí)鐘電路
2.4.3 上電引導(dǎo)模式配置
2.4.4 JTAG接口電路
2.4.5 霺D卡接口
2.4.6 DDR3 SDRAM存儲(chǔ)器
2.4.7 調(diào)試串口
2.4.8 以太網(wǎng)接口
2.4.9 按鍵GPIO
2.4.1 0LED顯示
2.4.1 1IIC總線的EEROM存儲(chǔ)器
2.4.1 2復(fù)位電路
2.4.1 3按鍵中斷輸入
2.4.1 4電源輸入及PMIC電源管理芯片
2.4.1 5Wi-Fi和藍(lán)牙模塊
2.4.1 6USB Host/Device
2.4.1 7IIS音頻電路
2.4.1 8LCD顯示
第3章 AM335x Starter Kit入門
3.1 A.M335x Starter Kit快速入門指南
3.2 硬件調(diào)試概述
3.3 XDS100v2仿真器和ccs軟件的使用
3.3.1 集成開發(fā)環(huán)境CCS的下載與安裝
3.3.2 仿真器與目標(biāo)板的硬件安裝
3.3.3 XDS100v2 USB仿真器在CCSv6集成開發(fā)環(huán)境中的配置
……
第二篇 ARM前后臺(tái)系統(tǒng)
第三篇 基于Linux系統(tǒng)的應(yīng)用