• stm32f103 rt-thread fal easyflash移植过程


    需求:使用Stm32F103片内Flash进行数据存储

    硬件平台:Stm32F103C8t6(由于Stm32F103C8t6的Flash标注为64k实际为128K,64KFlash在使用rt-thread+finsh后已经捉襟见肘 。因此在配置将其配置为Stm32F103Cb,将Flash扩至128K)

    项目开发工具:Env+MDK5

    代码要求:根据Stm32F103CB芯片信息制作出

    一、Env配置

    1、修改board目录下的Kconfig,增加下图选项

     2、Env配置

     

    3、保存后更新软件包

    pkgs --update

    4、生成MDK5项目

    scons --target=mdk5

    二、FAL概念与配置

    本人是刚接触RT-Thread的新手,对FAL中涉及到的概念最初毫无了解。通过看资料和实践总结一下个人心得,欢迎拍砖交流。

    1、Flash设备

    在RT-Thread中串口、Pin等都被定义为设备。正常情况下设备都需要通过驱动程序在RT-Thread操作系统中注册,注册完成后就能查找、调用。片内Flash存储器按理说也应该注册,但实际上它并未在系统设备中注册(至于为什么没有注册,本人尚未搞明白)。

    但是在移植过程中,还是有该Flash设备的定义的:

    Flash设备对象是: stm32_onchip_flash,它的名称是:onchip_flash,具体参考:FAL的说明

     

    以上这些都是系统配置后自动生成的,不需要修改。

    2、Flash设备表
    它的意义是指明系统中有哪些Flash设备,类似指明windows操作系统中有多少块硬盘(windows设备管理器里面的硬盘数量)。

    将项目目录下的:packagesfal-v0.5.0samplesportingfal_cfg.h 拷贝到:packagesfal-v0.5.0srcinc中,修改如下:

     上图所示,我的系统中只有一个Flash设备(&stm32_onchip_flash),它就是在drv_flash_f1.c中定义的:stm32_onchip_flash

    3、分区表

    它的意义就是指定某个系统Flash设备上的存储空间分区情况,类似与电脑指明电脑中每个硬盘的分区情况。

     如上图所示:我的系统中有一个分区,它的名字叫“easyflash”(其实也可以叫它“d:”);这个分区位于名字叫“onchip_flash”的Flash设备上;它的起始地址为:120*1024,大小为:8*1024字节。

    通过上述信息,FAL的设备及分区信息就配置完成了。

    4、运行查看信息:

    在程序运行时调用:fal_init();

     三、easyflash配置

    1、将项目目录下的:packagesEasyFlash-v4.1.0portsef_fal_port.c 拷贝到:packagesEasyFlash-v4.1.0src下,修改如下:

     指明:easyflash要使用的Fal的分区名称

    2、在程序运行时调用:easyflash_init()

     效果:

     首次运行easyflash时会显示红色框中的警告信息

    到此stm32f103上运行RT-Thread+FAL+easyflash就完成了。

    作者:DW039
    出处:http://www.cnblogs.com/dw039
    本文由DW039原创并发布于博客园,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Java的一些命名规范
    Java利用泛型实现堆栈
    Java 将二进制打印成十六进制
    String对象的一些基本方法
    Java异常使用指南
    JAVAEE期末项目------文章发布系统
    java14周
    java第11周
    java第八周作业
    java第七周----json
  • 原文地址:https://www.cnblogs.com/dw039/p/15170873.html
Copyright © 2020-2023  润新知