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.

[参考译文] TMS320C6678:自定义程序加载

Guru**** 2562120 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/604824/tms320c6678-custom-program-load

器件型号:TMS320C6678

大家好、

在自定义上的加载过程时、我们面临一些困难

我们的 DSP。 默认情况下、DSP 应仅加载 Core0可执行文件。 然后

在运行时、Core0应该在 Core1上加载一个定制可执行文件。

我们在没有 Vail 的情况下搜索了 TI 官方文档和此论坛。

这一进程的理论是明确的,但却是执行的

需要更多信息。 我们正在寻找一个示例或一个步骤

分步指南。

可以有人帮助我们吗?


此致、

Giovambattista Astorino

Code Composer 6.2.0

PDK 2.0.4

SYS/BIOS 6.46.1.38

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

    我已将此内容转发给 c66x 专家。 他们的反馈应发布在此处。

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

    我知道、我们有不同的引导模式、可以从 NAND、NOR 或以太网、PCIe 等接口介质加载应用程序到内核中并让它们运行。 我们通常加载内核0、有时还会加载其他内核的内核0。 但我们没有使用内核0将内容加载到内核1中。 您是否有使用内核0加载内核1并运行的使用方案? 为什么需要此功能?

    对于我熟悉的 PCIe 引导案例、
    1)主机 PC 在 PC 和 C6678之间建立了 PCIe 链路、
    2) 2)然后 PC 将应用程序写入内核0、应用程序从.out 转换为数据数组
    3) 3) PC 写入 DSP 起始地址以使 core0运行

    此示例位于 mcsdk_2_01_02_06\tools\boot_loader\examples\pcie 下、请阅读 readme.pdf。 您不需要对示例代码进行太多的读取。 根据您的情况、内核0是 PC、内核1是用于上述讨论的内核0:

    --有一个应用程序.out 打算在内核1中运行,您需要将其转换为数据数组,然后 core0只是将该数组的逐块写入 core1的内存,请参阅 pciedemo.c 中的 pushData()
    --内核0将内核1的 DSP_BOOT_ADDRESS 写入起始地址
    --内核0向内核1发送 IPC 中断,内核1应开始运行

    总之、.out 文件需要转换为可引导阵列格式、core0具有解析此可引导阵列并将其写入 core1的代码、然后 core0发送中断以启动 core1。

    希望这能有所帮助!

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

    尊敬的 Eric:

    感谢您的回复。 我很难找到这个例子。 我没有任何 mcsdk、而是 PDK 2.1.4。 我找不到包含示例的目录、尤其是.pdf 指南

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在下找到相同的示例:
    pdk_c667x_2_0_4\packages/ti\boot\examples\pcie

    以下是演示从 Core0唤醒辅助内核的指令和示例:
    processors.wiki.ti.com/.../KeystoneI_Bootloader_Resources_and_FAQ

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

    您好、Rahul、

    感谢您的回复。 我仍然对该示例有一些问题。

    我在 C:\ti\pdk_c667x_2_0_4\packages 中使用了 pdkAppImageCreate.bat 脚本

    示例 CCS 工程、但它找不到该特定示例。

    我正在尝试从文件夹中的文件手动创建项目

    但我面临着许多编译错误。 是否有创建的脚本

    该特定示例的 CCS 项目?

    谢谢

    Giovambattista

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

    您好!

    Processor SDK RTOS 中缺少 pdf 文件、这就是我建议使用 MCSDK 的原因。 请参阅随附的。 您无需创建任何 CCS 工程、因为这是 PCIe 引导示例、我建议您阅读一些函数以了解可引导映像格式是什么、 然后、您使用内核0将映像写入内核1、就像在 PCIe 引导情况下主机 PC 将引导映像写入内核0一样。

    此致、Erice2e.ti.com/.../5850.README.pdf

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

    之前在 MCSDK 2.x 中、我们提供了 CCS 工程、可以导入和编译这些工程以重建示例。  在 Processor SDK RTOS 中、这些项目已迁移到基于 makefile 的构建、可以使用我们在此处提供的指令来构建这些构建:

    要使用 Windows 下安装的 Processor SDK RTOS 中的 make 文件构建相同的文件、可以按照以下说明操作:

    • 按照 Setup_Environment 所述设置 SDK 构建环境
    • 将目录更改为 Example and Build:
    CD [SDK 安装路径]/pdk_ _ /packages/ti/boot/examples/pcie/pcieboot_ddrinit /build
    
    gmake all
    
    CD [SDK 安装路径]/pdk_ _ /packages/ti/boot/examples/pcie/pcieboot_helloworld /build
    
    gmake all 

    要在 EVM 上运行这些示例、Eric 提供了说明硬件设置的自述文档

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

    您好!

    我在这项任务上仍然有一些问题。 我们有一个.out 文件、我们希望从 core0加载到 Coren。 我们使用了以下脚本:
    hex6x.exe
    - Bttbl2Hfile
    -hfile2array

    最后一个脚本的输出是一个.h 文件、其中仅包含一个8位元素排列的数组、该数组存储了原始.out。

    然后、Core0将指针写入每个其他内核的引导魔法地址上的该数组。 最后、Core0触发 IPC 中断以唤醒内核。

    问题是它不起作用。 我认为必须以某种方式操作8位元素数组、但我找不到有关它的文档。

    可以帮帮我吗?

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

    您好!

    "Core0随后将指针写入每个其他内核的引导神奇地址上的该数组。"  === >核心0需要解析此数组,并使用起始地址、长度... 然后将其写入其他内核1-7。

    请参阅 pciedemo.c 中的 pushData()

    格式如下所示:

    0x00、0x83、0xCD、0xE00x00、 0x00、0xD5、0xA00x00、0x83、 0x00、0x00、0xAC、0x45、0x8C、 0xF7、0x02、0x00、0x04、0x2A、 0x02、0x10、0x80、0x6A、

    0x6C、0x6E、0x10、0x4D、0xB2、 0…

    0x00、0x00、0x02、0x94、0x00、 0x84、0x77、0xDC、0x14、0x04、 0x04、0x00、0x00、0x00、0x12、 0x00、0x13、0x04、0x01、0x00、 0x00、0x00、0x22、0x00、
    0x13、0x04、0x02、0x00、0x00、 0x04、0x24、0x00、0x72、

    绿色是引导地址

    黄色表示第一个块的长度

    红色是第一个块的起始地址、红色后面是实数块数据。

    然后转到下一个块(长度、起始地址、数据)  

    请注意、通常有几个块。

    此致、Eric