2014-07-11 51 views
1

我剛開始深入研究Linux內核。作爲一個起點,我試圖爲獨立設備編寫驅動程序(Mindstorms NXT。是的,我知道有用戶空間替代品,但這不是我正在尋找的)。它可能通過USB連接到主機或藍牙。其目的是將公共接口作爲字符設備公開,而與底層連接無關。如何從Linux內核連接到藍牙設備?

USB部分已啓動並正在運行,但我很難搞清楚如何從我的模塊掃描並連接到藍牙設備。

我熟悉如何從用戶代碼執行此操作,但我想知道它是如何從內核完成的。

因此,我的問題如下。

  1. 如何掃描並連接到內核模塊中的遠程藍牙設備?
  2. 我是否可以註冊一個回叫,只要匹配給定的PID:HID/BTADDR/Serial Number的藍牙設備與USB驅動程序中的探測回調相似,就可以調用該回叫?
  3. 這是一件愚蠢的事情,如果是的話,爲什麼呢?

謝謝。

+0

你看過http://lxr.free-electrons.com/source/drivers/bluetooth/下的代碼嗎?您可能需要檢查這些驅動程序以查找類似的設備,或查看芯片組供應商目前是否存在驅動程序。 –

+0

哦,看來我的問題是模糊的。 @PeterL。我正嘗試連接到遠程藍牙設備。不是藍牙適配器/控制器。所以驅動程序/藍牙驅動程序不幸並不是我正在尋找的。 –

+1

我明白這不是你想要聽到的,但是如果你可以在userland中做到這一點,你應該在userland中做到這一點。 –

回答

1
  1. 如果你可以說掃描如何藍牙過程組織(這個詞很抱歉,不能選擇同義詞)在用戶空間,那麼,爲什麼不試着調查在內核空間的那一刻時是怎麼回事?掃描空氣時調用了哪些系統調用?什麼ioctl,什麼參數?等等。

  2. 那麼,實際上一切皆有可能。但是我認爲在USB驅動上添加這個功能並不是個好主意,因爲它是爲更常見的事情而開發的。作爲一個建議,我會嘗試用TRACE EVENTS來實現任何內核線程。

+0

1:這是一個很好的建議,我會嘗試一次,我從我的假期回來。 2:你能否詳述一下你在這裏的含義?爲什麼這樣實現一個usb驅動程序是一個壞主意?您對跟蹤要點的建議僅僅是爲了簡化分析,還是有些事情我沒有采取? –

+0

我認爲這是一個壞主意,因爲這些原因: 1.任何驅動程序的主要目的是堅持任何操作系統控制下的硬件工作。只是這種功能。爲什麼其他專有功能應該添加到驅動程序中?您是否知道原理 - 保持簡單?順便說一句,支持這樣的軟件可能有任何問題。 – 0xDen

+0

關於TRACE EVENTS。是的,我的意思正是你在說什麼。這是我想到的第一件事。 但是我不能幫你很多,因爲沒有這樣的經驗。無論如何,如果您有任何問題,我會盡力幫助。我在內核空間中有了軟件開發的便利。 – 0xDen