*階段:嵌入式C語(yǔ)言編程
主要介紹在嵌入式開(kāi)發(fā)編程中C語(yǔ)言的重要概念和編程技巧中的重點(diǎn)難點(diǎn),以復(fù)習(xí)串講和實(shí)例分析的形式,重點(diǎn)介紹函數(shù)與程序結(jié)構(gòu),指針、數(shù)組和鏈表,庫(kù)函數(shù)的使用等知識(shí)。
課程 內(nèi)容
嵌入式C語(yǔ)言編程 格式化輸入/輸出:格式化輸出printf,格式化輸出scanf,其他常用輸入/輸出函數(shù)(getchar、getch、gets、putch、puts)
分支結(jié)構(gòu)程序設(shè)計(jì):if語(yǔ)句,多路分支switch
循環(huán)結(jié)構(gòu)程序設(shè)計(jì):while循環(huán),for循環(huán),do while語(yǔ)句,break和continue語(yǔ)句
使用數(shù)組:數(shù)組的概念,一維數(shù)組,二位數(shù)組,字符數(shù)組和字符串,字符串反轉(zhuǎn),查找*數(shù),數(shù)據(jù)排序
使用函數(shù):函數(shù)的概念,函數(shù)工作過(guò)程,編寫(xiě)函數(shù),函數(shù)的參數(shù),函數(shù)調(diào)用,遞歸函數(shù)
模塊化程序設(shè)計(jì):模塊化概念,程序模塊結(jié)構(gòu),變量的作用域,變量的存儲(chǔ)類(lèi)型(auto、register,static、extern),函數(shù)、文件、變量的關(guān)系
編碼規(guī)范:文件結(jié)構(gòu),程序版式,命名規(guī)則,防錯(cuò)編程,程序效率
使用指針:內(nèi)存與變量,指針和簡(jiǎn)單變量,指針和數(shù)組,指向多維數(shù)組的指針,指針和字符串,指針數(shù)組,指向指針的指針,指針和函數(shù),指針和const,復(fù)雜類(lèi)型指針,指針的理解(指針類(lèi)型,指針的值,指針?biāo)赶虻念?lèi)型,指針本身占據(jù)的內(nèi)存區(qū)域)
存儲(chǔ)管理:內(nèi)存組織方式,堆和棧的比較,動(dòng)態(tài)內(nèi)存管理(malloc、calloc、realloc、free),丟失的內(nèi)存
結(jié)構(gòu)、聯(lián)合和枚舉:結(jié)構(gòu)的概念,結(jié)構(gòu)嵌套,結(jié)構(gòu)變量初始化,結(jié)構(gòu)數(shù)組,結(jié)構(gòu)指針,向函數(shù)傳遞結(jié)構(gòu),聯(lián)合定義,結(jié)構(gòu)中嵌套聯(lián)合,枚舉定義,使用typedef
位運(yùn)算和位域:二進(jìn)制數(shù),位邏輯運(yùn)算,位移運(yùn)算,位運(yùn)算復(fù)合賦值,位域結(jié)構(gòu),位域的使用,位域與聯(lián)合的使用
文件輸入/輸出:文件與數(shù)據(jù)流,文件的打開(kāi)與關(guān)閉,文件讀寫(xiě),文件隨機(jī)訪問(wèn),文件緩沖區(qū),文件管理
預(yù)處理:預(yù)處理功能,預(yù)處理命令,無(wú)參數(shù)宏,帶參數(shù)宏,預(yù)處理操作符#和##,條件編譯,預(yù)定義宏名,#line, #pragma, #error,內(nèi)聯(lián)函數(shù)
字符串處理:字符串的存儲(chǔ),字符和字符串檢測(cè)函數(shù),查找字符串,比較字符串,連接字符串,復(fù)制字符串,字符和字符串轉(zhuǎn)換,strrev,strset,strtok
第二階段:嵌入式Linux開(kāi)發(fā)環(huán)境
主要介紹Linux操作系統(tǒng)的使用和編程知識(shí),包括Linux操作命令,文件和服務(wù),VI編輯器,GCC編譯器,GDB調(diào)試器,Make項(xiàng)目管理工具和Automake/Autoconfig等知識(shí)。
課程 內(nèi)容
嵌入式Linux開(kāi)發(fā)環(huán)境 嵌入式Linux軟件開(kāi)發(fā):嵌入式開(kāi)發(fā)概念,嵌入式軟件領(lǐng)域,Linux在嵌入式的應(yīng)用,深圳嵌入式行業(yè)優(yōu)勢(shì)
Linux操作系統(tǒng):Linux的歷史與發(fā)展,Linux發(fā)行版本,在VMWare上安裝Linux,VMWare-Linux網(wǎng)絡(luò)配置
Linux文件和服務(wù): FTP共享,Samba服務(wù)器共享,NFS共享,VMWare共享
Linux命令:文件系統(tǒng)管理,磁盤(pán)管理,用戶(hù)與組管理,幫助與查詢(xún),進(jìn)程控制管理,文件壓縮
Vim/Emacs的使用
Linux shell編程:shell變量,流程控制,交互式腳本,shell函數(shù),文件過(guò)濾器,shell腳本實(shí)例
GUN GCC: gcc組成,可執(zhí)行文件構(gòu)造過(guò)程(預(yù)處理、編譯、匯編、鏈接),gcc選項(xiàng),gcc代碼優(yōu)化,GUN binutils工具,objdump反匯編
靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù):庫(kù)文件的概念,靜態(tài)鏈接與動(dòng)態(tài)鏈接,創(chuàng)建靜態(tài)庫(kù),創(chuàng)建動(dòng)態(tài)鏈接庫(kù),動(dòng)態(tài)庫(kù)的隱式調(diào)用與顯示調(diào)用
Makefile:Makelfile概念,Makefile格式,Makefile的簡(jiǎn)化,項(xiàng)目Makefile分析
Autotool: Autotool生成Makefile流程,configure腳本選項(xiàng),Autotool-Makefile使用,Autotool開(kāi)源項(xiàng)目的移植
GDB:用gdb調(diào)試程序,用gdb定位程序問(wèn)題,gdb調(diào)試core dump
嵌入式交叉開(kāi)發(fā)環(huán)境:交叉開(kāi)發(fā)環(huán)境的組建,交叉編譯,交叉調(diào)試,掛載調(diào)試運(yùn)行中的程序
第三階段:嵌入式數(shù)據(jù)結(jié)構(gòu)與算法
主要包括數(shù)據(jù)結(jié)構(gòu)和算法編程訓(xùn)練,排序查找編程訓(xùn)練,遞歸和棧編程訓(xùn)練,字符串操作訓(xùn)練和常用C庫(kù)函數(shù)編程接口實(shí)踐,強(qiáng)化學(xué)員對(duì)數(shù)據(jù)結(jié)構(gòu)與算法的理解和嵌入式Linux下編程開(kāi)發(fā)和編碼調(diào)試的能力。
課程 內(nèi)容
嵌入式數(shù)據(jù)結(jié)構(gòu)與算法
算法概念:算法規(guī)范,算法性能分析(大O記法),性能度量,數(shù)據(jù)抽象與ADT
鏈表:數(shù)組表示鏈表,指針和結(jié)構(gòu)表示鏈表,單鏈表,循環(huán)鏈表,Linux雙向循環(huán)鏈表
堆棧:堆棧概念,堆棧的操作,數(shù)組實(shí)現(xiàn)堆棧,鏈表實(shí)現(xiàn)堆棧,堆棧表達(dá)式應(yīng)用
隊(duì)列:隊(duì)列概念,隊(duì)列的操作,數(shù)組實(shí)現(xiàn)隊(duì)列,鏈表實(shí)現(xiàn)隊(duì)列,循環(huán)隊(duì)列,雙向隊(duì)列和特殊隊(duì)列
符號(hào)表:符號(hào)表抽象,hash表,映射函數(shù),迭代器
排序算法:冒泡排序,交換排序,選擇排序,插入排序,謝爾排序,基數(shù)排序,快速排序,歸并排序
查找算法:線(xiàn)性查找,二分查找,插補(bǔ)查找
遞歸:遞歸關(guān)系,遞歸數(shù)學(xué)問(wèn)題,漢諾塔問(wèn)題,迷宮問(wèn)題
樹(shù):樹(shù)型結(jié)構(gòu)和特征,二叉樹(shù)數(shù)據(jù)結(jié)構(gòu),二叉樹(shù)遍歷,二叉樹(shù)查找
集合:集合抽象,集合操作,集合恒等式
圖:圖型結(jié)構(gòu)、圖的數(shù)據(jù)結(jié)構(gòu),圖的遍歷,最短路徑
項(xiàng)目實(shí)戰(zhàn):用C語(yǔ)言在嵌入式Linux平臺(tái)上開(kāi)發(fā)企業(yè)員工信息管理系統(tǒng)
第四階段:Linux環(huán)境高級(jí)編程及項(xiàng)目迭代開(kāi)發(fā)實(shí)踐
主要包括系統(tǒng)編程,文件I/O編程,串口編程,網(wǎng)絡(luò)編程;掌握Linux下Socket編程的開(kāi)發(fā)流程,熟悉網(wǎng)絡(luò)編程的調(diào)用接口函數(shù)和相關(guān)數(shù)據(jù)結(jié)構(gòu),使學(xué)員具備在Linux上進(jìn)行系統(tǒng)編程開(kāi)發(fā)的能力。同時(shí)綜合之前所學(xué)內(nèi)容和編程技術(shù),學(xué)員以個(gè)體為單位進(jìn)行嵌入式Linux應(yīng)用項(xiàng)目開(kāi)發(fā),項(xiàng)目?jī)?nèi)容包括嵌入式軟件迭代開(kāi)發(fā)流程,項(xiàng)目開(kāi)發(fā)文檔,多進(jìn)程/多線(xiàn)程并發(fā)控制,文件I/O編程,串口編程,網(wǎng)絡(luò)編程。
課程 內(nèi)容
Linux系統(tǒng)編程 嵌入式應(yīng)用軟件分層結(jié)構(gòu):UI、業(yè)務(wù)控制、數(shù)據(jù)管理、通信集成
Linux C基礎(chǔ):程序、進(jìn)程、線(xiàn)程的區(qū)別與聯(lián)系,程序映像布局,時(shí)間與定時(shí)器
Linux I/O:系統(tǒng)I/O,文件鎖,I/O復(fù)用模型,Termio與串口編程,F(xiàn)rame Buffer圖形操作,位圖與向量圖的顯示
音頻程序設(shè)計(jì):OSS音頻程序、ALSA音頻程序
多進(jìn)程編程:進(jìn)程概念,進(jìn)程狀態(tài)轉(zhuǎn)換,進(jìn)程內(nèi)存布局,fork,exec函數(shù)族,僵尸與孤兒進(jìn)程,守護(hù)進(jìn)程
項(xiàng)目實(shí)戰(zhàn): 利用automake、進(jìn)程架構(gòu)、串口收發(fā)、文件鎖、文件存儲(chǔ)數(shù)據(jù)技術(shù)進(jìn)行項(xiàng)目建模
進(jìn)程間通信:管道,信號(hào),信號(hào)量,共享內(nèi)存,系統(tǒng)五IPC
多線(xiàn)程編程: Posix Pthread線(xiàn)程庫(kù),線(xiàn)程生命周期,線(xiàn)程屬性,線(xiàn)程優(yōu)先級(jí),線(xiàn)程調(diào)度策略
多線(xiàn)程并發(fā)控制:線(xiàn)程鎖,條件變量,消息隊(duì)列
項(xiàng)目實(shí)戰(zhàn):利用線(xiàn)程并發(fā)、共享內(nèi)存、消息隊(duì)列、循環(huán)buffer、文件鏈表進(jìn)行項(xiàng)目細(xì)化
Linux網(wǎng)絡(luò)編程 網(wǎng)絡(luò)基礎(chǔ):OSI/TCPIP模型,網(wǎng)絡(luò)常識(shí),TCP/IP協(xié)議,TCP與UDP的區(qū)別與聯(lián)系
常用網(wǎng)絡(luò)工具:網(wǎng)絡(luò)截包工具(wiresharp、etherpeek、tcpdump),網(wǎng)絡(luò)檢測(cè)程序(ping、ifconfig、route、netstate)
SOCKET編程:TCP,UDP
TCP服務(wù)器模型:fork服務(wù)器,線(xiàn)程服務(wù)器,io復(fù)用服務(wù)器
UDP服務(wù)器模型:串行服務(wù)器,為UDP傳輸增加可靠性
廣播與多播
原始socket和鏈路層訪問(wèn):Ping程序,IP沖突檢測(cè),DOS攻擊,ARP欺騙
項(xiàng)目實(shí)戰(zhàn):利用TCP或者UDP為項(xiàng)目增加網(wǎng)絡(luò)通信功能
第五階段:嵌入式C++編程
主要介紹在嵌入式開(kāi)發(fā)編程中C++在C基礎(chǔ)上的增強(qiáng)特性,C++面向?qū)ο蟮闹黝}:抽象、封裝、繼承、多態(tài),泛型編程和STL庫(kù),MFC界面程序設(shè)計(jì)。
課程 內(nèi)容
嵌入式C++編程 C++在C語(yǔ)言基礎(chǔ)上的增強(qiáng)特性:const,引用,函數(shù)默認(rèn)參數(shù),函數(shù)重載
C++面向?qū)ο蠹夹g(shù):面向?qū)ο蟾拍?抽象與封裝),C++的類(lèi),對(duì)象的創(chuàng)建與銷(xiāo)毀,復(fù)制構(gòu)造函數(shù),特殊數(shù)據(jù)與函數(shù)成員,對(duì)象的組織,對(duì)象動(dòng)態(tài)分配內(nèi)存(new,delete)
高級(jí)對(duì)象主題:類(lèi)的作用域與可見(jiàn)域,對(duì)象的生存期、作用域與可見(jiàn)域,友元,運(yùn)算符重載,類(lèi)型轉(zhuǎn)換
繼承:繼承的概念,派生類(lèi),派生類(lèi)的構(gòu)造函數(shù)和釋構(gòu)函數(shù),繼承與組合,基類(lèi)與派生類(lèi)對(duì)象相互轉(zhuǎn)換
多態(tài):多態(tài)與虛函數(shù),虛函數(shù)的訪問(wèn),純需函數(shù)與抽象類(lèi),重載、覆蓋與隱藏
輸入輸出和文件:輸入輸出流,高層I/O,流類(lèi)庫(kù),>>和<<重載,文件操作,字符串流
命名空間:命名空間的概念,實(shí)體的作用域與可見(jiàn)域,命名空間的作用域與可見(jiàn)域
異常處理:防錯(cuò)編程,C++異常機(jī)制,異常發(fā)生時(shí)的內(nèi)存管理
運(yùn)行時(shí)類(lèi)型識(shí)別:RTTI機(jī)制,類(lèi)型轉(zhuǎn)換操作符
string類(lèi):何為string類(lèi),字符串的輸入與輸出,string類(lèi)的功能
泛型編程--模板:類(lèi)型參數(shù)化的概念,模板定義,函數(shù)模板,類(lèi)模板,模板參數(shù)
泛型編程—STL:容器,迭代器,適配器,泛型算法
MFC界面程序設(shè)計(jì):MFC及對(duì)話(huà)框概念,Dialog項(xiàng)目的創(chuàng)建與修改
,MFC的消息處理,MFC控件數(shù)據(jù)交換
項(xiàng)目實(shí)戰(zhàn):用C++實(shí)現(xiàn)FTPServer
第六階段:嵌入式Linux高級(jí)應(yīng)用
主要介紹嵌入式嵌入式軟件移植,Linux系統(tǒng)構(gòu)建(包括Bootloader工作原理、內(nèi)核裁減配置和交叉編譯、BusyBox,根文件系統(tǒng)制作),圖形界面和數(shù)據(jù)庫(kù)開(kāi)發(fā)等知識(shí)。同時(shí)學(xué)員要為嵌入式Linux應(yīng)用項(xiàng)目增加GUI界面和數(shù)據(jù)庫(kù)應(yīng)用。
課程 內(nèi)容
嵌入式Linux高級(jí)應(yīng)用 嵌入式軟件移植:移植的概念,簡(jiǎn)單Makefile項(xiàng)目的移植,Autoconf生成項(xiàng)目的移植,圖形界面配置
構(gòu)建嵌入式Linux系統(tǒng): Bootloader架構(gòu)和功能、vivi與uboot、Busybox根文件系統(tǒng)、Linux內(nèi)核裁剪、BootLoader和Kernel固化
嵌入式數(shù)據(jù)庫(kù):嵌入式數(shù)據(jù)庫(kù)介紹,SQLite移植與使用,SQL語(yǔ)言,SQLite編程
嵌入式Web: 嵌入式Web介紹,BOA介紹,HTML介紹,BOA Web Server移植,BOA動(dòng)態(tài)CGI程序編寫(xiě)
Qt:signal&slot機(jī)制,Qt界面程序開(kāi)發(fā)
Qtopia: 嵌入式Qtopia移植的Arm開(kāi)發(fā)板, Qtopia窗口、菜單、對(duì)話(huà)框、控件, Qtopia可視化編程
Minigui:消息驅(qū)動(dòng)機(jī)制,回調(diào)函數(shù), Minigui窗口、菜單、對(duì)話(huà)框、控件, Minigui界面程序開(kāi)發(fā), Minigui移植到Arm開(kāi)發(fā)板
項(xiàng)目實(shí)戰(zhàn):利用Qt或者M(jìn)inigui為項(xiàng)目增加人機(jī)交互界面和數(shù)據(jù)庫(kù)
項(xiàng)目集成:UI界面層、并發(fā)控制層、數(shù)據(jù)管理、通信集成層聯(lián)合調(diào)試與測(cè)試