RT-Thread完整版fal及easyflash移植

Posted 弓长于水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RT-Thread完整版fal及easyflash移植相关的知识,希望对你有一定的参考价值。

最近深圳开始隔离了,居家办公对于我们这种需要做验证仿真的,而家伙都没在手上的打工人太难了。因为最近项目需要用到fal加easyflash软件包,而之前搞过,但是忘记具体的了。还好留有文档,现在也转为文章吧。现在是真的体会到了学了东西没做记录等于白学是什么意思了。

(该移植操作基于stm32f103系列RT-Thread3.1.3)


环境:Keil5,ENV工具,STM32F103VET6,STM32CubeMX,stm32f103_hal_1.7.0

只要会制作BSP模板,都可以根据本文进行移植,同时博主也发过制作基于RT-Thread3.1.3系统的BSP制作过程,连接如下 STM32F103系列移植rtthread3.1.3完整版详细过程

1.移植fal

1.1修改Kconfig

在工程内board文件夹中修改Kconfig,添加如下代码,添加Flash支持。

    config BSP_USING_ON_CHIP_FLASH
        	bool "Enable ON_CHIP_FLASH"
         default y


保存后退出

1.2通过ENV工具打开fal

打开env工具进入到移植好RT-Thread系统的工程目录下输入menucongfig命令进行配置。
进入到以下选项路径:
RT-Thread online packages ->
System packages -> 选择打开fal


进入fal进行如下设置

确认Flash支持打开,进入到如下选项中:
Hardware Drivers Config ->
On-chip Peripheral Drivers ->

退出ENV工具,保存设置。然后在ENV工具内输出pkgs –update更新软件包。
进入工程文件夹下会发现有个packages的文件夹,打开fal/samples/porting复制里面的fal_cfg.h到packages/fal/inc路径下

再次打开ENV工具在工程路径下重新生成MDK5工程
出现如下提示就生成成功了

1.3打开工程修改文件

打开工程,会发现增加了fal分组以及在Drivers中增加了drv_flash_f1.c文件,打开该文件,找到以下定义:
记住这两个定义
打开fal_cfg.h文件进行如下修改:
注意几个地方:片内Flash名一定要与drv_flash_f1.h中的一样,这里包括设备名以及设备表,原本的设备表是stm32f2_onchip_flash,注意要修改
在mian.c中调用fal_init()函数初始化fal

1.4编译下载测试

此时编译下载应该是没有问题的,直接下载到开发板中,使用串口工具连接串口,会出现以下信息,说明初始化成功
按下tab键会发现fal命令

输入fal会看到能够进行的操作:
接下来进行查看分区、擦、写以及读的操作
至此,fal的移植就成功了,根据后续的需求进行跟详细的分区操作



2.移植EasyFlash

2.1通过ENV工具打开并设置EasyFlash

打开ENV工具进入工程路径下输入命令menuconfig

进入以下选项:
RT-Thread online packages ->
Tools packages ->

进行EasyFlash设置:
Stm32f103cbt6最小擦除粒度是1024(因为芯片页大小为1K)
最小写入粒度设置成STM32F1

退出menuconfig界面保存设置,输入命令pkgs –update更新软件包
将工程目录下软件包内把prots里的ef_fal_port.h文件复制到src文件夹内
回到ENV输入scons --target=mdk5重新生成工程

2.2打开工程修改文件

打开ef_fal_port.c文件,修改easyflash名,增加需要储存的变量名:
重新打开之前移植好的fal组件中的fal_cfg.h文件,添加flash分区:
注意名称一致

添加测试代码

主函数中调用

2.3测试

编译下载程序,通过串口可以看到以下信息:

此时我们输入我们编辑好的MSH命令print_reboot
此时我们断电再输入print_reboot
看到掉电以后数据还是保存了,证明移植成功easyflash

以上是关于RT-Thread完整版fal及easyflash移植的主要内容,如果未能解决你的问题,请参考以下文章

RT-Thread完整版fal及easyflash移植

基于RT-Thread完整版搭建的极简Bootloader

stm32f103的 RT-Thread3.1.3移植SFUD+FAL+EasyFlash

stm32f103的 RT-Thread3.1.3移植SFUD+FAL+EasyFlash

stm32f103的 RT-Thread3.1.3移植SFUD+FAL+EasyFlash

stm32f103的 RT-Thread3.1.3移植SFUD+FAL+EasyFlash