作者neoneon (紅茶を飲む程度の能力)
看板NCTU-Teacher
標題Fw: [心得] 曹孝櫟 - 嵌入式系統設計概論與實作
時間Tue Jul 12 02:32:55 2016
※ [本文轉錄自 neoneon 信箱]
作者:
[email protected] ("愛宕有機奈米負離子貓")
標題: [心得] 曹孝櫟 - 嵌入式系統設計概論與實作
時間: Sun Jul 10 11:11:33 2016
作者: shaform (回不去的旅程) 看板: NCTU-Teacher
標題: [心得] 曹孝櫟 - 嵌入式系統設計概論與實作
時間: 2012/07/03 Tue 22:36:48
網誌好讀版:
http://wp.me/pJ4X-hB
-----------------------------------------------
⊕課名⊕
嵌入式系統設計概論與實作
▲教授▲
曹孝櫟
★修課年度★(請加註開課單位 如:大三通識、XX系選修、XX所)
100下 資工系 大三選修
£教了什麼£(課程大概內容。或是額外學會了什麼東西。)
上課時針對嵌入式系統各方面探討,
包含 bootloader 原理,OS,硬體,開發,業界情況
一些嵌入式作業系統、開發工具
實驗用的板子是是 ARM 平台,並常使用 linux 系統
所以也會提到這部份的課題
在 OCW 網站上有影音可看:
http://ocw.nctu.edu.tw/riki_detail.php?pgid=246&cgid=12
實驗部份主要是利用 PCM7230 板子做實驗,
包含燒錄開機程式和作業系統等等。
##
PCM7230:
http://www.kingpronet.com.tw/product/show.php?id=136
##
最後的實驗和專題則是在 Openmoko 手機平台上進行。
不過老師說每年不一定一樣。
老師上課時有提到一本教科書
Real-Time Concepts for Embedded Systems
內容主要是嵌入式系統實做的一些概念。
如果要跟實驗比較相關的話,推薦
Building Embedded Linux Systems ISBN: 0-596-52968-6
尤其對實驗1非常有幫助。
◆上課方式◆(投影片、團體討論、老師教學風格)
上課主要是使用投影片上課。
老師非常能言善道,有時一張投影片就可以講一節課。
說話速度很快,內容也很有趣,有時會有一些經驗談。
雖然因為不點名,而且上課內容跟實驗內容也沒有絕對關係,
加上又不考試,所以後期學生較少。
然而其實是很值得一聽的。
實驗的方面是以兩人為一組,每組會發一份板子等實驗用具。
要自己找時間去做,然後在星期三晚上去 demo。
由於一開始的實驗需要用到 RS232 和 parallel port,
但是最近的電腦很少支援。
所以也有額外開放時間讓同學到實驗教室使用電腦。
▼考試作業▼
沒有期中期末考和小考
所有評分就由 8 次 lab 和最後的期末 project 決定
Labs 80%
Final Project 20%
每次實驗都需繳交報告,有時也得繳交原始碼。
期末專題的部份,需繳交 proposal, slides, report
最後以簡報方式介紹自己的專題,並實際 demo。
有時候lab會有額外的 bonus 可以做
不過最後lab評分似乎是看大家做的情形來決定分數
所以如果大部分的人都有做 bonus 的話,就得做完所有 bonus 才能得到滿分
本次課程中僅有lab3的bonus可以讓分數超過該次實驗的滿分
一開始的實驗因為剛在熟悉環境所以每兩個星期交一次,
後來的實驗就是每星期一次了。
Lab 主題如下:
Lab 1 - Environment Setup/System Installation/Hello World
在 PC 上建立 PCM7230 平台的 toolchain
包含 gcc cross compiler, 編譯 glibc
以及燒錄開機程式, linux kernel ,檔案系統等等
並執行 hello world 程式。
Bonus:
1.撰寫 echo 程式透過 RS232 和 host 溝通
2.設定開機時自動執行程式
Lab 2 - Bootloader
重新編譯 Intrinsyc i-boot-lite bootloader,
加上自訂訊息,以及新增多重開機功能。
實際燒錄至板子上。
Bonus: 研究 bootloader 的組語程式碼,並加上註解說明程式流程
Lab 3 - Non-OS Embedded Application
移除 iboot bootloader 不必要功能,縮減大小。
新增檔案加密功能,可以加密放置在 CompactFlash Card 上的。
Bonus:
1.在 CF Card 插入時自動加密其上特定或所有檔案。
2.將 UBoot bootloader 移植到 PCM7230 平台上
3.修改 UBoot,使其可以有監聽網路封包的功能
Lab 4 - Windows CE
透過 Windows CE .NET Platform Builder 4.2
編譯並安裝 Windows CE 至板子上
透過 eMbedded Visual C++ 4.0
撰寫 hello world 程式至板子上
Bonus:
1.縮減WinCE作業系統大小
2.開機時自動執行hello world
Lab 5 - Linux Kernel and Root Filesystem
重新編譯 Linux 核心,並修改檔案系統,安裝 bash
設定開機時自動執行程式
Bonus: 透過各種方法縮減核心大小
Lab 6 - Interrupt Tracing and Simple Device Driver Programming
在linux核心中插入訊息,觀察中斷發生流程。
編譯範例驅動程式,觀察滑鼠移動時的印出訊息。
Lab 7 - Network Packet Tracing
修改linux核心以及/proc檔案系統,實做簡易網路封包監聽功能
Lab 8 - Burning U-boot/Kernel/Root Filesystem for Openmoko
利用 Openmoko 官方提供的工具燒錄 bootloader
/ kernel / root filesystem
至 Neo FreeRunner 手機上
然後執行範例程式,觀察重力加速器的數值。
Final Project -
利用Openmoko手機平台,配合至少一種感應器,實做創意專題。
也提供材料費可以購買外裝感應器。
¥其他¥(是否注重出席率or嚴禁遲到?需要的基礎?)
自己覺得整個課程最難的地方其實是第一個實驗,
要安裝 linux 作業系統(也可安裝在 Virtual machine 上)
而且因為要建立的 toolchain 平台是非常古老的版本,
所以常會有奇妙的相容性必須解決,
或者得使用非常古老的 linux 作業系統。
途中常常要自己 Google 才能找到答案。
##
由於 RS232 的接頭實在太難找,但一開始沒有開放電腦教室,
我們還曾去順發購買線材,從主機板上剛好有的 RS232 接頭接出來 。
(如果主機板完全沒有RS232的話,
想買RS232卡會非常貴,不切實際 XD)
##
後期的實驗大致上只要照著實驗講義做就不會有問題,
如果有問題,通常是硬體有問體。
(確實也曾遇到不少次硬體問題)
不過在做 WinCE 實驗時,
會有一些軟體似乎要在 Windows XP 上才能跑。
(或者也可能是 32-bit / 64-bit等問題)
所以感覺修這堂課也重灌了很多次作業系統 (笑)
¢最後想說的話¢
整體來說嵌入式其實不像之前版上說得那麼辛苦,
至少跟這學期的編譯器和人工智慧比起來似乎輕鬆不少(?)
這學期也要感謝組員的幫忙所以才那麼順利 \0.0/
&誰適合修這門課&
都可以喔^^
--
▄▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄▄ <telnet://bbs.cs.nctu.edu.tw>
█▄▄▄▄█ █ ▄▄▄▄▄█ Player: shaform
▄█▄▄▄▄█ ▄▄▄█ █▄▄▄▄▄ From: linux1.cs.nctu.edu.tw
☆ 次世代BS2 ☆ 可申請個人板 150MB 相簿
http://pic.bs2.to 交大資訊人 250MB
推 gxlkhhc:推導師 07/03 22:46
→ yukuro:感覺裝virtual box很重要,不然重灌作業系統就糟了? 07/03 22:50
糖 super9817020:推推~~ virtual machine建功~~ 07/03 23:32
推 CMturtle:推薦這篇文章 07/04 07:46
推 keke0421:感謝分享:) 07/04 22:26
推 tzrae:謝謝分享 07/04 22:27
推 jk4837:推薦這篇文章 07/10 00:08
作者從 linux1.cs.nctu.edu.tw 修改文章於 2013/01/03 Thu 10:32:16
推 jpopaholic:這門課人品考驗很高,當時把整個組件都換過一遍才成功 01/09 04:58
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: neoneon (106.105.175.48), 07/12/2016 02:32:55