有其現在嵌入式系統,漸漸流行多核心系統,Richman老師一直強調spin lock的觀念,現在 Linux 已經有支持 SMP,也就是可以使用多顆 CPU 來加快系統的速度,如果當我們在修改重要的資料結構時,將執行修改工作的
CPU 中斷 disable 掉的話,只有目前的這個
CPU 的執行不會被中斷,在 SMP 環境下,還有別的 CPU 正同時運作,如果別的 CPU 也去修改這個資料結構的話,就會造成同時有兩個 CPU 在修改它,不穩定性就會產生。一般我們初學者的想法,就是將全部的
CPU 中斷都 disable 掉,等修改完之後,再全部都 enable 起來。但是這樣的做法其
cost 會很大,整個系統的效能會
down 下來。因此,Linux Kernel提供
spinlock 這樣的機制,它不會將全部
CPU 的中斷 disable 掉,所以效率比上述的方法好,但同時卻又能確保資料的穩定性,不會有某個行程在修改它,另外又有一個行程在讀取或修改它的情形發生。另外Richman老師也仔細講解Ethernet
driver的寫法,經過老師的講解後,原來Ethernet driver的原理是很簡單的;總之這次的課程內容相當豐富,但是說真的,要自己動手做功力才會愈來愈強,我需要在家裡好好練功,希望未來能找一個相關的工作,發揮所學。
嵌入式系統驅動程式最後的階段的課程,當然就是驅動程式的撰寫啦,這個階段的課程,由業界經驗豐富的Richman主講,Richman老師在每一個小節都會解說業界工作的實際經驗,其實我最喜歡知道別人的錯誤經驗,即解決問題的方法,因為這是別人工作的珍貴的錯誤經驗,在經過很多工程師不斷地推敲後,千辛萬苦找出的解決方法,也是一般從事這個工作,常常會遇到的問題;另外Richman老師也以個人經驗分享如何與硬體工程師有善及有效的溝通,大家努力來解決問題,這些可以作為未來我從事相關工作的工作處事方法。
當然這堂課主要教我們有關驅動程式的撰寫程序,基礎的c語言有關function pointer、struct等相關基礎常識,瞭解要撰寫的硬體驅動程式的硬體架構,Richman老師也教大家看硬體的data sheet這些都是轉寫驅動程式必備的基礎。
有其現在嵌入式系統,漸漸流行多核心系統,Richman老師一直強調spin lock的觀念,現在 Linux 已經有支持 SMP,也就是可以使用多顆 CPU 來加快系統的速度,如果當我們在修改重要的資料結構時,將執行修改工作的 CPU 中斷 disable 掉的話,只有目前的這個 CPU 的執行不會被中斷,在 SMP 環境下,還有別的 CPU 正同時運作,如果別的 CPU 也去修改這個資料結構的話,就會造成同時有兩個 CPU 在修改它,不穩定性就會產生。一般我們初學者的想法,就是將全部的 CPU 中斷都 disable 掉,等修改完之後,再全部都 enable 起來。但是這樣的做法其 cost 會很大,整個系統的效能會 down 下來。因此,Linux Kernel提供 spinlock 這樣的機制,它不會將全部 CPU 的中斷 disable 掉,所以效率比上述的方法好,但同時卻又能確保資料的穩定性,不會有某個行程在修改它,另外又有一個行程在讀取或修改它的情形發生。另外Richman老師也仔細講解Ethernet driver的寫法,經過老師的講解後,原來Ethernet driver的原理是很簡單的;總之這次的課程內容相當豐富,但是說真的,要自己動手做功力才會愈來愈強,我需要在家裡好好練功,希望未來能找一個相關的工作,發揮所學。
艾鍗學員 Steven Wu