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/PROCESSOR-SDK-DRA7X:在 SYSBIOS 中配置 Task_HOOS.LENGTH

Guru**** 2550940 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/605230/rtos-processor-sdk-dra7x-configuring-task_hooks-length-in-sysbios

器件型号:PROCESSOR-SDK-DRA7X
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

是否有人知道如何在  SYSBIOS 中配置 Task_hooks.length。 在我的应用程序中、它设置为1 (通过打印值来验证)、但我需要使其成为更大的值。

Jakub

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

    您可以在.cfg 文件中使用 Task.addHookSet 函数(您需要将其作为文本文件进行编辑)。 您可以在 BIOS API 参考( /docs/cdoc/index.html 并导航至 ti.sysbios.KNL.Task。

    例如、我将以下内容添加到.cfg 文件中
    Task.addHookSet(
    registerFxn:'&myRegisterFxn1'、
    createFxn:'&myCreateFxn1'、
    deleteFxn:'&myDeleteFxn1'、
    switchFxn:'&mySwitchFxn1'
    });
    Task.addHookSet(
    registerFxn:'&myRegisterFxn2'、
    createFxn:'&myCreateFxn2'、
    deleteFxn:'&myDeleteFxn2'、
    switchFxn:'&mySwitchFxn2'
    });

    当您查看 debug/configPkg/package/cfg/<.cfg filename>_p 中生成的内核源文件时 您将看到生成的数组:

    const __t1_ti_sysbios_KNL_Task_hooks ti_sysbios_KNL_Task_hooks__a[2]={

    (((XDC_void (*)(XDC_Int))((XDC_Fxn) myRegisterFxn1)))、/* registerFxn *
    (((XDC_void (*)(ti_SysBIOS_KNL_Task_Handle、xDC_runtime Error_Block*)((XDC_Fxn) myCreateFxn1)))、/* createFxn *
    (((xdc_void (*)(ti_sysbios_knL_Task_handle))) 0)、/* readyFxn *
    (((XDC_void (*)(ti_SysBIOS_KNL_Task_Handle、ti_SysBIOS_KNL_Task_Handle))(((XDC_Fxn) mySwitchFxn1)))、/* switchFxn *
    (((xdc_void (*)(ti_sysbios_KNL_Task_handle))) 0)、// exitFxn *
    (((XDC_void (*)(ti_sysbios_KNL_Task_handle))((XDC_Fxn) myDeleteFxn1))、/* deleteFxn *
    }、//*[0]*/

    (((XDC_void (*)(XDC_Int))((XDC_Fxn) myRegisterFxn2)))、/* registerFxn *
    (((XDC_void (*)(ti_SysBIOS_KNL_Task_Handle、xDC_runtime Error_Block*)((XDC_Fxn) myCreateFxn2)))、/* createFxn *
    (((xdc_void (*)(ti_sysbios_knL_Task_handle))) 0)、/* readyFxn *
    (((XDC_void (*)(ti_SysBIOS_KNL_Task_Handle、ti_SysBIOS_KNL_Task_Handle))(((XDC_Fxn) mySwitchFxn2)))、/* switchFxn *
    (((xdc_void (*)(ti_sysbios_KNL_Task_handle))) 0)、// exitFxn *
    (((XDC_void (*)(ti_sysbios_KNL_Task_handle))((XDC_Fxn) myDeleteFxn2))、/* deleteFxn *
    }、/*[1]*/
    };

    当然,我现在需要在我的应用程序代码中写入这些函数,否则应用程序将会出现未解析的符号....

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

    您好 Todd、


    这不是我需要的。 我在 Jacinto 6 SoC 上使用 TI 的 NDK。 套接字层要求函数:

       ndk_hookInit(ndkHookId);
       NDK_hookCreate (TaskSelf ());

    在使用套接字之前调用。

    NDK_hookCreate()函数为:

    空 NDK_hookCreate (Task_handle h)

       挂钩= 1;

       if (hookId!= 0xffffffff){
           Task_setHookContext (h、(int) hookId、0);

           /*自动打开文件描述符会话(如果配置为)*/
           TI_NDK_CONFIG_GLOBAL_taskCreateHook (h);
       }


    首先通过调用 NDK_hookInit()来设置 hookId。

    在任务挂钩上下文中、我需要一个空闲时隙来存储 NDK 特定上下文、而不是任务挂钩函数。

    是否有办法实现这一点?

    在应用程序的调试变体中,当我调用 NDK_hookCreate()时,我会崩溃。 当我注释掉此调用或使用版本变体时、不会发生崩溃。


    谢谢、

    Jakub

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要清楚一点、您正在尝试使用值为1、2或3的 TaskSetEnv。。 对吧? 当底层操作系统为 TI-RTOS (SYS/BIOS)时、不支持这些操作系统。 API 参考中对此进行了说明

    "SYS/BIOS 用户注意:操作系统适配层(OS.LIB)仅针对插槽0实现此功能。 保留的插槽0是 NDK 所需的唯一插槽。 未实现插槽1至3。 您应该使用标准 SYS/BIOS 函数 Task_setenv()和 Task_getenv()来存储和检索私有环境指针。"

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在应用程序中不使用值大于0的 TaskSetEnv。 我只调用 NDK_hookInit(0),然后调用 NDK_hookCreate (TaskSelf()。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 请注意、如果要根据 NDK 用户指南在.cfg 文件中配置 NDK、则不应调用这些函数中的任何一个

    "操作系统库中的任务适配模块需要挂钩才能保存和加载私有
    NDK 的环境指针。 这是通过创建一个 SYS/BIOS 挂钩来完成的。 挂钩模块必须是
    创建该函数是为了调用 OS 挂钩函数 NDK_hookInit()和 NDK_hookCreate()。

    如果您使用 XGCONF 配置 NDK、这些对象都将自动创建。"

    此基础结构不用于存储您的个人信息。 您可以直接使用 Task_getenv 和 Task_setenv 来存储私有信息。

    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我混合了两种类型的配置:cfg 文件和 Cfg API。 仅切换到 cfg 文件后、Task_hooks.length 设置为2。
    谢谢 Todd。