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.

[参考译文] CCS/CC3120MOD:CC3120MOD 至 DSP

Guru**** 2769425 points

Other Parts Discussed in Thread: CC3120MOD, TMS320C6657, SYSBIOS, CC3120

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/903966/ccs-cc3120mod-cc3120mod-to-dsp

器件型号:CC3120MOD
Thread 中讨论的其他器件: TMS320C6657SYSBIOS

工具/软件:Code Composer Studio

您好!

我的目标是将 Simplelink 主机驱动程序移植到 TI 的 DSP 平台、在多线程模式下与操作系统一起运行。

我的 Simplelink 器件是 CC3120MOD、软件开发环境是 CCS9.2 + simplelink_sdk_wif_plugin_2_40_00_22、主机是 TMS320C6657、主机接口是 UART。

在工程属性的 General 选项的 Products 页面上、我使用"ti.targets.elf.c66"作为 Target、并使用"ti.platforms.evm6657"作为 Platform。

在 cc_PAL.c 中,我省略了所有与信号量相关的函数(Semaphore_create_handle、SemaphoreP_delete、...) 和 Mutex_Related 函数(Mutex_create_handle、Mutex_lock、...) 和 TimerGetCurrentTimestamp()。

现在,我可以成功发送数据(UDP 协议,从具有 func‘sl_Sendto’的 DSP),但无法接收数据(具有 func 'sl_recvfer')。

我认为'sl_recv'失败的原因只是省略了函数。 实际上、其他函数(例如'sl_SendTo')调用的成功应该是由于超时机制。

是否有任何方法可以获得有关此问题的支持?
或者如何将 DPL 移植到我的项目?

提前感谢、

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

    为什么您省略互斥和信标函数? 这些是多线程解决方案所需的。

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

    因为编译失败。

    如何将 DPL 移植到我的项目,请?

    谢谢。

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

    DPL 是什么意思?

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

    在 cc_para.c 中, 互斥量和信标函数 调用一些其他函 数(包括 SemaphoreP_Params_init、SemaphoreP_create 等),这些函数位于一个路径,它是“C:\ti\simplelink_msp432p4_sdk_3_30_00_13\kernel\nortos\DPL”。  为了成功编译,我应该将这些函数导入我的项目。

    现在、 我已经导入了三个文件(SemaphoreP_tirtos.c,MutexP_tirtos.c,ClockP_tirtos.c)并成功构建 。 但有一个新问题:  

    运行时、函数 sl_Start 未返回。  跟踪调试发现程序在此行中崩溃:

    verify_RET_OK (_SlDrvWaitForInternal观察 事件(ObjIdx、
    init_complete_timeout、
    sl_opcode_device_INITCOMPLETE);

    请帮助进行分析。

    真诚的感谢!

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

    您将需要调试主机接口线路:nRESET/NHIB、SPI 和 IRQ。

    您是否移植了 DPL 代码? 您使用的是什么操作系统?

    基本上、您应该已经更改了 cc_PAL 以调用操作系统的相关系统调用、而不是使用 DPL。

    如果移植正确、则问题可能出在硬件(配置)上。

    BR、

    Kobi

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

    您好!

    1)我使用 UART 作为主机接口。 我已经调试了这些行。 很好。

    2)我使用 TI SYS/BIOS V 6.35.4.50的操作系统。我导入了三个文件(SemaphoreP_tirtos.c,MutexP_tirtos.c,ClockP_tirtos.c)并成功构建 。

    :您的说明

    基本上、您应该已经更改了 cc_PAL 以调用操作系统的相关系统调用、而不是使用 DPL。

    我应该更改 cc_pal.c.

    但根据 c_PAL.c 的模板、我不知道如何操作。

    例如:在 cc_PAL.c 中,函数'Semaphore_create_handle'为:

    int semaphore_create_handle (Semaphore_handle* pSemHandle)

    SemaphoreP_Params 参数;

    SemaphoreP_Params_init (&params);
    #ifndef sl_platform_multi_threaded
    params.callback = tiDriverSpawnCallback;
    #endif
    (*(pSemHandle))= SemaphoreP_create (1、&params);

    if (!(*(pSemHandle)))

    return(-1);

    返回(SemaphoreP_OK);

    在函数中,'SemaphoreP_create 调用 'ti_SysBIOS_KNL_Semaphore_create'。  

    那么,我应该如何更改?

    你可以 举个例子吗?

    谢谢!

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

    您是否正在使用 TI-RTOS?

    如果不是、您应该在平台上的操作系统中调用相当于信标创建的函数。

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

    是的、我使用的是 TI_RTOS。

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

    然后,您可以参考 MSP432 SDK (http://www.ti.com/tool/SIMPLELINK-MSP432-SDK) ,并查找 TI-RTOS 的 DPL 实现(在 kernel/tirtos/packages/ti/dpl 下)。

    BR、

    Kobi

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

    是的、 我导入了三个文件(SemaphoreP_tirtos.c,MutexP_tirtos.c,ClockP_tirtos.c)并成功构建 。'"

    然后,运行 MyProject.out,它在 sl_Start 中出现 stunk。  

    继续跟踪,发现 sl_Start 在函数'SemaphoreP_pend'中出现 stunk。

    函数原型为“SemaphoreP_Status SemaphoreP_pend (SemaphoreP_Handle handle、uint32_t timeout)”。

    该函数被卡住的原因是 timeout = 0xffffffff。

    为什么是这样? 它来自?

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

    sl_Start 激活网络处理器、然后阻止信号量、直到 NWP 发出初始化完成中断。

    我认为您应该开始调试 HW 线路(nRESET、SPI/UART 和 HOST_INTR)。

    基本上、Simplelink "spawed"线程(您需要初始化)应该由中断调用并释放信标。   

    有关更多详细信息、请参阅数据表(www.ti.com/.../cc3120.pdf)和 NWP 编程人员指南(www.ti.com/.../swru455j.pdf)。

    BR、

    Kobi

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

    感谢您的快速回复。

    simplelink"spawed"线程(需要初始化)意味着什么?

    在 PAL.c 模板的 CC_中,有一个回调函数“tiDriverSpawnCallback”。  这是您所说 的"simplelink"spawed"线程吗?  

    我‘例程“power_measuring_MSP_EXP432P401R_nortos_CCS ”,但 我没有找到 哪个程序启动了此线程。

    另一个问题是:在 PAL.c 模板的 CC_中,有  一  个中断服务例程‘HostIrqGPIO_callback’。 它调用函数"g_Host_IRQ_Hndlr"。 我找不到 原型。

    我可以提供更多指导吗?

    真诚的感谢!

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

    所有示例都演示了如何使用 simplelink sawn 线程。 它基本上是一个线程上下文、需要由调用 sl_Task 的应用程序创建。 必须在调用 sl_Start 之前创建该线程。

    例如:

    /*创建 SimpleLink sawn 线程*/
    pthread_attr_init (&attr);
    priParam.sched_priority = 9;
    pthread_attr_setschedparam (&attr、&priParam);
    pthread_attr_setstacksize (&attr、2048);
    pthread_create (&slSpawnThread、&attr、sl_Task、NULL);

    BR、

    Kobi

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

    您好!

    现在我已经调试了所有 硬件系列、它们都很好。

    现在我的问题是: 当我的程序调用函数'sl_Start'并 接收中断时,输入中断 服务 例程‘HostIrqGPIO_callback’,然后崩溃:

    [C66xx_0] A0=0x0 A1=0x8
    A2=0x0 A3=0xAA
    A4=0x80067210 A5=0x800aa16e
    A6=0x7 A7=0x20
    A8=0x0 A9=0x80
    A10=0x0 A11=0x800322d4
    A12=0x0 A13=0x0
    A14=0x0 A15=0x2
    A16=0x8004d510 A17=0x0
    A18=0x0 A19=0x0
    A20=0x859ba8 A21=0x1
    A22=0x859b9c A23=0x859b8c
    A24=0x859ba4 A25=0x859b94
    A26=0x859ba0 A27=0x859bac
    A28=0x1 A29=0x859bb4
    a30=0x859b90 a31=0x859bb0
    B0=0x859b80 B1=0x859b88
    B2=0x0 B3=0x1
    B4=0x0 B5=0x1
    B6=0x859b78 B7=0x800a79b7
    B8=0x859b28 B9=0x859b98
    B10=0x859b68 B11=0x18
    B12=0x0 B13=0x80065664
    B14=0x2 B15=0x859b30
    B16=0x859b70 B17=0x1
    B18=0x859b74 B19=0x859b7c
    B20=0x800a7a36 B21=0x859a98
    B22=0x80063ebc B23=0x0
    B24=0x858b3c B25=0xe03512a3
    B26=0x10f10000 B27=0x859ab8
    B28=0x0 B29=0x859ab8
    B30=0xffffffB31=0xffffffff
    NTSR=0x66666666
    ITSR=0x36363636
    IRP=0x800322d4
    SSR=0x800a7adb
    AMR=0xffffff0
    RILC = 0x0
    ILC = 0x2
    0x0时出现异常
    EFR=0x2 NRP=0x0
    内部异常:IERR=0x1
    取指令异常
    TI.SYSBIOS.family.c64p.exception:第255行:E_exceptionMin:PC = 0x00859a98、sp = 0x800a760d。
    要查看更多异常详细信息、请使用 ROV 或设置"ti.sysbios.family.c64p.exception.enablePrint = true;"


    xdc.runtime.Error.raise:终止执行

    然后,跟踪 ‘HostIrqGPIO_callback’,当单步执行 g_Host_IRQ_Hndlr (0)时,会发生上述错误。

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

    您好!

    G_Host_IRQ_Hndlr 应该一品脱到"_SlDrvRxIrqHandler"-您看到的值(地址)是吗?

    注册在 sl_Start 期间完成。

    BR、

    Kobi