需求:使用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设备管理器里面的硬盘数量)。

将项目目录下的:\packages\fal-v0.5.0\samples\porting\fal_cfg.h 拷贝到:\packages\fal-v0.5.0\src\inc中,修改如下:

上图所示,我的系统中只有一个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、将项目目录下的:\packages\EasyFlash-v4.1.0\ports\ef_fal_port.c 拷贝到:\packages\EasyFlash-v4.1.0\src下,修改如下:

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

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

效果:

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

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

stm32f103 rt-thread fal easyflash移植过程的更多相关文章

  1. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...

  2. OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...

  3. SFUD+FAL+EasyFlash典型场景需求分析,并记一次实操记录

    SFUD+FAL+EasyFlash典型场景需求分析:用整个flash存储数据,上千条数据,读取得时候用easyflash很慢,估计要检索整个flash太慢了. 改进方法:分区检索. 1存数据时,根据 ...

  4. RT Thread 通过ENV来配置SFUD,操作SPI Flash

    本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread& ...

  5. QT开发环境的建立以及QTE4.6.3、tslib1.4的移植过程

    1.首先是建立Linux开发环境1.1.在windowsXP下安装博创公司提供的虚拟机软件VMware Workstation,版本为VMware-workstation-full-7.0.1-227 ...

  6. STM32 + RT Thread OS 学习笔记[二]

    串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1.   目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输 ...

  7. 【cocos2d-x-3.1.1列2】cocos2d-x3.1.1 安卓移植过程

    Evernote的链接: http://app.yinxiang.com/l/AAXeIjFsjjFAC68i6hUQkiwFFZg3Maz-AkA/ cocos2d-x 3.1.1  win移植到a ...

  8. linux内核移植过程问题总结

    移植内核:2.6.30.4内核根目录下的.config为当前配置内核的且已经配置好的内核配置.make zImage以此为依据配置内核的过程:cd linux-2.6.30.4(进入Linux根目录) ...

  9. STM32 + RT Thread OS 串口通讯

    1.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因 ...

  10. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

随机推荐

  1. GPTs大受欢迎但问题多,企服软件厂商的AI Agent更被B端客户器重

    GPTs大受欢迎但问题多,企服软件厂商的AI Agent更被B端客户器重 比尔盖茨预言智能体是下个平台,超自动化平台的AI Agent更靠谱? 以GPTs为代表的AI Agent只是玩具?揭秘真实可用 ...

  2. 义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)

    Bert-vits2更新了版本V210,修正了日/英的bert对齐问题,效果进一步优化:对底模使用的数据进行优化和加量,减少finetune失败以及电音的可能性:日语bert更换了模型,完善了多语言推 ...

  3. java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题

    这个问题很简单 public class this_test01 { public static void main(String[] args) { zi j=new zi(); j.pri(); ...

  4. verdi的rc文件

    Verdi波形定位信号,将每次定位看的信号保存下来,存做rc文件,下次使用时直接打开就出来.不用再一个一个找信号. 原文 https://blog.csdn.net/sinat_43629962/ar ...

  5. [ABC261C] NewFolder(1)

    Problem Statement For two strings $A$ and $B$, let $A+B$ denote the concatenation of $A$ and $B$ in ...

  6. Colaboratory使用教程

    Google Colaboratory 是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果.它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行.同时 ...

  7. 记录一下工作中SQL Server数据库遇到的问题

    解决查询同步人员信息,使用 case when then解决多IF判断问题 select LOCATION, cert_type, WEIXIN, MARRIAGE, RECORD_WAGE, SPE ...

  8. finally中的代码一定会执行吗?

    通常在面试中,只要是疑问句一般答案都是"否定"的,因为如果是"确定"和"正常"的,那面试官就没有必要再问了嘛,而今天这道题的答案也是符合这个 ...

  9. Volcano 原理、源码分析(一)

    0. 总结前置 1. 概述 2. Volcano 核心概念 2.1 认识 Queue.PodGroup 和 VolcanoJob 2.2. Queue.PodGroup 和 VolcanoJob 的关 ...

  10. MD5 or Bcrypt?

    MD5 or Bcrypt? 摘要 首先是一个错误的认识观念问题,很多人觉得MD5是一个加密算法.不然,他实则是一种摘要算法,也可以叫哈希函数.他的作用是将目标文本转换成具有相同长度.不可逆的杂凑字符 ...