Keystone 2 中DSP与ARM通信的例子

Keystone 2 中DSP与ARM通信的例子

  • 秀才325分
    ARM_DSP_Communication_Queue.7z

     

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

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

  • 秀才325分
    ARM_DSP_Communication_IPC.zip

    例子2是使用IPC实现DSP与ARM之间的中断通信

  • 秀才325分
    例子1的补充文件和说明文档.7z

     

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

  • 秀才410分
    dsp core load gel failed.jpg

    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截图

  • 秀才410分
    uboot version.jpg

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

    见附件

  • 秀才325分

    你是按照附件中的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之后,

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

     

  • 秀才410分

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

  • 秀才410分

    hi,Jim Liao:

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

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

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

  • 举人1547分

    麻烦问一下链接里的问题http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/31537.aspx

  • 秀才410分

    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代码?请教,谢谢!

     

     

     

     

  • 秀才260分

    Hi,Jim Liao

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

  • 秀才30分

    你好,我们刚开始调试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

     

  • 秀才100分

    我用的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的工程,太复杂了,能提供稍微简单点的入门级别的例程吗?

  • 秀才161分

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

  • 秀才20分

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