本帖最后由 bearfw 于 2024-11-1 09:43 编辑
GD32-RT-thread的fal软件包使用教程1. 配置工具 本次使用教程用的是ENV工具+keil在编写的,要加入fal软件包首先,我们得先在borad.c文件夹下的Kconfig进行修改 config BSP_USING_ON_CHIP_FLASH bool "Enable ON_CHIP_FLASH" default y 意思是在ENV工具的菜单栏目中显示这个项目 2. 用ENV打开项目 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml5064/wps2.png
注意打开的时候是项目的路径。
输入menuconfig.exe打开菜单 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml5064/wps4.png
根据画红线的地方进入硬件配置,打开flash 在回到TOP界面,进行器件界面找到FAL打开 这里注意一点,我这里的rt-thread是最新的,已经把fal软件包整合到内部了,如果是旧版的需要去system packages里面打开fal的软件包。
3. 工程示例 以上配置操作完之后,在ENV里面输入scons --target=mdk5,对项目进行重构,这一步一定要重新构建一下,不然之前的操作等于没有,在重构之后可以发现工程中多了一个文件夹 在这个组件中我们主要修改,fal_flash_stm32f2_port,这个是官方给的demo,但是里面的我都全删除了,这里参考了RT_Thread GD32F303 片上flash使用fal组件 - Eash、 - 博客园 fal_flash_stm32f2_port这个文件主要是配置,我们的flash读、写、擦除等函数。 第二个要修改的是fal_cfg.h,这个头文件大家使用的时候看一下有没有在魔术棒中进行包含头文件,头文件的功能主要是设置我们flash的分区,跟电脑的硬盘一样,C盘啊,D盘啊,分配他们的大小。那怎么分配大小才是重点,分配多大,从哪儿开始,接下来就准备说明一下。 4. Flash分配说明 看fal_flash_stm32f2_port中的宏定义,开始地址是0X08000000,flash大小是128Kb,结束地址是0X0801FFFF,这些都是根据gd32的数据手册得来的。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml5064/wps9.pngfile:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml5064/wps10.pngfile:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml5064/wps11.png
根据芯片的不同进行配置,我这边使用的GD32F103RCT6,在手册上是MD类型的,所以我就只截图这个,可以看见我们的主flash是0x0800000~0x801ffff的这里面也并不是全部都可以用,有一部分被你写的程序给占用了,能用的是这些程序之后的地址,那怎么看你的程序占用了多少? 双击rt-thread,打开map 可以看见我ROM是用了76.81KB,那么我的可使用的大小就只有128KB-76.81KB=51.19Kb了,所以我们分区只能在这个51.19kb之内。 所以在fal_cfg.h文件中 修改这个,可以看见我将download区变成了80*1024到128*1024,相当于从80kb开始到128kb结束,这个空间都是我download的。 5. 程序测试 将程序烧入单片机,打开串口进行shell命令测试 出现上图说明你的fal组件是可以使用的,输入fal probe download 再输入fal read 0x0 16,这个意思是在这个分区的0x0的地址,16个寄存器都给你读出来,提一嘴
这个是偏移地址,你输入的是0x0其实最后要再加上偏移地址再进行访问的。 这个是读出来的效果,我们也可以进行改写,输入fal write 0x0 0x4c 0x56
,然后我们在读一下试试。 可以发现我们修改了内存的数据。 6. 其他 在这里多说一句,可以看见我的easyflash区是从0kb到64kb,是在我的程序的烧写范围的,我们可以对这块区域进行读,但是不能写,也不能擦除,写是写不进去的,擦除可以,擦除一下你的单片机就死机了。好了这就是整个fal软件包的使用,如有错误大家多包含指出。
|