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.

Keystone 2 中DSP与ARM通信的例子

 

下面两个是在TCI6638 EVM板上验证过的DSP与ARM通信的例子(DSP与ARM都是小端模式):

例子1使用Queue实现DSP与ARM之间的数据通信

ARM_DSP_Communication_Queue.7z
  • 例子2是使用IPC实现DSP与ARM之间的中断通信

    ARM_DSP_Communication_IPC.zip
  •  

    附件是例子1的补充文件(gel文件等)和使用说明文档

    例子1的补充文件和说明文档.7z
  • jim Liao:

    你好,运行例子1使用queue通信出现下面问题。

    1.

    dsp c66x的corex 在connect target时候,连接会报错,dsp core在连接时候配置了

    你提供的gel文件,但是还是有error!初步看是Error while executing OnTargetConnect()。

    具体不知道什么错误,详见附件截图

    2.

    根据你的说明,利用com口修改arm的大端和小端,但是,板子起来之后,

    只看到TCI6638 EVM#,没有看到有BMC>出现,无法执行setboot命令。

    是不是我的uboot版本需要升级,详见附件2截图

  • uboot 版本是不是需要升级?没有BMC命令

    见附件

  • 你是按照附件中的ARM Cortex-A15 Bare-Mental Big-Endian CCS Project Operation Guide.pdf文档来设置环境的吗?

           1. CCS版本、USB转COM口的驱动

           2.设置boot DIP pins 为off off off on (no boot)

           3.装好驱动后,在device manager里面有两个 USB Serial Port(COM xx)

           BCM UART始终对应COM xx 数值高的Port口, 数值较低的Port 口对应的是SOC UART

    这部分具体可见:http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup#BMC_In-Field_Update

            我想你出现TCI6638 EVM#,应该是选择了数值较低的Port 来设置,你改用数值高的Com Port口试试。在BCM中设置好bootmode, 然后fullrst之后,

    你再试试是否还出现第一个问题。

     

  • 问题解决了  谢谢!之前arm没有加载gel

  • hi,Jim Liao:

    感谢你分享的两个examples,我已经在ccs上面都跑过了,现在,我想把arm上跑的

    工程代码,移植到linux系统上去跑,需要注意哪些问题尤其是arm代码移植?

    ti有没有现成的通信example,arm代码直接跑在linux上面而不是ccs下面的?

  • Jim Liao 说:

    你是按照附件中的ARM Cortex-A15 Bare-Mental Big-Endian CCS Project Operation Guide.pdf文档来设置环境的吗?

           1. CCS版本、USB转COM口的驱动

           2.设置boot DIP pins 为off off off on (no boot)

           3.装好驱动后,在device manager里面有两个 USB Serial Port(COM xx)

           BCM UART始终对应COM xx 数值高的Port口, 数值较低的Port 口对应的是SOC UART

    这部分具体可见:http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup#BMC_In-Field_Update

            我想你出现TCI6638 EVM#,应该是选择了数值较低的Port 来设置,你改用数值高的Com Port口试试。在BCM中设置好bootmode, 然后fullrst之后,

    你再试试是否还出现第一个问题。

     

    Jim:

    你好,你提供的例子,我在ccs下面都跑通过了,包括dsp和arm的。

    但是,现在,我想把arm程序移植到linux环境下面跑。然后dsp仍然在ccs下面跑。

    我现在困惑的是:在进行arm与dsp进行联调的时候,k2的启动方式应该是从ccs启动,

    还是arm启动,拨码开关是0001还是0010?

    1.如果是ccs启动

    我只能把arm与dsp程序都在ccs环境下进行跑。这不是我想要的。我想让arm程序跑在

    linux下面。

    2.如果是arm启动

    我实际搭环境测试了一下,如果uboot起来之后,nfs挂载启动正常之后,我在ccs上面

    加载dsp程序,并且运行之后, arm的串口信息就没有了,好像互相影响了,没办法同时

    在linux 上面调试arm代码,一方面在ccs下面跑dsp代码?请教,谢谢!

     

     

     

     

  • Hi,Jim Liao

      我现在在试着调试第一个例子,根据你所给说明,我遇到的问题是无法执行setboot这一步,不知道这个问题应该怎么解决?同时,还有我在CCS5.5上导入第一个例子的Cortex_A15_example_TICC工程,总是导入不成功,不知道有没有什么解决方法,谢谢!

  • 你好,我们刚开始调试6638的EVM板,根据5102.Build and Run U-boot and Linux Kernel on TCI6638 EVM-V2.1.pdf 这份手册,

    首先需要在BCM串口中设置setboot

    但是我们的BCM串口只有打印没有输入;我使用的是你们EVM板上的串口D,请问这个串口可以输入吗?

    另外拨码开关是 0 0 0 1

     

  • 我用的MCSDK3.1.4.7的版本,加载例子2后,修改了PDK的路径,重新编译工程后有很多错误,

    错误1:该函数传递变量太少,可是并没有找到该函数的声明 CSL_AIF2SerdesLaneEnable(CSL_AIF_CFG_REGS,i, serdes_cfg->laneRateScale[i]); 

    Description Resource Path Location Type
    #167 too few arguments in function call K2_Serdes_init.c /ARM_DSP_Communication_DSP/common line 185 C/C++ Problem

    错误2:没有定义某个变量

    gTimerRegs[tmrCfg->timer_num]->WDTCR = CSL_TMR_WDTCR_WDEN_MASK
    |(CSL_TMR_WDTCR_WDKEY_CMD1<<CSL_TMR_WDTCR_WDKEY_SHIFT);

    Description Resource Path Location Type
    #20 identifier "CSL_TMR_WDTCR_WDKEY_CMD1" is undefined K2_common.c /ARM_DSP_Communication_DSP/common line 694 C/C++ Problem

    有这两种错误,关于中断通信有没有具体点的文档,arm和dsp之间如何完成通信的。

    另外有没有基于共享内存空间的通信方式的例程,MCSDk开发包中,有一个image—processing的工程,太复杂了,能提供稍微简单点的入门级别的例程吗?

  • 建议使用MCSDK  3_01_01_04版本进行测试。http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk/3_01_01_04/index_FDS.html。

  • 请问你解决了在 linux上代码移植工作了吗,求分享

  • 请问移植到linux系统的问题解决了吗

  • hi,JerryWan

    我也遇到了和你一样的问题,请问怎么解决啊?

    谢!

  • 能否提供dsp是大端,arm是小端的数据通信吗?或者更具体说,我想知道arm corepac bridge的自动word swap如何配置和生效?这样的话,我的application里就不需要为大小端转换额外加代码了,执行效率也比软件swap快。谢谢!

  • 最近我需要调试这个功能,请问IPC 在ARM侧需要在Linux内核下开发驱动,注册中断吗?还是IPC中断在内核已经注册,直接使用即可?感谢!
x 出现错误。请重试或与管理员联系。
x 出现错误。请重试或与管理员联系。
x 出现错误。请重试或与管理员联系。