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就完成了。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM