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设备管理器里面的硬盘数量)。
将项目目录下的:\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移植过程的更多相关文章
- 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...
- OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载open ...
- SFUD+FAL+EasyFlash典型场景需求分析,并记一次实操记录
SFUD+FAL+EasyFlash典型场景需求分析:用整个flash存储数据,上千条数据,读取得时候用easyflash很慢,估计要检索整个flash太慢了. 改进方法:分区检索. 1存数据时,根据 ...
- RT Thread 通过ENV来配置SFUD,操作SPI Flash
本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread& ...
- QT开发环境的建立以及QTE4.6.3、tslib1.4的移植过程
1.首先是建立Linux开发环境1.1.在windowsXP下安装博创公司提供的虚拟机软件VMware Workstation,版本为VMware-workstation-full-7.0.1-227 ...
- STM32 + RT Thread OS 学习笔记[二]
串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1. 目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输 ...
- 【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 ...
- linux内核移植过程问题总结
移植内核:2.6.30.4内核根目录下的.config为当前配置内核的且已经配置好的内核配置.make zImage以此为依据配置内核的过程:cd linux-2.6.30.4(进入Linux根目录) ...
- STM32 + RT Thread OS 串口通讯
1. 创建项目 a) 禁用Finsh和console b) 默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因 ...
- FS210开发板上Qt4.7.0移植过程
作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...
随机推荐
- GPTs大受欢迎但问题多,企服软件厂商的AI Agent更被B端客户器重
GPTs大受欢迎但问题多,企服软件厂商的AI Agent更被B端客户器重 比尔盖茨预言智能体是下个平台,超自动化平台的AI Agent更靠谱? 以GPTs为代表的AI Agent只是玩具?揭秘真实可用 ...
- 义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)
Bert-vits2更新了版本V210,修正了日/英的bert对齐问题,效果进一步优化:对底模使用的数据进行优化和加量,减少finetune失败以及电音的可能性:日语bert更换了模型,完善了多语言推 ...
- java中父类方法return this.对象还是变量,子类去调用this.这个方法的问题
这个问题很简单 public class this_test01 { public static void main(String[] args) { zi j=new zi(); j.pri(); ...
- verdi的rc文件
Verdi波形定位信号,将每次定位看的信号保存下来,存做rc文件,下次使用时直接打开就出来.不用再一个一个找信号. 原文 https://blog.csdn.net/sinat_43629962/ar ...
- [ABC261C] NewFolder(1)
Problem Statement For two strings $A$ and $B$, let $A+B$ denote the concatenation of $A$ and $B$ in ...
- Colaboratory使用教程
Google Colaboratory 是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果.它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并且完全在云端运行.同时 ...
- 记录一下工作中SQL Server数据库遇到的问题
解决查询同步人员信息,使用 case when then解决多IF判断问题 select LOCATION, cert_type, WEIXIN, MARRIAGE, RECORD_WAGE, SPE ...
- finally中的代码一定会执行吗?
通常在面试中,只要是疑问句一般答案都是"否定"的,因为如果是"确定"和"正常"的,那面试官就没有必要再问了嘛,而今天这道题的答案也是符合这个 ...
- Volcano 原理、源码分析(一)
0. 总结前置 1. 概述 2. Volcano 核心概念 2.1 认识 Queue.PodGroup 和 VolcanoJob 2.2. Queue.PodGroup 和 VolcanoJob 的关 ...
- MD5 or Bcrypt?
MD5 or Bcrypt? 摘要 首先是一个错误的认识观念问题,很多人觉得MD5是一个加密算法.不然,他实则是一种摘要算法,也可以叫哈希函数.他的作用是将目标文本转换成具有相同长度.不可逆的杂凑字符 ...