Thursday, June 03, 2010

Linux kernel & driver

最近在弄 Linux Kernel 跟 driver,幸好不是從頭開始弄,不然還真不知道從何開始。拜這個所賜,總算對 Linux 開始有一點點的瞭解。

跟一般嵌入式系統不同,Linux 是有虛擬記憶體的,所以處理起來反而麻煩許多,因為嵌入式系統不但需要管 kerenl,連 application 都得自己處理,如果沒虛擬記憶體的話,application 直接 link kerenl 的 function,很好用。但是 linux 就不能這樣搞了,雖然據說 linux 也可以不支援虛擬記憶體,但是好像很少人這麼做。

linux 上的 compiler 設定跟 windows  的也不太相同。不過也不能這樣說啦,因為在 Windows 最多編譯 application,而這次可是編譯 kernel 跟 application。所以很多奇奇怪怪的 complier 設定都得碰,像是 weak reference 跟 ATAG。Linux kerenl 的初始化都是在 compile time 就決定了,相對 trace code 變得很困難。

codeblock