在lm3s 9b90上開發usb驅動程式

2021-05-26 05:11:05 字數 697 閱讀 2981

手頭有一塊lm3s9b90開發板, 我把ecos移植到它上面執行了起來。然後試著開發usb驅動,遇到了一些問題,

1、usb中斷無法產生,給usb模組時鐘,上電復位,開啟soft connect, 然後把相應的中斷遮蔽位使能,就應該能進usb中斷,然而我的程式就是遲遲不能進入usb中斷,最後發現是中斷優先順序設的不正確。優先順序低於某一級別的中斷都被遮蔽了。

2、收到主機發過來的設定裝置位址命令後就再也收不到任何命令了。我一開始以為是位址設的不對,所以接收不到隨後的命令。但是看了半天文件,位址設的沒錯。最後發現在設定裝置位址後,其它還是收到了命令。只是我的程式沒檢測到。因為新命令是和設定位址命令的status階段中斷一起來的,我只處理了status階段中斷,就沒有接收新的命令。

3、向主機傳送大於64位元組的資料時總是出錯。用bus hound 監視,發現在發到64位元組資料後,就會產生乙個stall pid錯誤。我在裝置端debug, 在向主機傳送完64位元組資料後,就進入死迴圈,監視csrl0的值,它會很快報告乙個0x4的值,即stall 錯誤。後來發現,有時當收到乙個控制端點中斷時,csrl0的值卻為0,而此時usb裝置處於data in 階段,因此這是乙個虛假中斷,應該忽略。做了這樣的處理後,傳送大於64位元組的資料時不再出錯了。

我感覺lm3s 9b90的usb程式設計不容易,因為它沒有嚴格地按照usb協議設計硬體,比如我們無法根據硬體確認收到乙個控制包的setup階段, data階段, status階段等。

ARM檢測裝置(LM3S9B81)除錯記錄

arm檢測裝置 lm3s9b81 除錯記錄 個人筆記 經驗總結 修改 ww 2016.6 問題一 晶元虛焊 除錯iic 和spi 通訊時,經常通訊失敗,最後檢測都是虛焊問題,arm晶元管腳多,不易焊接,應找專業人員焊接,可極大減小虛焊可能性 問題二 usb 通訊失敗 問題描述 使用usb 與上位機連...

U Boot在S3C44B0上的移植方法

bootloader 給嵌入式作業系統提供板上硬體資源資訊,並進一步載入 引導嵌入式作業系統。由於bootloader 的功能直接與cpu和微處理器系統相關,所以不同的cpu體系將需要不同的bootload er。除了依賴於cpu的體系結構外,bootloader 實際上也依賴於具體的嵌入式板級裝置...

ucos ii在MC9S12XDP512上的移植

搞了幾天,總算把ucos ii移植到mc9s12xdp512上了。做個簡短的筆記。ucos ii版本 2.52,編譯器 freescale codewarrior5.9 晶元 mc9s12xdp512 移植步驟 1.根據嚮導建立新的工程,晶元選擇mc9s12xdp512,其餘預設配置 2.將ucos...