幾個Linux驅動問題

2021-06-26 11:13:50 字數 1572 閱讀 1026

1、字元型驅動裝置你是怎麼建立裝置檔案的,就是/dev/下面的裝置檔案,供上層應用程式開啟使用的檔案?

答:mknod命令結合裝置的主裝置號和次裝置號,可建立乙個裝置檔案。

評:這只是其中一種方式,也叫手動建立裝置檔案。還有udev/mdev自動建立裝置檔案的方式,udev/mdev是執行在使用者態的程式,可以動態管理裝置檔案,包括建立和刪除裝置檔案,執行在使用者態意味著系統要執行之後。那麼在系統啟動期間還有devfs建立了裝置檔案。一共有三種方式可以建立裝置檔案。

2、寫乙個中斷服務需要注意哪些?如果中斷產生之後要做比較多的事情你是怎麼做的?

答:中斷處理例程應該盡量短,把能放在後半段(tasklet,等待佇列等)的任務盡量放在後半段。

評:寫乙個中斷服務程式要注意快進快出,在中斷服務程式裡面盡量快速採集資訊,包括硬體資訊,然後推出中斷,要做其它事情可以使用工作佇列或者tasklet方式。也就是中斷上半部和下半部。

第二:中斷服務程式中不能有阻塞操作。為什麼?大家可以討論。      

第三:中斷服務程式注意返回值,要用作業系統定義的巨集做為返回值,而不是自己定義的ok,fail之類的。

3、自旋鎖和訊號量在互斥使用時需要注意哪些?在中斷服務程式裡面的互斥是使用自旋鎖還是訊號量?還是兩者都能用?為什麼?

答:使用自旋鎖的程序不能睡眠,使用訊號量的程序可以睡眠。中斷服務例程中的互斥使用的是自旋鎖,原因是在中斷處理例程中,硬中斷是關閉的,這樣會丟失可能到來的中斷。

評:回答的還可以。

4、原子操作你怎麼理解?為了實現乙個互斥,自己定義乙個變數作為標記來作為乙個資源只有乙個使用者行不行?

答:原子操作指的是無法被打斷的操作。我沒懂第二句是什麼意思,自己定義乙個變數怎麼可能標記資源的使用情況?其他程序又看不見這個變數

評:第二句話的意思是:

定義乙個變數,比如 int flag =0;

if(flag == 0)

這樣可否?

5、insmod 乙個驅動模組,會執行模組中的哪個函式?rmmod呢?這兩個函式在設計上要注意哪些?遇到過解除安裝驅動出現異常沒?是什麼問題引起的?

答:insmod呼叫init函式,rmmod呼叫exit函式。這兩個函式在設計時要注意什麼?解除安裝模組時曾出現解除安裝失敗的情形,原因是存在程序正在使用模組,檢查**後發現產生了死鎖的問題。

評:要注意在init函式中申請的資源在exit函式中要釋放,包括儲存,ioremap,定時器,工作佇列等等。也就是乙個模組註冊進核心,退出核心時要清理所帶來的影響,帶走一切不留下一點痕跡。

6、在驅動除錯過程中遇到過oops沒?你是怎麼處理的?

沒有。。

評:其他人可以接著說。

7、ioctl和unlock_ioctl有什麼區別?

沒用過unlock_ioctl。。

評:其他人可以接著說。

8、驅動中操作物理絕對位址為什麼要先ioremap?

答:因為核心沒有辦法直接訪問物理記憶體位址,必須先通過ioremap獲得對應的虛擬位址。

評:其他人可以接著說。

9、裝置驅動模型三個重要成員是?platfoem匯流排的匹配規則是?在具體應用上要不要先註冊驅動再註冊裝置?有先後順序沒?

這個真不知道。。

評:其他人可以接著說。

mysql jdbc驅動問題

1 建立了乙個j2ee專案。2 將mysql的jdbc驅動拷貝到webcontent web inf lib 目錄下。3 在驅動jar包上點右鍵將jar包新增到構建路徑中。4 然後編寫與資料庫相關的 5 在實現類中新增main方法進行單元測試,各個方法都能正常執行。6 建立jsp頁面在其中建立物件呼...

QT SQLITE 驅動問題

在,使用sqlite時,發生,driver not load,錯誤。是因為,沒有找到,qsqlite 外掛程式的問題,在,qt學習中,會有一些功能以外掛程式的形式出現的,如,jpeg,mng,等。如果,大家有在使用qt creator 可以看看,它的目錄,其中就有,sqldrivers,imagef...

USB驅動問題

問題描述 usb原驅動是好的,突然無法正常工工作!識別不到usb鍵盤滑鼠,識別不到u盤,連燈都不亮,貌似不能供電。裝置管理器裡邊顯示黃色感嘆號!右鍵檢視屬性,在常規的裝置狀態裡面可以看到錯誤資訊為 windows 無法載入這個硬體的裝置驅動程式。驅動程式可能已損壞或不見了。39 解決方法 1.在登錄...