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.

[参考译文] Starterware/TMDSLCDK138:刷写和引导 LCDK 的过程

Guru**** 2609925 points
Other Parts Discussed in Thread: OMAP-L138, SYSBIOS, TMDSLCDK138

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581941/starterware-tmdslcdk138-procedure-to-flash-and-boot-the-lcdk

器件型号:TMDSLCDK138
主题中讨论的其他器件:OMAPL138OMAP-L138SYSBIOS

工具/软件:Starterware

已尝试从闪存引导代码、但失败。

我创建了一个 ARM 项目、该项目只需将 GPIO 引脚切换为高电平和低电平即可。 (项目从空白处创建。 不包括 BIOS、NDK 等。) 我将编译配置设置为 Release。 已使用调试器运行它。 已使用示波器检查、并看到 GPIO 引脚按预期切换。

引导加载程序项目从 C:\ti\OMAPL138_StarterWare_1_10_04_01\build\armv5\cgt_ccs\omappl138\lcdkOMAPL138\bootloader 导入

我复制了"Release"文件夹下 GPIO ARM 项目的映射文件中的入口点地址、然后将其分配给"unsigned int Entrypoint"。 然后构建 boot.out 文件。

移动 C:\ti\OMAPL138_StarterWare_1_10_04_01\tools\AIS_gen 下的 boot.out 文件。 从以下位置获取 AIS GEN 配置文件:

http://processors.wiki.ti.com/index.php/L138/C6748_Development_Kit_(LCDK)#Procedure_to_Flash_and_boot_the_LCDK

打开 AIS GEN 并加载配置文件。 然后创建 boot.AIS 文件并将其置于 C:\ti\OMAPL138_StarterWare_1_10_04_01\tools\flash_writer 下

对于 ARM 项目、我构建了项目并创建了 arm.out 文件、并将其置于 C:\ti\OMAPL138_StarterWare_1_10_04_01\tools\out2rprc 下。 然后使用 out2rprc 工具创建 arm.bin 文件并将其移动到 C:\ti\OMAPL138_StarterWare_1_10_04_01\tools\flash_writer 下。

将 SW1切换为0101。 运行命令"sfh_OMAP-L138.exe -flash boot.AIS arm.bin -targettype OMAPL138_LCDK -flashType NAND -p COM6"并获得以下输出:

(AIS 解析):读取魔术字0x41504954。

(AIS 解析):正在等待 BOOTME... (立即加电或重置目标)
(AIS 解析):收到 BOOTME!
(AIS 解析):正在执行启动字同步...
(AIS 解析):正在执行 Ping 操作码同步...
(AIS 解析):正在处理命令0:0x58535901。
(AIS 解析):正在执行操作码同步...
(AIS 解析):正在加载段...
(AIS 解析):将13500字节段加载到地址0x8000000。
(AIS 解析):处理命令1:0x58535901。
(AIS 解析):正在执行操作码同步...
(AIS 解析):正在加载段...
(AIS 解析):将1440字节段加载到地址0x800034BC。
(AIS 解析):正在处理命令2:0x58535906。
(AIS 解析):正在执行操作码同步...
(AIS 解析):正在执行跳转和关闭...
(AIS 解析):AIS 完成。 跳转至地址0x8000000。
(AIS 解析):正在等待完成...
(AIS 解析):引导成功完成。

正在等待 OMAP-L138上的 SFT ...

在0x00000000处刷写 UBL boot.AIS (23512字节)

100%[████████████████████████████████████████████████████████████]
通过 UART 传输的图像数据。

100%[████████████████████████████████████████████████████████████]
UBL 编程完成


闪存应用 arm.bin (2608字节)

100%[████████████████████████████████████████████████████████████]
通过 UART 传输的图像数据。

100%[████████████████████████████████████████████████████████████]
应用程序编程完成


操作成功完成。

将 SW1切换回0111并按下电路板上的复位按钮。 但是、看不到 GPIO 切换。 引导失败。  

基本上、我在上面写的步骤遵循 processors.wiki.ti.com/.../OMAPL138_StarterWare_Booting_And_Flashing 下的步骤

您能给我一些关于这个问题的建议吗? 我是否错过了其他内容?

谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将此主题移至 L138论坛。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一些猜测。 我避免了使用引导加载程序和 SFH 实用程序。 理论上、您不需要在引导加载程序代码中设置 Entrypoint 变量。 Entrypoint 值取自 out2rprc 放入 bin 文件的头文件。 引导加载程序和 SFH 实用程序必须同意应用程序在 NAND 中的位置。 从文档和代码来看、引导加载程序假定偏移为6x128KB、SFT 假定块1。 SFH/SFH 代码是非常钝的 C#代码、我无法确定 NAND 块的大小。 您可能必须使用128KB 或64KB 的 image_offset 来编译引导加载程序。

    如果不需要引导加载程序、则始终可以直接引导到 GPIO 应用程序中。 像使用生成 arm.bin 的引导加载程序一样、通过 AISGEN 处理 arm.out。 使用 SFH 进行编程:
    sfh_OMAP-L138.exe flash_noubl.arm.AIS -targettype OMAPL138_LCDK -flashType NAND -p COM6
    或者使用 NANDWriter 项目并使用 JTAG 对其进行编程。 速度稍慢、但并不复杂。 独立执行的关键任务是 GEL 脚本中的代码必须移动到实际代码或 AISGEN 配置中。 通常、AISGEN 必须使时钟运行并初始化 DRAM。 如果您从 L2或 L3 RAM 执行、则可以避免使用 DRAM 器件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    LCDK NAND 使用 u-boot 进行预闪存、因此您可以在将映像写入 LCDK 板之前擦除 NAND。 此处提供了擦除 NAND 的指令:

    sfh_OMAP-L138.exe-targettype OMAPL138_LCDK -flashType NAND -p COM6 -擦除

    如 Norman 所n`t、对于简单的 ARM 应用、您不需要提供入口点、因为 AISGen 工具将解析二进制文件并找到入口点。 您能否共享用于生成引导映像的 AIS 配置?

    调试引导问题的另一种方法是运行调试 GEL 并检查 ROM 引导加载程序是否正确执行。

    请在引导失败时连接到 ARM/DSP 内核、并运行 GEL 文件(在连接之前删除其他 GEL 文件、否则系统状态将更改)。 在此处提供日志以进行分析。

    此致、

    Rahul  

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

    e2e.ti.com/.../8345.LCDK_5F00_AISGen_5F00_Config.cfg

    感谢 Norman 和 Rahul。 感谢你的帮助。

    我现在可以从闪存引导 ARM 项目。 我尝试引导 DSP 项目(示例项目 NDK_evm6748_elf_HelloWorld)遵循相同的过程、但失败了。 唯一不同的是入口点地址。 我为"Entrypoint"置零、并将从 Release .map 文件复制的_c_int00地址放入"DspEntryPoint"。 我附加了我使用的 AIS 配置文件。 如果您有一些想法、请提出建议。

    谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我从 C:\ti\OMAPL138_StarterWare_1_10_04_01\build\C674x\cgt_ccs\omapl138\lcdkOMAPL138\gpio 导入了另一个 DSP 项目、只需将 GPIO 引脚切换为 ARM 项目即可。 它可以从闪存成功引导。 因此、不确定 NDK 项目缺少什么。 请提供建议。

    谢谢、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我承认 TI Wiki 说要更改入口点变量、但代码似乎意味着 out2rprc 会自动将入口点放入段头。 您可以尝试将两个入口点都设置为零吗? 您使用的 out2rprc 命令行是什么? DSP 用例中的 ARM 应用是什么? 引导加载程序代码假定第一部分是 ARM 代码、第二部分是 DSP 代码。 将 Entrypoint 设置为非零可能会导致代码将第一部分认为是 DSP 代码。 如果您获得了正确的入口点、将 DspEntryPoint 设置为非零可能是可以的。 我想复杂的 NDK DSP 项目使用的入口点与简单的 GPIO 项目不同。 BIOS 项目在 main()之前运行了很多自动幻像功能。 我的印象是 StarterWare 引导加载程序被写入到引导加载程序 StarterWare 工程中。 我想加载 BIOS 项目可能会受到隐式支持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将 Entrypoint 和 DspEntryPoint 设置为零、引导失败。 我使用的 out2rprc 命令为:out2rprc HelloWorld.out helloWorld.bin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅此 Wiki 页面:
    processors.wiki.ti.com/.../OMAPL138_StarterWare_Booting_And_Flashing
    引导 ARM+DSP 系统
    out2rprc.exe [arm application].out [dsp application].out [application].bin
    您的 ARM 应用将是无限循环。 另一件事是、除非有意共享、否则您的 ARM 和 DSP 应用程序不能与存储器重叠。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Norman。

    加载了 ARM 和 DSP。 ARM 应用只是在无限循环中切换 GPIO。 DSP 是 NDK 样本 NDK_evm6748_elf_HelloWorld。

    我认为 ARM 和 DSP 应用程序不会重叠存储器。 以下是从两个映射文件复制的存储器配置:

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    输出文件名:
    入口点符号:"入口"地址:c1080000


    存储器配置

    名称 原点长度 已使用 未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    DDR_MEM c1080000 02f7FFFF 000089f4 02f7760b RWIX

    ============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    输出文件名:
    入口点符号:"_c_int00"地址:c6f10940


    存储器配置

    名称 原点长度 已使用 未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    irom 11700000 00100000 00000000 00100000 R X
    IRAM 1180000 00040000 00000000 00040000 RW X
    L3_CBA_RAM 8000000 00020000 00000000 00020000 RW X
    DDR c0000000 08000000 06f1f759 010e08a7 RWIX


    启动后、我看到 GPIO 切换、但网络无法正常工作。 看起来 ARM 可以成功引导、但 DSP 不能成功引导。 你有什么想法吗?

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

    e2e.ti.com/.../gel_5F00_info.txt

    e2e.ti.com/.../LCDK_5F00_AISGen_5F00_Config3.cfg

    我运行 GEL 文件并将信息复制到 GEL_info.txt。 使用 AISgen (LCDK_AISGen_Config3.cfg)修改配置并生成 AIS 文件、然后重复闪存和引导过程。 ARM 已引导(GPIO 切换)、但 DSP 未引导(无网络连接)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从您的地图文件摘录中、我认为 ARM 和 DSP 代码确实重叠了。
    已分配:
    ARM:C1080000至 C33FFFFFF-1
    DSP:C0000000至 C8000000-1
    已使用
    ARM:C1080000至 C10889f4-1条目 c1080000
    DSP:C0000000至 C6f1f759-1条目 c6f10940
    看起来 DSP 代码不使用 L3。 您可以将 ARM 代码移动到这里。 或进入高 DDR。
    另一件事是、您的 AIS 配置文件具有"配置 LPSC =错误"。 通常、代码将启用外设电源、因此这可能不是问题。

    您是否从仿真器运行了 ARM 和 DSP 代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Norman。

    -将 ARM 移至更高的 DDR:

    输出文件名:
    入口点符号:"入口"地址:c9080000


    存储器配置

    名称 原点长度 已使用 未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    DDR_MEM c9080000 02f7FFFF 000089f4 02f7760b RWIX

    -设置"配置 LPSC =真"

    我得到的结果相同、仅 GPIO 切换、但无网络连接。

    我从仿真器运行了 ARM 和 DSP。 将加载相同的输出文件。 按预期工作:GPIO 切换并具有网络连接。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我注意到、DSP 应用入口点与1024字节不对齐。 尝试在项目中查找 cmd。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将 ARM 代码移至高 DDR 是一个不错的选择。 我忘记了引导加载程序本身可能位于 L3 RAM 中。

    我不能再建议更多了。 模糊地记住有关编译 RAM 或 ROM 的内容。 RAM 意味着仿真器将初始化数据。 ROM 表示 main()之前的代码将初始化数据。

    现在不是很有帮助、但可能会晚些:
    processors.wiki.ti.com/.../Accessing_c_int00
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问题是 DSP 应用入口点对齐。 我修改了 DSP 应用的 cmd 文件。 最后、DSP (NDK)正在从现在开始进行引导。 非常感谢 Norman。 非常感谢您的帮助。

    再次感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴听到这个消息。 我不得不读出这方面的内容。 ARM 通过 HOST1CFG 寄存器设置 DSP 入口点。 该寄存器保留最低的10位。 因此、1024字节对齐限制。 仿真器没有此类限制。 它直接设置 PC。 该维客页面上的一些细印是必需的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Norman、

    如果我想从 SD 卡启动应用程序、有什么想法和建议? 您能否提供一些有用的链接和信息?

    谢谢、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有看到过 SD 卡引导的情况。 通常从 NAND 或 SPI 引导、然后是 SD 卡引导。 通常通过 u-boot。 ROM 引导加载程序直到最近才支持 SD 卡、并且不是很好。 它通过 SD 卡的前2MB 逐字节扫描魔术编号。 它不知道文件系统或文件。 在没有文件系统的情况下创建 SD 卡不是我必须做的事情。 不知道怎么做。 可能是 ISO 映像? 我无法想到任何链接。 您可能会很幸运地使用 TI 的 wiki。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Norman。 找到了一个链接
    processors.wiki.ti.com/.../How_to_boot_OMAP-L138_LCDK_from_SD_card

    我相信、它会讨论您刚才提到的 SD 卡的文件系统以及通过 U-Boot 引导的内容。 假设我可以在 SD 上刷写 U-Boot、应用程序代码如何? 指令对它没有太多的讨论。 我可能需要一个 Linux 平台来刷写 U-Boot 并格式化 SD 卡、我对吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这个问题上、你在前面。 看起来 u-boot 的 uflash 实用程序是一种魔法、可将二进制映像放入 SD 卡的第一部分。 从技术上讲、二进制映像不必是 u-boot。 它可以是您自己的引导加载程序。 uflash 实用程序可能需要 Linux 主机。 怀疑它已移植到 Windows。 但不知道。

    Starterware 引导加载程序包含 MMC 编译选项、但对于 AM335X 而言、它看起来很可疑。 因此、我怀疑它是否会编译。 该选项使用 CHAN 的 fatfs 代码。 因此、如果您设法为 SD 编译 StarterWare 引导加载程序、您的应用程序将是 SD 卡第二个分区上的 out2rprc 文件。 该分区将是真正的 DOS FAT16分区。

    如果使用 u-boot 作为引导加载程序、则有很多选项。 U-boot 功能相当全面、它了解 DOS 文件系统和 SD 卡。 您可以告诉 u-boot 将文件从 SD 卡加载到特定位置的存储器中并跳转到该存储器。 可能的问题是它不理解 out2rprc 文件。 您可能必须添加自定义代码或使用与 out2rprc bin 不同的格式。 除了加载 Linux 和 u-boot 可直接处理 Linux 内核文件之外、我从未将 u-boot 用于任何其他用途。

    如果您完全跳过引导加载程序、则可以将 ARM 和 DSP 应用程序打包到一个 AIS 文件中。 使用 uflash 将其编程到单个分区 SD 卡上。 让 ROM 引导加载程序加载这两者。 您需要将 DSP 唤醒代码添加到 ARM 应用。 这种战略也将与 NAND 合作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Norman。

    很抱歉、我应该发布新帖子。

    我在 e2e.ti.com/.../1230991上找到了 SD 卡项目(2045.starterware_C6748_mmcsd)

    我想通过打开/创建文件并读取内容来访问 SD。 这个项目能做到这一点吗? 我不熟悉如何访问 SD 卡。 访问之前是否需要格式化 SD? 您能否提供一些相关信息?

    谢谢、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该线程是 AM335X StarterWare SD 卡示例到 C6748的端口。 该项目的功能仅限于最初为 AM335X 编写的内容。 它只能从 FAT16格式的 SD 卡读取。 它无法写入或格式化。 这对于引导加载程序应该是可以的。 将 SD 卡移植到引导加载程序应该相对简单、因为两个代码都使用 CHAN FatFS 代码。 也许吧。 可能的问题是代码可能不支持分区。

    如果您需要目标上的写入/格式功能、其他人显然扩展了我的端口。 遗憾的是、没有人费心发布他们的更新。

    您需要从主机格式化 SD 卡。 TI Wiki 页面上的分区、格式和写入指令应适用于 Linux 主机。 Windows 不处理 SD 卡的多分区低级处理。 除非您可以找到第三方实用程序。 我自己也不必这么做。 从未研究过。 抱歉。 没有建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Norman。 您提到过使用 NANDWriter 项目并使用 JTAG 对其进行编程。 您能否提供一些说明或任何 TI Wiki 页面? 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已成功在仿真器上运行 NANDWriter。 已要求输入 AIS 文件"将二进制 AIS 文件名输入到闪存"。 那么、我是否需要加载两个文件(boot.AIS 和 app.bin -应用程序代码)? 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我上次查看时、NANDWriter 只接受一个 AIS 文件。 它与 StarterWare 引导加载程序/out2rprc 不兼容。 您可以使用 AISGEN 创建一个同时包含 ARM 和 DSP 应用的 AIS 文件。 无引导加载程序。 在 AISGEN GUI 中、有一个"+"按钮可用于添加第二个.out (DSP 映像)。 ROM 引导加载程序将加载并运行 ARM 映像、但要由 ARM 应用启动 DSP。 ROM 引导加载程序会将 DSP 代码加载到 RAM 中、但不会自动启动。 StarterWare 引导加载程序具有可复制的代码。

    否则、需要修改 NANDWriter 以支持 StarterWare 引导加载程序/out2rprc 要求。 您需要未经修改的 NANDWriter 来写入引导加载程序 boot.AIS。 您需要修改第二个 NANDWriter、以便在引导加载程序预期的偏移处对 ARM+DSP.bin 进行编程。 arm+DSP.bin 由 out2rprc 从 arm.out 和 dsp.out 生成。 或者、您可以修改 NANDWriter 以读取偏移地址进行编程。

    通常、大多数情况下不需要 StarterWare 引导加载程序。 它没有足够的智能来允许选择引导映像或现场升级。 我可以看到的 StarterWare 引导加载程序的唯一用途是用于从一种介质引导并切换到另一种介质的用户。 或者在某些引导模式下、介质限制了引导映像的大小。 允许引导至同一介质中的更大图像。

    在 TI Wiki 中、我似乎找不到关于 NANDWriter 的更多信息。 所有这些闪存实用程序都与 PSP 捆绑在一起。 现在、已经拆分到了
    sourceforge.net/.../
    模糊记忆的文档被埋在 PSP 软件包内的 PDF 中。

    如果 TI 似乎未能很好地解决这种情况、我认为这是因为 TI 关注的是这一顺序
    - ROM 引导加载程序加载 u-boot
    -u-boot 加载 Linux
    - Linux 加载 SYSBIOS+syslink 应用程序
    DSP 更多地是 ARM 主处理器的可编程协处理器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Norman。

    我通过 AISGEN GUI (app.AIS)生成了 AIS 文件、其中包含2个输出文件(我在 StarterWares 引导加载程序上使用的 gpioLed.out 和 HelloWorld.out)。 与我之前加载的 AISGEN 配置相同。 然后、我在仿真器上运行 NANDWriter 项目(将 NAND 宽度更改为16)、并在标准输出要求时输入 app.AIS。 完成后、我重新启动电源。 我希望看到 GPIO 像在 StarterWares 引导加载程序上一样切换、但没有输出。 你有什么想法吗? 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    假设
    arm <= gpioLed.out
    DSP <= HelloWorld.out
    我希望 ARM 应用能够运行、LED 会闪烁。 DSP/HelloWorld.out 将加载到内存中、但永远不会运行。 您必须向 gpioLed.out 添加代码以加载入口点并唤醒 DSP。
    它是在 ARM 和 DSP 之间交换的代码、
    ARM <= HelloWorld.out
    DSP <= gpioLed.out
    然后、HelloWorld 将运行、而 gpioLED 将不会运行。 ARM 端始终需要代码来唤醒 DSP。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Norman。 我看到 ARM 代码现在正在运行(GPIO 正在切换),但不是 DSP。

    我将以下代码从 bl_platform.c 复制到 ARM 项目的 main()中。
    /*写入 DSP 入口点*/
    HWREG (SOC_SYSCFG_0_regs + SYSCFG0_HOST1CFG)= 0xc21df800;

    /*打开 DSP 电源*/
    PSCModuleControl (SOC_PSC_0_regs、HW_PSC_DSP、PSC_POWERDOMAIN_PD_DSP、
    PSC_MDCTL_NEW_ENABLE);

    /*从复位中释放 DSP */
    HWREG (SOC_PSC_0_regs + PSC_MDCTL (15))|= PSC_MDCTL_LRST;


    但是、DSP 仍然没有运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我犯了一个错误。 AIS 文件未更新。 现在 DSP 正在工作。 再次感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    听起来不错。 您可能必须将 BL_platform_Config()的一部分复制到 ARM 代码。 该代码确实会启动一组时钟。 ARM 代码必须为 DSP 准备系统。 假设 ROM 引导加载程序没有通过 AIS 命令预置系统。 您必须小心地将 GEL 脚本命令从 ARM 和 DSP 项目移动到 AIS 配置或 ARM 代码或 DSP 代码。 在适当的地方。 不过、请不要尝试将 PLL 初始化两次。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Norman。 是否有任何实用程序软件、而不是运行 CCS 工程、以便通过 JTAG 下载代码(BIM/AIS 文件)用于生产用途?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是 XDS200。 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,我不知道。 通常我会交给生产人员、他们有自己的工具。 从未询问过他们使用什么。 我觉得他们使用 JTAG 进行电路板测试和编程、有时内存芯片会由供应商进行预编程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Andy、

    您可以使用 JTAG 和 CCS 命令行探索生产闪存的一个选项是名为 loadTI 的工具。
    processors.wiki.ti.com/.../Loadti

    不过、我们推荐用于生产闪存的工具是串行闪存工具、它使用 UART 闪存 AIS 映像。
    processors.wiki.ti.com/.../Serial_Boot_and_Flash_Loading_Utility_for_OMAP-L138

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

    我使用 loadti 运行了以下命令、但无法加载:
    loadti -c OMAPL138.ccxml gpioLed.out

    正在为指定目标配置调试服务器...
    完成
    目标:德州仪器 XDS2xx USB 调试探针_0
    正在连接到目标...
    testEnv.outFiles:gpioLed.out
    正在加载 gpioLed.out
    严重:C674x_0:GEL:文件:C:\ti\ccsv7\ccs_base\scripting\examples\loadti\gpioLed.out 与目标类型不匹配、未加载。

    严重:文件:C:\ti\ccsv7\ccs_base\scripting\examples\loadti\gpioLed.out
    与目标类型不匹配、未加载。
    严重:加载"gpioLed.out"时出错:文件:C:\ti\ccsv7\ccs_base\scripting\examples\loadti\gpioLed.out
    与目标类型不匹配、未加载。
    错误代码#4011、gpioLed.out 加载失败!
    正在中止!

    此外、如果我需要加载 ARM+DSP、我可以使用 loadti 吗?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Andy、

    对于与 loadTI 相关的问题、最好在 CCS 论坛而不是器件论坛上发帖。 我认为负载 TI 没有经过优化、无法与多核环境配合使用、因此它将尝试连接到分配了 CoreID0的内核、而在 OMAPL138中、CoreID0可能分配给 ARM。 gpiooled.out 是 ARM 二进制文件还是 DSP?

    此外、请参阅 loadTI wiki 上的这篇文章
    processors.wiki.ti.com/.../Loadti

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Rahul。 我创建了一个新的帖子"CCS/TMDSLCDK138:出现错误"Do not match the target type、not loaded (与目标类型不匹配、未加载)"。 使用 loadti"

    gpioLed.out 是一个 ARM 项目。

    谢谢。