2009-02-17 67 views
7

我試圖使用Atmel處理器上的USB主機端口連接到單個USB設備。我有一個內存有限且沒有操作系統的嵌入式系統。我想實現一個簡單的專用主機來連接到一個USB從設備。簡單的USB主機棧

任何人都可以指導我一個簡單的USB主機實施?

處理器是Atmel AT91SAM9261S。

回答

1

首先,如果我沒記錯AT91SAM9261S板上有OHCI usb controller,你需要實現至少簡單的主機控制器驅動程序(你可以看看Linux的實現)。取決於你的設備將使用它的傳輸類型可能不是很難 - 非常困難:)實現USB堆棧沒有簡單的方法。 實施控制器驅動程序後,您將需要注意USB設備枚舉部分看看USB spec的第9章。只有在這之後,您才能開始實施您的設備邏輯。

對於簡化的用例,有很多可以省略的代碼,但沒有良好的usb背景很難決定哪些是相關的,哪些不是。

任何方式,如果你正在尋找商業解決方案my company可以提供一個。

0

如果您的設備不一定是主機:-P,那麼這會更容易,因爲Atmel提供USB設備的示例源代碼。如果我是你,我會考慮使用Atmel's AT91SAM third party頁面上的USB愛好實時操作系統之一,這可能需要Ilya建議從jungo的USB棧。

如果您確實編寫了自己的OHCI驅動程序,libusb作爲USB堆棧上層的實現可能會有幫助。

1

我已經使用了來自On-Time的RTUSB-32堆棧。它是一個小腳印堆棧,很容易集成到我們的環境中,並且文檔很好。他們很好地抽象出所需的支持,以便它完全平臺和操作系統中立,並且需要爲其提供相對較少數量的掛接 - 即:它已被很好地封裝。

既然你得到了所有的源代碼,你就會發現代碼並不是世界上構造得最好的代碼,但是如果需要的話,它可以在沒有大量工作的情況下被破譯。無論如何,它基本上「沒有問題就可以工作」。我們已經在某些產品上運行了幾年,現在只能遇到一個兼容性問題,那就是某些類型的USB 2.0集線器沒有完全自動發現。我們給他們發送了一個樞紐樣本,並在幾天內爲它提供了補丁。很難打敗。總的來說,我認爲這是一個很好的價值,肯定會坐下來從頭開始寫這個東西。