初级会员
- 积分
- 180
- 金钱
- 180
- 注册时间
- 2016-1-15
- 在线时间
- 49 小时
|
10金钱
被 CubeMX 6 +FreeRTOS+SD+FATFS 搞死了!
板子是原子的H743+阿波羅底板
大概是這樣
f_mount(&fs, "0:", 0) ; 可以 mount 成功,但是不能 open 返回錯誤碼 3 FR_NOT_READY,
f_mount(&fs, "0:", 1) ; 不能 mount 成功, 返回錯誤碼 3 FR_NOT_READY,
所以,我想事實上,SD 的mount 是沒有成功的!
SD, FreeRTOS 全部都是 CubeMX 生成,SD 開啟 DMA
SD 的時鐘為 25MHz
據我所知, CubeMX 6 已經修正相關回調函數為空的問題!(已經查過,有正呼叫回調函數並把資料列隊)
不加入 FreeRTOS 到是很正常
在 ST 的官方論壇也有看到相關問題,但是沒有可以解決問題的回應
感謝您的協助,謝謝您!
|
最佳答案
查看完整内容[请看2#楼]
加入FreeRTOS 已經成功
應該只有兩個小坑要填
在 sd_diskio.c 裡面
第 260 line 附近,ret 這個變數沒有宣告
自己在適當的地方加入 uint8_t ret; 做個宣告就行!
另外就是,FATFS 的資訊應該是透過列隊傳遞 (Queue)
所以,牽涉到 FATFS 的命令,都要寫在 task 裡面
例如,如果在進入 task 前就 mount SD 卡,那麼就會找不到 device
如果有長檔名支援,記得要 Enable with dynamic working buffer on the STACK
時鐘 ...
|