出版時(shí)間:2011-5 出版社:北京航空航天大學(xué) 作者:楊鑄//唐攀 頁數(shù):654
Tag標(biāo)簽:無
前言
創(chuàng)作動(dòng)機(jī) 還在學(xué)生時(shí)代,就曾聽一位老師感嘆:學(xué)硬件的人搞不懂軟件,學(xué)軟件的人搞不懂硬件。似乎計(jì)算機(jī)軟硬件之間有一道難以逾越的鴻溝。因此學(xué)習(xí)computer software專業(yè)的我當(dāng)時(shí)就曾有一種沖動(dòng),要在裸機(jī)設(shè)備上,做一些有意思的編程,從而讓自己能夠從整體上,自下而上地了解、進(jìn)而貫通計(jì)算機(jī)的軟硬件體系知識(shí)。然而上世紀(jì)90年代初期國內(nèi)硬件的缺乏,軟件技術(shù)資料的匱乏,讓這樣的想法舉步維艱,幾經(jīng)嘗試后,終至放棄。隨著微軟VB、VC可視化IDE開發(fā)在國內(nèi)的興起,JAVA開發(fā)的興盛,國內(nèi)的計(jì)算機(jī)軟件教育越來越傾向于快速拖拽控件的應(yīng)用程序開發(fā),這使得上下貫通的夢想愈來愈遙不可及。正當(dāng)夢想遠(yuǎn)去之時(shí),國內(nèi)嵌入式產(chǎn)業(yè)開始興起,由于嵌入式本身的特性,使得必然要同時(shí)橫跨軟件和硬件,更為重要的是,ARM CPU以它的開放性和易學(xué)性一統(tǒng)嵌入式硬件的江湖,國內(nèi)基于ARM CPU的優(yōu)秀嵌入式硬件設(shè)備層出不窮,而互聯(lián)網(wǎng)在國內(nèi)的普及更是使得各種嵌入式技術(shù)資料的獲得和技術(shù)知識(shí)的交流變得非常的容易,于是終于再次有機(jī)會(huì)了卻學(xué)生時(shí)代的夢想。埋頭鉆研多年后,方有所心得,在其間更為Linux的人人為我,我為人人的理念所打動(dòng),故而萌發(fā)了要把自己的心得落于紙上,以降低嵌入式軟件開發(fā)的學(xué)習(xí)門檻、平滑其陡峭的學(xué)習(xí)曲線,讓更多的人受惠。然及至動(dòng)筆,方才發(fā)現(xiàn)自己會(huì)和讓別人會(huì)完全是兩碼事情,要想做到深入淺出,讓讀者以最少的時(shí)間成本代價(jià)獲得嵌入式底層軟件開發(fā)的技術(shù)精髓,何其難哉!本書的創(chuàng)作算是一種盡力的嘗試吧。本書內(nèi)容及組織方式第1篇(第1章——第3章)以ARM CPU及其匯編語言為背景,深入淺出地講解軟件是如何控制硬件的。第1章學(xué)習(xí)ARM的匯編指令、偽操作和開發(fā)環(huán)境,使讀者能在短時(shí)間內(nèi)掌握和使用ARM匯編語言進(jìn)行編程第2章精解ARM匯編偽指令、C與匯編的混合編程。在此基礎(chǔ)上,以S3C2440為實(shí)例,使讀者能在短時(shí)間內(nèi)掌握,通過閱讀硬件手冊去編程控制典型的硬件——LED燈、Watchdog、系統(tǒng)時(shí)鐘、UART串口。并為學(xué)習(xí)后續(xù)章節(jié)打下基礎(chǔ)。第3章以S3C2440為背景,揭秘ARM CPU硬件中斷處理過程和軟件中斷處理流程的各個(gè)細(xì)節(jié),并講解進(jìn)程切換的技術(shù)細(xì)節(jié)和通過MMU實(shí)現(xiàn)內(nèi)存保護(hù)的細(xì)節(jié)。在此基礎(chǔ)上,實(shí)現(xiàn)了一個(gè)可以在真實(shí)硬件上運(yùn)行的小型多任務(wù)操作系統(tǒng)——miniOS。通過本章的學(xué)習(xí),你將有機(jī)會(huì),以最少的時(shí)間代價(jià),親手在真實(shí)硬件上了解操作系統(tǒng)中橫跨軟硬件的兩大子系統(tǒng)(進(jìn)程調(diào)度、內(nèi)存管理)與硬件相關(guān)的底層實(shí)現(xiàn)原理和細(xì)節(jié)第2篇(第4章——第7章)以S3C2440開發(fā)板為硬件,講解制作嵌入式Linux系統(tǒng)的完整過程,具有很強(qiáng)的實(shí)用性和可操作性第4章介紹開發(fā)環(huán)境的搭建和使用第5章深入剖析u-boot,并在此基礎(chǔ)上完成對u-boot的移植和擴(kuò)充第6章站在制作產(chǎn)品和實(shí)際使用的角度,講解如何移植、裁剪、配置、編譯Linux內(nèi)核第7章詳細(xì)介紹制作嵌入式Linux根文件系統(tǒng)的步驟和技巧,并講解了主要應(yīng)用程序系統(tǒng)和GUI系統(tǒng)的建構(gòu)第3篇(第8章——第11章)以盡可能通俗的方式講解Linux設(shè)備驅(qū)動(dòng)中涉及的復(fù)雜理論,在此基礎(chǔ)上,以驅(qū)動(dòng)程序的2個(gè)接口(向下與硬件接口、向上與內(nèi)核子系統(tǒng)接口)為突破口,由淺入深地編寫和剖析了嵌入式真實(shí)典型硬件(LED燈、按鍵、網(wǎng)卡、LCD、觸摸屏)的驅(qū)動(dòng)程序。所有的驅(qū)動(dòng)程序均能在實(shí)際硬件上正常運(yùn)行,幫助讀者揭開Linux驅(qū)動(dòng)的神秘面紗第8章講解字符設(shè)備驅(qū)動(dòng)基本知識(shí),包括:編寫驅(qū)動(dòng)模塊的基礎(chǔ)知識(shí)、并發(fā)控制方法、阻塞與非阻塞編程第9章以簡單硬件——LED燈和Watchdog為切入點(diǎn),以實(shí)戰(zhàn)的方式詳細(xì)講述了字符設(shè)備的驅(qū)動(dòng)開發(fā),并在此基礎(chǔ)上詳細(xì)分析了內(nèi)核的misc設(shè)備子系統(tǒng)第10章以典型硬件——按鍵為切入點(diǎn),詳細(xì)介紹了Linux驅(qū)動(dòng)中的中斷編程和內(nèi)核定時(shí)器編程,并在此基礎(chǔ)上,以實(shí)例的方式詳細(xì)剖析了中斷底半部2種機(jī)制(tasklet和workqueue)的區(qū)別和不同應(yīng)用環(huán)境第11章詳細(xì)講解了網(wǎng)卡驅(qū)動(dòng)的編寫。以虛擬網(wǎng)卡snull為例詳解網(wǎng)卡驅(qū)動(dòng)向上的接口實(shí)現(xiàn),以真實(shí)網(wǎng)卡cs8900為例詳解網(wǎng)卡驅(qū)動(dòng)向下的接口實(shí)現(xiàn)第12章以實(shí)戰(zhàn)的方式,深入淺出地剖析了嵌入式Linux系統(tǒng)中最重要的2類驅(qū)動(dòng)(LCD和觸摸屏)的代碼實(shí)現(xiàn)。并簡介了塊設(shè)備驅(qū)動(dòng)和usb設(shè)備驅(qū)動(dòng)。感謝本書由楊鑄負(fù)責(zé)編寫并統(tǒng)編全部書稿,安博教育的唐攀作為本書的第二作者編寫了本書部分章節(jié),并為本書制作了大部分的插圖,對他踏實(shí)刻苦的鉆研精神和認(rèn)真負(fù)責(zé)的敬業(yè)精神,在此表示深深的謝意。感謝我的父母,是你們從小對我樸實(shí)無華的諄諄教導(dǎo),在我心靈的深處種下了要勤奮學(xué)習(xí)、要努力工作、要懂得感恩的火種,你們給了我強(qiáng)大的精神鼓勵(lì)和支持,使得本書得以順利完成。感謝來自寶島臺(tái)灣的中原大學(xué)生物醫(yī)學(xué)工程系蔡育秀教授和全美教育的田本和先生,在我學(xué)習(xí)和研究的過程中,給予了很大幫助。感謝北京航空航天大學(xué)出版社胡曉柏主任對本書的支持和關(guān)懷,正是他耐心的鼓勵(lì)和支持,才使得本書在最短的時(shí)間內(nèi)與讀者見面。感謝安博中程的孫夏玉、李奎、成寶宗、柳斌、劉鵬、張?jiān)坪?、關(guān)東升、關(guān)杰、葛紅艷、肖瑤,重慶東方的馬伯驪、馬林,達(dá)內(nèi)教育的馬鋒,北京軟件出口中心發(fā)展有限公司的王柱經(jīng)理、劉志強(qiáng)先生,威盛(中國)的修宸,神州數(shù)碼的楊建光,對本書的寫作和出版提供的幫助。感謝中科紅旗軟件技術(shù)有限公司姚文凱,神州數(shù)碼科技有限公司韓林利對本書提出的寶貴意見,為讀者提供了更前沿,更注重實(shí)踐的案例。感謝廣州友善之臂科技有限公司,他們出品的開發(fā)板和相關(guān)資料質(zhì)量很高,使得本書的寫作有了個(gè)很好的硬件平臺(tái),事半功倍。限于筆者水平有限,書中難免有遺漏和不足之處,懇請廣大讀者批評(píng)指正,聯(lián)系方式是E-mail:scyz@263.net。并開通了QQ技術(shù)討論群:47753328。作者 2011年 于北京維亞大廈成都少城公園重慶西永軟件園洛陽師范學(xué)院山西大學(xué)商務(wù)學(xué)院
內(nèi)容概要
本書包含ARM裸機(jī)程序開發(fā)、嵌入式Linux系統(tǒng)建構(gòu)、Linux驅(qū)動(dòng)程序開發(fā)三部分。從軟硬件的分界面開始,循序漸進(jìn),逐一詳細(xì)介紹嵌入式底層軟件開發(fā)的各個(gè)技術(shù)要點(diǎn),技術(shù)體系全面;既有一定的理論,但更加強(qiáng)調(diào)實(shí)戰(zhàn)性;深入淺出,能讓讀者以最少的時(shí)間成本代價(jià)獲得嵌入式底層軟件開發(fā)的技術(shù)精髓。
本書適合硬件工程師、軟件工程師、嵌入式軟件的從業(yè)人員、教授嵌入式軟件開發(fā)課程的老師、意欲從事嵌入式軟件開發(fā)工作的大學(xué)生閱讀。
作者簡介
楊鑄 教育背景:電子科技大學(xué)通信與信息工程工學(xué)碩士;北京郵電大學(xué)工學(xué)學(xué)士
學(xué)位,專業(yè)為計(jì)算機(jī)軟件。重大經(jīng)歷:作為主要組織人員,組織完成了中國移動(dòng)四川分公司最早的短信系統(tǒng)平臺(tái)的建設(shè);早期專注于Microsoft的OS和Database的技術(shù)研究與職業(yè)培訓(xùn),是微軟在中國的早期MCT之一,MCP號(hào)1694198;參與完成國家863計(jì)劃項(xiàng)目——信息安全產(chǎn)品演示和驗(yàn)證平臺(tái)的子課題并與合作公司完成產(chǎn)品化開發(fā)—內(nèi)部網(wǎng)絡(luò)監(jiān)管系統(tǒng);中后期專注于嵌入式軟件開發(fā)的研究與職業(yè)培訓(xùn),精于ARM體系結(jié)構(gòu)與嵌入式Linux。
書籍目錄
第1篇 ARM體系結(jié)構(gòu)與編程
第1章 ARM匯編編程基礎(chǔ)
1.1 ARM CPU寄存器
1.1.1 普通寄存器R0~Rl5
1.1.2 狀態(tài)寄存器CPSR與SPSR
1.1.3 流水線對PC的值的影響
1.2 基本尋址方式與基本指令
1.2.1 最常見尋址方式精解
1.2.2 最常見指令精解
1.3 ARM匯編偽操作
1.3.1 匯編偽操作在匯編程序中的使用范例
1.3.2 最常見匯編偽操作精解
1.3.3 匯編偽操作列表
1.4 ADS開發(fā)環(huán)境的使用
1.4.1 在ADS中進(jìn)行裸機(jī)程序的編輯、編譯、運(yùn)行
1.4.2 在AXD中進(jìn)行裸機(jī)程序調(diào)試的方法與步驟
1.5 RealView MDK開發(fā)環(huán)境的使用
1.5.1 在MDK開發(fā)環(huán)境下編寫裸機(jī)程序
1.5.2 MDK調(diào)試裸機(jī)程序的方法與步驟
1.6 其他常見尋址模式與常見指令
1.6.1 其他常見尋址模式
1.6.2 其他常見指令
第2章 ARM編程進(jìn)階
2.1 ARM匯編偽指令
2.1.1 精解ldr偽指令
2.1.2 精解adr
2.1.3 精解adrl偽指令
2.1.4 nop偽指令
2.2 ATPCS與混合編程
2.2.1 ATPCS規(guī)則精解
2.2.2 精解C和ARM匯編程序間的相互調(diào)用
2.3 裸機(jī)硬件的控制方法與例程
2.3.1 建立真實(shí)硬件的開發(fā)和調(diào)試環(huán)境
2.3.2 軟件控制(驅(qū)動(dòng))硬件的編程原理
2.3.3 裸機(jī)硬件控制程序?qū)嵗?br /> 2.3.4 啟動(dòng)例程
2.4 看門狗定時(shí)器
2.4.1 看門狗定時(shí)器的用途
2.4.2 看門狗工作原理
2.4.3 看門狗實(shí)驗(yàn)
2.5 系統(tǒng)時(shí)鐘
2.5.1 系統(tǒng)工作時(shí)鐘頻率
2.5.2 時(shí)鐘驅(qū)動(dòng)實(shí)驗(yàn)
2.6 SDRAM內(nèi)存
2.6.1 3C2440存儲(chǔ)器地址段(Bank)
2.6.2 SDRAM內(nèi)存工作原理
2.6.3 SDRAM的讀操作
2.6.4 SDRAM預(yù)充電操作
2.6.5 SDRAM突發(fā)操作
2.6.6 SDRAM寫操作
2.6.7 SDRAM的刷新
2.6.8 內(nèi)存驅(qū)動(dòng)實(shí)驗(yàn)
2.7 UART串口
2.7.1 同步通信和異步通信
2.7.2 數(shù)據(jù)的串行和并行通信方式
……
第2篇 嵌入式Linux系統(tǒng)建構(gòu)
第3篇 Linux驅(qū)動(dòng)程序開發(fā)
參考文獻(xiàn)
編輯推薦
《深入淺出:嵌入式底層軟件開發(fā)》包含ARM裸機(jī)程序開發(fā)、嵌入式Linux系統(tǒng)建構(gòu)、Linux驅(qū)動(dòng)程序開發(fā)三部分。《深入淺出:嵌入式底層軟件開發(fā)》從軟硬件的分界面開始,循序漸進(jìn),逐一詳細(xì)講解嵌入式底層軟件開發(fā)的各個(gè)技術(shù)要點(diǎn),技術(shù)體系全面;既有一定的理論,但更加強(qiáng)調(diào)實(shí)戰(zhàn)性;深入淺出,能讓讀者以最少的時(shí)間成本代價(jià)獲得嵌入式底層軟件開發(fā)的技術(shù)精髓。如果您是一位硬件工程師,想在最短的時(shí)間內(nèi)學(xué)習(xí)軟件控制硬件的原理,并編寫軟件來直接控制硬件,那么本書是為您準(zhǔn)備的,請閱讀本書的第一篇。如果您是一位應(yīng)用軟件工程師,很好奇到底是誰幫助你的應(yīng)用軟件去操控底層的硬件完成各種各樣有意思的工作,那么請閱讀本書的第一篇和第三篇。如果您是一位嵌入式軟件的從業(yè)人員,那么相信通過閱讀本書,您能以最少的時(shí)間成本,了解到嵌入式底層軟件開發(fā)的技術(shù)精髓,回答你為了趕項(xiàng)目工期而不得不囫圇吞棗的技術(shù)問題。如果您是一位教授嵌入式軟件開發(fā)課程的老師,相信本書能有助于您更加深入淺出地講好您的課程,因?yàn)楸緯乃袃?nèi)容和實(shí)驗(yàn)都經(jīng)過了數(shù)百名學(xué)員的親手操作和認(rèn)可。如果您是一位即將走出校門,意欲從事嵌入式軟件開發(fā)工作的大學(xué)生,當(dāng)本書能助您一臂之力,快速掌握實(shí)際開發(fā)工作中所需的實(shí)戰(zhàn)技能,使您順利適應(yīng)新的工作崗位的話,我將感到無比的自豪。如果您是一位在校學(xué)生并和學(xué)生時(shí)代的我有相同沖動(dòng)的話,那么請通讀本書吧!
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載