“十二五”高等院校規(guī)劃教材:嵌入式系統(tǒng)高級(jí)C語(yǔ)言編程
定 價(jià):39 元
- 作者:凌明 著
- 出版時(shí)間:2011/1/1
- ISBN:9787512403086
- 出 版 社:北京航空航天大學(xué)出版社
- 中圖法分類(lèi):TP312C
- 頁(yè)碼:322
- 紙張:膠版紙
- 版次:1
- 開(kāi)本:16開(kāi)
《嵌入式系統(tǒng)高級(jí)C語(yǔ)言編程》將主要介紹針對(duì)嵌入式系統(tǒng)的基于C語(yǔ)言的軟件項(xiàng)目開(kāi)發(fā)的流程,較為復(fù)雜的c語(yǔ)言編程知識(shí)和技巧,編程風(fēng)格和調(diào)試習(xí)慣,并通過(guò)對(duì)一個(gè)具體的軟件模塊(ASIX Window GUI)的分析,介紹分析代碼的方法以及設(shè)計(jì)軟件系統(tǒng)需要考慮的各要素。《嵌入式系統(tǒng)高級(jí)C語(yǔ)言編程》將以實(shí)際項(xiàng)目中的代碼作實(shí)例來(lái)進(jìn)行介紹,詳細(xì)分析在嵌入式系統(tǒng)開(kāi)發(fā)中程序員應(yīng)該注意的方法,技巧和陷阱。
《嵌入式系統(tǒng)高級(jí)C語(yǔ)言編程》的讀者可以是學(xué)習(xí)嵌入式系統(tǒng)的高校學(xué)生(高年級(jí)本科生或碩士研究生),或者是從事嵌入式系統(tǒng)編程的軟硬件工程師。
凌明,1972年5月出生,副教授,F(xiàn)任東南大學(xué)電子科學(xué)與工程學(xué)院副院長(zhǎng),東南大學(xué)集成電路學(xué)院副院長(zhǎng)。先后參加了十一五“核、高、基”國(guó)家科技重大專(zhuān)項(xiàng)“個(gè)人移動(dòng)信息終端SOC芯片研發(fā)與應(yīng)用”項(xiàng)目:國(guó)家十五、十一五“863”、“可重構(gòu)媒體處理器”、“空間信息接收手持終端原型機(jī)開(kāi)發(fā)”、“手持信息終端SOC設(shè)計(jì)”等項(xiàng)目:江蘇省十五科技招標(biāo)項(xiàng)目和省成果轉(zhuǎn)化專(zhuān)項(xiàng)“基于目標(biāo)產(chǎn)品的SOC設(shè)計(jì)與產(chǎn)業(yè)化”、“GPS導(dǎo)航芯片及目標(biāo)產(chǎn)品產(chǎn)業(yè)化”。獲江蘇省2003年度科技進(jìn)步三等獎(jiǎng)一項(xiàng),江蘇省2004年度科技進(jìn)步一等獎(jiǎng)一項(xiàng),教育部2009科技進(jìn)步二等獎(jiǎng)一項(xiàng):多次獲東南大學(xué)獎(jiǎng)教金、青年教師授課競(jìng)賽獎(jiǎng)勵(lì)。主要研究方向:SOC設(shè)計(jì)方法學(xué)、SOC存儲(chǔ)子系統(tǒng)設(shè)計(jì)、嵌入式系統(tǒng)設(shè)計(jì)等。
第1章 概述:
1.1 C語(yǔ)言的歷史和特點(diǎn)
1.2 一個(gè)小測(cè)驗(yàn)
1.3 如何學(xué)好嵌入式系統(tǒng)中的C語(yǔ)言編程
1.3.1 真正深刻地認(rèn)識(shí)存儲(chǔ)器
1.3.2 認(rèn)識(shí)和理解嵌入式C編程環(huán)境
1.3.3 認(rèn)識(shí)和掌握C語(yǔ)言中的常見(jiàn)陷阱
1.3.4 掌握C語(yǔ)言程序設(shè)計(jì)過(guò)程中的調(diào)試方法
1.4 推薦的參考書(shū)目
1.4.1 C語(yǔ)言的初級(jí)教材
1.4.2 C語(yǔ)言進(jìn)階書(shū)籍
1.5 思考題
第2章 C語(yǔ)言的關(guān)鍵字與運(yùn)算符
2.1 C語(yǔ)言的關(guān)鍵字
2.1.1 數(shù)據(jù)類(lèi)型關(guān)鍵字
2.1.2 控制語(yǔ)句關(guān)鍵字與相關(guān)語(yǔ)句
2.1.3 存儲(chǔ)類(lèi)型關(guān)鍵字
2.1.4 其他類(lèi)型關(guān)鍵字
2.2 C語(yǔ)言的運(yùn)算符
2.2.1 運(yùn)算符中需要注意的問(wèn)題
2.2.2 運(yùn)算符的優(yōu)先級(jí)
2.2.3 表達(dá)式求值
2.2.4 運(yùn)算符的詞法分析
2.3 C語(yǔ)言的指針
2.3.1 指針的3個(gè)要素
2.3.2 指針的類(lèi)型
2.3.3 指針的初始化
2.3.4 指針的運(yùn)算
2.3.5 指針與字符串
2.4 思考題
第3章 C語(yǔ)言的函數(shù)
3.1 C語(yǔ)言的函數(shù)
3.1.1 函數(shù)的聲明、原型與返回值
3.1.2 函數(shù)的參數(shù)
3.1.3 可變參數(shù)的函數(shù)
3.1.4 遞歸函數(shù)
3.2 標(biāo)準(zhǔn)庫(kù)函數(shù)
3.2.1 輸入與輸出:
3.2.2 字符類(lèi)別測(cè)試:
3.2.3 字符串函數(shù):
3.2.4 數(shù)學(xué)函數(shù):
3.2.5 實(shí)用函數(shù):
3.2.6 斷言:
3.2.7 可變參數(shù)表:
3.2.8 非局部跳轉(zhuǎn):
3.2.9 標(biāo)準(zhǔn)庫(kù)函數(shù)與系統(tǒng)調(diào)用
3.3 聲明
3.4 作用域與鏈接屬性
3.4.1 代碼塊作用域
3.4.2 文件作用域
3.4.3 函數(shù)作用域
3.4.4 原型作用域
3.4.5 鏈接屬性
3.5 C的預(yù)編譯處理
3.6 思考題
第4章 編譯、匯編與調(diào)試
4.1 嵌入式軟件開(kāi)發(fā)流程與工具
4.1.1 嵌入式軟件開(kāi)發(fā)的一般流程
4.1.2 編譯器簡(jiǎn)介
4.1.3 鏈接器簡(jiǎn)介
4.1.4 嵌入式軟件開(kāi)發(fā)的調(diào)試環(huán)境
4.1.5 ARM處理器的開(kāi)發(fā)工具
4.2 基于C語(yǔ)言軟件項(xiàng)目中的文件關(guān)系
4.2.1 C語(yǔ)言項(xiàng)目中的文件依賴(lài)關(guān)系
4.2.2 Make文件
4.3 C代碼與匯編
4.3.1 ATPCS
4.3.2 C與匯編的混合編程
4.3.3 ARM編譯器對(duì)局部變量和入口參數(shù)的處理
4.4 思考題
第5章 存儲(chǔ)器與指針
5.1 再論C語(yǔ)言中的指針
5.1.1 指針與數(shù)組
5.1.2 函數(shù)指針
5.2 C語(yǔ)言中的內(nèi)存陷阱
5.2.1 局部變量
5.2.2 動(dòng)態(tài)存儲(chǔ)區(qū)
5.2.3 函數(shù)的指針參數(shù)
5.3 堆棧
5.3.1 堆棧的作用
5.3.2 函數(shù)調(diào)用棧幀與中斷棧幀
5.3.3 堆棧的跟蹤與調(diào)試
5.4 動(dòng)態(tài)內(nèi)存分配
5.4.1 算法
5.4.2 malloc()函數(shù)
5.4.3 free()函數(shù)
5.5 利用鏈表構(gòu)建復(fù)雜數(shù)據(jù)結(jié)構(gòu)
5.5.1 ASIX Window的數(shù)據(jù)結(jié)構(gòu)
5.5.2 ASIX Window的窗口創(chuàng)建函數(shù)
5.5.3.ASIXWindow的窗口刪除函數(shù)
5.6 思考題
第6章 中斷與設(shè)備驅(qū)動(dòng)
6.1 設(shè)備驅(qū)動(dòng)簡(jiǎn)介
6.1.1 設(shè)備驅(qū)動(dòng)、Boot Loader與BSP
6.1.2 設(shè)備驅(qū)動(dòng)程序的結(jié)構(gòu)
6.2 中斷與中斷處理
6.2.1 中斷的重要性
6.2.2 中斷的分類(lèi)與處理過(guò)程
6.2.3 C語(yǔ)言中的中斷處理
6.2.4 中斷處理程序的編寫(xiě)
6.3 函數(shù)的可重入問(wèn)題
6.3.1 什么是函數(shù)的重入
6.3.2 函數(shù)可重人的條件
6.3.3 不可重人函數(shù)的互斥保護(hù)
6.3.4 重入函數(shù)的偽問(wèn)題
6.4 設(shè)備驅(qū)動(dòng)案例——鍵盤(pán)驅(qū)動(dòng)
6.4.1 5~5鍵盤(pán)的硬件原理
6.4.2 鍵盤(pán)設(shè)備驅(qū)動(dòng)實(shí)例
6.5 啟動(dòng)代碼——UBOOT分析
6.5.1 系統(tǒng)啟動(dòng)與:Boot Loader
6.5.2 UBOOT、技術(shù)實(shí)現(xiàn)分析
6.6 思考題
第7章 編碼風(fēng)格
7.1 簡(jiǎn)介及說(shuō)明
7.2 語(yǔ)言規(guī)則
7.2.1 基礎(chǔ)
7.2.2 數(shù)據(jù)
7.2.3 說(shuō)明與表達(dá)式
7.2.4 函數(shù)
……
第8章 代碼的調(diào)試
第9章 ASIX Window Gui設(shè)計(jì)詳解
②函數(shù)名的命名沒(méi)有意義,閱讀這段代碼的人很難從abc這個(gè)函數(shù)名上看出這個(gè)函數(shù)到底是什么功能。程序員在編寫(xiě)代碼時(shí),首先要想到的就是自己編寫(xiě)的代碼不僅是給編譯器“看”的,更重要的是給別人或是自己看的。因此在函數(shù)命名以及變量命名時(shí)必須采用有意義的英文單詞或者是單詞短語(yǔ)。
③數(shù)組c[]中存放的是學(xué)生的成績(jī),程序定義了數(shù)組中一共有9個(gè)元素。但是為了程序的易讀性和將來(lái)的可維護(hù)性,最好應(yīng)該將學(xué)生的人數(shù)定義為一個(gè)常量宏,這樣當(dāng)學(xué)生人數(shù)發(fā)生變化時(shí)可以非常方便地進(jìn)行修改。
④函數(shù)abc()沒(méi)有人口參數(shù),也沒(méi)有返回值,程序通過(guò)全局?jǐn)?shù)組c[]和全局變量b來(lái)傳遞函數(shù)內(nèi)部的數(shù)據(jù)。初學(xué)寫(xiě)程序的人都特別喜歡使用全局變量,因?yàn)闆](méi)有限制,想什么時(shí)候引用都可以。其實(shí),不恰當(dāng)?shù)厥褂萌肿兞渴浅绦騿T的惡夢(mèng),全局變量加強(qiáng)了函數(shù)間的耦合度,使得程序的模塊間彼此緊密關(guān)聯(lián),這樣會(huì)使得對(duì)程序的修改牽一發(fā)而動(dòng)全身,非常不適合代碼的復(fù)用和調(diào)試;而且正如我們?cè)诘?章中所介紹的,全局變量是臨界資源,會(huì)造成代碼變得不可安全重入。因此,一個(gè)設(shè)計(jì)合理的軟件項(xiàng)目一定是非常謹(jǐn)慎地使用全局變量的,函數(shù)間的關(guān)聯(lián)通過(guò)函數(shù)的人口參數(shù)與返回值發(fā)生。
⑤最后的問(wèn)題是程序書(shū)寫(xiě)風(fēng)格的問(wèn)題,比如上面的代碼沒(méi)有按照規(guī)則縮進(jìn),沒(méi)有必要的注釋?zhuān)谶\(yùn)算符前后沒(méi)有必要的空格。雖然這些問(wèn)題并不影響程序的正確執(zhí)行,但它們的確會(huì)給程序的閱讀帶來(lái)理解上的困難,因此從程序易讀和易維護(hù)的角度上來(lái)看,我們必須遵循一些通用的代碼書(shū)寫(xiě)規(guī)則。