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.

[参考译文] TDA2EVM5777:希望创建非阻塞任务、以便在用例启动时读取文件

Guru**** 2896520 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/662739/tda2evm5777-want-to-create-a-non-blocking-task-to-read-file-on-use-case-start-up

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

您好!

我们使用的是 TDA2X EVM 和 Vison_SDK 3.1、我想使用 Task_create 创建非阻塞任务、该任务将读取一些大文件、但在此之前不会阻止 LCD 显示。

我已经使用 Task_create 编写了代码、但是它阻止显示直到文件读取完成。

请指导如何操作。

任务行为是否不符合我的要求?

我还尝试创建线程、但它给了我链接错误。

此致、

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

    有关 SYS/BIOS 和 Task_create ()用法中线程的说明、请参阅"SYS/BIOS 用户指南":
    www.ti.com/.../spruex3t.pdf

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

    您好!

    我已经引用了您建议的相同文档、但我的问题是、在 Task_create 函数中的文件读取完成之前、我无法显示。

    我可以在 Task_create print 语句之后看到 print 消息、但在文件读取 Task_create 函数完成之前、我无法看到放置在算法处理函数中的 print 消息。

    最初、我不依赖于我在单独任务中读取的文件。

    请提供指导。

    此致、

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

    VisionSDK 用例使用"任务"从介质读取数据、请参阅 usecase \apps\src\rtos\usecases\iss_mult_capture_isp_dewarp_3dsv_tda3xx\chains_issMultCaptIspWarp3dSv_Display.c、createMediaThread ()创建一个线程以读取介质。

    该任务在\apps\src\rtos\usecases\iss_mult_capture_isp_dewarp_3dsv_tda3xx\chains_MultCaptIspDeWarp3dSv_Media.c 中实现

    此致、
    Sujith
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我已经尝试过此 API、但行为没有变化。

    我的要求是、当我在开始时启动 LVDS 多路用例时、我正在读取一些需要11秒的大数据文件、因此我的 LCD 总共需要大约 A5秒来显示第一个显示。

    因此、为了减少这11秒、我想在用例开始时创建独立的任务、该任务将读取此大文件。

    在我的用例中、我必须在稍后阶段使用此文件、这样我就不必等待它们在开始时显示 LCD。

    请以高优先级回复。

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

    如您所知、SYSBIOS 中的每个任务都将始终运行到完成。 如果任务在 N 毫秒内执行一个操作(没有阻止任何资源)、那么只有一个更高优先级的任务可以挤占这个操作。 我假设您的介质读取任务和其他运行具有相同的优先级。 以下哪项可以解释您看到的行为?

    要确保介质读取任务不会缩短启动时间,请将介质作为一组小块读取。 即、您的10MB 文件可能会以交错方式读取、读取速度为0.25 MB 或更低、并产生结果。

    此致、
    Sujith
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在这种情况下、我能否创建一些仅在空闲 CPU 时间内运行的任务、如果是、请为我指出一些示例。
    重要的一点是,这种方法(在 CPU 空闲时间内运行任务)实际上是否能满足我的要求?

    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否、请勿为此使用空闲循环。 请遵循当前方法(在任务上下文中阅读)。 确保以小块的形式读取文件、更重要的是每次读取后都会产生数据(通过信标进行简单的握手就足够了)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不能正确理解如何实施您建议的方法、我能举一些例子吗? 您是什么意思是产量任务?

    如果我将文件读取任务优先级更改为低(例如1),它是否起作用?

    或者如何将主任务的优先级设为高电平?

    请建议。
    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还请回答我,为什么创建单独的线程在这种情况下不起作用?
    我尝试创建线程、但我无法理解我必须在哪个文件中添加以下设置。

    xdc.useModule(‘ti.sysbios.posix.Settings’);

    请指导我完成此操作(告诉我.cfg 文件的确切路径)和最后一个回答问题。

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

    正如前面提到的、您必须创建一个任务才能从媒体中读取。

    若要创建任务、假设您使用的是 VisionSDK、请使用 API BspOSAL_taskCreate ()、请参阅
    \apps\src\rtos\usecases\iss_mult_capture_isp_dewarp_3dsv_tda3xx\chains_issMultCaptIspWarp3dSv_Display.c、function createMediaThread ()。

    该任务在\apps\src\rtos\usecases\iss_mult_capture_isp_dewarp_3dsv_tda3xx\chains_MultCaptIspDeWarp3dSv_Media.c 中实现

    在此特定用例中,读取第一组数据,然后等待用例启动,然后读取剩余介质。

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

    您好、Sujith、

    我正在使用 BspOsal_taskCreate ()为文件读取创建单独的任务,并指出当我调用 Task_yield ()函数停止文件读取时,我的文件读取线程将再次有机会运行?

    我是否还需要从主用例进行 Task_yield ()调用?

    我需要一个显示 Task_yield ()用法的示例。

    另一个问题是、我是否可以使用任何其他 CPU 来读取该文件、 我的意思是从日志中可以看到、在主机 CPU 上运行用例时、文件读取在 IPU0上发生、我们是否可以在不同 CPU 上执行文件读取、例如 DSP1等 ???

    总之,我无法独立读取文件????

    谢谢、此致、

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

    有一个信标示例、我认为没有一个 Task_yeild ()示例。 请检查相同的函数、它使用 BspOsal_semWait ()。

    在其他内核上、不支持文件系统(& MMC/SD 驱动程序)。

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

    请指出我的位置以获取以下两个 API 的文档和示例。
    BspOsal_semPost
    BspOsal_semWait

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

    请检查 ti_component-\drivers\pdk\packages/ti\drv\v\vps\include\osal\请在 vision_sdk\apps\文件夹中查看示例。

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

    您好!

    正如您所建议的、我已经实现了文件读取函数、该函数将调用 BspOsal_semWait、之后它将从文件中读取小块、然后它将调用 BspOsal_semPost。

    现在,我的问题是,我应该在主用例线程中将该调用放在哪里?

    请提供一些函数、我可以在这些函数中将 BspOsal_semWait 和 BspOsal_semPost 放置在主用例线程中。

    此致、

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

    您可以在用例启动后布置信标、例如、在函数 chains_vipSingleCam_Display ()中、在函数 chains_vipSingleCam_Display ()中、在函数 chains_vipSingleCam_Display_Display ()中、将信标布置在函数 chains_vipSingleCam_Display_startApp ()之后。

    此致、
    Sujith