Fw: [心得] EE2405 嵌入式系統與實驗 劉靖家

看板NTHU_Course作者 (怕熱的肥宅)時間8年前 (2017/02/15 01:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 candog 信箱] 作者: candog.bbs@bbs.cs.nthu.edu.tw ("FireBolt") 標題: [心得] EE2405 嵌入式系統與實驗 劉靖家 時間: Wed Feb 15 01:19:30 2017 作者: zain523 (阿狗) 站內: nthu.course 標題: [心得] EE2405 嵌入式系統與實驗 劉靖家 時間: 2009/01/06 Tue 21:09:06 課名: 嵌入式系統與實驗 科號: EE2405 老師: 劉靖家 課本: 無 課別: 電機系選修 學分: 3 涼度:★★★☆☆ 甜度:★★★★★ 介紹: 這門課改名了, 其實就是以前的"微處理機實驗", 而且由原來的2學分改成3學分; 改名的原因不是很清楚, 但改成3學分比較近於人情 T T 真好! 基本上這門課跟鐘太郎教授所開的"微處理機系統"可說幾乎沒有任何關係, 改名的原因可能是因為避免混淆造成沒有修過微處理機系統就以為不能修的錯覺, 實際上現在的課名比較合乎課程內容。 修這門課需要什麼背景知識呢? 如果你有修過邏設實驗, 也修過程設, 會寫簡單的 C 及 Verilog, 並且看得懂英文大概就沒有問題了... 課程內容: 顧名思義, 修完這門課你會對嵌入式系統有一定程度的了解, 整個學期大約有10個左右的 Lab 要做, 每個 Lab demo 完回家要寫一份報告, 還有一個 final project 要做, 題目自訂, 運用本學期所學到的東西可簡可繁。 這門課實在不賴,教授講過的一句話:「上這門課是在練功。」 何謂練功?意即在當下也許不會感覺自己有明顯的進步, 但時間久了累積下來,有朝一日派上用場才發覺自己居然有這樣的實力了。 Lab 1   Introduction to Linux Lab 2   Booting an embedded Linux system Lab 2a Kernel Recompilation and Ramdisk Modificatioon Lab 3   Network File System Lab 3a Debugging techniques Lab 4  Building toolchain and root file system Lab 5   Programming with RS-232 Lab 6   Introduction to Linux Device Driver Lab 7   Memory Mapped I/O Lab 8   Interrupt-based I/O Lab 9   Interfacing FPGA Devices (以上為各個Lab的內容↑) 心得: 簡單敘述一下,整門實驗課都會用到一塊名為 PCM-7230 的實驗主板, 第一堂課很簡單,只要把 Cent OS 灌到抽取式硬碟裡, 它將是我們這學期的操作介面 (Linux 的作業系統。) 原先聽學長說要熟悉 Linux 而且要修過資工開的作業系統再來修這門課比較好, 我想應該多少有點差別,不過以我個人經驗看來, 剛開始的確會不大了解教授講的東西,幸好課程網站上的參考資料相當豐富, 課後閒來沒事也可以去參考參考;也可以在課堂講解的時候問教授,    他會講得極其詳細,每次 Lab 做完有問題的地方或想深入了解的它的機制, 都可以留到下次上課發問,通常可以得到很滿意的答案。 至於 Linux 的介面則是不久以後就習慣了,我想應該不會有什麼太大問題。 第一堂課會很早下課XD,學期中幾乎百分之九十的實驗都是在課堂上完成, 只有到第五、六個Lab要寫一些簡單的 C,第七、八個Lab要寫 Verilog, 其他幾乎都沒有回家作業 XD 那平常在課堂上做些什麼呢? 一開始也許會覺得很無聊,因為幾乎都是照著一個個 Lab 的步驟做而已, 一個指令一個動作,不讓人覺得有什麼意義,不過這都是學期初的膚淺念頭而已, 原來前幾個 Lab 都是基本功啊!建議要清楚弄懂每個步驟的意義, 回去報告才寫得出東西,不懂的記下來下次上課可以問教授, 這樣學起來會比較紥實,相較於照步驟弄弄草草結束會學得更多才是。 Lab2 → install PCM7230 bootloader 、install kernel and ramdisk. 這一塊實驗主板其實也是 Linux 系統,至於上面這些東東是啥呢? 等你來修課就知道了XD 基本功還要學著 recompile kernel、modify root file system 再來是架 NFS (network file system) 有點像是網路硬碟, 其方便性在於不必每次都一直重製 ramdisk , 可以直接把修改的資料丟進PC端的指定資料夾內, 印象很深刻的一段指令XD 每次進 minicom 時都要打的: mount -o loop ramdisk /mnt/initrd (enter) /etc/init.d/nfs start 掛載完才進入 minicom 登入 PCM 板上的 embedded Linux。 這塊實驗板的功能相當強大,也有網路介面, 當作一個 server 可以用 telnet 連上去, 所以我們也學著用 debugger ,進行遠端除錯的練習。 到了 Lab4 要學著 build toolchain and ramdisk 不過因為自己 build toolchain 要花很長時間, 再加上也許過程中有了什麼小失誤,所有時間就都白費了, 所以教授讓我們跳過直接練習 build ramdisk , 到了這邊基本功就大致告一段落,學會 recompile kernel 和 build ramdisk, 這是 embedded Linux 的兩大元件,也許這樣講不大明白, 親自體會過就會了解,可以設計符合自己所需的 embedded Linux 環境,還不賴! Lab5 開始要寫個 C program,因為是練習用 Serial port 讓 PC 端跟 PCM 板溝通,教授上課會介紹 RS232,baud rate 的設定、 一些會用到的 flag 跟 function,我們要改寫助教的程式, 助教的範例程式是能夠在某一方送出字串讓另一端接收字串, 而我們得寫個登入程式,能夠檢查3組帳號密碼的簡單程式, 會需要一些檔案處理,因為帳號密碼是內建在某個檔案中, 其實也不會花太多時間,只是我那時想得太複雜,把自己搞昏頭了哩XD Lab6 學寫一些簡單的 Linux device driver, 這個 Lab 我沒花很多時間去研究,算是比較可惜點, 因為最後要 Demo 的很簡單,只要寫一個 C program, 能夠寫入一些內容進 driver ,再把資料從 driver 讀出來, 至於 driver 如何寫,教授上課會上很久,自己也要花一點時間去看資料才行。 功力夠深以後再外接些 device 到 PCM 板可以自己寫 driver 喔!!! 噢對不得不提一下,這門課是下午三點二十開始, 可是幾乎每次講解課都會講到五點半吧 XD 講完兩個小時才會上去Lab上機實作,通常做到幾點是看實力, 快的人也許六七點,不過摸到八九點的經驗也是有..... 總計上課時間不算短,不過要幾點走是自己決定,沒做出來有事也可以跑, 只要再找助教約時間補 Demo 就好了。 對 driver 有個簡單認知後,接下來就好玩了, 因為開始會把PCM板跟FPGA板橋接起來,而且這個 FPGA 板好像要五六千塊, 以前邏設實驗小小塊好像玩具XD (一人一塊~~~,PCM板也是一人一組。) 上面的東西應有盡有啦,想玩玩看是什麼感覺嗎?來修就對了! 橋接起來以後,就可以利用 PCM 板去控制 FPGA 板了, 可以直接從終端機執行所寫的 C program ,將值寫進 SRAM 裡, 讓 FPGA 可以讀取,Input 不再是撥動 DIPSW 或按按 push botton, 為什麼要這樣做呢?如果說我們把這個概念延伸, 假設我們身在國外或是某個遙遠的彼端,現在網路如此普及, 我們可以透過網路連到某個伺服器(此即為 PCM 板的角色), 再透過這個 server 去控制週邊的 device (就像這邊的 FPGA 板), 這大概就是這門課要學的東西了,其實還蠻有趣的XD  Lab7跟8要寫 counter,修過邏設實驗的人應該都不會覺得很難, 只是要先了解SRAM的讀寫機制,還有看看助教寫的 FSM 如何控制一些 flag, 弄懂以後要改寫就不難。 Lab8 則是學 blocking 跟 nonblocking 的 interrupt 的差別, 用這兩種不同方式改寫 code,上面提到的是啥來修完課就會了解了。 總之這門課很多東西可以學,大致介紹到這裡。 大概會有人想問操不操的問題,這門課幾乎是用上課時間做, 回家只要寫寫實驗報告就交差了,而需要花比較多時間的是 final project,    可能要花一點時間想題目,在開始做之前要先上台簡報一下構想,    教授搞不好會覺得你做的東西沒意思,會幫你想些有的沒的XD 不過難易度是自己決定的,只要不要想做太複雜的東西,應該也很快就能搞定。 補充: 不得不提一下XD 因為是硬體難免會有意外... 做不出來有時不是人的問題, 是硬體的問題... 我曾經遇過1小時前還能telnet到板子上, 過一小時要demo發現掛了... 結果後來檢查剛好我那台電腦的網路線壽終正寢了... 還有同學不知道怎的不小心把抽取式硬碟的東西洗掉, 可能是Cent OS 跟 板子的embedded linux介面很像, 不小心犯了一些失誤, 於是只好所有東西重做了, 剛另外一位修課者要我補充的, 就這樣! 運氣很好去年修課的時候正好換一批新板子, 問題應該會比往年少很多, 自己注意一下, 白白花很多時間沒有結果時, 要想想是不是有東西壞了。 總成績: 99 (1/11) 其實這門課每個 lab 都有demo出來,報告都有交,final如期完成,    分數一定在 90以上 XDD 這是電機系少數可以碰硬體實作的課,      有興趣的人可以修看看。 -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: zain523 @140.114.210.60 chococoo推薦這位優秀的學長 01/06 21:13 zain523樓上是以眼還眼嗎 ="= 01/06 21:25 wju1230 推薦這位優秀的學長 01/06 21:46 JYpink推薦這個台客帥男! 01/06 22:00 zain523...... 01/06 22:03 kaster推薦超強阿狗!! 01/06 22:04 zain523看一下置底文不要亂推吼XD 01/06 22:13 jerryjhang原PO很爽XD 01/06 22:47 andylee原來阿狗是神中H = =+ 01/06 23:23 ryanlei感謝分享<(_ _)> 01/07 00:56 gattolai推~!!強者XDD 01/07 01:48 bobwei推薦這位超強的學長!! 01/07 02:04 RainRain阿狗真是太厲害了 01/07 12:34 kerker推薦這篇文章 01/07 15:36 sagygygy神人學長出現了 01/07 19:32 zain523呃, 學期中開始要寫code, 記得把verilog跟C撿回來... 01/07 21:56 zain523不然可能會很辛苦... 印象中有一些人被卡住, 提醒一下。 01/07 21:56 zain523剛阿博說補充一下硬體有時會壞掉的情形。 01/07 22:44 zero271828學友實在是太神了~ 01/07 22:46 zain523 於 2009/01/07 Wed 22:50:13 從 140.114.210.60 修改 lulumie阿狗真男人! 01/08 00:15 fred7798看完之後我決定還是別修好了 = = 01/09 17:57 athlunJJ6加持過的課就是不一樣 XD,背景知識越多,學得越多哦 01/10 17:10 keterwang阿狗立身!!! 01/10 21:37 zain523這樣講很有道理,隨著課越修越多再回頭就會有恍然大悟之感 01/10 22:44 ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: candog (140.114.206.139), 02/15/2017 01:59:00
文章代碼(AID): #1OeqLcJj (NTHU_Course)