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.

[参考译文] EVMK2H:从内存引导 SYS/BIOS 应用。

Guru**** 2618835 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/659405/evmk2h-booting-sys-bios-app-from-memory

器件型号:EVMK2H

我一直在使用 EVMK2H 开发板、并且成功地进行了编译、然后从提供的通过调试器对 SYS/BIOS 进行初始化的 GPIO LED 闪烁示例中加载并运行相应的.out 文件。 我希望完成的下一个任务是将应用写入 NAND 或 NOR、并能够将应用加载到共享存储器或 DDR3、并在加电时从引导中执行。

在编译之前、我已经尝试将我想要从其执行的地址(0x8000000)放入链接器文件中、输出一个.b 二进制文件、然后通过 bToCCS 转换器运行该文件、然后通过 ccsAddGpHdr 和 ccsAddGptdlr 运行该文件。 之后,我通过 NORwriter 将应用程序放入 NOR 存储器。 成功刷写应用程序后、我会关闭板上的、而不会发生任何情况。

我在这里会出什么问题? 我是否忘记了一个步骤? 如果有任何帮助,将不胜感激。

此致。

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

    AL、

    您是否尝试直接使用 ROM 引导加载程序引导应用程序? 请注意、默认情况下、SYSBIOS 从 DDR 存储器运行、因此您需要初始化 DDR PLL 和 EMIF 接口、以便从该存储器位置加载和运行代码。 在调试环境中、CCS 目标配置中使用的 GEL 文件设置时钟、PSC 和 DDR 接口、使您能够加载应用。 在引导期间、需要使用代码来完成此操作、因为 GEL 文件和仿真环境不可用。  

    我猜您使用的是处理器 SDK RTOS、用于 SysBIOS 应用程序的软件应用程序开发。 如果没有、则应考虑使用此处所述的 Processor SDK RTOS 中的引导加载程序:

    http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_K2H/E/L

    这提供了一个次级引导加载程序、该引导加载程序将以与 GEL 文件相同的方式初始化 SOC 和外部存储器、并且还将加载应用程序。 该工具还提供闪存写入器、使您能够对引导加载程序和应用程序进行编程。

    希望这对您有所帮助。

    此致、

    Rahul

     

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

    Rahul、您好、感谢您的快速回答。 我尝试按照您提供的链接上的说明进行操作、并且在 NOR 开始闪存之前、大家都在运行 program_EMV 脚本。 我注意到屏幕上没有识别 NOR 刻录机实用程序版本的行、也没有指示正在刷写哪些扇区。 我运行了命令(在 cmd 中、在包含 program_evm.js 的处理器 SDK RTOS 目录中)"ccsv7/ccs_base/scripting/bin/dss.bat program_evm.js evmk2h-le nor"。 所有 GEL 初始化都正常、但之后、我的输出看起来与以下内容类似:

    写入器:预编译图像/SPI_FLASH_writer.out
    NOR:MLO

    开始加载 nor.bin
    启动编程 NOR

    结束编程或非

    在将引导模式从无引导切换到 ARM SPI 并重新引导后、我在终端窗口中看到我已连接到串行端口的信息未被打印。 我使用了包含的原始文件、因此我应该看到在次级引导加载程序之后执行的 POST 的结果。

    我是否在需要更正的设置或执行中出现了错误?

    谢谢、

    阿尔

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

    我n`t 了 program_evm.js 文件、因此我需要在我的末尾尝试此文件、以确认提供有关该方法的更多指导。

    我使用的方法是将 SPI_FLASH_writer.out 与 config 结合使用、并使用引导加载程序和应用程序二进制文件。 本文档的以下部分介绍了这一点:
    processors.wiki.ti.com/.../L

    请注意、SDK 尚不支持 NAND 引导。 当前实施仅支持 SPI NOR。 请通过加载 SPI 编写器.out 进行尝试、当我使其正常工作时、我将尝试更新与 program_evm.js 对应的指令。

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rahul、
    我能够使用 SPI_FLASH_writer.out 将 MLO 和应用(POST)刷写到 NOR。 但是、当我重新启动(在 ARM SPI 模式(0010)下)时、我没有从终端获取输出。 在我的配置文件中、我有:
    MLO 0
    应用80000
    这些是适当的偏移。 我假设 UART 的输出将在其闪烁时显示在同一端口/终端上。 为了安全起见、我仍然检查了所有其他可用端口、其中没有任何相关输出。 我甚至看不到 MLO 的输出、因此我认为 MLO 没有被执行。 我要执行的步骤是:

    1.确保电路板处于非引导模式、并在 CCS 中运行目标配置。
    2.连接到 ARM0并运行 GEL 初始化脚本。
    3.连接到 DSP0并加载 SPI_FLASH_writer.out
    4.运行 SPI_FLASH_writer.out 并在终端窗口上观察进度。
    5.拔下电路板并将 DIP 开关更改为 ARM SPI 模式。
    6.插回电路板并观察终端窗口。

    这是否是正确的设置/过程、因为我认为自己必须做一些事情、因为我没有获得输出?

    感谢你能抽出时间、

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

    我无法花时间重现此问题,并将在下周花时间查看此问题。 如果您可以压缩二进制文件并将其发布到 E2E 上,以便我可以使用二进制文件进行复制和调试,那将是一个不错的选择。

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

    AL、

    我能够在 K2H EVM 上重现此问题、并可以确认您的观察结果。 我还能够调试 SBL 代码在 Board_init 调用中失败。 进一步调试、我们相信问题是由 Processor SDK RTOS 中的 GCC 编译器更新引起的、并且能够通过对文件夹 pdk_k2hk 4_0_8\packages/ti\boot\sbl\soc\K2H 中 SBL_soc.c 文件中的 SBL_soc.c 代码进行少量修改来解决该问题

    请通过在代码中添加调用 SBL_a15EnableVFP11co()来更新文件以使用以下代码。

    int32_t SBL_socInit()
    {
    board_initCfg boardCfg;
    boardCfg = Board_init_PLL |
    Board_init_module_clock |
    Board_init_DDR |
    BOARD_INIT_PINMUX_CONFIG |
    Board_init_uart_stdio;
    
    #ifndef SECURE_boot
    void (* monitorFunction)(void (*)(void)、...);
    
    /* A15启动调用*/
    monitorFunction =(void (*)) 0x1000;
    
    (*监控功能)(SBL_setNSMode);
    (* monitorFunction)(SBL_a15EnableNeon);
    #endif
    
    SBL_a15EnableVFP11co();
    
    /*板库初始化。 *
    IF (Board_init (boardCfg))
    {
    返回-1;
    }
    返回0;
    } 

    请重建 MLO 文件并将其重新刷写到 SPI 闪存中。 我有使用此修复程序的代码、因此请在您的结尾处尝试、并告知我们。

    此致、

    Rahul