本帖最后由 wbeast 于 2018-9-12 15:26 编辑 2 \9 z6 ~. K, o5 @1 p * j' t: a& A- p 准备工作: 1. 下载rt_thread源码http://github.com/RT-Thread/rt-thread 2. 下载ENV工具: https://pan.baidu.com/s/1cg28rk 3. 硬件STM32F407VET6+w25q16 4. 打开rt_thread源码路径下的BSP/stm32f4xx-HAL文件夹,用ENV工具打开 . I( C8 u, \' ~: H6 e 5.设置 RT-ThreadComponents → Device virtual file system,如下图所示 6. 设置elm-chan's FatFs, Generic FAT Filesystem Module 选项中修改关于长文件名支持的选项,否则在后面使用文件系统的过程中,创建的文件或者文件夹的名称不能超过 8 个字符。修改方式如下图所示: 7. 因为要使用一些 C 库函数,所以需要打开 libc 功能: 8. 在 RT-Thread Components → Device Drivers 界面中选中 Using SPI Bus/Device device drivers 以及 Using Serial Flash Universal Driver 选项,如下图所示: 9. 为了方便地使用 shell 命令,我们在 RT-ThreadComponents → Command shell 选项中开启 Usingmodule shell选项,如下图所示: 10. 在主界面设置,如下图所示 1. Device type,设置MCU型号,我们用的事STM32F407VET6 2. (25000000)HSE Value,晶振大小 3. (168000000)MCU频率 4. (38)SPI NOR flash ce pin index ,是SPI的CS管脚,第38个管脚 在RT-ThreadKernel路径,将内核时间片设置到1000 11. 保存配置,scons --target=mdk5,生成工程。全编译后,烧到板子上。可以看到系统启动成功,但是flash没有读取成功,原因软件配置生成的代码SPI2的管脚与开发板的SPI2复用的管脚不同。 , [* q9 S( R/ s2 J4 W: ^修改如下: 12.重新编译,下载。Flash读取成功 12. 通过 list_device指令,查看当前系统中的设备 13, 可以使用 sf prode norspi命令对该设备做 benchmark 测试。如下图 14,通过mkfs –t mle flash0指令,挂载文件系统 挂载文件系统,在mian.c文件,添加以下代码 intmain(void) { rt_device_t dev; /* user app entry */ while(1) { dev = rt_device_find("flash0"); if (dev != RT_NULL) { if(dfs_mount("flash0", "/", "elm", 0, 0) == 0) { rt_kprintf("spiflash mount to /spi !\n"); } else rt_kprintf("spiflash mount to /spi failed!\n"); break; } rt_thread_delay(50); } return 0; } 编译并下载,文件系统挂载成功 15,可以通过ls 指令,可以查询当前文件系统下面的文件;通过cd 可以跳转目录; 通过cp可以拷贝数据;通过cat可以某个文件内容;rm删除特定文件;mkdir创建文件夹;mv移动文件 通过cd 指令跳转目录 通过cat 指令查看文件内容 5 _) Z( r- F* ~8 l源码路径:: https://pan.baidu.com/s/1dGvafol 密码: c89k |
谢谢楼主分享 |
STM32固件库分享,超全系列整理
【中文文档】AN3965_STM32F40x和STM32F41x基于串口的IAP
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32F4中文用户手册
基于STM32F407的FreeRTOS阶段性的总结(13)
STM32F400、STM32F402 Cortex-M4超值单片机
基于STM32F407的FreeRTOS获取各任务运行时间及占用情况(4)
基于STM32F407的FreeRTOS任务的挂起与恢复(3)
基于STM32F407的FreeRTOS任务的创建与删除经验分享(2)
基于STM32F407的FreeRTOS环境搭建经验分享(1)