北京“高質(zhì)高效嵌入式軟件開發(fā)”培訓詳細了解
北京“高質(zhì)高效嵌入式軟件開發(fā)”培訓詳細了解
中科院計算所培訓中心成立于1987年,全稱是北京市海淀區(qū)中科院計算所職業(yè)技能培訓學校,是專門進行計算機IT培訓的機構(gòu),主要從事大數(shù)據(jù)分析培訓,項目管理培訓,產(chǎn)品設計之道,Oracle開發(fā)與管理等培訓,為各大企業(yè)輸送了大量的專業(yè)人才。
一、授課教師
李老師:中科院計算所培訓中心 高級講師
曾在UT斯達康研發(fā)中心、摩托羅拉研發(fā)中心、諾基亞西門子網(wǎng)絡技術(shù)有限公司擔任軟件工程師、項目負責人和軟件架構(gòu)師等職,工作內(nèi)容內(nèi)容主要包括:操作系統(tǒng)內(nèi)核、文件系統(tǒng)和IP棧的移植,IDE硬盤、以太網(wǎng)芯片和PCI總線等外設的驅(qū)動開發(fā)。熟悉x86、PowerPC、XScale處理器,以及TIDSP源碼級。熟悉uC/OS、RTEMS和VxWorks實時操作系統(tǒng)的實現(xiàn),并在這些操作系統(tǒng)和Linux操作系統(tǒng)上有著豐富的軟件開發(fā)經(jīng)驗。
二、培訓對象
以C為編程語言的嵌入式和非嵌入式軟件開發(fā)工程師、項目管理師、架構(gòu)師等。
三、課程設計及授課思路
從事嵌入式軟件開發(fā),最困難的莫過于學習操作系統(tǒng)原理和處理器方面的知識。講解操作系統(tǒng)原理如果以Linux、Windows CE、VxWorks等成熟的操作系統(tǒng)為素材并不好,因為它們太大,很容易讓人“只見森林不見樹木”,也容易讓人望而生畏而失去學習的興趣和信心。從軟件開發(fā)的角度來看,操作系統(tǒng)的概念和實現(xiàn)原理一旦掌握,不論基于哪一個操作系統(tǒng)做開發(fā)都只是調(diào)用不同的函數(shù)而已。為了讓學員獲得的學習體驗,本課程以講師自己設計的一個實現(xiàn)簡潔、完整的“實時”操作系統(tǒng) — ClearRTOS為基礎,通過漸進式的方式細致講解操作系統(tǒng)的概念和實現(xiàn)原理。至于處理器方面的知識,本課程沒有針對某一具體處理器,而是就編程方面所需的通用知識進行了講解。對這些通用知識的掌握,將使得處理器對于學員不再那么神秘。
與非嵌入式軟件開發(fā)采用集成開發(fā)環(huán)境不同,嵌入式軟件開發(fā)大多是基于命令行的。軟件開發(fā)工程師除了進行編碼工作,還得能駕馭自己的編譯環(huán)境并運用其他的開發(fā)工具輔助開發(fā)工作。本課程以來自GNU的工具為例幫助學員戰(zhàn)勝這一挑戰(zhàn)。值得強調(diào)的是,其中花了較大的篇幅幫助學員成為Makefile方面的專家。
要實現(xiàn)高質(zhì)高效地從事軟件開發(fā)工作,項目人員還必須理解軟件設計的重要性,并借助一定的質(zhì)量方法論來提高工作質(zhì)量和效率。軟件設計和質(zhì)量方法論是業(yè)內(nèi)比較抽象和高級的話題,為此本課程通過帶領(lǐng)實踐的方式逐步展開講解,以幫助學員獲得一些實用的設計原則、實踐和一套有效的質(zhì)量方法論。
總而言之,本課程從知識、工具、方法和思想這四大方面全面講解如何專業(yè)地從事嵌入式軟件開發(fā),致力于幫助學員全面走向高質(zhì)高效編程。
四、培訓目標
1、掌握嵌入式軟件開發(fā)所需的與處理器相關(guān)的通用知識。
2、明白信號完整性對嵌入式軟件開發(fā)的影響。
3、掌握嵌入式軟件開發(fā)所需掌握的GNU工具。包括make、gcc、binutils、ld和gdb。
4、更加深入地理解C編程語言。
5、了解引導加載器的大致工作原理和功能。
6、掌握實時操作系統(tǒng)的設計和實現(xiàn)原理。包括多任務、任務同步通訊、內(nèi)存管理、設備管理和定時器管理。
7、理解設計是軟件質(zhì)量之本,并掌握一種有效的模塊管理、錯誤管理和目錄結(jié)構(gòu)管理方法。
8、理解什么是可開發(fā)性問題和了解一種解決方法。
9、理解平臺與框架開發(fā)是打造高質(zhì)量軟件之路。
10、理解軟件開發(fā)的困難和質(zhì)量需要系統(tǒng)性的方法論。
11、理解軟件工程的工作習慣對軟件質(zhì)量的影響,掌握一些終身受用的編程好習慣。
12、理解單元測試的重要性,并掌握一種簡單有效的部署方法。
13、理解代碼覆蓋、靜態(tài)分析和動態(tài)分析對構(gòu)建高質(zhì)軟件的重要性。
五、培訓內(nèi)容
時 間 | 內(nèi) 容 | 大 綱 | |||
第1天 | 學習導引 | 1. 學什么?怎么學? 2. 工程師技術(shù)能力層次模型 3. 高質(zhì)高效軟件開發(fā)團隊效能模型 | |||
[硬件篇] 處理器的基本概念 | 1. 微處理器與微控制器 2. 寄存器 3. 處理器的啟動 4. 輸入與輸出 5. 指令與數(shù)據(jù) 6. 中斷 7. 字節(jié)序 8. 邊界對齊 9. 斷點 10. 內(nèi)存管理單元 11. 緩存 | ||||
[硬件篇] 開發(fā)活動中的硬件問題 | 1. 兩個軟件異常案例 2. 異常的背后 — 信號完整性 3. 應對信號完整性問題的方法 | ||||
[工具篇] make,開發(fā)環(huán)境全能管家 | 1. 從的Makefile中了解規(guī)則 2. 創(chuàng)建基本的編譯環(huán)境 3. 提高編程環(huán)境的實用性 4. 打造更專業(yè)的編譯環(huán)境 5. 理解make的解析行為 6. Makefile的調(diào)試 7. make的常用選項 8. 活用make | ||||
[工具篇] gcc,C語言編譯器 | 1. 交叉編譯用其環(huán)境 2. gcc幕后工作原理 3. 實用的gcc選項 | ||||
[工具篇] bintuils工具集,軟件開發(fā)利器 | 1. addr2line,指令地址翻譯器 2. ar,靜態(tài)庫生成器 3. nm,符號顯示器 4. objdump,信息查看器 5. objcopy,段剪輯器 6. size,段大小觀察器 7. strings,字符串窺視器 8. strip,程序文件瘦身器 | ||||
[工具篇] ld,鏈接器 | 1. 重定位的概念 2. 鏈接腳本 | ||||
[編程語言篇] 掌握必要的匯編知識 | 1. AT&T和Intel語法格式 2. as的語法 3. 嵌入?yún)R編的語法 | ||||
[編程語言篇] 深入理解程序的結(jié)構(gòu) | 段、棧、堆 | ||||
[編程語言篇] ABI/EABI規(guī)范,締造程序兼容合約 | 1. 定義基本數(shù)據(jù)結(jié)構(gòu) 2. 規(guī)范字節(jié)對齊處理 3. 分配寄存器的功能 4. 規(guī)定棧幀結(jié)構(gòu) | ||||
第2天 | [編程語言篇] 混淆指針與數(shù)組所導致的問題 | 1. 問題示例 2. 問題分析 3. 問題成因 4. 預防措施 | |||
[編程語言篇] volatile,讓我保持原樣 | 1. 從例子理解volatile | ||||
[設計篇] 設計,軟件質(zhì)量之本 | 1. 軟件設計是什么 2. 軟件質(zhì)量的概念 3. 阻礙改善設計的常見觀念 4. 如何提高設計能力 5. 設計模式、設計原則和設計思想 6. 放之四海皆適用的設計原則 | ||||
[設計篇] 模塊管理,保障系統(tǒng)有序運行 | 1. 模塊管理參照系 2. 設計思路 3. 程序?qū)崿F(xiàn) 4. 模塊管理的一些思考 | ||||
[設計篇] 錯誤管理,不可獲缺的用戶需求 | 1. 現(xiàn)狀與出路 2. 表達錯誤的通用方法 3. 優(yōu)化錯誤日志 | ||||
[設計篇] 目錄結(jié)構(gòu)管理,使項目進展更順利 | 1. 規(guī)劃目錄結(jié)構(gòu)的意義 2. 出色目錄結(jié)構(gòu)的特點 3. 一個示例 | ||||
[設計篇] 平臺與框架開發(fā),高質(zhì)量軟件打造之路 | 1. 系統(tǒng)庫、平臺和框架 2. 本質(zhì)和優(yōu)點 3. 架構(gòu)模型 4. 困境與生命周期理論 | ||||
[設計篇] 可開發(fā)性設計,一種高效且經(jīng)濟的開發(fā)模式 | 1. 可開發(fā)性問題一瞥 2. 可開發(fā)性設計的內(nèi)涵 3. 設備抽象層 4. 更復雜的設備抽象層 5. 圖形界面的可開發(fā)性設計 6. 其他可開發(fā)性設計 | ||||
[操作系統(tǒng)篇] 引導加載器,系統(tǒng)啟航者 | 1. 功能 2. 文件存儲布局 3. 程序加載原理 4. 優(yōu)點 | ||||
第2天 | [操作系統(tǒng)篇] 任務,軟件基本調(diào)度單元 | 1. 任務情景 2. 任務調(diào)度 3. 任務的生命周期 4. 任務控制 5. 競爭問題與中斷控制 6. 任務與中斷狀態(tài) 7. 任務棧溢出檢測 8. 滴答與空閑任務 9. 多任務環(huán)境控制 10. 任務模塊管理 11. task1示例程序 12. 任務鉤子函數(shù) 13. 任務變量 14. 其它概念與思考 | |||
[操作系統(tǒng)篇] 任務同步與通信,實現(xiàn)協(xié)同工作 | 1. 信號量 2. 互斥鎖 3. 事件 4. 消息隊列 5. 死鎖及預防 | ||||
[操作系統(tǒng)篇] 內(nèi)存管理,協(xié)調(diào)動態(tài)內(nèi)存的使用 | 1. 堆管理(含內(nèi)存溢出和泄漏檢測) 2. 內(nèi)存池管理 | ||||
第3天 | [操作系統(tǒng)篇] 設備管理,方便與外設交互 | 1. 字符設備管理 2. 中斷管理 3. 設備管理的主要程序?qū)崿F(xiàn) 4. 設備驅(qū)動程序?qū)崿F(xiàn) 5. 驅(qū)動安裝與設備注冊 | |||
[操作系統(tǒng)篇] 定時器,程序鬧鐘 | 1. 軟件定時器分類 2. 設計思路 3. 中斷回調(diào)定時器 4. 定時誤差 5. 提高遍歷效率 6. 改善實時性 7. 任務回調(diào)定時器 | ||||
[質(zhì)量篇] 質(zhì)量導言 | 1. 軟件開發(fā)的特點 2. 質(zhì)量的關(guān)鍵要素 3. 質(zhì)量需要系統(tǒng)性的方法論 4. 走出質(zhì)量困境的指導性思想 | ||||
[質(zhì)量篇] 編程好習慣,質(zhì)量的基本條件 | 1. 一些終生受用的編程好習慣 | ||||
[質(zhì)量篇] 單元測試,被忽視的質(zhì)量方法 | 1. 警惕單元測試無用論 2. 一個簡單但不完善的單元測試例子 3. 構(gòu)建單元測試框架 4. 無縫整合單元測試 5. 幾個實施問題 6. 樁函數(shù)和打樁 7. 錯誤注入,一種可測試性設計 8. 平臺開發(fā)與單元測試 9. 被測行為的確定性 10. 被測用例的有效性 | ||||
[質(zhì)量篇] 代碼覆蓋,單元測試效果的衡量指標 | 1. 了解代碼覆蓋工具 2. 無縫整合代碼覆蓋 3. 三個代碼覆蓋度量指標 | ||||
[質(zhì)量篇] 靜態(tài)分析,防止將失誤帶給用戶 | 1. 認識靜態(tài)分析工具 2. 無縫整合靜態(tài)分析工具 | ||||
[質(zhì)量篇] 動態(tài)分析,使程序更健壯 | 1. 結(jié)識動態(tài)分析工具 2. 無縫整合動態(tài)分析工具 | ||||
[質(zhì)量篇] 性能分析,讓優(yōu)化程序有的放矢 | 1. 初探性能分析工具 2. 無縫整合性能分析工具 | ||||
[質(zhì)量篇] qBench,一個開發(fā)高質(zhì)軟件的工作臺 |
|
六、費用
培訓費:5000元/人(含教材、證書、午餐、學習用具等),住宿協(xié)助安排,費用自理。
七、培訓時間、地點:
時間:2015年8月14日-8月16日 地點:杭州
八、證 書
中科院計算所職業(yè)培訓中心“高質(zhì)高效嵌入式軟件開發(fā)”結(jié)業(yè)證書。
評論 丨 共0個