2010年7月22日 星期四

Recently...

唸研究所滿一年了...
馬上也就要碩一升碩二了~
時間過得真快...
也體會了不少黑暗學術界的辛酸血淚... QQ

當初進研究所的時候是想要專心研究Embedded Linux
雖然還是有做到Device Driver相關的Maintenance
不過最後還是被老闆抓去做硬體整合... Orz

能有機會學到以前輔大不太常碰到的硬體是個還蠻難得的機會
而且軟體寫久了也會想瞭解一下最底層的硬體是怎樣在運作的
不過整合最討厭的就是得先等到別人開發到一定的程度後才能開始工作
(就某方面來說這也很像Device Driver的開發
必須等到軟/硬體都有一定的程度侯才能驗證自己寫的是否正確無誤... QQ)
再加上設計者不是自己
因此只能單純就Bus上的行為來觀察IP是否正常運作
沒問題的話倒還好...
機車的就是當問題發生的時候常常不知道為啥會出錯!!!!!
有可能是我們自己整合的時候有修改到錯的地方
也有可能是他們本身設計上的錯誤...
雖然目前主要還是學長在處理這方面的問題
不過看了真的是覺得沒啥勁.....
而且之後還要把我們實驗室的CPU和ICE一起給整進去
最後還要能Tape out成一顆晶片回來!!
(聽說光排隊等Tape out就要一、兩個月?! QQ)
一想到就整個頭很大..................... <囧>

原本以為自己碩士畢業論文大概就是跟軟/硬體整合相關的了
沒想到上週老闆又提起了當初他所提的軟/硬體效能監測工具的東西出來
這次再被提就真的是逃不掉了...
硬著頭皮就是得給它做出來才行!!

一開始對軟體的效能監測一直都沒啥頭緒
只知道用最簡單的printf()或是printk()來印出所執行的時間
但這些function calls本身的overhead就非常重
而且若想要移植到新的應用程式就得重新寫過
對效能和可移植性來說都是非常不好的方法

再加上在有OS的情況下因為OS Scheduler的關係...
要針對各個應用程式來監測便變得更加的困難
因此勢必得從Kernel層本身來下手

在書上無意間看到了LTTng (Linux Trace Toolkit Next Generation) 這套工具
查了以後才發現這是套非常強大的Open-Sourced的軟體
不但可以針對Kernel Space及User Space來監測其效能
甚至還提供了LTTV (LTTng Viewer) 這套GUI介面的軟體來分析其所擷取的效能分析結果
而且最棒的是作者在他的官方網頁上都有放他所投出去的Papers和Presentations
連他自己的博士論文都完整的放在網頁上供人點閱
也就此瞭解到了不少Kernel Source本身
或是別人release的Kernel Patches來協助完成tracing / debugging的功能
像是:
GNU GDB和strace所使用的ptrace() system call
Kprobes
LTTng作者:Mathieu Desnoyers (神人!!) 所開發的Kernel MarkerTracepoints
IBM工程師特別針對Device Driver tracing / debugging的Linux Driver Tracing Interface (DTI)
以及relay (前身為relayfs)

希望在研究後也可以設計出自己一套基本的軟/硬體效能監測的工具!! XDDD

另外Linux Symposium也是一個超棒的研討會
很多Mainline Linux Kernel所包含的技術都有在這研討會上發表過Papers
(還蠻希望未來能有一天可以參加這種研討會的... XDDD)

前兩天還去上了國家晶片研究中心(CIC)開的Bootloader的課程
對程式底層架構、Linker script和U-boot也終於是有了一點概念...
不過ARM的assembly code實在是很不熟!! QQ


雖然還沒開始正式接觸到硬體設計的部份
不過就目前來說還是對Linux Kernel比較有興趣點... >M<"
而且這也比較符合當初進研究所希望做的Linux Kernel相關研究
自己也能比較有自己的進度 不用每次都要等別人修改
(但Overloading也跟著變重很多就是... QQ)


還不曉得最近看的東西是否真的可以用在我們實驗室的平台上
x86或x64平台的支援還是比ARM要完整的多了...
而且我們實驗室用的板子是廠商自己開發的
相對於有Open-Sourced支援的Versatile平台限制可能也會多了不少?!
還是得花時間再研究一下其可行性才行.....


希望這真的是我最後的畢業題目了...
之前做的事情對老師來說真的只是在"練功"
而且就"練功"而言來說還真的是不太好練... <囧>

現在的Overloading已經接近滿載!!
而且還有要帶學弟...etc 的事情要弄
再被assigned其他的東西要做我就真的是要先自爆嚕!!!!! (●皿●)"
另外最重要的當然就是希望能兩年準時畢業啦!! XDDD