RT-Thread ART-Pi 外部SPI Flash分區(qū)掛載為U盤

驗證環(huán)境

  • Win10 64位
  • Keil MDK 5.30
  • ART-Pi 開發(fā)板:STM32H750XBH6開發(fā)板
  • 工程:最小RT-Thread 系統(tǒng),版本:RT-Thread v4.1.0 released

環(huán)境搭建

  • 首先需要配置好ART-Pi 外部 16MB SPI Flash 掛載為FatFS 文件系統(tǒng),文件系統(tǒng)有個12MB的filesystem,用戶可以用于存儲文件
  • 這里開啟USB Device功能,實現(xiàn)USB Mass Storage,winUSB功能
  • 開啟USB框架
2022-04-03_001222.png
  • 這里同時使能:Mass Storage Device 與 winusb device
2022-04-03_001202.png
  • 開啟 USB的BSP驅動
2022-04-03_001305.png

掛載U盤

  • 上面的操作只是開啟了USB 設備,編譯燒寫后,無法掛載到電腦,枚舉成U盤
  • 所以需要先取消文件系統(tǒng)的掛載,這樣,就可以在電腦端掛載成U盤了
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <dfs.h>
#include <dfs_fs.h>

/* defined the LED0 pin: PI8 */
#define LED0_PIN    GET_PIN(I, 8)

#ifdef RT_USING_WIFI
    extern void wlan_autoconnect_init(void);
#endif

#define FS_PARTITION_NAME  "filesystem"

extern int ulog_file_backend_init(void);

void mount_to_usb(void)
{
    char *fullpath = NULL;

    fullpath = dfs_normalize_path(NULL, "/");
    if (dfs_unmount(fullpath) == 0)
    {
        rt_kprintf("mount_to_usb ok!\n");
    }
    else
    {
        rt_kprintf("mount_to_usb fail!\n");
    }
}
MSH_CMD_EXPORT(mount_to_usb, mount_to_usb);

void mount_to_flash(void)
{
    rt_device_t dev;

    dev = rt_device_find(FS_PARTITION_NAME);
    if (dev != RT_NULL && dev->open_flag != 0)
    {
        rt_device_close(dev);
        rt_kprintf("close usb device ok!\n");
    }

    if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == 0)
    {
        rt_kprintf("mount_to_flash ok!\n");
    }
    else
    {
        rt_kprintf("mount_to_flash error!!\n");
    }
}
MSH_CMD_EXPORT(mount_to_flash, mount_to_flash);
  • 這里增加了掛載為USB U盤的命令 mount_to_usb,開機后,輸入命令,電腦過一會,就會出現(xiàn)U盤
2022-04-03_122007.png
2022-04-03_002659.png
  • 可以把需要的文件拷貝進去,可以刪除里面的文件
2022-04-03_003156.png
  • 想把分區(qū)掛載回文件系統(tǒng),讓開發(fā)板識別文件系統(tǒng),可以使用命令:mount_to_flash,也可以直接重啟,拔掉USB OTG的線即可

小結

  • 實現(xiàn)了電腦與開發(fā)板互傳文件,如LOG文件、資源文件等
  • 使用RT-Thread USB的框架與USBD 設備驅動,讓開發(fā)板模擬成U盤,操作很簡單
  • 后續(xù)可繼續(xù)深入研究USB的整個框架
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容