出版時間:2011-1 出版社:北京郵電大學(xué)出版社 作者:謝榮生 編 頁數(shù):297
Tag標(biāo)簽:無
內(nèi)容概要
本書基于arm處理器和嵌入式linux開發(fā)環(huán)境,全面講述了嵌入式系統(tǒng)軟件開發(fā)流程及主要內(nèi)容。《嵌入式系統(tǒng)軟件設(shè)計》分為五大部分,共10章。第一部分包括第1、2章,講述嵌入式linux開發(fā)環(huán)境的搭建和嵌入式linux軟件開發(fā)基礎(chǔ);第二部分包括第3、4、5章,分別講述嵌人式bootloader、內(nèi)核和根文件系統(tǒng)的基礎(chǔ)理論及其移植;第三部分為第6章,講述嵌入式系統(tǒng)驅(qū)動程序設(shè)計;第四部分為嵌入式應(yīng)用程序設(shè)計,包括第7、8、9章,主要講述基于qt的嵌入式gui設(shè)計和嵌入式數(shù)據(jù)庫程序設(shè)計;第五部分為第10章,通過兩個實際的嵌入式軟件開發(fā)項目,加深對前述內(nèi)容的理解,提高綜合應(yīng)用能力?! ”緯勺鳛楦叩仍盒5挠嬎銠C(jī)、電子類相關(guān)專業(yè)嵌入式系統(tǒng)相關(guān)課程的教科書,也可作為基于arm核嵌人式系統(tǒng)軟件開發(fā)的工程技術(shù)人員的參考資料。
書籍目錄
第1章 嵌入式linux開發(fā)環(huán)境 1.1 嵌入式交叉開發(fā)環(huán)境 1.2 嵌入式軟件開發(fā)的過程 1.2.1 嵌入式軟件的生成 1.2.2 嵌入式軟件的調(diào)試 1.2.3 嵌入式軟件的固化 1.3 嵌入式linux軟件開發(fā)的主要內(nèi)容 1.4 構(gòu)建嵌入式linux開發(fā)環(huán)境 1.4.1 開發(fā)平臺linux操作系統(tǒng)的安裝 1.4.2 嵌入式交叉編譯環(huán)境的搭建 1.4.3 宿主機(jī)和目標(biāo)機(jī)的串口通信配置 1.4.4 windows與vmware linux的共享 1.4.5 宿主機(jī)與目標(biāo)機(jī)文件的共享和傳輸 本章小結(jié) 習(xí)題 第2章 嵌入式linux開發(fā)基礎(chǔ) 2.1 linux程序的編譯和交叉編譯 2.1.1 gcc編譯器簡介 2.1.2 gcc的執(zhí)行過程 2.1.3 gcc的基本用法和選項 2.1.4 gcc的錯誤類型分析 2.2 嵌入式linux動態(tài)庫和靜態(tài)庫的制作與應(yīng)用 2.2.1 linux靜態(tài)庫和動態(tài)庫 2.2.2 靜態(tài)庫的制作和應(yīng)用 2.2.3 動態(tài)庫的制作和應(yīng)用 2.3 makefile基礎(chǔ)和應(yīng)用 2.3.1 makefile基本結(jié)構(gòu) 2.3.2 makefile變量 2.3.3 makefile規(guī)則 2.3.4 make使用 2.4 嵌入式linux遠(yuǎn)程調(diào)試 2.4.1 嵌入式linux遠(yuǎn)程調(diào)試概述 2.4.2 gdb簡介 2.4.3 gdb遠(yuǎn)程調(diào)試 2.5 嵌入式liunx多線程應(yīng)用程序設(shè)計 2.5.1 linux線程概述 2.5.2 線程基本編程 2.5.3 線程的同步與互斥 2.5.4 線程屬性 2.6 嵌入式linux下c和匯編的混合編程 2.6.1 混合編程概述 2.6.2 c調(diào)用匯編 2.6.3 匯編調(diào)用c 2.6.4 c內(nèi)嵌匯編 2.7 嵌入式linuxsocket網(wǎng)絡(luò)編程基礎(chǔ) 2.7.1 socket簡介 2.7.2 socket編程基礎(chǔ) 2.7.3 socket api及編程流程 本章小結(jié) 習(xí)題 第3章 嵌入式bootloader原理及移植 3.1 嵌入式bootloader的基本概念 3.2 嵌入式bootloader的兩個階段 3.2.1 bootloader的stage1 3.2.2 bootloader的stage2 3.3 典型嵌入式bootloader(blob)的分析 3.3.1 blob目錄分析 3.3.2 blob的兩個階段代碼分析 3.3.3 stan—ld—scrlpt、rest—ld-script鏈接腳本分析 3.4 blob在博創(chuàng)pxa270—s的移植 本章小結(jié) 習(xí)題 第4章 基于arm的linux內(nèi)核分析與移植 4.1 內(nèi)核移植準(zhǔn)備 4.1.1 內(nèi)核源碼的獲取 4.1.2 內(nèi)核源碼結(jié)構(gòu) 4.1.3 內(nèi)核配置方法和內(nèi)容 4.2 linux內(nèi)核啟動過程分析 4.2.1 啟動的第一階段 4.2.2 啟動的第二階段 4.3 內(nèi)核源碼的移植 4.3.1 配置交叉編譯環(huán)境 4.3.2 建立內(nèi)核的基本配置文件 4.3.3 編譯內(nèi)核 4.3.4 增加必要的設(shè)備驅(qū)動 4.3.5 燒寫內(nèi)核到目標(biāo)機(jī) 4.4 嵌入式linux內(nèi)核調(diào)試技術(shù) 本章小結(jié) 習(xí)題 第5章 嵌入式linux根文件系統(tǒng)及其制作 第6章 嵌入式系統(tǒng)驅(qū)動程序設(shè)計 第7章 基于qt的嵌入式gui程序設(shè)計基礎(chǔ) 第8章 qt程序設(shè)計核心技術(shù) 第9章 嵌入式數(shù)據(jù)庫程序設(shè)計 第10章 嵌入式軟件綜合項目實例 參考文獻(xiàn)
章節(jié)摘錄
4.數(shù)據(jù)包的發(fā)送 數(shù)據(jù)包的發(fā)送和接收是實現(xiàn)Linux網(wǎng)絡(luò)驅(qū)動程序中兩個最關(guān)鍵的過程,對這兩個過程處理的好壞將直接影響到驅(qū)動程序的整體運行質(zhì)量。圖6.7中也很明確地說明了網(wǎng)絡(luò)數(shù)據(jù)包的傳輸過程。首先在網(wǎng)絡(luò)設(shè)備驅(qū)動加載時,通過device域中的init函數(shù)指針調(diào)用網(wǎng)絡(luò)設(shè)備的初始化函數(shù)對設(shè)備進(jìn)行初始化,如果操作成功就可以通過device域中的open函數(shù)指針調(diào)用網(wǎng)絡(luò)設(shè)備的打開函數(shù)打開設(shè)備,再通過device域中的建立硬件包頭函數(shù)指針hard_header來建立硬件包頭信息。最后通過協(xié)議接口層函數(shù)dev_queue_xmit來調(diào)用device域中的hard_start_xmit函數(shù)指針來完成數(shù)據(jù)包的發(fā)送。該函數(shù)將把存放在套接字緩沖區(qū)中的數(shù)據(jù)發(fā)送到物理設(shè)備,該緩沖區(qū)是由數(shù)據(jù)結(jié)構(gòu)sk_buff來表示的?! ?.數(shù)據(jù)包的接收 數(shù)據(jù)包的接收是通過中斷機(jī)制來完成的,當(dāng)有數(shù)據(jù)到達(dá)時,就產(chǎn)生中斷信號,網(wǎng)絡(luò)設(shè)備驅(qū)動功能層就調(diào)用中斷處理程序,即數(shù)據(jù)包接收程序來處理數(shù)據(jù)包的接收,然后網(wǎng)絡(luò)協(xié)議接口層調(diào)用netif rx函數(shù)把接收到的數(shù)據(jù)包傳輸?shù)骄W(wǎng)絡(luò)協(xié)議的上層進(jìn)行處理。 6.4.5網(wǎng)絡(luò)設(shè)備驅(qū)動的實現(xiàn)模式 實現(xiàn)Linux網(wǎng)絡(luò)設(shè)備驅(qū)動功能主要有兩種形式,一是通過內(nèi)核來進(jìn)行加載,當(dāng)內(nèi)核啟動的時候,就開始加載網(wǎng)絡(luò)設(shè)備驅(qū)動程序,內(nèi)核啟動完成之后,網(wǎng)絡(luò)驅(qū)動功能也隨即實現(xiàn)了;二是通過模塊加載的形式。比較兩者,第二種形式更加靈活,在此著重對模塊加載形式進(jìn)行討論。 模塊設(shè)計是Linux中特有的技術(shù),它使Linux內(nèi)核功能更容易擴(kuò)展。采用模塊來設(shè)計Linux網(wǎng)絡(luò)設(shè)備驅(qū)動程序會很輕松,并且能夠形成固定的模式,任何人只要依照這個模式去設(shè)計,都能設(shè)計出優(yōu)良的網(wǎng)絡(luò)驅(qū)動程序。先簡要概述一下基于模塊加載的網(wǎng)絡(luò)驅(qū)動程序的設(shè)計步驟,后面結(jié)合具體實例來講解。首先通過模塊加載命令insmod來把網(wǎng)絡(luò)設(shè)備驅(qū)動程序插入到內(nèi)核之中。然后insmod將調(diào)用init_module()函數(shù)首先對網(wǎng)絡(luò)設(shè)備的init函數(shù)指針初始化,再通過調(diào)用register_netdev()函數(shù)在Linux系統(tǒng)中注冊該網(wǎng)絡(luò)設(shè)備,如果成功,再調(diào)用init函數(shù)指針?biāo)傅木W(wǎng)絡(luò)設(shè)備初始化函數(shù)來對設(shè)備初始化,將設(shè)備的device數(shù)據(jù)結(jié)構(gòu)插入到dev_base鏈表的末尾。最后可以通過執(zhí)行模塊卸載命令rmmod來調(diào)用網(wǎng)絡(luò)驅(qū)動程序中的clean_up_module()函數(shù)來對網(wǎng)絡(luò)驅(qū)動程序模塊卸載。具體實現(xiàn)過程如圖6.8所示。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載