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.

[参考译文] BOOSTXL-CC3135:移植查询:iMX RT1052 FreeRTOS

Guru**** 2394295 points
Other Parts Discussed in Thread: CC3135

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/932770/boostxl-cc3135-porting-query-imx-rt1052-freertos

器件型号:BOOSTXL-CC3135
主题中讨论的其他器件:CC3135

您好!

我们正在尝试使用 FreeRTOS 移植适用于 NXP-iMX RT1052的主机驱动程序。

FreeRTOS 的操作系统适配层是否有移植示例?

我尤其对 #define SL_SyncObjCreate (pSyncObj、pname)有疑问。

根据我的当前实施、

user.h:------------

#define _SlSyncObj_t   SemaphoreHandle_t

#define SL_SyncObjCreate (pSyncObj、pname)  SEM_INIT_fo (pSyncObj、0、0)

CC_PAL.c:--------

int SEM_INIT_fo (SemaphoreHandle_t * sem、int pshared、unsigned value)

  SemaphoreHandle_t SEM_hndl;

  SEM_HNDL = xSemaphoreCreateCounting ((UBaseType_t) 65536、(UBaseType_t) value);
  SEM = SEM_HNDL;

  if (NULL =SEM_HNDL)
  {
    返回-1;
  }
  其他
 {
   返回0;
 }

您能否就此实施提供建议?

此致、

Aniket。

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

    尊敬的 Aniket:

    有关将 CC3135主机驱动程序移植到 FreeRTOS 的示例、我建议您查看 SimpleLink SDK Wi-Fi 插件https://www.ti.com/tool/download/SIMPLELINK-SDK-WIFI-PLUGIN 中的 FreeRTOS 端口

    该插件具有一个主机驱动程序端口、可连接到 MSP432平台、并且除了 TIRTOS 之外还支持 FreeRTOS。 这种支持是通过在 MSP432 SDK 中实现的 POSIX 层实现的:https://www.ti.com/tool/download/SIMPLELINK-MSP432-SDK

    此致、
    Michael

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

    您好、Michael、

    我们已经参考了您建议的两个插件。

    但通过 POSIX 支持 FreeRTOS。 在本例中、我们不使用 POSIX。

    我们已经实现了 OS Adaptaion 层的所有函数、但对 sl_SyncObjCreate 的实现有疑问。

    您能否提供有关 sl_SyncObjCreate 代码实现的建议?

    此致、

    Aniket。

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

    您好、Michael、

     在普通 FreeRTOS 中是否有关于 sl_SyncObjCreate 代码植入的任何更新?

    此致、

    Aniket。

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

    尊敬的 Aniket:

    对于 POSIX 函数、SimpleLink SDK 应具有可将给定 POSIX 调用转换为纯 FreeRTOS 的移植文件。 例如,在 SmithpleLink Wi-Fi 插件中提供的主机驱动程序端口中使用的 SEM_INIT()函数的定义如下:

    int sem_init (sem_t *信标、int pshared、unsigned value)
    {
    sem_obj * obj =(sem_obj*)(semaphore->freertos);
    
    /* TODO 对象大小验证*//
    assert (sizeof (SEM_obj)<= sizeof (SEM_t));
    
    if (value > SEM_Value_MAX){
    errno = EINVAL;
    返回(-1);
    }
    
    /* FreeRTOS xSemaphoreCreateCounting()创建一个队列
    * length maxCount、其中 maxCount 是它的最大计数
    *信号量应该会达到。 看起来应该是这样的
    *好的、因为信标队列的项目长度为0、所以
    *分配的内存不依赖于 maxCount。
    *
    obj->sem = xSemaphoreCreateCounting ((UBaseType_t) SEM_Value_MAX、
    (UBaseType_t)值);
    
    if (obj->sem == NULL){
    errno = ENOSPC;
    返回(-1);
    }
    
    返回(0);
    }
    

    所有 POSIX 到 FreeRTOS 函数的完整实现均可在 MSP432 SDK 的/source/ti/posix/freertos 中找到。

    或者、您可以查看 DPL 中源驱动器函数的实现。 在 user.h 中,sl_SyncObjCreate()的替代方法是 SemaphoreP_create_handle ()。 它在 kernel/freertos/DPL/SemaphoeP_freertos.c 的普通 FreeRTOS 中定义:

    /*
    === SemaphoreP_con构===
    /
    SemaphoreP_Handle SemaphoreP_con构(SemaphoreP_Struct*句柄、
    unsigned int count、SemaphoreP_Params * params)
    {
    SemaphoreHandle_t sem =空;
    
    #if (configSUPPORT_STATICE_allocation = 1)
    SemaphoreP_Params semParams;
    if (params =NULL){
    参数=半参数(&S);
    SemaphoreP_Params_init (params);
    }
    
    if (params->mode =SemaphoreP_Mode_Counting){
    #if (configUSE_Counting_semaphores ==1)
    /*
    *信标队列的大小与 MAXCOUNT 无关。
    *
    * FreeRTOS xSemaphoreCreateCounting()出现在中
    要创建的 xQueueCreateCountingSemaphore()中的*代码
    *长度为 maxCount 的队列,其中 maxCount 是
    *信号量应达到的最大计数。
    *但是,队列项目大小(queueSEMAPHORE_Queue_item_length),
    *为0、因此没有为队列项目分配实际内存。
    *因此,我们可以将任何非零数字作为最大值传递
    *信标计数。
    *
    sem = xSemaphoreCreateCountingStatic ((UBaseType_t) MAXCOUNT、
    (UBaseType_t) count、(StaticSemaphore_t *) handle);
    #endif
    }
    否则{
    sem = xSemaphoreCreateBinaryStatic ((StaticSemaphore_t *) handle);
    if ((SEM!= NULL)&&(count!= 0)){
    xSemaphoreGive (SEM);
    }
    }
    #endif
    
    返回((SemaphoreP_handle) sem);
    } 

    我建议您查看 MSP432 SDK 中的 POSIX 到 FreeRTOS 抽象层移植文件、以了解更多移植详细信息。

    此致、

    Michael

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

    您好、Michael、

    感谢您的回复。  

    我注意到 SemaphoreP_CREASE_Handle()在 未定义 sl_platform_multi_threaded 时用作替代。

    在 iMX RT1052上使用 FreeRTOS 时、您对 sl_platform_multi_threaded 有何建议? 是否定义它。

    此致、

    Aniket。

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

    尊敬的 Aniket:

    如果您使用的是 FreeRTOS、则应定义 SL_platform_multi_threaded。

    此致、

    Michael

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

    Michael、

    感谢您的回复、

    此致、

    Aniket。