Thread 中讨论的其他器件:C2000WARE、 UNIFLASH
工具/软件:
-
在 C2000示例中、没有与 P65的安全启动相关的示例。
-
在2838x 芯片中、找到用于启动的安全启动功能、但
CPU1BROM_calculateCMAC
在可见过程中无法找到类似的功能。 P65库中似乎没有此函数。
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.
工具/软件:
在 C2000示例中、没有与 P65的安全启动相关的示例。
在2838x 芯片中、找到用于启动的安全启动功能、但CPU1BROM_calculateCMAC
在可见过程中无法找到类似的功能。 P65库中似乎没有此函数。
"../boot_ex1_flash_hex_lnk_cpu1.cmd"、第5行:错误#10008-D:找不到文件"roms"
"../boot_ex1_flash_hex_lnk_cpu1.cmd"、第6行:错误#10021-D:需要文件名、选项、存储器或段、而不是"{"
"../boot_ex1_flash_hex_lnk_cpu1.cmd"、第7行:错误#10043-D:需要"";""而不是"l"
"../boot_ex1_flash_hex_lnk_cpu1.cmd"、第8行:错误#10043-D:预期为";"、而不是"}"
为什么出现此错误?
我已设置十六进制实用程序标志:--cmac="${PROJECT_ROOT}/boot_ex1_user_cmac_key.txt"--image --memwidth=16 --romwidth=16 "${PROJECT_ROOT}/boot_ex1_flash_hex_lnk_cpu1.cmd"--diag_pwrap=off
您好:
cmac_sb_1和 cmac_all 无法同时启用、但您可以手动一次启用一个、并在存储器浏览器中观察生成的 CMAC 标签、然后根据其中一种方法手动合并标签。
仅当您想在引导至应用程序代码后对闪存的其他区域进行身份验证时、才需要 cmac_all。 如果您使用 cmac_sb_1、启动 ROM 中的安全启动功能将对前16KB 进行身份验证。 如果对前16KB 进行身份验证就足够了、则无需在应用程序代码中调用 CPU1BROM_calculateCMAC。
一个常见用例是在前16KB 区域具有 EXEONLY 保护功能的引导加载程序。 引导加载程序对固件进行编程后、用户可以调用 CPU1BROM_calculateCMAC 函数来验证已加载的闪存。
谢谢您、
Luke
感谢您的答复
1.如果是 cmac_sb_1、如何启用或检查该值? 因为 cmac_all 可根据进行检查
"applicationCMACStatus = CPU1BROM_calculateCMAC (CMAC_AUTH_START_ADDRESS、
CMAC_AUTH_END_ADDRESS、
cmac_AUTH_TAG_ADDRESS);"
2.如果我使用 cmac_all、 cmac_sb_1可以注释吗?
3.如何更方便地加载此安全启动? 每次我第一次加载十六进制程序、然后加载符号。 uniflash 可以执行 加载 符号吗?
Uniflash 除了寄存器读取之外没有调试功能、因此我不希望它具有符号加载功能。
Luke 是正确的(尽管也支持存储器读取)、在通常不需要调试可见性(即调试符号)的生产刷写环境中、通常会使用 UniFlash。 为了实现调试可见性、需要使用 CCS。