SEGGER Flash Loader(SFL)是J-Link設(shè)備支持套件(DSK)的一部分,通過(guò)SFL,用戶可以為自己的新設(shè)備添加Flash編程支持。
支持的CPU架構(gòu)
SEGGER Flash Loader(SFL)可用于以下CPU架構(gòu):
? ARMv4/v5
ARM720T, ARM7TDMI, ARM7TDMI-S
ARM920T, ARM922T, ARM926EJ-S, ARM946E-S, ARM966E-S
? ARMv6-M
Cortex-M0, Cortex-M0+, Cortex-M1
? ARMv7-M
Cortex-M3, Cortex-M4, Cortex-M7
? ARMv8-M
Cortex-M23, Cortex-M33, Cortex-M55, Cortex-M85
? ARMv7-A
Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A12, Cortex-A15, Cortex-A17
? ARMv7-R
Cortex-R4, Cortex-R5, Cortex-R7, Cortex-R8
? ARMv8-R
Cortex-R52
? RISC-V RV32
支持的Flash類(lèi)型
SEGGER Flash Loader通過(guò)MCU對(duì)Flash進(jìn)行編程,因此可以支持任何Flash(或其他非易失性存儲(chǔ)器),適用于經(jīng)由MCU存儲(chǔ)器映射訪問(wèn)的Flash(內(nèi)部Flash,外部QSPI NOR Flash,…)以及非存儲(chǔ)器映射的Flash(外部I2C EEPROM,外部NAND Flash,…)。
對(duì)于非內(nèi)存映射的Flash,必須在SFL中額外實(shí)現(xiàn)以下接口函數(shù):
SEGGER_FL_CheckBlank ()
SEGGER_FL_Verify ()
SEGGER_FL_Read ()
SEGGER_FL_CalcCRC ()
接口函數(shù)概述
下表概述了SEGGER Flash Loader的必須的和可選的接口函數(shù):
詳細(xì)的API介紹可以參考:https://kb.segger.com/SEGGER_Flash_Loader?mtm_campaign=li&mtm_kwd=Flashloader#Entry_functions_overview
在J-Link軟件中集成SFL
將生成的SFL二進(jìn)制文件集成到J-Link軟件中,具體操作實(shí)現(xiàn)可以參考:https://kb.segger.com/J-Link_Device_Support_Kit
堆棧的使用
J-Link為SEGGER Flash Loader保留512字節(jié)的堆??臻g。對(duì)于小RAM內(nèi)存的設(shè)備,可以使用256字節(jié)。
段放置
對(duì)SFL代碼放置涉及的RO代碼段,RO數(shù)據(jù)段,RW數(shù)據(jù)段,J-Link軟件有固定的布局分配。
段放置:
J-Link DSK提供的參考算法和模板工程中已經(jīng)實(shí)現(xiàn)了相應(yīng)段的定位分配,用戶無(wú)需修改。
故障排除
通常使用最新版本的模板項(xiàng)目, FlashPrg.c->Functions函數(shù)不包含訪問(wèn)SFR的代碼,使用release配置構(gòu)建flash loader,使用J-Link Commander執(zhí)行flash下載。Flash下載應(yīng)該在驗(yàn)證過(guò)程中報(bào)告一個(gè)錯(cuò)誤。執(zhí)行SEGGER_FL_Erase()并重試flash下載。J-Link Commander應(yīng)該仍然報(bào)告驗(yàn)證失敗,但相應(yīng)的flash區(qū)域應(yīng)該是空的。否則需檢查SEGGER_FL_Erase()。
實(shí)現(xiàn)SEGGER_FL_Program()并重試flash下載測(cè)試。預(yù)期結(jié)果:測(cè)試報(bào)告正常->編程成功。如果沒(méi)有,需檢查SEGGER_FL_Program()代碼。
PC在flash下載后反饋異常值,此錯(cuò)誤可能的原因:
? 看門(mén)狗已使能,但未在flash loader函數(shù)中喂狗。這可能導(dǎo)致在RAMCode執(zhí)行期間出現(xiàn)看門(mén)狗超時(shí),從而觸發(fā)重置。
? 未啟用時(shí)鐘相關(guān)的特殊功能寄存器/外設(shè)訪問(wèn)
? 訪問(wèn)了無(wú)效的內(nèi)存區(qū)域
J-Link軟件默認(rèn)在開(kāi)始flash編程之前先比較flash內(nèi)容,以防flash的大部分內(nèi)容已經(jīng)與編程數(shù)據(jù)相同。SEGGER_FL_Prepare()代碼必須實(shí)現(xiàn)(QSPI)引腳和(QSPI)控制器的配置,以便能夠通過(guò)內(nèi)存映射方式訪問(wèn)flash。可以通過(guò)將J-Link Commander執(zhí)行命令(exec SetCompareMode 0)取消比較操作。開(kāi)始flash下載后,J-Link Commander將報(bào)告一個(gè)驗(yàn)證錯(cuò)誤,但此時(shí)應(yīng)該可以通過(guò)內(nèi)存映射方式訪問(wèn)flash,如果沒(méi)有,需檢查Init()代碼。
新設(shè)備通常需要一個(gè)flash加載程序,通過(guò)J-Link DSK,用戶可以方便的為自己的設(shè)備添加編程支持。
-
FlaSh
+關(guān)注
關(guān)注
10文章
1678瀏覽量
151780 -
cpu
+關(guān)注
關(guān)注
68文章
11077瀏覽量
217024 -
編程
+關(guān)注
關(guān)注
88文章
3689瀏覽量
95238 -
SEGGER
+關(guān)注
關(guān)注
0文章
52瀏覽量
14484
原文標(biāo)題:如何通過(guò)SFL為設(shè)備添加Flash編程支持
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
為什么通過(guò)vivado進(jìn)行spi flash編程會(huì)失?。?/a>
羅德施瓦茨-R&S SFL-T視頻信號(hào)發(fā)生器SFL-T價(jià)格
Zynq設(shè)備不支持使用SVF進(jìn)行Flash編程怎么辦
通過(guò)對(duì)stm32內(nèi)部的flash的讀寫(xiě)可以實(shí)現(xiàn)對(duì)stm32的編程操作
對(duì)flash讀寫(xiě)可實(shí)現(xiàn)對(duì)stm32的編程操作
HC32系列MCU的J-Flash編程支持包
請(qǐng)問(wèn)spc5 flash編程器支持哪些設(shè)備列表?
賽威科技推出離線式LED照明驅(qū)動(dòng)IC SFL678和SFL688
賽威科技發(fā)布小功率LED照明驅(qū)動(dòng)方案SFL628和SFL629
為程序界面添加滑動(dòng)條_《OpenCV3編程入門(mén)》書(shū)本配套源代碼
AN-946: 通過(guò)LIN—協(xié)議6進(jìn)行Flash/EE存儲(chǔ)器編程

Flash編程的基礎(chǔ)梳理
用于嵌入式單電源 FLASH 設(shè)備的 V850 自編程庫(kù)

評(píng)論