Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
玩溜GD32303E-EVAL BSP系列(四)----使用文件系统保存数据
发布于 2018-05-03 17:44:34 浏览:3384
订阅该版
[tocm] * 本帖最后由 misonyo 于 2018-8-4 10:23 编辑 * ## 1. 准备 ## 本章节将介绍使用RT-Thread提供的文件系统组件保存获取的GPS传感器数据到文件。 GD32303E-EVAL 开发板板载的 SPI FLASH型号是GD25Q40,原理图如下图所示: ![gd25q40.png](/uploads/201805/03/173907ljls6h68gg5rr6gk.png) 本文使用的GPS模块型号是GY-GPS6MV2,采用 U-BLOX NEO-6M 模组,兼容 3.3V/5V 电平。 GPS模块外观如下: ![gps.png](/uploads/201805/03/173907gctui0f5u2vutut8.png) GPS模块和GD32303E-EVAL开发板连接情况如下: | GPS引脚 | GD32303E-EVAL开发板引脚 | | ----- | --------| | VCC | 3.3V或者5.0V电源 | | GND | GND | | RXD | USART1 TX,引脚为PA2 | | TXD | USART1 RX,引脚为PA3 | 开发板供电及连接情况: * 供电方式:开发板使用 Mini USB 接口或者 DC-005 连接器提供 5V 电源。 * 下载程序:下载程序到开发板需要一套 JLink 或者使用 GD-Link 工具。 * 串口连接:使用 USB 转串口线连接开发板的串口0对应的 PA9 (TX) 和 PA10 (TX) 引脚,并连接电脑。 ## 2. 运行测试代码 ## 本章节需要使用到新增的 spi flash 驱动,因此请大家点击附件下载最新的BSP源代码。 使用ENV工具配置文件系统: 1. 在ENV工具命令行界面输入`menuconfig`命令开启配置界面: ![menuconfig.png](/uploads/201805/03/173907xomecmetazb4obp7.png) 2. 添加USART1驱动: ![add-uart1.png](/uploads/201805/03/173907muhzkeee0h8u3pnw.png) 3. 使能设备驱动如下功能,SPI FLASH 设备 GD25Q40 就会挂载到SPI 总线 SPI0上。 ![add-sfud.png](/uploads/201805/03/173906sfmbh9hhbehkupfo.png) 4. 工程已经默认使能FatFs文件系统,需要修改扇区大小: ![change-sector.png](/uploads/201805/03/173907ajjy73jg2bl3gm99.png) 5. 保存配置,退出配置界面,在ENV工具命令行界面使用`scons --target=mdk5`生成新工程。打开新生成的MDK工程,并添加示例代码到工程: ![add-app.png](/uploads/201805/03/173906espi40dz6iydpuz4.png) ** 运行结果 ** 在电脑端使用 putty 打开对应端口,波特率配置为115200,编译代码并下载至开发板,然后按 reset 重启开发板,putty 会显示如下的操作系统的启动信息,表明SPI FLASH驱动添加成功: ``` \ | / - RT - Thread Operating System / | \ 3.0.3 build May 3 2018 2006 - 2018 Copyright by rt-thread team [SFUD]Find a GigaDevice GD25Q16B flash chip. Size is 2097152 bytes. [SFUD]gd25q flash device is initialize success. msh /> ``` 输入`list_device`命令可以查看操作系统的所有设备,可以看到 SPI FLASH 设备 gd25q40等: ``` msh />list_device device type ref count ------- -------------------- ---------- gd25q Block Device 0 spi01 SPI Device 0 i2c0 I2C Bus 0 pin Miscellaneous Device 0 spi1 SPI Bus 0 spi0 SPI Bus 0 uart1 Character Device 0 uart0 Character Device 3 msh /> ``` 接下来我们使用`mkfs` 命令格式化SPI FLASH 设备 gd25q40,执行该命令会将 gd25q40 格式化成FatFS文件系统,第一次使用才需要格式化: ``` msh />mkfs gd25q ``` 然后执行spi flash 驱动提供的`mnt_init`命令挂载SPI FLASH 设备 gd25q40到根目录,使用`ls`命令可以看到新增了Directory目录,每次重启开发板后都需要执行`mnt_init`命令重新挂载设备。 ``` msh />mnt_init spi flash mount success ! msh />ls Directory /: msh /> ``` 到这一步文件系统的准备工作就完成了,我们可以使用文件系统相关接口操作SPI FLASH 设备 gd25q40。执行`app_init`命令执行示例代码,此示例代码基于系列二,会将示例代码的执行函数添加为 msh 命令,在 msh 执行此命令会创建一个 fs 的线程,线程会以中断接受的方式保存接受到的GPS传感器发送的数据到 gps_data.txt 文件里。再次执行`ls`命令可以看到根目录下新增的gps_data.txt文件。 ``` msh />app_init msh />ls Directory /: GPS_DATA.TXT 133 msh /> ``` ## 3. 文件系统的使用 ## 本文示例代码调用文件系统相关接口源码如下: ``` void fs_thread_entry(void *parameter) { rt_uint8_t line[256]; int fd; while(1) { data_read(line, sizeof(line)); /* 以读写方式、数据以附加的方式添加到文件的尾部方式打开文件 */ fd = open("/gps_data.txt", O_RDWR | O_CREAT | O_APPEND, 0); if (fd >= 0) { /* 往文件写入接受到的数据 */ write(fd, line, strlen((char*)line)); /* 关闭文件 */ close(fd); } else { rt_kprintf("open gps_data.txt failed!
"); } } } ``` ## 4. 参考 ## * [ENV工具](https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-tool-manual/env/env-user-manual/) * [GD32303E-EVAL](http://gd32mcu.21ic.com/site) * [文件系统](https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-manual-doc/zh/1chapters/12-chapter_filesystem/) * [玩溜GD32303E-EVAL BSP系列(一)------基本系统跑起来~](https://www.rt-thread.org/qa/thread-7027-1-1.html) * [玩溜GD32303E-EVAL BSP系列(二)----读取GPS传感器数据](https://www.rt-thread.org/qa/thread-7033-1-1.html) * [玩溜GD32303E-EVAL BSP系列(三)----读取温度湿度传感器数据](https://www.rt-thread.org/qa/thread-7038-1-1.html) * [GD32303E-EVAL BSP源码及资料百度云盘链接](https://pan.baidu.com/s/1uHza1tiVUnmg8ixMzZLAFA)
查看更多
3
个回答
默认排序
按发布时间排序
遗失的小许
2018-05-03
这家伙很懒,什么也没写!
[md]测试一下` >>`[/md] >>
moss
2018-05-04
这家伙很懒,什么也没写!
测试一下 ``` >> ```
Cheney_Chen
2018-05-08
这家伙很懒,什么也没写!
赞一个
撰写答案
登录
注册新账号
关注者
0
被浏览
3.4k
关于作者
misonyo
这家伙很懒,什么也没写!
提问
5
回答
180
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread使用cherryusb实现虚拟串口
2
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
3
《原子操作:程序世界里的“最小魔法单位”解析》
4
《C++设计模式:重塑游戏角色系统类结构的秘籍》
5
rt-thread官方usb驱动之虚拟串口
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
6
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部