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.

[参考译文] TMS320C6748:在 ROM 引导加载程序中调用代码

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/668199/tms320c6748-calling-of-code-in-rom-boot-loader

器件型号:TMS320C6748

我们在许多不同的自定义卡上运行 C674x DSP、我们唯一的非易失性存储器是一个大型 SPI 闪存。  在此 SPI 闪存的地址0处、我们有自己的自定义引导加载程序、除其他外、它提供了一种通过不同通信链路传输 AIS 文件(代码和数据)的方法、可将 AIS 编程到特定位置的 SPI 闪存、 然后将该代码和数据加载到 DSP RAM 并传输控制。

这一切都非常好。  我们使用您的 AIS 生成工具构建映像(引导加载程序和主代码)。  我们使用 UartHost.exe 程序对自定义引导加载程序(采用 UART 引导模式)进行编程。  这真的是一套非常好的工具、谢谢、但是在安装中有一个飞行器、也许可以修复/改进。

此时、自定义引导加载程序必须包含从 SPI 闪存读取 AIS、解析 AIS、然后执行各种 AIS 功能(当然主要是将代码加载到 RAM、也包括一些其他 AIS 功能)的代码。 但是、这样做似乎很遗憾、因为 ROM 加载程序已经具有用于此目的的所有代码、已完全调试、正在执行所有  AIS 功能、  

我的问题: 在我的自定义引导加载程序完成需要执行的操作后、它是否可以将 SPI 闪存地址传递给 ROM 加载程序并将控制传输到 ROM 加载程序、它将执行 AIS 和所有 AIS 功能的所有解析?  我认为这对很多用户都很有帮助、也许可以使用、但我已经阅读了大量参考资料、找不到有文件证明的方法来实现这一点。

即使这不是计划和记录的操作模式、访问 ROM 加载程序源代码的人员也可能会告诉我们一个寄存器来放置 SPI 地址、一个可以跳转到该地址的位置可以提供此功能。  

谢谢。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    团队将收到通知。 他们将直接在此处发布反馈。

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

    感谢您清晰地描述了您的用例、并感谢您对引导工具的反馈。 我们可以在第一个帖子中获得有关该主题的所有解释,而无需提出一组问题,这一点让人耳目一新:)

    n`t、我们不提供该器件的 ROM 符号表、原因有几个。 此器件的 ROM 支持安全启动、我们需要保护 ROM 符号位置、以防止软件恶意访问 ROM 的安全部分。 第二个n`t 是、这种方法非常支持密集型、以提供对 ROM 功能的访问、这些功能基本上是黑盒的、因为我们不打开源代码、所以在发生错误时没有调试的好方法。

    n`t 我仍然不明白为什么在设计次级引导加载程序时必须使用 AIS 格式。 初始化完成后、ROM 所做的唯一功能是从引导介质复制 ELF 二进制应用程序映像、并将其加载到器件存储器中、并通过跳转到入口点将控制权传递给应用程序。 这可以使用任何 ELF 加载程序或我们在作为 Processor SDK RTOS 一部分提供的次级引导加载程序中提供的 Out2RPRC 格式来实现:
    processors.wiki.ti.com/.../Processor_SDK_RTOS_BOOT_OMAPL13x

    次级引导加载程序还提供用于解析和加载 out2rprc 格式的应用程序映像的源代码。

    此致、
    Rahul

    PS:还可以选择使用 TI C6000编译器 Hex6x 工具支持的引导表格式。 但这会生成平坦的二进制文件、您可以将其作为二进制 blob 加载。