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