This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8027万:我是否可以通过bootloader升级bootloader?

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/621236/tms320f28027-can-i-upgrade-the-bootloader-by-the-bootloader

部件号:TMS320F2.8027万

您好,

我编写了一个基于TI提供的"F2.8027万_FLASH_KERNEE"示例项目的引导加载程序项目。 我已将项目加载到FLASHA,主要功能如下:

UINT32主(无效)

//GPIO和SCI仍然是从Sci_Boot()设置的
//设置sysctl和PLL
//DisableDog ();
IntOscar 1Sel();

memcpy(&RamfuncsRunStart,&RamfuncsLoadStart,(size_t)&RamfuncsLoadSize);//copy SCI_Boot()从闪存复制到RAM
InitPll (DSP28_PLLCR,DSP28_DIVSEL);
InitFlash();

DELAY _US (100);

返回SCI_Boot();
}

SCI_Boot()函数是用于升级驻留在FLASHB,FLASHC,FLASHD中的应用程序的函数。

升级应用程序项目效果很好。

然后我要升级驻留在FLASHA中的引导加载程序本身,然后我需要擦除SCI_Boot()中的FLASHA,代码如下所示:

状态= Flash_Erase((sectora | sectorb | SECTRC | SECORD),&FlashStatus);

但当CPU执行此代码时 ,它将进入非法陷阱中断。

这是否意味着我无法擦除主功能所在的闪存扇区? 我已经将SCI_Boot()复制到RAM。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我写这封信是为了让您知道,一位C2000小组成员已被指派担任此职位。 我们将尽力解答您的疑问。 但是,由于我们的其中一个站点受到恶劣天气的影响,因此可能会延迟响应。

    此致
    Baskaran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    霍华德

    当您尝试擦除闪存扇区A/B/C/D时,可能是从扇区A调用闪存擦除功能。即使您从RAM执行闪存擦除功能,一旦擦除功能完成,它将返回扇区A地址位置以继续执行代码。 由于A区已经被清除,它将获取非法的操作码,并将进入非法的ITRAP代码。

    此致,
    Manoj
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。

    我能否得出结论认为,理论上不可能单独升级bootloader? 或者,如果我正确编写了代码,它仍然可以自行升级?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不会说这是不可能的。

    如果您通过SCI下载的十六进制文件包含调用Flash API的函数和要在闪存中编程的十六进制代码(bootloader代码)。 这当然是可能的。 但是,我们没有任何可供您参考的示例项目。

    此致,
    Manoj