您好,
从地址0x00260000闪存控制器开始向组1写入1.5MB 的大容量数据将无法写入。
我正在实施引导加载程序来擦除组1,并在 擦除操作解决任何故障时立即写入批量数据。
在写入闪存1.5MB 的完整数据时、接收数据并将其存储在 EMIF RAM (8MB)中、并使用库 F021_API_CortexR4_be.lib 和 API 一次性写入闪存组1
FLASH_REGISTER.FBPROT=1;
状态= Fapi_setActiveFlashBank (((Fapi_FlashBankType) 0x01U);
状态= Fapi_enableMainBankSectors (0xFFFFFFU);
fapi_issueProgrammingCommand ((uint32_t *) dst、(0x00180000)
(uint8_t *) src、(0x8000000)
(uint8_t) bytes_size_TO_write (完整1.5 MB 大小)
0、
0、
Fapi_AutoEccGeneration);
将地址0x00180000写入0x00260000将数据写入闪存时没有错误。 起始地址0x00260000 Flash 控制器不向 Flash 写数据,它一直中止。
如果我执行其它逻辑来写入到组1地址0x00260000 到0x00300000。
勘误表 FMC#80在两组间的访问切换时中止。 如果 在对组0的访问之后有一个介于1.5MB 和2MB 之间的访问(在组1中)、由两个1.5MB 闪存组组成的3MB 器件可能会生成一个中止。 同样、如果对组1的访问之后 是1MB 和1.5MB 之间的访问(在组0中)、器件可能会生成中止。
与闪存相关的代码正在 RAM 中执行
闪存 API:
{
BOOT_UDF.obj (.text、.const)
boot_flash.obj (.text、.const)
boot_Erase.obj (.text、.const)
BOOT_EMIF_Write_Data.obj (.text、.const)
--library= F021_API_CortexR4_be.lib <*。obj >(.text、.const、.bss、.data)
}load = flash_API、run = SRAM、load_start (__SEC_OEM_unsafe load_start)、run_start (__SEC_OEM_unsafe _run_start)、size (__SEC_OEM_unsafe _run_size)、 crc_table (_Bootloader_firmware_image_crc_table、算法=TMS570_CRC64_ISO)