环境:rt1052单片机+16G tf卡

为什么使用littleFS?

  1. NXP官方SDK支持!
  2. 先进的损耗平衡功能(wear leveling)可提供最长的快闪及内存寿命及最大的使用量。因为FALSH的擦除/写次数有限制,通常是10万次。
  3. RAM和FLASH用的少,也就是内存和代码和精简。
    4. 掉电保护,设备突然断电,文件系统不会损坏。
    对比FATFS, fatfs使用固定的块做文件系统管理,多次读写后,整个系统就坏了,但是其他块其实没用多少次。

    本人并不建议大家在flash上使用fatfs !

    移植使用

      1. 将lfs四个源文件和刚刚创建的两个文件添加到工程,直接编译。
        测试lfs源码是否能编译通过。
      2. 修改动态内存最大长度,  #define Heap_Size,   因为要是有标准函数malloc,见源码函数:static inline void *lfs_malloc(size_t size)

      3. 添加实际的驱动函数到结构体变量lfs_config。

        struct lfs_config lfs_cfg= {

        // block device operations

        .read  = lfs_TFCard_read,

        .prog  = lfs_TFCard_prog,

        .erase = lfs_TFCard_erase,

        .sync  = lfs_TFCard_sync,

        // block device configuration

        .read_size = LFS_READ_SIZE,

        .prog_size = LFS_PREG_SIZE,

        .block_size = LFS_BLOCK_SIZE,  block_count = LFS_BLOCK_COUNT,.lookahead = LFS_LOOKAHEAD,};

      4. 初始化:

        sd_card_t *card = &g_sd;

        /* 初始化SD外设时钟 */

        BOARD_USDHCClockConfiguration();

        card->host.base = SD_HOST_BASEADDR;

      5. card->host.sourceClock_Hz = SD_HOST_CLK_FREQ;

        /* SD主机初始化函数 */

        if (SD_HostInit(card) != kStatus_Success)

        {

        PRINTF("\r\nSD主机初始化失败\r\n");

        return -1;

        }

      6. /* 初始化SD卡 */

        if (SD_CardInit(card))

        {

        PRINTF("\r\nSD初始化失败\r\n");

        return -1;

        }

        5.挂载测试

        err = lfs_mount(lfs, &lfs_cfg);  //挂载

        6.文件操作

        err = lfs_file_open(lfs, &g_lfs_file, "update.bin", LFS_O_RDWR);

        //打开bin文件,LFS_O_RDWR,读写方式

      7. 其他功能后续补充,本次就到这里,做个记录。

littleFS在RT1052移植笔记的更多相关文章

  1. tslib移植笔记(1)【转】

    本文转载自:https://blog.csdn.net/zijie_xiao/article/details/50740950 tslib移植笔记(1)2016-04-25 tslib背景[摘自百度] ...

  2. STemWin5.22移植笔记【转】

    来自:http://www.openedv.com/posts/list/27697.htm STemWin5.22移植笔记 网上关于emwin的资料很少,我在移植的时候查了很多资料,对我一个感觉是好 ...

  3. JZ2440 u-boot-2016.11、linux-4.17和busybox-1.28.4移植笔记

    2018年5月份开始在JZ2440上陆续移植了u-boot-2016.11.u-boot-spl-2016.11.linux-4.17和busybox-1.28.4,其中linux-4.17和busy ...

  4. FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS

    上一次,我们简单的测试了FreeRTOS的基于IAR EWARM v6.4和STM32F103VET6平台的Demo,对其有了一个基本认识.接下来我们开始自己移植FreeRTOS的过程. 1.创建一个 ...

  5. FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅

    1.必要的准备工作 工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少.所以在开始我们写要准备如下: 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统 准备F ...

  6. rt—移植笔记2(Lwip)

    首先参考f107已经有的目录结构添加Lwip这一组,添加各种.c文件及.文件. 还有drive下边的很重要的eth.c 到此,工程编译通过.(刚开始,小编是一个一个 的比对...一个一个错误排查... ...

  7. rt—移植笔记1

    将rtt源码往stm32f407移植的时候,源码串口打印引脚设置有误,以下是源码引脚配置. 以下是原理图 可见配置有误.

  8. i2c设备驱动移植笔记(二)

    说明:上一篇博客写了我在移植android驱动之TEF6606的苦逼遭遇,即驱动层向应用层提供接口支持,查找了两天的资料,不得不放弃,转而进行IIC下移植RTC设备的实验. 第一步:查找设备的数据手册 ...

  9. 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记

    一:移植Boa(web服务器)到嵌入式Linux系统 一.Boa程序的移植 1.下载Boa源码    下载地址: http://www.boa.org/    目前最新发行版本: 0.94.13   ...

随机推荐

  1. Java_jdbc 基础笔记之五 数据库连接 (ResultSet)

    /** * ResultSet: 结果集. 封装了使用 JDBC 进行查询的结果. * 1. 调用 Statement 对象的 executeQuery(sql)可以得到结果集. * 2. Resul ...

  2. Android输入法遮挡了输入框,使用android:fitsSystemWindows="true"后界面顶部出现白条解决方案

    我的最外层是LinearLayout,自定义CustomLinearLayout继承LinearLayout,重写fitSystemWindows和onApplyWindowInsets两个方法: p ...

  3. ISO/IEC 9899:2011 条款6.5.1——基本表达式

    6.5.1 基本表达式 语法 1.primary-expression: identifier constant string-literal (    expression    ) generic ...

  4. Python3基础 函数 参数为list可变类型时,使用append会影响到外部实参

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  5. 为什么一般hashtable的桶数会取一个素数

    为什么一般hashtable的桶数会取一个素数 设有一个哈希函数H( c ) = c % N;当N取一个合数时,最简单的例子是取2^n,比如说取2^3=8,这时候H( 11100(二进制) ) = H ...

  6. 如何切换svn的登陆账号?

    如何切换svn的登陆账号? 听语音 原创 | 浏览:68661 | 更新:2017-10-06 09:09 1 2 3 4 5 6 分步阅读 对于程序员来说,svn使用的比较广泛,平时用来更新或者是提 ...

  7. SpringBoot中日志配置

    背景 由于一些框架中还使用log4j-1.x系列陈旧的日志框架,调试过程中有一些错误信息不能在控制台显示,增加了调试成本.以下配置方法 将帮助你获得log4j-1.x日志在控制台显示. 解决方法: 使 ...

  8. Python - Django - ORM 外键操作

    models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...

  9. [ kvm ] 学习笔记 1:Linux 操作系统及虚拟化

    1. 前言 一台计算机是由一堆硬件设备组合而成,在硬件之上是操作系统,操作系统与计算机硬件密不可分,操作系统用来管理所有的硬件资源提供服务,各个硬件设备是通过 总线 进行连接起来的: 在操作系统之上, ...

  10. 【k8s node断电重启】

    kubernetes断电重启 导致部分pod无法删除 dashboard上处于黄色 kubectl get处于terminate 状态 kubectl delete报错: An error occur ...