娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

stm32f407 easyflash移植過程記錄

發布者:心靈律動最新更新時間:2024-03-21 來源: elecfans關鍵字:stm32f407  移植過程 手機看文章 掃描二維碼
隨時隨地手機看文章

EasyFlash是一款開源的輕量級嵌入式Flash存儲器庫,非常適合智能家居、可穿戴、工控、醫療、物聯網等需要斷電存儲功能的產品,資源占用極低,并且支持各種 MCU 片上存儲器


之所以將其移植到 robomaste-C 型開發板上,是為了存儲重要日志,以及在正常運行情況下存儲重要數據用于調試分析,盡量減小 debug 環境下對系統行為的影響。目前該開發板已經支持 easyflash ,進入 menucofig 中使能即可,main 函數中會進行初始化。(不需要使用 easyflash 時,一定要記得關閉該功能,Flash 的擦除次數有限)

1.jpg

robomaster C 板使用芯片 STM32F407IGH6 片上搭載 1MB Flash,具體參數如下所示:

1.jpg

1.jpg

對接要點

對接的具體流程就不詳細描述了,有很多大佬成功移植的教程,項目倉庫中也有豐富的相關文檔。這里記錄對接要點,以及需要注意的一些坑。

因為使用的是 STM32F407 1MB 的片上 Flash, 直接使用 HAL 庫的相關 API,需要引用 Incstm32f4xx_hal_flash.h、 Incstm32f4xx_hal_flash_ex.h 這兩個頭文件;

對接時需要 Flash 的具體參數如,開始地址,操作粒度等,這些參數需要了解清楚,文章前面的圖片中也可以讀出;

可以搭配 STM32 ST-LINK Utility 工具查看 Flash 存儲情況,擦除后全為 0xffffffff;
擦除和寫入 Flash 時,需要先解鎖 Flash,操作完之后再上鎖;
HAL_FLASH_Program()函數對于不同芯片的HAL庫,入參也不甚相同,有的芯片可以按1字節、2字節、4字節、8字節寫入,比如STM32F407,有的芯片只能按8字節寫入,比如STM32L4。同時,Flash寫入時要注意字節對齊;

很多博客都是關于 F1 移植的,F4 和 F1 的是有區別的,而且網上大部分使用 HAL 都是 2016 年的,現在 HAL 以及更新過,并且相關 API 有變動,可以參考我的具體實現:

EfErrCode ef_port_erase(uint32_t addr, size_t size) {
EfErrCode result = EF_NO_ERR;
FLASH_Status flash_status;
size_t erased_size = 0;
uint32_t cur_erase_sector;
/* make sure the start address is a multiple of EF_ERASE_MIN_SIZE /
EF_ASSERT(addr % EF_ERASE_MIN_SIZE == 0);
/ start erase /
FLASH_Unlock();
FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR
| FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
/ it will stop when erased size is greater than setting size */
while(erased_size < size) {
cur_erase_sector = stm32_get_sector(addr + erased_size);
flash_status = FLASH_EraseSector(cur_erase_sector, VoltageRange_3);
if (flash_status != FLASH_COMPLETE) {
result = EF_ERASE_ERR;
break;
}
erased_size += stm32_get_sector_size(cur_erase_sector);
}
FLASH_Lock();
return result;
}
EfErrCode ef_port_write(uint32_t addr, const uint32_t *buf, size_t size) {
EfErrCode result = EF_NO_ERR;
size_t i;
uint32_t read_data;
uint8_t *buf_8 = (uint8_t )buf;
FLASH_Unlock();
FLASH_ClearFlag(
FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR
| FLASH_FLAG_PGSERR);
for (i = 0; i < size; i++, buf_8++, addr++)
{
/ write data */
FLASH_ProgramByte(addr, *buf_8);
read_data = *(uint8_t ) addr;
/ check data */
if (read_data != *buf_8) {
result = EF_WRITE_ERR;
break;
}
}
FLASH_Lock();
return result;
}

分區首次使用的話是要擦除一次的,所以第一次報sector header check failed是對的;


關鍵字:stm32f407  移植過程 引用地址:stm32f407 easyflash移植過程記錄

上一篇:基于STM32的模擬UART串口通信工作原理
下一篇:STM32U5 ADC+DMA配置演示

推薦閱讀最新更新時間:2025-05-20 14:00

STM32開發筆記34:USB CDC驅動程序的詳細移植過程
單片機型號:STM32F401 本文詳細介紹USB CDC驅動程序的移植過程。 1、按照STM32F4 開發筆記8:解決USB CDC “該設備無法啟動”問題介紹的過程生成驅動程序后,找到如下圖所示的文件加入到自己的項目工程中。 2、打開usbd_cdc_if.c文件,可以看到其中有,如下4個函數,其中Init、DeInit和Control函數都不需要改變,關鍵是Receive函數。 static int8_t CDC_Init_FS(void); static int8_t CDC_DeInit_FS(void); static int8_t CDC_Control_FS(uint8_t cm
[單片機]
STM32開發筆記34:USB CDC驅動程序的詳細<font color='red'>移植</font><font color='red'>過程</font>
淺談分析Arm linux 內核移植及系統初始化的過程
學習嵌入式ARM linux ,主要想必三個方向發展: 1 、嵌入式linux 應用軟件開發 2 、linux 內核的剪裁和移植 3 、嵌入式linux 底層驅動的開發 主 要介紹內核移植過程中涉及文件的分布及其用途,以及簡單介紹系統的初始化過程。整個arm linux內核的啟動可分為三個階段:第一階段主要是進行 cpu和體系結構的檢查、cpu本身的初始化以及頁表的建立等;第二階段主要是對系統中的一些基礎設施進行初始化;最后則是更高層次的初始化,如根設備和 外部設備的初始化。了解系統的初始化過程,有益于更好地移植內核。 1. 內核移植 2. 涉及文件分布介紹 2.1. 內核移植 2.2. 涉及的頭文件 /linux-2.6.1
[單片機]
移植uClinux內核到stm32f407
上一篇博文講到了先移植基于stm32f407的u-boot,本文講到的是最難的移植stm32f407的內核,這個內核源代碼我也是在網上找到了,看介紹是國外大神所修改而成的,真的萬分感謝這位大神可憐,所以也要看到網上的資源其實很多,要善于挖掘,善于搜尋。 內核代碼是我無意中down下來的,我一得到代碼的時候開始并沒有對在stm32f407上跑uClinux有太多的信心,一是網上還沒有在stm32f407跑uClinux的資料(至少我沒找到過)網上都對在stm32上跑uClinux都是唱衰的態度,的確stm32跑起uClinux系統,資源是有些匱乏,而stm32f407內部flash只有1M的空間,其中u-boot占了128K,那
[單片機]
<font color='red'>移植</font>uClinux內核到<font color='red'>stm32f407</font>
關于stm32f407 串口程序編寫過程 總結
一.背景介紹 17/07畢業,通過完成試用期的幾個小項目,感覺自己能獨立的完成部分項目,便接手了配合硬件工程師,將公司模塊升級的任務(M3-- M4) 目標: 1.bootloader更改 2.將rt_thread 系統移植到 stm32f407板子上 3.將485,can , gsm ,以太網 驅動接口補上 4.重新設計程序收發流程,完成實時收發數據 (數據字典,wwdg , 校驗設計,對上,對下的協議修改等等 ,這些已在之前完成,只要調用響應接口,調試下即可) 二.目標實現 目標1.bootloader更改 通過學
[單片機]
關于<font color='red'>stm32f407</font> 串口程序編寫<font color='red'>過程</font> 總結
STM32F407-跑馬燈
硬件準備(STM32F407ZGT6) 1.初始準備 1.1打開Template模板,在工程目錄下新建HARDWARE文件夾 1.2 新建在HARDWARE路徑中新建led.c , led.h兩個文件,在工程中新建HARDWARE Groups,并將led.c添加進去,將led.h添加進頭文件目錄中。 1.3硬件連接 2.程序編寫 2.1 庫函數 頭文件:stm32f4xx_gpio.h 源文件:stm32f4xx_gpio.c 1個初始化函數: void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct
[單片機]
STM32F407-跑馬燈
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 兖州市| 东城区| 永安市| 大洼县| 全州县| 沾益县| 招远市| 定襄县| 镇康县| 永州市| 达孜县| 桂平市| 江安县| 磐安县| 阿克陶县| 葫芦岛市| 富顺县| 福建省| 洱源县| 和顺县| 绥德县| 阿荣旗| 甘洛县| 桑日县| 上杭县| 三亚市| 沭阳县| 四川省| 辛集市| 宁河县| 阿拉善盟| 新蔡县| 华坪县| 安平县| 阿瓦提县| 上虞市| 朝阳县| 徐水县| 武邑县| 西和县| 沧州市|