分享到plurk 分享到twitter 分享到facebook

User/Sunny

Sunny(蔣亞翰)

簡介:

  • 成功大學工程科學系105級

每週上課筆記

  • 每週上課的課堂筆記 :Hackpad

作業及筆記

報告筆記

  • 整體 : Hackpad
  • ARM CP15 與MMU : Hackpad
  • lmbench3: measuring scalability論文分析並實測lat_syscall結果 : Hackpad
  • Computer Architecture_memory篇 : Hackpad

報告

  • CSIE Wiki:ARM-Linux
  • 主要負責整理Memory以及ARM-Linux MMU的心得
  • lmbech的lat_syscall分析以及實驗暨結果探討

所見所聞心得

  • 在過去大四下時因緣際會下想了解什麼是嵌入式系統,想對系統整合方面有進一步的認識,於是研究所時選擇了成大工科的多媒體與網路實驗室,然後憑藉著實驗室傳承下來對嵌入式系統的應用以及經驗並加上自我學習,好不容易才感覺稍微理解了許多,但修了此課之後,真的是大開眼界,才發覺以前懂得都只是皮毛或者閉門造車而已,但如果沒有以前的累積也很難在這堂課收穫很多。

  • 一開始上這堂課時就來個檢驗考,就過去到學期末來看,可以很深刻的體悟到原來考試裡面的C語言程式能力、資料結構、演算法、作業系統、計算機組織與結構、還有機率與統計,這些對於嵌入式系統的研究來說是多麼重要的基本能力,利用一開始一個月多的龐大作業、工具學習、背景知識學習來紮紮實實的訓練基本功,再來藉由報告外加應用來讓自己做出一點貢獻,最重要的是老師常說的幾句特別重要的話,來不斷激勵自己。

    • 【數學以及念書的重要性】
    • 【程式碼是拿來改的,不是像文學樣來舉燭解析用的】
    • 【當你不懂時,你可以發現還有很多的進步空間】
    • 【做研究就從金字塔的頂端開始,往下拓展】
  • 以下就依照做過的作業以及報告來簡介學到了哪些

  • 在第一次作業時開始了解ARM的組合語言以及ARM架構還有register,從一開始老師給的Hello world範例,回想到過去在學嵌入式這方面所念的書,又進行了一番整理以及實驗,然後在寫作業時,才開始真正了解到,原來光一個簡單的Fibonacci演算為了分析效能且作效能優化,在撰寫組語時就不只從原本的recursive或iterative還可以藉由Thumb指令或者數學搭配ARM的指令來達到更進一步效能優化,在聽強者同學在台下分享時,覺得這真是獲得一個很棒的經驗。

  • 在做FreeRTOS擴充的作業時,讓我原本對過去作業系統的概念只有單純理論而藉由本作業shell command擴充、task建立、task communication,才開始從這小型的作業系統中更具體的了解其運作的過程,尤其是在檔案系統部份,下了滿大的功夫的,不只複習C語言資料結構、callback、function pointer、c實作物件導向的概念、還有字串、檔案操作,最重要的是對於hash function以及檔案系統建立的認識,這真的看了ㄧ些有關檔案系統的內容、又回去翻恐龍書複習,並與強者同學討論,才慢慢學會此經驗。

  • 在做FreeRTOS 視覺化機制的作業時第一次體會Systick的重要性有他才能夠有辦法去記錄時間和利用視覺化工具來呈現許多在OS書上常見的行為,譬如說Context switch,藉由看出其圖表上時間的分配可以再進一步搭配機率與統計來解釋其現象,這真的是以前沒做過的實驗,可見基礎以及工具活用的重要性。

  • 在做ARM-Linux 報告時,為了對memory這邊有一定的背景知識才好進行報告並且協助組員討論,所以讓自己藉由看黃婷婷【計算機組織】線上教學影片Memory的部分,來複習並進一步確認自己對Memory認知的定位,做此報告時,原本以為自己有改code的能力,沒想到還是卡在基礎知識不夠紮實,於是訓練自己看了將近四篇有關探討lmbench的英文paper,與組員多次每個禮拜討論後,終於以量測數據並做圖的方式來對cache、TLB、context switch overhead、syscall latency、Linux scheduler有ㄧ個很具體的了解,這真的是比把網路上的資料(還不一定對)看到熟還更具有科學的方法以及結果,也終於知道老師當初為什麼一直希望我們朝這方面研究的原因了。

自我評量分數 (1 到 10 級分)

  • 我給自己7級分。
  • 原因:上面提到的心得、hackpad、github code、報告,都是本學習歷程,而當初修了這門課想說可以變強,並且可以學到很多,果然真的是收穫滿滿,只可惜後來被實驗室以及其他修課綁住,使得miss掉mini-arm-OS這個可以能認識context switch以及了解rtenv的作業,還有過去很多作業即使有做、以及改寫code優化ㄧ些系統內容,大都是參考強者同學的筆記這樣學習的,沒做到貢獻,覺得在這方面受挫滿多的,在作報告時以及也是參考了很多內容,有些因為基礎不夠紮實無法清楚的了解內容,在台上被老師詢問了一番,又繼續念老師推薦的paper或者書,從給的Hint中來幫助學習,這時就發現與組員討論甚至是跨系組員一起討論真的是很棒的方式,這真的是打群架的時代,不過為了讓自己短時間成長每週也是花了大部分的時間在這上,只是方法有些許不對吧,有些都事倍功半,繼續調整中,下學期繼續再修,一次學不懂,再多學幾次就一定可以弄懂他,希望經由這樣反覆的穩扎穩打,有朝一日也可以成為表人眼中的強者同學。

聯絡資訊:

  • email: sunnyboyr930709@gmail.com