“十二五”高等院校規(guī)劃教材:嵌入式系統(tǒng)高級(jí)C語言編程
定 價(jià):39 元
- 作者:凌明 著
- 出版時(shí)間:2011/1/1
- ISBN:9787512403086
- 出 版 社:北京航空航天大學(xué)出版社
- 中圖法分類:TP312C
- 頁碼:322
- 紙張:膠版紙
- 版次:1
- 開本:16開
《嵌入式系統(tǒng)高級(jí)C語言編程》將主要介紹針對(duì)嵌入式系統(tǒng)的基于C語言的軟件項(xiàng)目開發(fā)的流程,較為復(fù)雜的c語言編程知識(shí)和技巧,編程風(fēng)格和調(diào)試習(xí)慣,并通過對(duì)一個(gè)具體的軟件模塊(ASIX Window GUI)的分析,介紹分析代碼的方法以及設(shè)計(jì)軟件系統(tǒng)需要考慮的各要素。《嵌入式系統(tǒng)高級(jí)C語言編程》將以實(shí)際項(xiàng)目中的代碼作實(shí)例來進(jìn)行介紹,詳細(xì)分析在嵌入式系統(tǒng)開發(fā)中程序員應(yīng)該注意的方法,技巧和陷阱。
《嵌入式系統(tǒng)高級(jí)C語言編程》的讀者可以是學(xué)習(xí)嵌入式系統(tǒng)的高校學(xué)生(高年級(jí)本科生或碩士研究生),或者是從事嵌入式系統(tǒng)編程的軟硬件工程師。
凌明,1972年5月出生,副教授。現(xiàn)任東南大學(xué)電子科學(xué)與工程學(xué)院副院長,東南大學(xué)集成電路學(xué)院副院長。先后參加了十一五“核、高、基”國家科技重大專項(xiàng)“個(gè)人移動(dòng)信息終端SOC芯片研發(fā)與應(yīng)用”項(xiàng)目:國家十五、十一五“863”、“可重構(gòu)媒體處理器”、“空間信息接收手持終端原型機(jī)開發(fā)”、“手持信息終端SOC設(shè)計(jì)”等項(xiàng)目:江蘇省十五科技招標(biāo)項(xiàng)目和省成果轉(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)教金、青年教師授課競賽獎(jiǎng)勵(lì)。主要研究方向:SOC設(shè)計(jì)方法學(xué)、SOC存儲(chǔ)子系統(tǒng)設(shè)計(jì)、嵌入式系統(tǒng)設(shè)計(jì)等。
第1章 概述:
1.1 C語言的歷史和特點(diǎn)
1.2 一個(gè)小測驗(yàn)
1.3 如何學(xué)好嵌入式系統(tǒng)中的C語言編程
1.3.1 真正深刻地認(rèn)識(shí)存儲(chǔ)器
1.3.2 認(rèn)識(shí)和理解嵌入式C編程環(huán)境
1.3.3 認(rèn)識(shí)和掌握C語言中的常見陷阱
1.3.4 掌握C語言程序設(shè)計(jì)過程中的調(diào)試方法
1.4 推薦的參考書目
1.4.1 C語言的初級(jí)教材
1.4.2 C語言進(jìn)階書籍
1.5 思考題
第2章 C語言的關(guān)鍵字與運(yùn)算符
2.1 C語言的關(guān)鍵字
2.1.1 數(shù)據(jù)類型關(guān)鍵字
2.1.2 控制語句關(guān)鍵字與相關(guān)語句
2.1.3 存儲(chǔ)類型關(guān)鍵字
2.1.4 其他類型關(guān)鍵字
2.2 C語言的運(yùn)算符
2.2.1 運(yùn)算符中需要注意的問題
2.2.2 運(yùn)算符的優(yōu)先級(jí)
2.2.3 表達(dá)式求值
2.2.4 運(yùn)算符的詞法分析
2.3 C語言的指針
2.3.1 指針的3個(gè)要素
2.3.2 指針的類型
2.3.3 指針的初始化
2.3.4 指針的運(yùn)算
2.3.5 指針與字符串
2.4 思考題
第3章 C語言的函數(shù)
3.1 C語言的函數(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)庫函數(shù)
3.2.1 輸入與輸出:
3.2.2 字符類別測試:
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)庫函數(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 嵌入式軟件開發(fā)流程與工具
4.1.1 嵌入式軟件開發(fā)的一般流程
4.1.2 編譯器簡介
4.1.3 鏈接器簡介
4.1.4 嵌入式軟件開發(fā)的調(diào)試環(huán)境
4.1.5 ARM處理器的開發(fā)工具
4.2 基于C語言軟件項(xiàng)目中的文件關(guān)系
4.2.1 C語言項(xiàng)目中的文件依賴關(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語言中的指針
5.1.1 指針與數(shù)組
5.1.2 函數(shù)指針
5.2 C語言中的內(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)簡介
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 中斷的分類與處理過程
6.2.3 C語言中的中斷處理
6.2.4 中斷處理程序的編寫
6.3 函數(shù)的可重入問題
6.3.1 什么是函數(shù)的重入
6.3.2 函數(shù)可重人的條件
6.3.3 不可重人函數(shù)的互斥保護(hù)
6.3.4 重入函數(shù)的偽問題
6.4 設(shè)備驅(qū)動(dòng)案例——鍵盤驅(qū)動(dòng)
6.4.1 5~5鍵盤的硬件原理
6.4.2 鍵盤設(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 簡介及說明
7.2 語言規(guī)則
7.2.1 基礎(chǔ)
7.2.2 數(shù)據(jù)
7.2.3 說明與表達(dá)式
7.2.4 函數(shù)
……
第8章 代碼的調(diào)試
第9章 ASIX Window Gui設(shè)計(jì)詳解
②函數(shù)名的命名沒有意義,閱讀這段代碼的人很難從abc這個(gè)函數(shù)名上看出這個(gè)函數(shù)到底是什么功能。程序員在編寫代碼時(shí),首先要想到的就是自己編寫的代碼不僅是給編譯器“看”的,更重要的是給別人或是自己看的。因此在函數(shù)命名以及變量命名時(shí)必須采用有意義的英文單詞或者是單詞短語。
③數(shù)組c[]中存放的是學(xué)生的成績,程序定義了數(shù)組中一共有9個(gè)元素。但是為了程序的易讀性和將來的可維護(hù)性,最好應(yīng)該將學(xué)生的人數(shù)定義為一個(gè)常量宏,這樣當(dāng)學(xué)生人數(shù)發(fā)生變化時(shí)可以非常方便地進(jìn)行修改。
④函數(shù)abc()沒有人口參數(shù),也沒有返回值,程序通過全局?jǐn)?shù)組c[]和全局變量b來傳遞函數(shù)內(nèi)部的數(shù)據(jù)。初學(xué)寫程序的人都特別喜歡使用全局變量,因?yàn)闆]有限制,想什么時(shí)候引用都可以。其實(shí),不恰當(dāng)?shù)厥褂萌肿兞渴浅绦騿T的惡夢,全局變量加強(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)通過函數(shù)的人口參數(shù)與返回值發(fā)生。
⑤最后的問題是程序書寫風(fēng)格的問題,比如上面的代碼沒有按照規(guī)則縮進(jìn),沒有必要的注釋,在運(yùn)算符前后沒有必要的空格。雖然這些問題并不影響程序的正確執(zhí)行,但它們的確會(huì)給程序的閱讀帶來理解上的困難,因此從程序易讀和易維護(hù)的角度上來看,我們必須遵循一些通用的代碼書寫規(guī)則。