版本 2ec893958983d824969ef38d8d08a7bf6c5b1fbd
User/Sunny
Sunny(蔣亞翰)
簡介:
- 成功大學工程科學系105級
作業及筆記
- week1&2 :
GitHub<https://github.com/r930709/arm-lecture>,Hackpad<https://embedded2015.hackpad.com/1-EaaA9oSTt3C> - week3 :
GitHub<https://github.com/r930709/freertos-basic>,Hackpad<https://embedded2015.hackpad.com/-Week-3-Lab39-oZqeipjm0Ft> - week4 :
GitHub<https://github.com/r930709/visualizer>,Hackpad<https://embedded2015.hackpad.com/-Week-3-Lab40-XWu1T2TrI5A#:h=取得Visualizer-並進行測試> - week5 :
Hackpad<https://embedded2015.hackpad.com/ySL4iagyhuF>_
報告筆記
- 整體 :
Hackpad<https://embedded2015.hackpad.com/Team6--D3q9lvQUPDH>_ - ARM CP15 與MMU :
Hackpad<https://embedded2015.hackpad.com/ARM-CP15-MMU-Lgl4ew73EO6>_ - lmbench3簡介 :
Hackpad<https://embedded2015.hackpad.com/Team6Linux-on-ARMlmbench-sUl64jzsBv2>_ - Measuring Cache and TLB Performance and Their Effect on Benchmark
Runtimes 論文分析 :
Hackpad<https://embedded2015.hackpad.com/Team6-ARM-Linux-lmbench-Rlcb2b5Bw6O#:h=IV.-EXPERIMENTAL-RESULTS-FOR-C>_
報告
- CSIE Wiki:
ARM-Linux</embedded/arm-linux>_ - 主要負責lmbech的lat_syscall分析以及實驗暨結果探討
所見所聞心得
在過去大四下時因緣際會下想了解什麼是嵌入式系統,想對系統整合方面有進一步的認識,於是研究所時選擇了成大工科的多媒體與網路實驗室,然後憑藉著實驗室傳承下來對嵌入式系統的應用以及經驗並加上自我學習,好不容易才感覺稍微理解了許多,但修了此課之後,真的是大開眼界,才發覺以前懂得都只是皮毛或者閉門造車而已,但如果沒有以前的累積也很難在這堂課收穫很多。
一開始上這堂課時就來個檢驗考,就過去到學期末來看,可以很深刻的體悟到原來考試裡面的C語言程式能力、資料結構、演算法、作業系統、計算機組織與結構、還有機率與統計,這些對於嵌入式系統的研究來說是多麼重要的基本能力,利用一開始一個月多的龐大作業、工具學習、背景知識學習來紮紮實實的訓練基本功,再來藉由報告外加應用來讓自己做出一點貢獻,最重要的是老師常說的幾句特別重要的話,來不斷激勵自己。
- 【數學以及念書的重要性】
- 【程式碼是拿來改的,不是像文學樣來舉燭解析用的】
- 【當你不懂時,你可以發現還有很多的進步空間】
- 【做研究就從金字塔的頂端開始,往下拓展】
以下就依照做過的作業以及報告來簡介學到了哪些
在做ARM-Linux 報告時,為了對memory這邊有一定的背景知識才好進行報告並且協助組員討論,所以讓自己藉由看黃婷婷【計算機組織】線上教學影片Memory的部分,來複習並進一步確認自己對Memory認知的定位,在做此報告時,原本以為自己有改code的能力,沒想到還是卡在基礎知識不夠紮實,於是訓練自己看了將近四篇有關探討lmbench的英文paper,與組員多次每個禮拜討論後, 這麼具有挑戰性的課程,涵蓋了過去的所學,像是機率與統計、計算機組織、作業系統、資料結構以及邏輯設計,而且也從中發現了自己是多麼的渺小,自己的程式設計能力相當的不足,像是C語言的callback和function pointer都還不是很熟悉,還有很多特別的方法像是Concatenation,inline assembly等等。
除此之外,終於了解MCU上時間的計算方式,是透過systick的方式去記錄;
由於對於這個領域可以說是完全不懂,過程中也啃了很多的英文教材,這時候才領悟到英文的重要性,因為平時也不會自己大量的啃原文書,發現以前有好好學英文並沒有做錯,很多長輩的叮嚀總是時間到了才會印證,這個時代快速閱讀抓重點的能力真的很重要。
期中之後就開始做報告,一開始對於這個題目其實感到疑惑,想說為什麼別組都能寫code,而我們好像是要大量閱讀的感覺,但是越讀越多之後發現,是因為背景知識其實非常的重要,不然沒有辦法切入重點,一開始還讀了arm v7-A VMSA 將近200頁的東西,後來發現沒有用到,不過也算是學到一些東西,而且要寫code,得先要有背景知識,如果去做那種只要call API就可以寫code的工作,那就沒有念大學的意義了。
lmbench讓我了解benchmark的基本原理,而且讓我讀了這輩子第一篇論文(其實總共讀了5篇),終於了解什麼是cache,再這過程中也學會很多工具,如gnuplot,而且也發現了時代的進步,像是以前cache是一個byte一個byte讀取(lmbench2的年代),現在就是一次讀取一個cache line大小的data,這些過程中,也和組員討論的非常熱烈,互相學習。
這堂課最特別的地方在於,遇到問題就要自己想辦法解決,這種能力的培養再其他課很少有機會培養,而且也很少課會需要如此的大量討論、看論文、看開放式課程、回憶過去所學是否正確(像我就發現以前上的OS老師教錯,說semaphore就是mutex…),經過這些過程而學到的東西,真的是想忘都忘不掉。這是一堂要有毅力你才學的到東西,而且毅力越強學的越多的課程,不然大概只會充滿失落感,因為周遭充滿著強者同學,很適合對資訊科學充滿熱情的人來學習。
自我評量分數 (1 到 10 級分)
- 我給自己7級分。
- 原因:上面的心得已經大致描述了這一個學期的學習歷程,這是一門有心就很花時間的課,雖然我沒有什麼太特殊的成果,但是每周至少都花了20個小時以上在摸索、了解以及撰寫作業(剛開學的前8週幾乎是所有時間都投入在這堂課程,因為基礎不好),以及老師給的推薦教材大部分(頁數少於300頁的部分,我都會看,訓練自己的英文能力以及快速閱讀重點的習慣,即使看的不是很懂也會以快速檢閱的方式先幫自己建立個概念),這個學習的過程我很珍惜,我覺得給予自己這樣的分數當之無愧,我認為自己進步的幅度才是最重要的,即使現在比他人弱,持續的進步的速度只要比其他人還快,就有一天可以成為佼佼者。
聯絡資訊:
- email:
sunnyboyr930709@gmail.com
