2016 年春季嵌入式作業系統課程說明
( 非成功大學學生亦可參加 )
Jim Huang ( 黃敬群 ) <jserv.tw@gmail.com>
台灣國立成功大學資訊工程系
Feb 14, 2016
關於授課教師 (@jserv)
「我是誰不重要,你每天用的手機和電腦裡面運作著我開發的軟體」
●
成功大學資訊工程系 / 兼任專家
●
交通大學資訊工程系 / 兼任教師
●
從事消費性電子產品開發十餘年
近年投入工業控制領域
− 台達電子 / 顧問
− 工研院資通所 / 顧問
− 聯發科技 / 顧問
− 南星創業加速器 / 技術長
− 晶心科技 / 幕僚工程師
●
多項世界級開放原始碼專案開發者
− Android Open Source Project
− GCC / GNU Classpath
− LXDE
− Linaro
− 新酷音輸入法
− Kaffe
− pcman(x)
哥教的不是知識,是 GUTS !
●GUTS: 與其死板傳授片面的知識,還不如讓學生有能力、
有勇氣面對資訊科技產業的種種挑戰
− GUTS = General Unix Talk Show
− 向 Unix 作業系統學習,同時銜接最新產業發展,全程採用活躍
的開放原始碼技術,不用擔心學習的是「屠龍術」
●目標:開拓視野,從做中學習、從做中肯定自己
− 我會指出你不足之處,然後給你資源和時間去補強,就像游泳
教練一樣
− 但別指望只在課堂看著我游泳 ( 而事後沒練習 ) ,你就可學會!
系統軟體的使命:賦予硬體生命
「不要花太多時間追逐看起來很實用的專
業。世界變化太快,這類專業多半存活幾年
就會被取代。你還是要能從本質上了解現象
與知識的關聯,才不會被每天冒出來的新詞
迷惑。良好的基礎科學訓練仍然是把實務專
業做好的基礎。」
蔡志浩博士
回歸本質:良好的基礎科學訓練
 曾經全球接近一半的 IC 設計公司設立於台灣,供應從類比到數
位整合的多樣解決方案,再者,台灣人設計的資訊系統也在工
業控制等高品質要求的領域使用,這些值得深入探討,沒必要
成為國外廠商的抬轎者
– 可惜這十餘年間,在系統軟體發展的短視、與開源世界脫
節,導致台灣資訊科技產業的困頓
 到大學任教的自我期許:
科技才能改善全人類的資源使用效率,根本上改善生活品質。
我該引導學生認識 21 世紀的科技水平,從而充分掌握
策略:擁抱開源,貢獻開源
 OpenStack Foundation 董事程輝:
「每天泡在開源發展,每天都跟大牛合作,不牛逼也難」
 貿然投入 Linux kernel 一類大型專案開發很難,於是我們提
出漸進式開發模式
– 全程使用開源技術作為教學工具,培養學生開源素養
– 選定規模小但富有特色的項目進行研究和貢獻
– 透過在 Linux Foundation 的眾多研討會發表的方式,獲
取認同和知名度
Robot
CloudIoT
本學期的特色:透過開發專案來培養專業
兼顧理論和實務
做中學 : 體驗產品設計背
後的工程考量
寫出「有感」的履歷表 :
培養高產值的專業能力
主軸 : Robot
●高度機電整合專案,涉及項目:
− 即時多工作業系統 (RTOS)
− 電腦視覺、各式物件追蹤演算法
− 控制系統
− 通訊協定和網路
Source: http://irvs.github.io/ros_tms/
Robot
Cloud
IoT
相關技能對應的職缺
(keyword: rtos)
●Embedded Linux Software Engineer, MediaTek
− Familiar with embedded Linux software development
− Familiar with CPU(ARM like) architecture and RTOS
− Strong programming skills in C
− Knowledge and experience with Linux device driver and kernel
●4G protocol stack software engineer, MediaTek
− Experienced in Wireless communication or embedded system development
− Related working experience in mobile or wireless software is preferred
− Familiar with C language and RTOS
主軸 : IoT
●深入 SoC 和作業系統內部設計,
− RTOS 排程、系統呼叫、效能分析
− ARM/MIPS 架構和對應的系統軟體
− 無線通訊和網路堆疊
− 資訊安全
IoT
Robot
Cloud
相關技能對應的職缺
(keyword: realtime, rtos, linux)
●Bluetooth firmware engineer, MediaTek
− Familiar with C language, Computer Architectuer and RTOS
− Experienced in embedded system development
●Senior software engineer, MediaTek
− Familiar with embedded system or RTOS development experience
− Familiar with embedded system performance profiling, debugging and optimization tools
− Familiar with multi-thead/multi-core programming
●
Staff Software Engineer-Automotive Platform, Qualcomm
− Solid background in developing with Open Source mind-set
− Experience using software management systems (e.g. git, p4, gerrit)
− Good responsibility and Team Spirit
主軸 : Cloud
●從無到有建構低功耗雲端服務
●涉及:
− ARMv8-A
− Docker, KVM, Hypervisor
− OpenStack, SDNCloud
IoT
Robot
相關技能對應的職缺
(keyword: arm, linux)
●ARM kernel engineer, Qualcomm
− Working experience in using ARM instruction sets and writing optimized assembly
codes.
− Expertise in ARM's memory system architecture with hands on knowledge in
debugging the MMU, CACHES, BARRIERS and SYNCHORNISATION issues.
− Expertise in debugging aborts and system level issues.
− understanding of the ARM's virtualization extensions and working experience in
hypervisor/Linux KVM
●
Android SW Engineer, MediaTek
− Must have capability to trace large scale C/C++ code quickly
− Nice to have Linux Kernel Driver programming experience
− Nice to have SoC verification experience
歷年課程產出
 學生專業能力和視野的提昇
– 在 2014 年,參與課程其中 9 位學生獲得聯發科錄取為工程師
– 大學還沒畢業就拿到聘書,還有人生平第一次面試當天被聯發科錄取
– 在 2015 年,共有兩位學生到國際頂級研討會發表研究成果
– 在 Linux Foundation 舉辦的全球嵌入式 Linux 研討會發表專題演說,全台
灣第一位和第二位都是本課程的參與者
 共筆大量 ARM 優質技術文件,獲得高度能見度
 累積超過 55 個完整專案並釋出原始碼
 學生在 COSCUP( 台灣最大的開放原始碼研討會,上千人 ) 和 SITCON( 學生計算機年會 ) 發表專
題演說和成果
從無到有打造
四軸飛行器
http://wiki.csie.ncku.edu.tw/embedded/team2014-10
http://wiki.csie.ncku.edu.tw/embedded/team2014-3
Demo video:
https://www.youtube.com/watch?v=hmJVLKOy7DA
自製電吉他效果器並
體驗 ARM 效能改善
http://wiki.csie.ncku.edu.tw/embedded/team2014-2
親手打造
自動彈奏吉他機器
http://wiki.csie.ncku.edu.tw/embedded/team2013-8
Demo video:
http://www.youtube.com/watch?v=tk7hJ3-j62Q
開發自動寫書法機器人
http://wiki.csie.ncku.edu.tw/embedded/team2013-11
機器人書寫的成果
Demo video:
https://www.facebook.com/photo.php?v=613934675322288
人在做, Google 在看!人在做, Google 在看!
學生成果在 Google 搜尋名列前茅
台灣資訊科技產業裡
頭資深工程師罕見的
經歷:
在 Linux Foundation
舉辦的研討會演說!
( 廖健富同學 )
2015 年學生的開放原始碼成果
 開放原始碼貢獻 :
– QEMU (系統模擬器 ), u-boot ( 作業系統載入器 ), RT-Thread ( 即時多工作業系統),
Xvisor ( 虛擬化執行環境 ), re2 ( 正規表示式處理引擎 ), uVisor ( 提昇物聯網安全性 )
– 真的是「 Google在看」(re2 是Google 維護的開放原始碼專案 )
 在即時Linux 領域最頂級的研討會 RTLWS發表研究成果
 FreeRTOS 的 ARMv7-A MMU 支援
 rtenv+:100% 學生自製的即時多工作業系統
 Linux/ARM效能分析
 Xenomai 3 效能分析和原理探討
 Xvisor + ARMv8
輕量級虛擬化解決方案
●
充分在 ARMv8 Foundation
Model 模擬和驗證
●
翻譯設計文件和報告
●
貢獻自動測試機制
學生開發 GPGPU 核心,獲得 NVIDIA 邀請
到 2015 年台灣 GPU 技術研討會發表開發成果
詹博丞是成功大學資訊工程所博士班學生,他曾就讀於音樂資優班,但國中三年級時發生車禍,導致罹患點狀軟骨錯生症,因此不良
於行,而且產生聽力、視力障礙。但他不放棄學習程式設計,並毅然地在兩年前參與新酷音輸入法的開發,並主導數位點字樂譜的設
計,希望可以幫助視障朋友閱讀樂譜。由於視力有障礙,加上盲人點字 閱讀機的限制,他撰寫程式時,是將所有程式碼背在腦海中
進行開發、除錯,也由於聽力障礙,和他說話必須靠在耳邊。在演講中他提到,開發的過程中遇到最大的 困難是交接程式碼,因為
交接時必須閱讀(以點字方式)其他人的程式碼,最重要是放下成見,用別人的角度去思考。
http://www.appledaily.com.tw/realtimenews/article/new/20140722/437865/1/
人家眼睛看不到、耳朵聽不清楚,
都可以學好嵌入式系統,而你好手
好腳視力尚可,在擔心什麼?
雖然我不會教書,但我可以陪同學連續奮戰 20 小時以上雖然我不會教書,但我可以陪同學連續奮戰 20 小時以上
一起看日出也行,我可是正宗的竹科工程師啊 ( 茶 )一起看日出也行,我可是正宗的竹科工程師啊 ( 茶 )
我心動了,但沒基礎怎麼辦?
 只要你願意花時間,就算沒修過作業系統或計算機組
織與結構一類的科目也沒關係,課堂中會有重點提示
 只要資訊系、電機系、工程科學系、機械系、航太系
或相關科系的大二以上 ( 含 ) ,學過 C 語言即可
– 2014 年還有物理系和經濟系的學生修課,依舊表現不
俗,所以千萬別擔心
– 不懂就 ( 重新 ) 學,不要裝懂,千萬別說謊
適用對象與假設
 對於資訊領域有熱情、並有堅持到底的學習精神
 樂於助人 , 願意分享所學知識
– 在打群架的年代 , 隔壁的同學就是夥伴 !
 願意花時間寫作業
 自主學習課程所需的前備知識以及課程參考資料
 願意花時間教會身邊的同學
不建議選修的學生族群
 覺得自己無論怎麼努力,仍比隨便一位台大資工系
畢業生還差的人
 覺得光靠著拿著成功大學的畢業證書,就能在資訊
科技產業有尊嚴地享有優渥生活者
 覺得每週看著游泳教練或鋼琴教師,但自己不動手
,卻又妄想能學到什麼技能的人
時間地點
 Feb 23, 2016 – Jun 21, 2016
 每週二
– 15:10-18:00 ( 課程 )
– 19:30-21:00 ( 補充 / 解惑 )
 成功大學資訊工程系新系館 65203 教室
評分方式
 考試 : 20% ( 期初「資格考」 + 模擬面試 )
– 第二週有總分 250 分的考試,範圍涵蓋本課程相關的基礎科目
 作業 + 專題 : 40% ( 針對資訊產業需技能,所濃縮的訓練 )
 學生自我評量 : 40%
 加分 :
– 課堂問答:最多加到總分 20 分
– 開放原始碼貢獻:一旦認可,最多加到總分 40 分
注意須知
 不點名
 課程進行大量用到網路和客製化開發環境,建議攜帶筆記型電腦
 考試採筆試和一對一口試,可重複應考 ( 考到滿意為止 )
 歡迎旁聽,但請一同參與實習與進行作業繳交
 每週都有實習課 / 作業
– 在隔週六 ( 含 ) 之前需完成作業
– 如果連續二份作業寫不完的話,就不用來了 ( 視同作業項目零分 )
 修課同學可獲得開發板與相關硬體之補助
課程進行方式
 前 4 周會強化學生基本能力的訓練,請確保自己能
夠每週投入 12 小時
 從第 5 週開始,會依據不同的主軸進行課程分工,
請留意課程公告
 每個月都有線上講座直播,歡迎校外朋友多利用
 因為每位學生吸收狀況不同,每兩週會有學習狀況
回報機制,請依據公告配合實施
課程資料
 不需要購買教科書 , 所有課程資料都放在網路上
– 作業或考試表現優異的同學 , 可獲贈參考書籍
 wiki: http://wiki.csie.ncku.edu.tw/
– 請先參閱「進階嵌入式系統開發與實作 (2015 Fall) 」和
「嵌入式作業系統設計與實作 (Spring 2015) 」
●
討論區 : https://www.facebook.com/groups/system.software2016/

2016 年春季嵌入式作業系統課程說明