zoukankan      html  css  js  c++  java
  • 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原创并发布于博客园,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    《应用Yii1.1和PHP5进行敏捷Web开发》学习笔记(转)
    YII 小模块功能
    Netbeans代码配色主题大搜集
    opensuse 启动巨慢 解决方法 90s多
    opensuse 安装 网易云音乐 rpm netease music
    linux qq rpm deb opensuse
    openSUSE 安装 alien
    第一行代码 Android 第2版
    Android Studio AVD 虚拟机 联网 失败
    docker error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio
  • 原文地址:https://www.cnblogs.com/dw039/p/15170873.html
Copyright © 2011-2022 走看看