大家好、
客户有问题需要您的帮助:
您好:
我想为 TMS570LS0714APZ 制作一个引导加载程序。 如果我使用相同的程序但不同的 IC、我会发现有些程序可以成功编程、但有些会失败。 下面是我测试过的情况。
1.虽然调整 SYS_CLK_FREQ 可以解决不同 IC 编程失败的问题、但 SYS_CLK_FREQ 是固定的、不能在大规模生产期间为每个 IC 进行调整、因此不能使用该方法。
2.刻录失败后,读取刻录内容,发现有一个现象,即每次16字节的值是0xFF,即写入不成功。 问题似乎是 Fapi_Block é n é n é girl é girl é 改进了、但仍然会出现错误。
uint32_t Fapi_Block (uint32_t Bank、uint32_t Flash_Address、uint32_t Data_Address、uint32_t SizeInBytes)
{
寄存器 uint32_t src = Data_Address;
寄存器 uint32_t dst = Flash_Address;
uint32_t 字节;
IF (SizeInBytes < 16)
字节=大小 InBytes;
否则
字节= 16;
如果((Fapi_initializeFlashBanks ((uint32_t) SYS_CLK_FREQ))= Fapi_Status_Success)
{
(void)Fapi_setActiveFlashBank((((event)Bank); Fapi_Flash
(void) Fapi_enableMainBankSectors (0x0FFF);/*用于 API 2.01*/
}
否则{
返回(1);
}
while ( fapi_check_FSM_ready_busy != Fapi_Status_Fsm )
while ( fapi_get_FSM_status != Fapi_Status_Success );
while (SizeInBytes > 0)
{
Fapi_issueProgrammingCommand ((uint32_t *) dst、
(uint8_t *) src、
(uint32_t)字节、
0、
0、
Fapi_Auto E.ccGeneration);
while ( fapi_check_fsm_ready_busy == Fapi_Status_Fsm o );
while (fapi_get_FSM_status!= Fapi_Status_Success);
while ( fapi_check_FSM_ready_busy != Fapi_Status_Fsm )
src +=字节;
dst +=字节;
SizeInBytes ->字节;
if (SizeInBytes < 16){
字节=大小 InBytes;
}
}
返回(0);
}
我想问的问题如下:
1.如何在每次烧录16个字节后确认编程是否成功?
2.如果我 每次刻录16个字节后执行 Flash_Program_Check (),我需要先设置或检查什么状态,还是需要延迟一段时间?
3.目前,每次我收到2048字节的数据,我开始刻录。 此临时存储区域的大小是否有限制? 我之所以提出这个问题、是因为在接收到2048字节的数据后、我将继续进行写入、直到烧录。 完成后、接收下一个2048字节
4. 应将多高的频率设置为 SYS_CLK_FREQ? 它当前设置为64MHZ。
5.调整 SYS_CLK_FREQ 为什么会影响编程的成功率(调整范围为32MHz ~ 80MHz)
谢谢。此致、
本