对于在 http://processors.wiki.ti.com/index.php/TMS570_Hercules_MCU_Bootloader 位置提供的 TMS570LS3137器件引导加载程序示例 ,在以绿色标记的扇区之后,我能够擦除和重新编程,但地址从0x00200000到0x002E0000不能擦除或写入这些扇区。
(void *) 0x00000000、0x08000、0、0、0xFF87000、
(void *) 0x00008000、0x08000、0、1、0xFF87000、
(void *) 0x00010000、0x08000、0、2、0xFF87000、
(void *) 0x00018000、0x08000、0、3、0xFF87000、
(void *) 0x00020000、0x20000、0、4、0xFF87000、
(void *) 0x00040000、0x20000、0、5、0xFF87000、
(void *) 0x00060000、0x20000、0、6、0xFF87000、
(void *) 0x00080000、0x20000、0、7、0xFF87000、
(void *) 0x000A0000、0x20000、0、8、0xFF87000、
(void *) 0x000C0000、0x20000、0、9、0xFF87000、
(void *) 0x000E0000、0x20000、0、10、0xFF87000、
(void *) 0x00100000、0x20000、0、11、0xFF87000、
(void *) 0x00120000、0x20000、0、12、0xFF87000、
(void *) 0x00140000、0x20000、0、13、0xFF87000、
(void *) 0x00160000、0x20000、0、14、0xFF87000、
(void *) 0x00180000、0x20000、1、0、0xFF87000、
(void *) 0x001A0000、0x20000、1、1、0xFF87000、
(void *) 0x001C0000、0x20000、1、2、0xFF87000、
(void *) 0x001E0000、0x20000、1、3、0xFF87000、
(void *) 0x00200000、0x20000、1、4、0xFF87000、
(void *) 0x00220000、0x20000、1、5、0xFF87000、
(void *) 0x00240000、0x20000、1、6、0xFF87000、
(void *) 0x00260000、0x20000、1、7、0xFF87000、
(void *) 0x00280000、0x20000、1、8、0xFF87000、
(void *) 0x002A0000、0x20000、1、9、0xFF87000、
(void *) 0x002C0000、0x20000、1、10、0xFF87000、
(void *) 0x002E0000、0x20000、1、11、0xFF87000
对于组0扇区、F021 API 函数按以下顺序使用
Fapi_initializeFlashBanks (Freq_in_MHz);
Fapi_setActiveFlashBank ((Fapi_FlashBankType) bk);
Fapi_enableMainBankSectors (0xFFFE);
Fapi_issue19 CommandWithAddress (Fapi_EraseSector、eraseStartAddr);
对于组1扇区、F021 API 函数按以下顺序使用
Fapi_initializeFlashBanks (Freq_in_MHz);
Fapi_setActiveFlashBank ((Fapi_FlashBankType) bk);
Fapi_enableMainBankSectors (0xFFFE);
Fapi_enableEprom 组安全器(0xFFFFFFFFU、0xFFFFFFFFU); //这将0x00180000固定为0x001E0000扇区擦除和写入*/
Fapi_issue19 CommandWithAddress (Fapi_EraseSector、eraseStartAddr);
闪存设置功能如下
void setupFlash (void)
{
/**-设置闪存读取模式、地址等待状态和数据等待状态*/
flashWREG->FRDCNTL = 0x000000000000
|(3U << 8U)
|(1U << 4U)
| 1U;
/**-为组7设置闪存访问等待状态*/
FSM_WR_ENA = 0x5;
EEPROM_CONFIG = 0x00030002;
/**-禁用对闪存状态机寄存器的写入访问*/
FSM_WR_ENA = 0xA;
/**-设置闪存组电源模式*/
flashWREG->FBFALBACK = 0x00000000
|(SYS_ACTIVE << 14U)
|(SYS_SLEEP << 12U)
|(SYS_SLEEP << 10U)
|(SYS_SLEEP << 8U)
|(SYS_SLEEP << 6U)
|(SYS_SLEEP << 4U)
|(SYS_ACTIVE << 2U)
| SYS_ACTIVE;
}
fapi_issueProgrammingCommand ((uint32_t *) dst、
(uint8_t *) src、
(uint32_t)字节、
0、
0、
Fapi_AutoEccGeneration);
while (fapi_check_FSM_ready_busy =fapi_Status_FsmBusy);
while (fapi_get_FSM_status!= fapi_Status_Success);<--在该指令中失败并循环