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:VISION SDK-DISPLAY DSS 应用程序-如何使用缓冲器阵列显示 tigf 视频、而不是从 SD 卡或本地主机路径加载文件

Guru**** 2587345 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/590760/rtos-vision-sdk-display-dss-aplication---how-to-display-tigf-video-using-the-buffer-array-instead-of-loading-the-files-from-sd-card-or-local-host-machine-path

工具/软件:TI-RTOS

大家好、

我们希望使用缓冲区阵列而不是显示 DSS 应用程序中的脚本控制台来显示视频。

我们需要将视频图像集成到 输出.xem4二进制文件中。

是否可以这样做?

是否有任何工具可以将 tigf 文件转换为存储 在数组 中?

谢谢、此致

Gokul

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

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

    您能否说明您使用的是哪种 DSS 应用程序?

    在 Linux 下、您可以尝试将二进制文件转换为 C 头文件的"xxd"实用程序(它是 vim 安装的一部分):
    stackoverflow.com/.../script-tool-to-convert-file-to-c-c-source-code-array

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

    doc/tda3xx 文件夹中有一个 bin2h 实用程序。 您甚至可以使用它将任何二进制文件转换为头文件。  

    它将创建一个标头文件、宏设置为值。 您可以将此宏分配给数组、并且可以拥有所有值。

    此致、

    Brijesh

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

    @ Yordan、
    我们使用的是 ti_compones\drivers\bsp_01_07_01_17\examples\vps\display\displayDss 应用程序。

    @Brijesh、
    我尝试使用命令
    bin2c.exe data.yUV
    它显示如下消息

    用法:bin2c


    然后我尝试使用以下命令、它正在工作。
    bin2c.exe data.yUV data.h 数据
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴听到它在工作。

    如果该主题解答了您的问题、请关闭该主题。

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

    您好、Brijesh、

    创建头文件后、我们将 头文件包含在.c 文件中、如所示  

    #include "testdata.h"

    声明的数组

    UINT8显示数据[BSP_Testdata_DCC_CFG_NUM_Element]= BSP_DRV_TESTDATADCC_CFG;

     编译问题如下所示。 但我使用 gcc 编译器尝试了测试代码、它的构建是正确的。

    如何解决此错误?

     

    #正在制作 tda2xx-EVM:m4vpss:发布:bsp_vps...

    #制作 tda2xx-EVM:m4vpss:发布:bsp_examples_utility...

    # Making tda2xx-EVM:m4vpss:release:bsp_uart...

    #编译 tda2xx-EVM:m4vpss:release:bsp_examples_displayDss:src/DisplayDss_main.c

    内部错误:d:\ti\vsdkv212\ti_componations\cG_tools\windows\cgt-arm_5.2.5\bin\armacpia.exe 遇到分段 fa

    结果

             处理函数(未知或文件范围)时、文件 src\testdata.h 行192027

    这是由编译器本身的缺陷引起的。 TI 客户

    支持人员可能会建议解决方法来避免这种情况。

    升级到编译器的最新版本可能会解决此问题。

    请在以下 E2E 支持论坛联系 TI

    "开发工具"、"TI C/C++编译器"。 请参阅标题为的链接

    "提交问题"。 包括整个错误消息和

    选项--preproc_with_comment 时创建的.pp 文件的副本

    (-PPC)。

    >>编译失败

    gmake[3]:***[D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_displayDss/obj/tda2xx-evm/m4vpss/rele

    ASE/DisplayDss_main.oem4]错误1.

    gmaked[2]:***[m4vpss]错误2.

    gmaked[1]:***[displayDss_target]错误2.

    gmake:***[displayDss]错误2.

    D:\ti\vsdkv212\ti_componers\drivers\bsp_01_07_01_17>

    D:\ti\vsdkv212\ti_componers\drivers\bsp_01_07_01_17>

    D:\ti\vsdkv212\ti_componers\drivers\bsp_01_07_01_17>

    谢谢

    Gokul

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

    大家好、  

    我们可以使用 https://github.com/gwilymk/bin2c 中的 bin2c 工具来管理编译问题

    但 存在链接问题。  

    ES_displayDss_configuro/linker_mod.cmd"、第167行:错误:

     程序将不能放入可用的内存中。  定位失败。

    我们有3072001字节的阵列。 我们将缓冲地址(bufInfo->bufAddr)指向此数组。

     

    是否需要修改链接器脚本 文件?  

    #编译 tda2xx-EVM:m4vpss:release:bsp_examples_displayDss:src/DisplayDss_main.c

    "src="DisplayDss_main.c"、第1883行:警告:函数"DispApp_updateRtParam"已声明但从未引用

    链接到 D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_displayDss/bin/tda2xx-evm/bsp_example

    s_displayDss_m4vpss_release.xem4...

    编号

    "D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_displayDss/obj/tda2xx-evm/m4vpss/release/bsp_exampl

    ES_displayDss_configuro/linker_mod.cmd"、第167行:错误:

     程序将不能放入可用的内存中。  定位失败

     对于“.cinit”大小为0x2f43f6的段。  可用存储器范围:

     VPSS_M4_CODE_MEM 大小:0x1ff000  未使用:0x1977fe  最大孔:

     0x1977e8.

    错误:链接过程中遇到错误;

     "D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_di

     splayDss/bin/tda2xx-evm/bsp_examples_displayDss_m4vpss_release.xem4"不是

     已构建

    gmake[3]:***[D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_displayDss/bin/tda2xx-evm/bsp_example

    S_displayDss_m4vpss_release.xem4]错误1.

    gmaked[2]:***[m4vpss]错误2.

    gmaked[1]:***[displayDss_target]错误2.

    gmake:***[displayDss]错误2.

    谢谢、此致

    Gokul

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

    你好、Gokul、

    M4数据大小仅为3MB、请将其增加到存储在 bsp_01_07_00_16\examples\config_tda3xx.bld 中的%ld 文件中。

    此致、

    Briijesh

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

    我们正在(tda2xx) dra7xx 平台中工作。

    在 CONFIG_tda2xx.BLD 中,能否将 VPSS_M4_DATA_SIZE 增大到14MB?

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


    但错误表明您只有2MB (0x1ff000)。
    VPSS_M4_CODE_MEM 大小:0x1ff000 未使用:0x1977fe 最大孔数:

    请尝试增加代码部分。

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

    您好、Brijesh、

    我们将代码段大小增加到了4MB、它适用于3072001字节的阵列缓冲区大小。(近2到3MB)

    但是、如果我们尝试编译的阵列缓冲区大小为23040001 (21MB)、则会得到以下错误。

    在本例中、我们已将代码段大小更改为20 MB。

    是否可以使用此大小进行构建?

    #制作 tda2xx-EVM:m4vpss:发布:bsp_examples_utility...

    # Making tda2xx-EVM:m4vpss:release:bsp_uart...

    #编译 tda2xx-EVM:m4vpss:release:bsp_examples_displayDss:src/DisplayDss_main.c

    "src\test.h"、行1452507:致命错误:内存不足

    1在"src/DisplayDss_main.c"的编译中检测到灾难性错误。

    编译已终止。

    >>编译失败

    gmake[3]:***[D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_displayDss/obj/tda2xx-evm/m4vpss/rele

    ASE/DisplayDss_main.oem4]错误1.

    gmaked[2]:***[m4vpss]错误2.

    gmaked[1]:***[displayDss_target]错误2.

    gmake:***[displayDss]错误2.

    谢谢 、此致

    Gokul

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

    你好、Gokul、

    存储器大小稍高、如果您仍然希望在应用程序中将映像保留为阵列、则只需增加代码段即可、它仍将起作用。

    理想情况下、应从帧缓冲区部分分配该缓冲区并加载该缓冲区。  

    另一种解决方案是使用 C 代码中的 pragma 从帧缓冲区部分分配此缓冲区。 在这种情况下、您不必增加代码段即可获得大图像。

    Rgds、

    Brijesh

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

    您好、Brijesh、

    我们 尝试将代码部分增加到45 MB。 但它不起作用。

    因此、我们 尝试使用帧缓冲区段。

    我尝试了以下行。 但我仍然会得到相同的误差。

    extern uint8颜色[];

    #if defined (__GNU__)&&!defined (__ti__)

    DATA_ALIGN (32) DATA_SECTION (".bss:帧缓冲区")

    其他

    #pragma DATA_ALIGN (颜色、32)

    #pragma DATA_SECTION (color、".bss:帧缓冲区");

    #endif /*#if defined (__GNU__)&&!defined (__ti__)*/

    如何使用 pragma 来使用帧缓冲区段?

    已 在 头文件中初始化数组(颜色)。  

    谢谢、此致、

    Gokul

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

    你好、Gokul、

    很抱歉耽误你的回答。

    您在哪个文件中添加了此代码?  

    在声明颜色数组之前、您是否可以在 c 文件中的两行下面添加?

    #pragma DATA_ALIGN (颜色、32)

    #pragma DATA_SECTION (color、".bss:帧缓冲区");

    您还可以检查映射文件以查看帧缓冲区和颜色数组的分配位置?

    此致、

    Brijesh  

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

    您好、Brijesh、

    我们使用 bin2c 工具创建了头文件。 此 头文件包含已初始化的阵列数据颜色。  

    我们添加了以下行。 这是正确的吗?

    #pragma DATA_ALIGN (颜色、32)

    #pragma DATA_SECTION (color、".bss:帧缓冲区");


    uint8 color[23040001]={
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10、0x80、0x10、0x80、0x10、 0x80、
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10、0x80、0x10、0x80、0x10、 0x80、
    0x10、0x80、0x10、……}

    进行上述更改后、仍会出现错误  

    #正在制作 tda2xx-EVM:m4vpss:发布:bsp_vps...
    #制作 tda2xx-EVM:m4vpss:发布:bsp_examples_utility...
    # Making tda2xx-EVM:m4vpss:release:bsp_uart...
    #编译 tda2xx-EVM:m4vpss:release:bsp_examples_displayDss:src/DisplayDss_main.c
    "src\testdata.h"、第1452763行:致命错误:内存不足
    1在"src/DisplayDss_main.c"的编译中检测到灾难性错误。
    编译已终止。

    >>编译失败
    gmake[3]:***[D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_displayDss/obj/tda2xx-evm/m4vpss/rele
    ASE/DisplayDss_main.oem4]错误1.
    gmaked[2]:***[m4vpss]错误2.
    gmaked[1]:***[displayDss_target]错误2.
    gmake:***[displayDss]错误2.

    谢谢

    Gokul

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

    对于 TDA2xx、帧缓冲区大小非常大、我们为帧缓冲区预留了大约244MB 的空间。 它不应脱离内存。
    您可以共享您的地图文件吗? 和其他更改?

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

    你好、Gokul、

    除了将缓冲区放置在 frame_buffer 段中、还需要减少用于分配帧缓冲区的堆。 默认情况下、该堆的大小为242MB、这与帧缓冲段的保留空间完全相同。 请通过减小  vayu_drivers\bspdrivers_\examples\utility\src\bsputils_mem_default.c 文件中的宏 BSPUTILS_MEM_FRAME_heap_size 的值来减小堆的大小。  

    您将看到、对于 TDA2xx、此宏设置为242MB、减小此大小、让我们使用100MB、然后尝试使用它。  

    它应该现在构建。

    Rgds、

    Brijesh

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

    我尝试减小堆大小。 但仍然得到误差。
    # Making tda2xx-EVM:m4vpss:release:bsp_uart...
    #编译 tda2xx-EVM:m4vpss:release:bsp_examples_displayDss:src/DisplayDss_main.c
    "src\test.h"、行1452627:致命错误:内存不足
    1在"src/DisplayDss_main.c"的编译中检测到灾难性错误。
    编译已终止。

    >>编译失败
    gmake[3]:***[D:/ti/vsdkv212/ti_components/drivers/bsp_01_07_01_17/binary/bsp_examples_displayDss/obj/tda2xx-evm/m4vpss/rele
    ASE/DisplayDss_main.oem4]错误1.
    gmaked[2]:***[m4vpss]错误2.
    gmaked[1]:***[displayDss_target]错误2.
    gmake:***[displayDss]错误2.



    已更改完成:

    1.#define BSPUTILS_MEM_FRAME_HEAN_SIZE (100U * MB)(src/bsputils_mem_default.c)

    2.头文件
    #pragma DATA_ALIGN (颜色、32)

    #pragma DATA_SECTION (color、".bss:帧缓冲区");


    uint8 color[23040001]={
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10、0x80、0x10、0x80、0x10、 0x80、
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10、0x80、0x10、0x80、0x10、 0x80、
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10、0x80、0x10、0x80、0x10、 0x80、
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10、0x80、0x10、0x80、0x10、 0x80、
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10、0x80、0x10、0x80、0x10、 0x80、
    0x10、0x80、0x10、0x80、0x10、 0x80、0x10、0x80、0x10、0x80、 0x10、
    0x80、0x10、0x80、0x10、0x80、 0x10…



    由于阵列已初始化,我们是否需要放置在其他部分而不是 BSS 中?

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


    它似乎太大了。 我需要弄清楚它为什么说内存不足。
    但为什么要在代码中创建静态映像? 是否可以使用 CCS 存储器窗口或脚本控制台将映像加载到存储器?

    此致、
    Brijesh