如何通过SFL为设备添加Flash编程支持

描述

SEGGER Flash Loader(SFL)是J-Link设备支持套件(DSK)的一部分,通过SFL,用户可以为自己的新设备添加Flash编程支持。

支持的CPU架构

SEGGER Flash Loader(SFL)可用于以下CPU架构:

• 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类型

SEGGER Flash Loader通过MCU对Flash进行编程,因此可以支持任何Flash(或其他非易失性存储器),适用于经由MCU存储器映射访问的Flash(内部Flash,外部QSPI NOR Flash,…)以及非存储器映射的Flash(外部I2C EEPROM,外部NAND Flash,…)。

对于非内存映射的Flash,必须在SFL中额外实现以下接口函数:

SEGGER_FL_CheckBlank ()

SEGGER_FL_Verify ()

SEGGER_FL_Read ()

SEGGER_FL_CalcCRC ()

接口函数概述

下表概述了SEGGER Flash Loader的必须的和可选的接口函数:

cpu

详细的API介绍可以参考:https://kb.segger.com/SEGGER_Flash_Loader?mtm_campaign=li&mtm_kwd=Flashloader#Entry_functions_overview

在J-Link软件中集成SFL

将生成的SFL二进制文件集成到J-Link软件中,具体操作实现可以参考:https://kb.segger.com/J-Link_Device_Support_Kit

堆栈的使用

J-Link为SEGGER Flash Loader保留512字节的堆栈空间。对于小RAM内存的设备,可以使用256字节。

段放置

对SFL代码放置涉及的RO代码段,RO数据段,RW数据段,J-Link软件有固定的布局分配。

段放置:

cpu

J-Link DSK提供的参考算法和模板工程中已经实现了相应段的定位分配,用户无需修改。

故障排除

通常使用最新版本的模板项目, FlashPrg.c->Functions函数不包含访问SFR的代码,使用release配置构建flash loader,使用J-Link Commander执行flash下载。Flash下载应该在验证过程中报告一个错误。执行SEGGER_FL_Erase()并重试flash下载。J-Link Commander应该仍然报告验证失败,但相应的flash区域应该是空的。否则需检查SEGGER_FL_Erase()。

实现SEGGER_FL_Program()并重试flash下载测试。预期结果:测试报告正常->编程成功。如果没有,需检查SEGGER_FL_Program()代码。

PC在flash下载后反馈异常值,此错误可能的原因:

• 看门狗已使能,但未在flash loader函数中喂狗。这可能导致在RAMCode执行期间出现看门狗超时,从而触发重置。

• 未启用时钟相关的特殊功能寄存器/外设访问

• 访问了无效的内存区域

J-Link软件默认在开始flash编程之前先比较flash内容,以防flash的大部分内容已经与编程数据相同。SEGGER_FL_Prepare()代码必须实现(QSPI)引脚和(QSPI)控制器的配置,以便能够通过内存映射方式访问flash。可以通过将J-Link Commander执行命令(exec SetCompareMode 0)取消比较操作。开始flash下载后,J-Link Commander将报告一个验证错误,但此时应该可以通过内存映射方式访问flash,如果没有,需检查Init()代码。

新设备通常需要一个flash加载程序,通过J-Link DSK,用户可以方便的为自己的设备添加编程支持。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分