This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM42L432:UAR 引导加载程序:CAN't 擦除扇区、fmstat 表示段被锁定

Guru**** 2378650 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/975921/rm42l432-uar-bootloader-can-t-erase-sector-fmstat-indicates-secotor-is-locked

器件型号:RM42L432

您好!  

我将使用应用手册 spna188中所述的引导加载程序。  

到目前为止、我没有对提供的固件进行任何更改、只是进行了一些基本的配置以使其适应我的定制板。  

问题是在尝试擦除扇区0时卡住。

这是代码的相关部分:  

------------------------------------------------------ 
Fapi_issue19dCommandWithAddress (Fapi_EraseSector、eraseStartAddr); while (FAPI_CHECK_FSM_READY_BUSY = Fapi_Status_FsmBusy); FAPI_GET_FSM_STATUS; while (FAPI_GET_FSM_STATUS!= Fapi_Status_Success);
------------------------------------------------------ 

对 FAPI_GET_FSM_STATUS 的调用始终返回0x11、指示扇区已锁定。  

以下是我的链接器文件:  

------------------------------

--retain="*(.intvecs)"

内存
{
引导程序(X):origin=0x00000000 length=0x00000020
Flash_API (RX):origin=0x00000020 length=0x000014E0
FLASH0 (Rx):origin=0x00001500 length=0x0005EB00
SRAM (RW):origin=0x08002000 length=0x00006000
堆栈 (RW):origin=0x08000000 length=0x00002000
}
SECTIONS
{
.intvecs :{}>向量
flashAPI:
{

bl_flash.obj (.text)

--library=.\f021_API_CortexR4_LE.lib < FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.SetActiveBank.obj
FlashStateMachine.InitializeFlashBanks.obj
FlashStateMachine.EnableMainSections.obj
FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.ScaleFclk.obj
init.obj
utilities.CalculateEcc.obj
utilities.WaitDelay.obj
utilities.CalculateFletcher.obj
read.MarginByByByByByByByByByByByByByByBy
Read.Common.obj
read.FlushPipeline.obj
read.wdService.obj
ASYNC.WithAddress.obj
program.obj >(.text)
}load = flash_API、run = SRAM、load_start (api_load)、run_start (api_run)、size (api_size)

.text > FLASH0
.const > FLASH0
.cinit > FLASH0
.pinit > FLASH0
.data > SRAM
.bss > SRAM
} 


是否有任何额外的步骤来解锁安全检查?  

非常感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您的代码位于扇区0中、代码使用的异常向量也位于扇区0中。 F021闪存 API 之外的代码从闪存中执行。 因此您无法擦除扇区0。   

    您可以更改应用程序的起始地址吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 QJ

    事实证明、我在报告问题时出错了。  

    我的应用程序起始地址设置为 0x00020000 (扇区13)、引导加载程序尝试擦除扇区13 (而不是之前报告的0)。

    在对问题进行深入研究之后、我想知道问题是什么。  

    启用扇区的 API 调用仅启用前8个扇区。  

    使用此调用:  

    Fapi_enableMainBankSectors (0xFFFF); /*用于 API 2.01*/
    

    解决了这个问题:-)

    谢谢  

    Günter μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很高兴知道您已经解决了这个问题。