TI中文支持网
TI专业的中文技术问题搜集分享网站

28335串口在线升级

麻烦请教一下各位大神,最近再用串口做28335在线升级的引导程序,发现接收到全部的应用程序后再去刷写可以成功,但是分块接收刷写不成功,不知道这是为什么,请各位大神指点一下!!!

下面是我分块接收刷写的程序,请各位指导!

if(Length > PROG_BUFFER_LENGTH)                                 // Length 为应用程序大小
{
for(j = 0; j < (Length / PROG_BUFFER_LENGTH); j++)
{
for(i = 0; i < PROG_BUFFER_LENGTH; i++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[i] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, PROG_BUFFER_LENGTH, &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k1.\n\r");
Flash_ptr += PROG_BUFFER_LENGTH;
}

for(k = 0; k < (Length % PROG_BUFFER_LENGTH); k++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[k] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, (Length % PROG_BUFFER_LENGTH), &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k2.\n\r");

}

Seven Han:

您可以参考下这边帖子是否有帮助:e2echina.ti.com/…/121859

麻烦请教一下各位大神,最近再用串口做28335在线升级的引导程序,发现接收到全部的应用程序后再去刷写可以成功,但是分块接收刷写不成功,不知道这是为什么,请各位大神指点一下!!!

下面是我分块接收刷写的程序,请各位指导!

if(Length > PROG_BUFFER_LENGTH)                                 // Length 为应用程序大小
{
for(j = 0; j < (Length / PROG_BUFFER_LENGTH); j++)
{
for(i = 0; i < PROG_BUFFER_LENGTH; i++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[i] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, PROG_BUFFER_LENGTH, &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k1.\n\r");
Flash_ptr += PROG_BUFFER_LENGTH;
}

for(k = 0; k < (Length % PROG_BUFFER_LENGTH); k++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[k] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, (Length % PROG_BUFFER_LENGTH), &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k2.\n\r");

}

mangui zhang:是不是与校验有关系?

麻烦请教一下各位大神,最近再用串口做28335在线升级的引导程序,发现接收到全部的应用程序后再去刷写可以成功,但是分块接收刷写不成功,不知道这是为什么,请各位大神指点一下!!!

下面是我分块接收刷写的程序,请各位指导!

if(Length > PROG_BUFFER_LENGTH)                                 // Length 为应用程序大小
{
for(j = 0; j < (Length / PROG_BUFFER_LENGTH); j++)
{
for(i = 0; i < PROG_BUFFER_LENGTH; i++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[i] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, PROG_BUFFER_LENGTH, &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k1.\n\r");
Flash_ptr += PROG_BUFFER_LENGTH;
}

for(k = 0; k < (Length % PROG_BUFFER_LENGTH); k++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[k] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, (Length % PROG_BUFFER_LENGTH), &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k2.\n\r");

}

user5325480:

回复 Seven Han:

Han, thanks!
已经根据你提供的样例修改了程序,学到很多。但是现在还有个问题,就是我用上位机给DSP刷写程序有问题,但是上位机给串口助手发送应用程序正常,用串口助手给DSP刷写应用程序也是正常的,麻烦咨询一下您的意见,这个是什么原因。

麻烦请教一下各位大神,最近再用串口做28335在线升级的引导程序,发现接收到全部的应用程序后再去刷写可以成功,但是分块接收刷写不成功,不知道这是为什么,请各位大神指点一下!!!

下面是我分块接收刷写的程序,请各位指导!

if(Length > PROG_BUFFER_LENGTH)                                 // Length 为应用程序大小
{
for(j = 0; j < (Length / PROG_BUFFER_LENGTH); j++)
{
for(i = 0; i < PROG_BUFFER_LENGTH; i++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[i] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, PROG_BUFFER_LENGTH, &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k1.\n\r");
Flash_ptr += PROG_BUFFER_LENGTH;
}

for(k = 0; k < (Length % PROG_BUFFER_LENGTH); k++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[k] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, (Length % PROG_BUFFER_LENGTH), &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k2.\n\r");

}

user5325480:

回复 mangui zhang:

不是校验的原因,我校验还没有加里面。

麻烦请教一下各位大神,最近再用串口做28335在线升级的引导程序,发现接收到全部的应用程序后再去刷写可以成功,但是分块接收刷写不成功,不知道这是为什么,请各位大神指点一下!!!

下面是我分块接收刷写的程序,请各位指导!

if(Length > PROG_BUFFER_LENGTH)                                 // Length 为应用程序大小
{
for(j = 0; j < (Length / PROG_BUFFER_LENGTH); j++)
{
for(i = 0; i < PROG_BUFFER_LENGTH; i++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[i] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, PROG_BUFFER_LENGTH, &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k1.\n\r");
Flash_ptr += PROG_BUFFER_LENGTH;
}

for(k = 0; k < (Length % PROG_BUFFER_LENGTH); k++)
{
wordData = SCIC_GetOnlyWordData();
Buffer[k] = wordData;
}
status = Flash_Program(Flash_ptr, Buffer, (Length % PROG_BUFFER_LENGTH), &FlashStatus);
if(status != STATUS_SUCCESS)
{
Example_Error();
}
SCI_SendStatus("Processor is 0k2.\n\r");

}

Eric Ma:

回复 user5325480:

要看一下是否是哪些地址不连续的烧写导致的问题。
另外,你可以进行局部烧写试试,就是应用程序少一点,然后进行排查问题。

赞(0)
未经允许不得转载:TI中文支持网 » 28335串口在线升级
分享到: 更多 (0)