usb_mstorage例子一段时间一直连接usb,然后死机

列印如下:

\ | /

- SiFli Corporation

/ | \ 建置於 2025 年 10 月 29 日,2.4.2 版本 bdc544f2

2020 - 2022 Copyright by SiFli 團隊

mount /dev 成功

[I/drv.sdhci] rt_hw_sdmmc_init 1 開始

[I/drv.sdhci] host 版本 = 2

[I/drv.sdhci] SDHCI 時鐘 288000000

[I/drv.sdhci] 主機支援的最大時鐘:288 MHz

[I/drv.sdhci] host minclock 400000 host maxclock 288000000

[I/drv.sdhci] SDHCI 控制器於 sdmmc 上使用 DMA

[I/drv.sdhci] 新增主機成功

[I/drv.sdhci] rt_hw_sdmmc_init 1 完成

[I/drv.audprc] 初始化 00 ADC_PATH_CFG0 0x924

[I/drv.audprc] HAL_AUDPRC_Init 結果值 0

[I/drv] HAL_AUDCODEC_Init 結果值 0

\033[32m[I/TOUCH] 註冊觸控螢幕驅動,probe=10007ba5 \033[0m

呼叫參數 CFG1(35bb)

fc 9, xtal 2000, pll 2105

呼叫參數 CFG1(35bb)

fc 7, xtal 2000, pll 1685

0x64600000 4194304

將 root 註冊至 mtd 裝置,基底位址 0x64600000

f_mount 失敗,結果 = 13

掛載 flash 上的檔案系統至 root 失敗

part 0

sz_vol 800 opt f b_vol 0

sz_vol 800

fmt 2

寫入 nand 600800 必須為頁面對齊

格式化錯誤,結果 1

dfs_mkfs elm flash 失敗

請使用 help 指令檢查 USB mstorage 檔案系統命令!

msh />clock 0Hz busmode 1 powermode 1 cs 0 Vdd 23 width 0

clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 23 width 0

[I/drv.sdhci] sdhci_set_clock2 400000

[I/SDIO] 檢測 SDIO 開始

clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 23 width 0

clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 23 width 0

[I/SDIO] 檢測 SD 卡 BEGIN

clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 23 width 0

clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 23 width 0

clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 15 width 0

clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 15 width 0

clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 15 width 0

clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 0

[I/SDIO] SD 卡容量 121344 KB。

Before scr buf 0x200155b0: scr 0x00800502, 0x00000000

After scr 0x02058000, 0x00000000

[I/SDIO] SD 卡版本 2,匯流排寬度 5。

hs flag 0x1, card max 50000000

clock 50000000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 0

[I/drv.sdhci] sdhci_set_clock2 24000000

[I/SDIO] 4 位元模式:host 0x31, card 0x5

clock 50000000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 2

[I/drv.sdhci] sdhci_set_clock2 24000000

[I/drv.sdhci] 啟用 DDR 模式 0

[I/drv.sdhci] 設定為 4 線模式

找到 part[0],起始位置:32256,大小:118.480MB

[I/SDIO] 檢測 SD 卡完成

[I/drv.usbd] 設定位址:38(0x26)

[I/drv.usbd] _ep_enable : 2: 64: 2

[I/drv.usbd] _ep_enable : 81: 64: 2

找不到 cbw 指令

msh />找不到 cbw 指令

HAL 斷言失敗,檔案:D:\new1\xiaozhi-sf32\sdk\drivers\hal\bf0_hal_pcd.c,行號:1471

斷言失敗於函式:HAL_AssertFailed,行號:616,(0)

先前 ISR 啟用狀態 0

===================

執行緒資訊

===================

執行緒 優先權 狀態 sp 頂端 堆疊大小 最大使用 剩餘 tick 錯誤

\-------- — ------- ---------- ---------- ---------- ------ ---------- —

tshell 20 掛起 0x20015480 0x20015574 0x00001000 07% 0x0000000a 000

usbd 8 掛起 0x2000c840 0x2000c934 0x00001000 15% 0x0000000a 000

mmcsd_de 22 掛起 0x2000b8b0 0x2000b934 0x00000800 33% 0x00000009 000

tidle 31 準備 0x2000a080 0x2000a0cc 0x00000200 20% 0x00000003 000

timer 4 掛起 0x2000b0e0 0x2000b134 0x00000400 08% 0x00000009 000

main 10 掛起 0x20013800 0x20013900 0x00000800 35% 0x00000011 000

===================

郵箱資訊

===================

郵箱 進入數量 大小 掛起執行緒

\-------- ---- ---- --------------

mmcsdhot 0001 0004 0

mmcsdmb 0000 0004 1:mmcsd_de

===================

訊息佇列資訊

===================

訊息佇列 進入數量 掛起執行緒

\-------- ---- --------------

usbd 0000 1:usbd

===================

互斥鎖資訊

===================

互斥鎖 擁有者 持有數 掛起執行緒

\-------- -------- ---- --------------

sdhci (NULL) 0000 0

sd_bus_l (NULL) 0000 0

fslock (NULL) 0000 0

i2c_bus_ (NULL) 0000 0

===================

信號量資訊

===================

信號量 值 掛起執行緒

\-------- — --------------

sem_sd0 001 0

shrx 000 0

epic 001 0

gt911 000 0

sd_ack 000 0

aes_drv 001 0

drv_eDma 001 0

nandlock 001 0

i2c1 000 0

heap 001 0

===================

記憶體資訊

===================

總記憶體:661900 已使用記憶體:15504 最大分配記憶體:17468

=====================

PSP: 0x2000a0a8, MSP: 0x20001f0c

=====================

sp: 0x20001f68

psr: 0x4000006c

r00: 0x00000000

r01: 0x00001c1f

r02: 0x0002eebf

r03: 0x30000000

r12: 0x10031fe9

lr: 0x10027469

pc: 0x20006664

=====================

ISR 發生嚴重錯誤

平台sf32lb56-lcd_a128r12n1开发板

usb_mstorage.zip (8.2 MB)

从提供的Assert Log对应的文件及行号(file: bf0_hal_pcd.c, line: 1471)看,目前使用的应该是xiaozhi对应的代码,参考 源码构建 | 小智百科全书 对应说明,小智项目是没有在 SF32LB56-DevKit-LCD-A128R12N1 开发板上验证过的,即不保证此硬件板能正常运行小智 Repo 中对应的例程,另外对应的例程如 usb_mstorage,所支持的硬件板参考 readme 说明,如果不在标明所支持的范围内,则可能也存在运行问题。

sf32lb52-lcd_n16r8 開發板

SFBL

Serial:c2,Chip:4,Package:3,Rev:3 原因:00000000

\\ | /

- SiFli Corporation

/ | \ 建置於 2025年11月3日,2.4.0 版本 57c2c30c

2020 - 2022 版權所有 SiFli 團隊

[I/DFS] ccc

掛載 /dev 成功

[BUS]SPI1 探測 sdcard…

[SD]msd 初始化失敗,spi_dev=2000fa10

[I/drv.rtc] PSCLR=0x80000100 DivAI=128 DivAF=0 B=256

[I/drv.rtc] RTC 使用 LXT RTC_CR=00000001

[I/drv.rtc] 初始化 RTC, 唤醒 = 0

[I/drv.audprc] 初始化 00 ADC_PATH_CFG0 0x606

[I/drv.audprc] HAL_AUDPRC_Init 結果 0

[I/drv.audcodec] HAL_AUDCODEC_Init 結果 0

\033[32m[I/TOUCH] 註冊觸控螢幕驅動程式, 探測=12026075 \033[0m

呼叫參數 CFG1(3313)

fc 9, xtal 2000, pll 2065

呼叫參數 CFG1(3313)

fc 7, xtal 2000, pll 1651

[BUS]SPI1 探測 sdcard…

[MSD] 3021 [info] SD卡進入IDLE模式成功!

[MSD] 3022 [info] CMD8 回應 : 0x01 0x00 0x00 0x01 0xAA

[MSD] 3023 [info] 版本2.00或更新版本,或為SDHC或SDXC記憶卡!

[MSD] 3023 SD_V2: 讀取OCR

[MSD] 3024 回應:1,80,ff,80

[MSD] 3024 [info] OCR 為 0x80FF8000

[MSD] 3026 SD_V2 再次: 讀取OCR

[MSD] 3027 [info] OCR 第二次讀取為 0x80FF8000

[MSD] 3027 [info] 此為SD2.0標準容量卡!!!

[MSD] 3029 [info] CSD 版本 1.0

[MSD] 3030 [info] TRAN_SPEED: 0x32, 10Mbit/s。

[MSD] 3030 [info] CSD : READ_BL_LEN : 10 1024位元組

[MSD] 3031 [info] CSD : C_SIZE : 241

[MSD] 3031 [info] CSD : C_SIZE_MULT : 7

[MSD] 3032 [info] 卡片容量 : 121 M位元組

[SD]msd 初始化成功

[I/DFS] ccc

[FS]檔案系統已初始化!

[FS]dfs elm 初始化成功

輸入 help 指令以查看USB隨身碟檔案系統指令!

msh /> [I/drv.usbd] 設定位址: 37(0x25)

[I/drv.usbd] _ep_enable : 2: 64: 2

[I/drv.usbd] _ep_enable : 81: 64: 2

找不到cbw指令

找不到cbw指令

HAL 斷言失敗於檔案: D:\new1\SiFli-SDK\drivers\hal\bf0_hal_pcd.c, 第1471行

斷言失敗於函數:HAL_AssertFailed, 第616行 ,(0)

先前ISR啟用 0

===================

執行緒資訊

===================

執行緒 優先權 狀態 sp 頂端 堆疊大小 最大使用 剩餘 滴答 錯誤

------ — ------- ---------- ---------- ---------- ------ ---------- —

tshell 20 掛起 0x20011508 0x200115fc 0x00001000 07% 0x00000009 000

usbd 8 掛起 0x2000a320 0x2000a414 0x00001000 12% 0x00000006 000

tidle 31 準備 0x2000deb8 0x2000df08 0x00000200 21% 0x00000016 000

timer 4 掛起 0x200093c0 0x20009414 0x00000400 08% 0x00000009 000

main 10 掛起 0x2000f8e0 0x2000f9e0 0x00000800 42% 0x00000006 000

===================

郵箱資訊

===================

郵箱 進入 大小 掛起執行緒

------- ---- ---- --------------

===================

訊息佇列資訊

===================

訊息佇列 進入 掛起執行緒

-------- ---- --------------

usbd 0000 1:usbd

===================

互斥鎖資訊

===================

互斥鎖 擁有者 持有 掛起執行緒

-------- -------- ---- --------------

fat0 (NULL) 0000 0

rtc (NULL) 0000 0

fslock (NULL) 0000 0

i2c_bus_ (NULL) 0000 0

i2c_bus_ (NULL) 0000 0

i2c_bus_ (NULL) 0000 0

spi1 (NULL) 0000 0

===================

訊號量資訊

===================

訊號量 v 掛起執行緒

-------- — --------------

shrx 000 0

epic 001 0

ft6146 000 0

aes_drv 001 0

drv_eDma 001 0

gpadc 001 0

i2c4 000 0

i2c2 000 0

i2c1 000 0

spi1 000 0

heap 001 0

flash2 001 0

===================

記憶體資訊

===================

總記憶體: 461852 已使用記憶體 : 15180 最大分配記憶體: 15180

=====================

PSP: 0x2000dee0, MSP: 0x20001f0c

=====================

sp: 0x20001f68

psr: 0x4000006c

r00: 0x00000000

r01: 0x00000017

r02: 0x00000259

r03: 0x30000000

r12: 0x120512f1

lr: 0x12042eed

pc: 0x2000591c

=====================

ISR發生嚴重錯誤

sf32lb52-lcd_n16r8 开发板

usb_mstorage.zip (8.5 MB)

建议使用CherryUSB作为USB协议栈

请问之前的usb是不能用了吗?

可以用,但是维护没有CherryUSB那么多