麻烦请教一下各位大神,最近再用串口做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:
要看一下是否是哪些地址不连续的烧写导致的问题。
另外,你可以进行局部烧写试试,就是应用程序少一点,然后进行排查问题。