主题中讨论的其他器件:C2000WARE
你(们)好
我正在检查 DCSM 工具、并希望将函数(也是中断)从安全闪存扇区复制到 RAM。 我 尝试 复制
但 程序会导致我执行非法操作。 我在数据表中看到了以下内容:
有一些函数可处理从 falsh 到 ram 的安全数据复制:
我找不到他们的问题。
您能不能告诉我这些功能的位置、或者我需要做什么来包含这些功能。 或者、您也可以通过另一种方法将安全数据从闪存复制到 RAM。
谢谢
Yoav
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.
你(们)好
我正在检查 DCSM 工具、并希望将函数(也是中断)从安全闪存扇区复制到 RAM。 我 尝试 复制
但 程序会导致我执行非法操作。 我在数据表中看到了以下内容:
有一些函数可处理从 falsh 到 ram 的安全数据复制:
Uint16 SafeCopyCodeZ1(Uint32 size, Uint16 *dst, Uint16 *src); Uint16 SafeCopyCodeZ2(Uint32 size, Uint16 *dst, Uint16 *src);
我找不到他们的问题。
您能不能告诉我这些功能的位置、或者我需要做什么来包含这些功能。 或者、您也可以通过另一种方法将安全数据从闪存复制到 RAM。
谢谢
Yoav
您好!
为了使用安全 ROM 函数 API、您需要在项目中包含器件特定的 SafeZone 代码库。 特定器件的安全 ROM 函数 API 库是 C2000Ware 的一部分。
请导航至 \libraries\boot_rom\f28002x\rev0\rom_symbol_libs\SafeZoneCode 以访问库。
希望这对您有所帮助。 如果此回复已回答您的问题、请关闭此 TT 并将其标记为"已解决"。
谢谢、此致
Pramod
您好、Yoav、
这些函数是 TI 提供的 ROM 的一部分。 您只需在编译期间使用 ROM 库(可从获取)链接它们 \libraries\boot_rom\f28002x\rev0\rom_symbol_libs\SafeZoneCode)。 请注意、这些函数用于从 EXEONLY 安全闪存扇区复制代码。 对于非 EXEONLY 安全闪存扇区、只需将 memcpy 函数放置在安全闪存扇区中、并使用该函数从闪存复制到 RAM。 您可以参阅此 应用报告 、其中对此进行了详细介绍。
此致、
Vivek Singh
你(们)好
感谢您的回复。 我成功导入了该函数。 我需要对 函数原型执行 extern 操作。 例如:
extern uint16_t SafeCopyCodeZ2(uint32_t size, uint16_t *dst, uint16_t *src);
遗憾的是、该函数不会复制数据。 我查看了返回值、它为零。
我将解释我 要做的事情 :
我有安全区域2 - RAMLS5和 FLASH_BANK0_SEC6 属于此区域。
我只想从安全 RAM 运行安全功能、而不是从闪存运行安全功能。
当函数位于 FLASH_BANK0_SEC6中时、所有操作都正常。
在下图中、一旦程序尝试进入位于该位置的函数、此更改将导致非法中断:
我还尝试了以下操作:
我的.cmd 文件中已经有.TI.ramfunc 段:
因此、我定义 了另一个、 但我得到了该警告、正如您在图像中看到的:
我按照 建议的文件将库 FlashAPI_F28002x_FPU32.lib 拖动到项目中、从而包含了该库。
我在这里错过了什么?
谢谢
Yoav
您好!
只有在从 EXEONLY 闪存扇区复制到 EXEONLY RAM 时、才会使用 SafeCopy 函数。 您能否确认您的 RAMLS5和 FLASH_BANK0_SEC6是否属于同一个区域并配置为 EXEONLY 区域?
查看此信息、然后查看 SafeCopy 函数的返回值是否为非零。
此外、我建议您为此查询创建不同的线程、因为原始查询已被解决。 我们可以在新主题中继续讨论。
谢谢、此致
Pramod
螺纹将标记为闭合。 后续查询作为单独线程的一部分处理。