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.

[参考译文] 66AK2H06:EVMK2HX -请告诉我如何在 u-boot 中运行 DSP 内核。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1129940/66ak2h06-evmk2hx---please-tell-me-how-to-run-dsp-core-in-u-boot

器件型号:66AK2H06
主题中讨论的其他器件:OMAPL138OMAP3530

我想在 U-boot 中加载并执行 DSP .out (elf)文件。

它使用 u-boot 的 load_elf_image_shdr()函数进行加载。

但是、DSP 不运行、因为 DSP 入口点设置和复位代码不正确。

请输入用于 DSP 应用起点设置和复位的 U-boot 代码。

谢谢你。

int do_bootdsp (cmd_tbl_t * cmdtp、int 标志、int argc、char * const argv[])

unsigned long addr;/* ELF 映像的地址*/
char *sload,*saddr;
unsigned long num=0;

sload = saddr = NULL;
如果(argc == 3){
sload = argv[1];
saddr = argv[2];
}否则、如果(argc == 2){
如果(argv[1][0]='-')
sload = argv[1];
其他
saddr = argv[1];

如果(saddr)
Addr = simple_strtoul (saddr、NULL、16);
其他
Addr = load_addr;

如果(!valid_elf_image (addr))

printf ("无效的 elf 图像.\r\n");//JSG
返回1;


/*保持复位*/
DSP_RESET_ASSERT ();


if (sload && sload[1]='p'){
Addr = load_elf_image_addr (addr);

否则{
Addr = load_elf_image_shdr (addr);


printf ("##正在以0x%08lX...\n"、addr 启动 DSP 的应用);

/*设置 DSP 复位矢量*/
DSP_entry_point (addr);


/*释放复位*/
DSP_RESET_deassert();

返回0;

void DSP_entry_point (无符号长 addr)

uint8_t 内核= 0;

/*写入引导地址*/
*(uint32_t *)(dsp_magic_address |(1<<28)|(内核<<<24))= addr;

空 DSP_RESET_ASSERT (空)

空 DSP_RESET_DEASSERT (空)

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

    Jeong、

    请让我理解您的问题。

    --

    您想在 DSP 内核上运行 DSP 应用吗?  

    U-boot 是  66AK2H06 ARM 内核的引导加载程序。 是否要从 u-boot 启动 DSP 应用?

    --

    您使用的软件包的名称和版本。 请提供您下载的链接?

    此致

    Shankari G

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想在 DSP core0上运行 DSP 程序。 
    我想在 arm0上的 u-boot 中执行此操作。 
     
    我使用 evmk2hk 进行测试。 

    至于引导序列、u-boot 在 arm0上运行

    u-boot 在 arm0上运行 VxWorks

    并在 DSP core0上加载和运行 DSP 程序(.out)。


    U-boot 加载 DSP 程序、我想让 DSP core0运行。


    u-boot 版本为2019版本、即 evmk2hk SDK 版本。
    文件名为 k2hk EVM-Linux-SDK-src-06.03.00.106.tar.xz 

    我从 TI SDK 网站下载了它。
     https://www.ti.com/tool/PROCESSOR-SDK-K2H

    我了解在 u-boot 中运行 DSP core0需要以下过程。 
    1) 1)从 u-boot 读取 DSP .out (可执行文件)并将其加载到 DDR3存储器中。 2) 2)在.out 文件中找到入口点值、并将其设置为 core0引导地址。 3) 3)复位 DSP core0以在 DSP 引导地址运行 DSP 程序。 我无法实施上面的项目2和3。
     
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jeong、

    感谢您的清晰解释。

    让我检查并返回。

    此致

    Shankari G

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

    Jeong、

    Rajarajan 正在处理您的帖子。

    这似乎是节日假期。 期待他的回应延迟。

    此致

    Shankari G

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

    您好、Jeong、

    很抱歉耽误你的回答。 很遗憾、我仍在处理您的查询。

    我找到了以下链接、请仔细查看

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/509337/use-syslink-starting-dsp-application-from-u-boot

    https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/latest/docs/html/index.html

    谢谢、

    Rajarajan

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

    抱歉。

    由于其他项目的处理、我还无法确认。

    我们将很快检查并告知您结果。

    谢谢你。

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

    好的、Jeong。

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

    参考 TI 提供的引导代码、

    在 u-boot 中运行了 Omapl138 DSP。

    TI Omapl138启动代码如下所示。

      void SBL_DSPBringUp (uint8_t 内核、uint32_t 条目)
      {
      volatile uint32_t dspState;
      /*添加 DSP 初始化代码*/
      Board_unlockMMR();
      hSysCfg->HOST1CFG =条目;

      /*设置下一状态以启用*/
      CSL_PSC_setModuleNextState (CSL_PSC_DSP、PSC_MODSTATE_ENABLE);
      /*设置 GO 位以启动状态转换*/
      CSL_PSC_startStateTransition (1);
      /*等待电源状态转换完成*/  
      while (!CSL_PSC_isStateTransitionDone (1));
      /*等待状态转换*/  
      while (CSL_PSC_getModuleState (CSL_PSC_DSP)!= PSC_MODSTATE_ENABLE);
      /*触发 DSP 本地复位*/
      CSL_fins (hPscRegs0->MDCTL[CSL_PSC_DSP]、PSC_MDCTL_LRST、1);
      }

    66ak2h 也通过参考下面的 TI 代码进行了测试。

    下面的引导代码也使用 IPC、syslink 也使用 IPC  函数。

      void SBL_DSPBringUp (uint8_t 内核、uint32_t 条目)
      {
      /* IPC 确认*/
      hBootCfg->IPCAR[内核]= 0xFFFFFFF0U;

      /*写入引导地址*/
      *(uint32_t *)(dsp_magic_address |(1<<28)|(内核<<<24))= entry;

      /* IPC 生成*/
      hBootCfg->IPCGR[内核]=(1 << 31)| 1;

      }

    到目前为止、我已经找到了一种在不使用 IPC 的情况下唤醒诸如 omapl138之类的 DSP 的方法。

    现在、我认为使用 syslink API 在引导地址运行 DSP 内核是正确的。

    但它看起来不是很容易实现的。

    syslink API 似乎支持以下设备。

    > syslink_2_21_03_11 - products.mak
    受支持器件的#列表(选择一个):OMAP3530、OMAPL1XX、TI816X、TI814X
    # TI813X、TI811X

    感谢您迄今提供的帮助。

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

    您好、Jeong、

    是的、对于 OMAP L138、此支持可用。 但是、在 Keystone 2器件中、源代码中不提供该功能。  

    [引用 userid="135830" URL"~/support/processors-group/processors/f/processors-forum/1129940/66ak2h06-evmk2hx---please-tell-me-how-to-run-dsp-core-in-u-boot/4207597 #4207597"]

    到目前为止、我已经找到了一种在不使用 IPC 的情况下唤醒诸如 omapl138之类的 DSP 的方法。

    现在、我认为使用 syslink API 在引导地址运行 DSP 内核是正确的。

    [/报价]

    是的、您所做的是非常好的。 但是、请确保寄存器和地址与 K2H 器件同义、并使用 K2H 器件交叉验证 OMAP L138寄存器(和地址)。  

    [引用 userid="135830" URL"~/support/processors-group/processors/f/processors-forum/1129940/66ak2h06-evmk2hx---please-tell-me-how-to-run-dsp-core-in-u-boot/4207597 #4207597"]

    但它看起来不是很容易实现的。

    [/报价]

    请分享您的疑问、我们的工程师将会提供您的意见。

    谢谢、