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.

[参考译文] TM4C123GE6PM:带加密位流的 Tiva USB DFU 引导加载

Guru**** 2378650 points
Other Parts Discussed in Thread: EK-TM4C1294XL, EK-TM4C123GXL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1221876/tm4c123ge6pm-tiva-usb-dfu-bootload-with-encrypted-bitstream

器件型号:TM4C123GE6PM
主题中讨论的其他器件:EK-TM4C123GXL、TM4C123、EK-TM4C1294XL

您好!

我已经阅读了 TivaWare 引导加载程序用户指南- SPMU301E 2014年4月- 2020年4月修订版文档(链接如下)。  我注意到、似乎有一种方法可以处理 Tiva 部件的加密图像/位流、但它似乎需要#define 配置语句。  此信息可在由"bl_decrypt_fn_hook"定义描述的第44页上找到。  因为这是#define、这意味着您只能使用闪存引导加载程序进行解密、而 不能使用 ROM 进行解密?

我在尝试弄清楚如何实现以下操作。

1.对我的生产 CCS 二进制文件输出进行加密,以加密我发送给客户的二进制文件。

2.使用 DFU 通过 USB 接口加载此加密的二进制文件。  这里的一个大问题是、这可以用 ROM 引导加载程序代码来实现、还是需要自己的引导加载程序来处理这一点、或者使用 bl_config.h 和 bl_config.c?   

是否有人可以提供任何意见/建议、帮助我向正确方向指出思维、并对我选择的发展道路充满信心?

引导加载程序用户指南:

https://www.ti.com/lit/ug/spmu301e/spmu301e.pdf?ts=1682875717794&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTM4C1294NCPDT

谢谢

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

    尊敬的 Robert:

    因为这是#define 这是否意味着您只能使用闪存引导加载程序而 不能使用 ROM 进行解密?

    您的理解是正确的。 解密只能对闪存引导加载程序进行、不能对 ROM 进行。 另请注意、bl_decrypt.c 文件只是一个占位符。 它现在是空的。 用户可加入所需的解密算法。 TivaWare 闪存引导加载程序和 ROM 引导加载程序不了解位流如何加密。

    您需要在 bl_config.h 文件中取消注释以下#define。  

    //*****
    //
    //允许呼叫在将下载的数据写入之前对其进行解密
    //闪存。 基准引导加载程序源中的解密例程为空、
    //这只是为添加实际解密提供了一个占位符
    //算法。 尽管保留此选项是为了实现向后兼容性
    //建议使用较新的挂钩指定解密函数
    //函数机制和 BL_Decrypt_FN_HOOK。
    //
    //取决于:无
    //不包括:无
    //要求:无
    //
    //*****
    //#define enable_decrence.

    //*****
    //
    //允许应用程序在下载过程中执行就地数据解密。
    //如果连接,将调用此函数来执行的就地解密
    //固件下载期间收到的每个数据包。
    //
    // void MyDecryptionFunc (unsigned char * pucBuffer、unsigned long ulSize);
    //
    //此值优先于 ENABLE_PRECISION。 如果定义了这两者、
    //使用 BL_Decrypt_FN_HOOK 定义的挂钩函数被调用,而不是调用
    //以前定义的 DecryptData()存根函数。
    //
    //*****
    //#define BL_DecryptionFunc

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

    尊敬的 Charles:

    这是否意味着客户必须编写自己的闪存引导加载算法、或者 TI 是否提供了默认/模板闪存引导加载程序?

    此外、客户是否有可以从 driverlib 或类似的东西中复制/使用的解密算法、或者我们是否必须从头开始编写我们自己的解密算法(利用我假定的 AES 内部外设)。

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

    尊敬的 Robert:

    这是否意味着客户必须编写自己的闪存引导加载算法、或者 TI 是否提供了默认/模板闪存引导加载程序?

    [/报价]

     请参考 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\boot_serial 中的串行闪存引导加载程序示例作为起点。 此基于闪存的引导加载程序由 JTAG 接口加载到地址0x0。 引导加载程序加载并运行后、会将示例固件 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\boot_deme1下载到地址位置0x2800。 请运行这些示例来了解相关情况。 已为 UART 配置了此引导加载程序的 bl_config.h。 这是一个很好的模板、适合您为 USB 启动和修改。 您只需添加解密挂钩即可。  

    此外,客户是否有解密算法可以从 driverlib 或其他工具中复制/使用,或者我们是否必须从头开始编写我们自己的解密算法(利用我假设的 AES 内部外设)。

    TM4C123 ROM 引导加载程序不会自动为您进行解密、但可以选择将闪存引导加载程序配置为进行解密。 也就是说、TM4C123在 ROM 中确实存储了 AES 算法供用户使用。 有关详细信息、请访问 https://www.ti.com/lit/pdf/spmu367、参阅 TM4C123 ROM 用户指南。  

     

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

    尊敬的 Charles:

    感谢您、这非常有帮助。  对于 USB 引导加载程序、我是否需要使用 usblib 驱动程序库开发一个完整的应用程序、以便引导、枚举和支持指向软件的链接、软件应用程序会在其中使用 hid 或 bulk 之类的东西来发送加密映像?  我认为这是一个很普通的问题、答案是肯定的、但我只需确保不会遗漏一些东西、这些东西将使开发工作比从头开始开发自定义 USB 引导加载程序容易得多。

    我猜这个概念是、客户会使用 usblib 开发一个小型但功能齐全的 USB 应用程序、以接收、解密图像数据并将其写入正确的地址。  这种情况比 UART 更为复杂、因为您需要处理整个 USB 驱动程序库?

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

    尊敬的 Robert:

    对于 USB 引导加载程序,我是否需要使用 usblib 驱动程序库来开发完整的应用程序以引导、枚举和支持指向软件的链接,其中软件应用程序会使用 hid 或 bulk 之类的文件通过加密映像发送?  [/报价]

    已经有一个 USB 引导加载程序示例。 请参阅 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\boot_usb 示例。 boot_usb 和 boot_serial 的唯一区别是 bl_config.h 文件中的配置。 您可以在这两个示例之间进行比较、并注意 USB 引导加载程序已启用、以及与 USB 功能关联的引脚已定义。  

    您可以使用应用程序 boot_demo1.c 运行 boot_USB 引导加载程序 boot_usb 示例已经处理了 所有需要的 USB 初始化、因此、如果应用程序本身不需要使用 USB 控制器、则 boot_deme1中不会执行任何操作。  

    有关将跳回 USB 引导加载程序的更真实的 USB 应用程序、请参阅  C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\boot_demo_usb。 注意这是 TM4C129器件的应用示例。 此示例将跳转到 ROM 引导加载程序、而不是闪存引导加载程序。 但您可以轻松移植到 TM4C123并修改基于闪存的引导加载程序。 在此 boot_demo_USB 应用中、它成为一个复合 USB 器件 、通过人机接口器件类支持鼠标、还发布了运行时器件固件升级(DFU)功能。

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

    谢谢查尔斯!