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.

[参考译文] TDA4VM:在竞态条件下、

Guru**** 2465890 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1473924/tda4vm-in-race-condition

器件型号:TDA4VM

工具与软件:

我觉得我没有清楚表达我的上一个问题、所以我想再提出一个更准确的问题。

我的环境由 QNX 7.0和 TI SDK 7.0组成、其中应用程序作为单独的进程独立运行。

据我了解、当两个应用程序并行运行时、每个主机指针都维护自己的虚拟存储器地址。

在这种情况host to shared' function下、如果在竞争条件下调用"、是否会发生存储器碎片?

例如、假设 App1使用 NV12 (Y、UV)、而 App2使用 RGBA。 此外、假设两个应用几乎同时创建图像缓冲区。
是否可以先将 App1的 Y 组件分配给物理内存、然后在分配 UV 组件之前、将 RGBA 分配给物理内存? 这可能导致 Y 缓冲器的结束地址和 UV 缓冲器的起始地址不连续。

要为 QNX 的屏幕 API 分配 NV12图像、我要求 NV12处于确保连续分配的内存状态。
但是、在竞争条件下分配多个映像时、我发现共享指针中频繁出现存储器地址碎片。

我附上了一个汇总我的调查结果的表格。

(随附一个表格以便于分析。)

YUV:nv12,1280x944、8位/ RGBA:3200x720、8位
地址 ptr Shrd_ptr 开始 Shrd_ptr 结束 Shrd Start + MemSize (理想) A==B? 主机启动 主机端
YUV1_1 2948165632 2949373952 2949373952 好的 749830144 751038464
YUV2_1 2949980160 2951188480 2951188480 好的 751644672. 752852992.
YUV3_1 2951794688 2953003008. 2953003008. 好的 753459200 754667520
YUV4_1. 2953609216 2954817536 2954817536 好的 755273728. 756482048
RGBA 1 2994225152 3003441152 不需要 737681408
YUV1_2 3003441152 3004649472 3004649472 好的 795885568 797093888
YUV2_2 3005255680 3006464000 3006464000 好的 797700096 798908416
YUV3_2 3007070208 3008278528 3008278528 好的 799514624. 800722944
YUV4_2. 3008884736 3010093056. 3010093056. 好的 801329152 802537472
YUV1_3 3010699264. 3011907584 3011907584 好的 803143680 804352000
YUV2_3 3012513792 3013722112 3013722112 好的 804958208 806166528
YUV3_3 3014328320 3015536640 3015536640 好的 806772736. 807981056
YUV4_3. 3016142848 3017351168. 3017351168. 好的 808587264 809795584
RGBA 2. 3017957376 302717336. 不需要 746897408
YUV1_4 302717336. 3037597696 3028381696 NG 810401792 811610112
RGBA 3. 3028381696 3037597696 不需要 756113408
RGBA 4. 3038203904 3047419904 不需要 765329408
YUV2_4 3047419904 3048628224 3048628224 好的 812216320 813424640
YUV3_4 3049234432 3050442752 3050442752 好的 814030848 815239168
YUV4_4. 3051048960 3052257280 3052257280 好的 815845376 817053696
YUV1_5 3052863488 3054071808 3054071808 好的 817659904 818868224
YUV2_5 3054678016 3055886336 3055886336 好的 819474432. 820682752
YUV3_5 3056492544 3057700864 3057700864 好的 821288960 822497280
YUV4_5. 3058307072 3059515392 3059515392 好的 823103488 824311808
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的详细解释

    这是一个已知问题、已从 SDK 7.3修复、请查看$(PSDKRA)/tiovx/source/framework/vx_image.c 中的实现

    请使用上述 SDK 来解决此问题。

    附加问题 ID 以供参考、

    [TIOVX-773]在图像中为多个平面分配单个缓冲区 

    此致、
    Gokul