看板 NCTU-Teacher 關於我們 聯絡資訊
※ [本文轉錄自 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