這幾天
面試幾個想做安卓
Linux驅動的,總體感覺上驅動基礎還是比較薄弱,大部分情況是雖然做過驅動,但是基本上都是采用內核現成的,或者是開發板上已經有的,單獨寫過模塊驅動很少,驅動機制理解不是很透徹.以下是幾個隨口問過的基礎問題,供參考.
1、字符型驅動設備你是怎么創建設備文件的,就是/dev/下面的設備文件,供上層應用程序打開使用的?
2、寫一個中斷服務需要注意哪些?如果中斷產生之后要做比較多的事情你是怎么做的?
3、自旋鎖和信號量在互斥使用時需要注意哪些?在中斷服務程序里面的互斥是使用自旋鎖還是信號量?還是兩者都能用?為什么?
4、原子操作你怎么理解?為了實現一個互斥,自己定義一個變量作為標記來作為一個資源只有一個使用者行不行?
5、insmod 一個驅動模塊,會執行模塊中的哪個函數?rmmod呢?這兩個函數在設計上要注意哪些?遇到過卸載驅動出現異常沒?是什么問題引起的?
6、在驅動調試過程中遇到國oops沒?你是怎么處理的?
7、ioctl和unlock_ioctl有什么區別?
8、設備驅動模型三個重要成員是?platfoem總線的匹配規則是?在具體應用上要不要先注冊驅動再注冊設備?有先后順序沒?
這些應該都是比較基礎的問題吧,但是從實際情況上來看,回答的都不是很正確。