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.

[参考译文] RTOS/CC1310:Cortex-M MCU 上的 TI-RTOS 现在使用 pthread! 是否有入门文档?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/580380/rtos-cc1310-ti-rtos-on-cortex-m-mcu-now-using-pthreads-any-primer-docs

器件型号:CC1310
Thread 中讨论的其他器件: SYSBIOS

工具/软件:TI-RTOS

几个月内我没有接触到我的 CC1310硬件,但是在更新到 CCS v7.1并使用新的创建项目的方法-- Resource Explorer、用于 CC13x0的 SimpleLink SDK、TI-Drivers >空示例之后,我看到情况发生了很大的变化。

现在、"empty.c"的主线程有一个函数指针:

/*
=== mainThread ====
//
void * mainThread (void * arg0)
{
/* 1秒延迟*/
uint32_t 时间= 1;
... 

还有一个新的 main_tirtos.c、它使用 POSIX 线程(!????) API、我认为 TI-RTOS 现在已用作抽象层:

/* POSIX 头文件*/
#include 

/* RTOS 头文件*/
#include 

/*示例/板头文件*/
#include "Board.h"

extern void *mainThread (void *arg0);

/*以字节为单位的堆栈大小*/
#define THREADSTACKSIZE 1024

/*
=== main ====
*/
int main (void)
{
pthread_t 线程;
pthread_attr_t pAttrs;
struct sched_param primParam;
内部 REC;
内部 detachState;

/*调用驱动程序初始化函数*/
Board_initGeneral();

/*设置优先级和堆栈大小属性*/
pthread_attr_init (&pAttrs);
priParam.sched_priority = 1;

detachState = pthread_create_detached;
retc = pthread_attr_setdetachstate (&pAttrs、detachState);
如果(retc!= 0){
/* pthread_attr_setdetachstate()失败*/
while (1);
}

pthread_attr_setschedparam (&pAttrs、&priParam);

retc |= pthread_attr_setstacksize (&pAttrs、THREADSTACKSIZE);
... 

这与过去的工作方式(适用于 CC13x0 v1.00-ish 的 SimpleLink SDK)有很大不同。  TI 是否提供了任何培训文档,以使熟悉 TI-RTOS 线程功能(Task_*)的人熟悉如何使用 Pthreads 管理 RTOS?  或者在 TI-RTOS 2.21.00.06和新的 SimpleLink SDK for CC13x0之间有任何其他变化、它们似乎有自己的独立 TI-RTOS?

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

    尊敬的 Eric:

    作为新 SimpleLink SDK (CC13xx、CC26xx、MSP432和 CC32xx)的一部分、我们将所有驱动程序示例移至使用 POSIX。 这使得这些示例能够与 MSP432和 CC32xx 器件的 TI-RTOS 或 FreeRTOS 配合使用。 在用于1.30 SDK 的 SimpleLink Academy 中、我们举办了 POSIX 技术讲座。

    话虽如此、如果您不想使用 POSIX、则不必使用它。 Task_xyz 等  API 仍然存在并且完全受支持。 内核示例仍然使用它们。

    此外、驱动程序示例使用发布或调试配置工程、而不是应用程序中存在.cfg。 这样做是为了在 FreeRTOS 和 TI-RTOS 之间轻松移动。 它还提供了一种启用/禁用调试功能的简单方法。 您不必使用调试/发布内核项目。 您可以保持.cfg 的使用方式与使用它的方式相同。

    这是否能回答您的问题?

    Todd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Todd! 我发现您在顶部实施了 POSIX 层非常有趣、似乎对于代码库而言非常方便、未来可能需要移植到 Linux、我猜这是实现这一点的内部动机...

    不过、有关 TI-RTOS .cfg 的部分会令人困惑。 我看到、当我导入"empty"项目时、我的 CCS 工作区突然出现了一个"tirtos_builds_CC1310_LAUNCHXL_release_ccs"项目、其中包含 release.cfg、这已经足够了。 但空项目选择了"Debug"、而不是 Release。 它的.cfg 在哪里? 以及"空"项目如何与 tirtos_builds_XXX_release_ccs 项目关联、或如何以不同的方式进行关联、如何"断开"关联并将 release.cfg 复制到我的项目中、并根据我的项目本地.cfg 构建 TI-RTOS?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Eric:

    请查看用户指南。 有关如何管理/更改内核配置项目的说明。 简而言之 ,它是由 项目属性->build->Dependencies 设置控制的。

    我们讨论了配置项目的名称:debug / release 或 instruments/non-instrumented 或????。 注意项目构建配置与内核调试/发布项目不同。 之后、我们意识到内核项目的命名可能会与项目构建配置混淆。 到那时、我们正处于更改(文档更新等)太困难的阶段。 您 可以将 应用程序项目 Debug Build Configuration 设置为使用调试内核 、并将 Build Configuration 设置为使用发布内核。 我们尝试这样做是为了获得更好的 OOB 体验、但我们所支持的示例生成基础设施不支持它。

    请注意、您可以使自己成为自定义内核项目、并指向它(详细信息请参阅用户指南)。

    您实际上会将.cfg 文件放入驱动程序示例中。 以下是 相关步骤

    1.将.cfg 拖放到已导入的驱动程序示例工程中。 系统将提示您 继续。  注:相反不起作用。 您不能删除工程中的.cfg 并使其指向内核工程(这是单向的街道!)。 注2:项目图标上的小"CCS"文本会更改为小"RTSC"。

    2. 删除相关项目设置。

    3.添加平台(您可以从内核项目复制/粘贴)。 这在“项目属性”->“常规”->RTSC->“平台”中进行控制。

    4.仍在“项目属性->常规->RTSC”选项卡中,取消选择所有产品,然后仅重新选择所需的产品(例如,用于 CC13x0版本1.30....的 SimpleLink)

    5.现在您应该能够执行清理/构建...但我遇到构建错误!! 我将使用 SimpleLink CC2640R2 SDK v1.30.00.25...进行测试 我需要在星期一回到办公室时查看这一点。 我将添加一个新帖子、其中包含我缺少的步骤(或混乱)。

    Todd

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

    谢谢、现在就来了... 能够中断依赖关系并将 release.cfg 复制到我的空项目中、尽管现在重命名项目时遇到问题:

    我将会对它进行更多的调制、看看我是否可以获得一个干净的项目生成过程... 我的目标是像以前一样执行操作、使用自己的 TI-RTOS .cfg 文件创建一个空项目、该文件可进行自定义、导入我的代码库/修改主线程以启动所有内容并从那里执行。

    享受周末!

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

    发现错误"Board.html"是链接的资源、但它抱怨路径/链接无效、当您首次导入"空"项目时、此链接的资源看起来正常、但在您尝试重命名时、您会收到上述错误、并且 Board.html 链接的资源突然出错:

    从该对话框中删除链接的资源会将其删除、以便您可以安全地重命名项目。  不知道为什么会发生这种情况、但可能需要在下一个版本中查看。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、对于任何其他感兴趣的人、当您拖放 TI-RTOS .cfg 文件(例如从"tirtos_builds_CC1310_LAUNCHXL_release_ccs"项目中拖放一个最适合 SDK 附带的较新 RTOS 版本的.cfg 文件)并转到编辑、默认情况下我会得到一个文本编辑器、 但您可以右键单击并执行"Open with >XGCONF"以获取旧 GUI。 尽管我在 BAT 上遇到错误、"DescriptionResourcePathLocationType (描述资源路径位置类型)"
    CC13xx ROM 应用程序仅支持 cc26xx 或 simplelink 平台smac_npi.cfg/SMaC_NPIti.sysbios.rom.cortexm.cc13xx.CC13xxXDCTools 配置标记"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    现在、我得到一个构建错误:

    
    >>编译失败 
    gmake[1]:离开目录`C:/Users/spiri/workspace_v7/smac_npi/src/sysbios
    库构建失败。
    subdir_rules.mk:47:目标'Build-39353201-InProc '的配方失败
    "C:/ti/simplelink_cc13x0_sdk_1_30_00_06/kernel/tirtos/packages/ti/sysbios/family/arm/cc26xx/Boot.c "、第42行:致命错误:无法打开源文件"driverlib/sys_ctrl.h"
    1在编译"C:/ti/simplelink_cc13x0_sdk_1_30_00_06/kernel/tirtos/packages/ti/sysbios/family/arm/cc26xx/Boot.c "时检测到灾难性错误。
    编译已终止。
    gmake.1]:***[BIOS.obj]错误1.
    gmake:***[C:/Users/spiri/workspace_v7/smac_npi/src/sysbios/sysbios.aem3 ]错误2.
    错误:xdc.cfg.SourceDir:"c:/ti/xdctools_3_50_01_12_core/packages/xdc/cfg/SourceDir.xs,第209行:xdc.cfg.SourceDir:生成的源库生成失败:退出状态= 2:

    该文件位于"C:\ti\simplelink_cc13x0_sdk_1_30_00_06\source\ti\devices\cc13x0\driverlib\sys_ctrl.h"下、因此我想不会包含该文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将"${COM_TI_SIMPLELINK_CC13X0_SDK_INSTALL_DIR}/source/ti/devices/cc13x0}添加到 include 似乎确实会添加正确的目录、但构建仍然失败。 我想我在这里处于静止状态、直到这一点得到解决。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我想我通过修改库存空示例来跳过枪-空示例无论如何都不会生成。

    全新的 TI 驱动程序/TI-RTOS/CCS 编译器/空示例... 建筑炸弹:

    ****为项目 empty_CC1310_LAUNCHXL_tirtos_ccs 构建配置调试**** 

    "C:\\ti\\ccsv7\\utils\\bin\\gmake"-k -j 4 all -O
    gmake:***没有使目标'C:/Users/spiri/workspace_v7/tirtos_builds_CC1310_LAUNCHXL_release_ccs/Debug/configPkg/compiler.opt '的规则,'CC1310_LAUNCHXL.obj'需要。
    gmake:***没有使目标'C:/Users/spiri/workspace_v7/tirtos_builds_CC1310_LAUNCHXL_release_ccs/Debug/configPkg/linker.cmd '成为'All'所需的规则。
    gmake:目标"全部"不会由于错误而重新生成。

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

    尊敬的 Eric:

    将驱动程序示例转换为包含自包含 RTSC 工程对我来说从未使用过新的 SimpleLink SDK、即使在更新所有路径和变量时也不会使用。 我通过从内核示例开始解决了这一问题。 这些仍然是独立的。

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

    尊敬的 Eric:

    现在回到办公室。 我忘记了一个步骤。 您需要确保同时复制“项目属性”->“生成”->“XDCtools”设置。 在我的案例中、我使用的是 CC2640R2示例(我的电路板很方便)、我忘记将"-DDEVICE_family=cc26x0r2 "设置复制到项目中、我将.cfg 放入该项目中。

    查看您在其中获取.cfg 文件的 Project Properties->Build->XDCtools 设置并复制这些设置。 如果您有问题、请告诉我。

    注意:由于步骤的数量、我们通常不提倡这种方法。 正如 Richard 提到 的、从所需的模板(项目中的.cfg 与2个单独的项目相比)开始并根据需要替换代码会更容易。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、这使得它得以构建。 我将需要查找基本 RTOS 项目示例、因为这听起来更接近我以前所做的工作(我使用的旧方法涉及从新建项目向导中选择一个空的 TI-RTOS 项目...)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Todd。 了解如何手动执行仍然是一件很好的事情。