Giter VIP home page Giter VIP logo

f767_gps_imu_fatfs_sd's Introduction

实验器材:
  阿波罗STM32F767开发板
实验目的:
  学习FreeRTOS在STM32F767上的移植SD卡,实现100hz IMU + 5hz GPS数据保存在SD卡中
硬件连接:
  (1)驱动方式:采用 4 位 SDIO 方式驱动,6线制
  (2)引脚:SDIO_D0/SDIO_D1/SDIO_D2/SDIO_D3/SDIO_SCK/SDIO_CMD 分别连接在 MCU 的 PC8/PC9/PC10/PC11/PC12/PD2 上面
  (3)驱动接口:F767自带的SDMMC接口

文件管理系统:
1、文件系统是什么?
(1)负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
(2)即在磁盘上组织文件的方法。方便管理、查看、编辑文件
(3)不需要直接操作底层地址来读写信息了,可以使用文件系统的API函数,效率更高
2、使用文件管理系统Fatfs,来管理SD卡,底层接口函数:6个接口函数,中间层是FATFS模块,应用层编写应用函数就可以了。

项目中遇到的问题:
1、调用SD卡读写函数后,提示硬件错误的问题。
分析原因:
Fatfs文件管理系统所用内存较大,而所在任务分配的内存不够用。
解决方法:
task2的任务堆栈设置的太小了。改为1024Byte就可以了
#define  TASK2_STK_SIZE   1024 
另外,系统所有总的堆大小configTOTAL_HEAP_SIZE也改大了
configTOTAL_HEAP_SIZE                                        ((size_t)(128*1024))     //128K
2、问题描述:IMU数据输出频率为100HZ,GPS数据输出频率为5HZ,使用FatFs系统管理SD卡存储,测试发现,数据写入SD卡后,保存的数据有缺失的现象。
问题分析:
多次测试,查看保存的数据,分析数据保存不完整的原因。经过分析得知,原因有二,首先,在多处调用SD卡保存数据的函数,频繁打开、关闭文件会占用较多时间。另一方面,由于IMU数据输出频率变为100HZ,单位时间的数据量更多,SD卡写入文件相比于之前也会增加一些时间,导致这段时间输出的数据没有保存成功。
解决方法:
经查阅资料,得知可以使用环形缓存区的方法来解决该问题。将原来多处数据写入SD卡的地方,改成写入环形缓存区,节省了频繁打开、关闭文件占用的部分时间。另外,每次接收20组IMU数据和1组GPS数据后,将环形缓存区中的数据统一存入SD卡中,这段时间新的数据依然可以写入环形缓存区中,这样便完成了一次数据的存储。周而复始,数据便可以完整保存下来了。
测试结果:经过多次测试,数据保存完好,没有再次出现数据保存不完整的现象
3、在系统初始时,我们创建了FIFO的缓存区,那么这部分空间什么时候释放掉呢?
解决方法:
(1)暂时的解决方案: 
    在停止数据保存到SD卡时,通过串口发送命令“stop save data”;这是单片机解析到该指令后,释放fifo缓存区内存空间。
(2)查阅资料得:复位或者重启后,RAM中数据会清除,故不会产生内存泄露
    SRAM掉电会丢失数据
    我虽然没有释放掉这些内存,但是我设备用完后会断电,会复位重启,这样也不会造成内存泄漏

f767_gps_imu_fatfs_sd's People

Contributors

dawngdy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.