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.

[参考译文] Linux/AM3874:VPDMA0和 VPDMA1优先级的设置方法?

Guru**** 2611705 points
Other Parts Discussed in Thread: AM3874

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581076/linux-am3874-the-setting-method-of-the-priority-of-vpdma0-and-vpdma1

器件型号:AM3874

工具/软件:Linux

您好!

在 Linux 中、AM3874的 VPDMA 的描述符字3的优先级设置是否如下?
如果出现错误、请告诉我源设置。

定义的标头:
TI-ezsdk_dm814x-evm_5_05_02_00\board-support\linux-2.6.37-psp04.04.00.01\include\linux\vps_graphics.h
struct vps_grpxregionparams

uint32 dispPriority;
/**<显示当前帧中区域的优先级,此优先级
将用于在两个重叠区域之间切换顺序
来自两条 GRPX 管线。 *

设置源:
TI-ezsdk_dm814x-evm_5_05_02_00\board-support\linux-2.6.37-psp04.04.00.01\drivers\video\ti81xx\vpSS\grpx.c

void __init vps_fvid2_grp_ctrl_init (struct vps_grp_ctrl * gctrl)

gctrl->inputf->scanformat = FVID2_SF_progressive;

gctrl->gcparam->memtype = VPS_VPDMA_MT_NONTILEDMEM;
gctrl->gcparam->drvmode = vps_GRPX_frame_buffer_mode;
gctrl->gcparam->periodiccallback = false;
/* init 参数*/
gctrl->glist->numregions = 1;

gctrl->gparams->regparams.firstregion = true;
gctrl->gparams->regparams.lastregion = true;
gctrl->gparams->regparams.disppriority = 1;

gctrl->grtparam->regparams.firstregion = true;
gctrl->grtparam->regparams.lastregion = true;
gctrl->grtparam->regparams.disppriority = 1;


VPDMA 描述符的字3的优先级解释如下。
只有位9和位11用于设置优先级。 位10被忽略。
最高= 0、最低= 3

我认为在我设置它时、以下寄存器反映了这一点。
DMM_PEG_PRIO_4 (0x4e000630)位16-18、20-22。

如果 disppriority = 1被置位、这两个值都是0。
我想将设置除以0和1。
请告诉我应该设置什么类型的值。

此致、
新义郎

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

    您好、Shigehiro、

    根据我的理解、您需要有关 HDVPSS 优先级和 VPDMA 优先级的更多信息。

    HDVPSS 数据流量启动器具有可编程的:

    1) 1)互连压力控制。

    2) 2) EMIF 的优先级控制

    这将使 HDVPSS 启动器能够获得所需的延迟和/或带宽。

    1) 1) L3互连压力

    每个启动器单独控制压力。 3个压力级别

    •–0 =最低、1 =中间、3 =最高

      –给定压力级别内的轮循仲裁。

       确定向给定从器件的待处理总线请求在交换机中赢得仲裁。 例如、接下来控制将哪个并发请求发送到 EMIF/DMM

    HDVPSS

    Bit0 IP 控制的动态

    基于内部 FIFO 状态的自定义方案

    –基于上溢/下溢的裕度

    BIT1 MMR 控制静态(init_priority_n)

    init_priority_0:0x48140608

    [10] HDVPSS1

    [8] HDVPSS0

    2) 2) EMIF 中的优先级控制

    除了 HDVPSS、每个初始方在 DMM PEG 寄存器中都有一个优先级配置

    HDVPSS 优先级在 VPDMA 描述符中编程

    此致、
    帕维尔

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

    您好、Pavel、

    感谢您的快速回复和详细解释。

    这是您的理解。
    我想了解有关 HDVPSS 优先级和 VPDMA 优先级的更多信息。

    您的回答中有任何问题。

    1. HDVPSS 压力生成
    2.HDVPSS 优先级在 VPDMA 描述符中进行编程

    可以认为设置信息通过 FVID2命令发送到媒体控制器(M3)。
    这些设置信息将在 Linux 驱动程序的源位置设置?

     我     是否显示出错误的"Discpriority"?

    此致、
    新义郎

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

    [引用用户="shigehiro Tsuda "]

    可以认为设置信息通过 FVID2命令发送到媒体控制器(M3)。
    这些设置信息将在 Linux 驱动程序的源位置设置?

     我     是否显示出错误的"Discpriority"?

    [/报价]

    我认为这个优先级与 VPDMA 描述符字3 [11:9]优先级无关。

    此 disppriority 用于对图形管道(grper-0、grper-1、grper-2)进行重新排序(授予优先级)。 有关更多信息、请参阅以下指针:

    DM814x TRM、第12.2.5.2.2.1.1节 Disp_Prior




    此致、
    帕维尔

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

    关于 VPDMA 数据包描述符字3、请注意 VPDMA 描述符是在 DDR 存储器中创建的(起始地址0x8000000)。 您可以浏览 EZSDK u-boot 代码、其中设置了此优先级:

    u-boot/include/logo.h
    u-boot/drivers/video/firmware.c -请参阅 desc[3]

    VPDMA 描述符字3在 DM814x TRM 12.2.13.3.1.4数据包描述符字3部分中进行了文档化



    此致、
    帕维尔

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

    VPDMA 优先级也在 hdvpss 包中配置:

    {EZSDK}/component-sources/hdvpss_01_00_01_44/packages/ti/psp/vps/common/vps_config.h

    /*==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *

    * VPDMA 优先级为3位字段、值从0到7。

    * VPDMA 优先级作为主优先级传递给 DMM/DDR。

    * 但是 DMM/DDR 不使用 VPDMA 优先级中的位1。

    * Hence Effective Priorities 映射、如下所示

    *

    * VPDMA 描述优先级值   实际 DMM/DDR 主优先级

    * 0 (000b)            0 (00b)

    * 1 (001b)            1 (01b)

    * 2 (010b)            0 (00b)

    * 3 (011b)            1 (01b)

    * 4 (100b)            2 (10b)

    * 5 (101b)            3(11b)  

    * 6 (110b)            2 (10b)

    * 7 (111b)            3(11b)  

    *

    * 例如、VPDMA DESC 优先级0和2映射到 DMM/DDR 的优先级0

    *

    * 在下面的主要部分中、我们将仅使用不同的驱动程序

    * 低于优先级值

    *

    * VPSHAL_VPDMA_DATADESPRIO_0 (有效 DDR/DMM 优先级0)

    * VPSHAL_VPDMA_DATADESPRIO_1 (有效 DDR/DMM 优先级1)

    * VPSHAL_VPDMA_DATADESPRIO_4 (有效 DDR/DMM 优先级2)

    * VPSHAL_VPDMA_DATADESPRIO_7 (有效 DDR/DMM 优先级3)

    *

    * 也是

    * -为了避免溢出情况、捕捉应该始终是最高优先级

    * -为了避免下溢情况、Display 应该始终是第二高优先级

    * - M2M 驱动程序的优先级应该较低

    * -由于性能原因、NSF 比其他 M2M 驱动器更高

    *==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *

    /**\brief VPDMA Priority for different capture、display、M2M Clients */

    #define VPS_CFG_CAPT_VPDMA_PRIORITY     (VPSHAL_VPDMA_DATADESPRIO_0)

    #define VPS_CFG_DISP_VPDMA_PRIORITY     (VPSHAL_VPDMA_DATADESPRIO_1)

    #define VPS_CFG_M2M_VPDMA_Priority_RD_NSF (VPSHAL_VPDMA_DATADESPRIO_4)

    #define VPS_CFG_M2M_VPDMA_Priority_RD   (VPSHAL_VPDMA_DATADESPRIO_7)

    #define VPS_CFG_M2M_VPDMA_PRIORY_WR_VIP (VPSHAL_VPDMA_DATADESPRIO_7)

    #define VPS_CFG_M2M_VPDMA_Priority_WR_NSF (VPS_CFG_M2M_VPDMA_Priority_RD_NSF)

    #define VPS_CFG_M2M_VPDMA_Priority_WR   (VPS_CFG_M2M_VPDMA_Priority_RD)

    #define VPS_CFG_CAPT_WB_VPDMA_PRIORITY   (VPS_CFG_DISP_VPDMA_PRIORITY)

     

    另请参阅以下 e2e 线程:

    此致、
    帕维尔

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

    您好、Pavel、

    感谢您的快速回复。

    我从您的回答中了解了 VPDMA 优先级设置的价值。
    我们的客户使用类似 Linux 的 FVID2在 Media contoroler(M3)上构建设置参数。
    请告诉我 Linux 驱动程序对 VPDMA 的源设置描述符位于何处。

    恐怕在 HDVPSS 中关闭了它。

    此致、
    新义郎

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

    [引用 user="shigehiro Tsuda "]我们的客户使用 Linux 等 FVID2在 Media contoroler (M3)上构造设置参数。

    VPSS FVID2库-这是一个 HAL/功能层、用于控制通过 M3运行的固件。 它将控制视频合成器、VENC、图形/视频管道的 API 数量公开给 V4L2和 fbdev 等用户界面驱动程序。 它将 V4L2/fbdev 数据结构和 ioctl 转换为 FVID2数据结构和命令、并调用 Linux Syslink IPC notify 函数将 FVID2数据结构和命令传递给通过 M3处理器运行的固件。

    我们在{EZSDK}/board-support/linux-2.6.37-psp04.04.00.01中提供 的是 Linux VPSS (fbdev 和 V4L2显示和捕捉)驱动程序。 通过 FVID2 API、我们只能控制 fbdev (图形)优先级、而不能控制 VPDMA 优先级

    TIFB_GET_PARAMS ioctl 返回 fbdev (帧缓冲器驱动程序) ti81xxfb 的当前优先级

    TIFB_SET_PARAMS ioctl 设置 fbdev 的优先级

    VPSS 驱动程序支持以下特性:

     -通过 fbdev 接口的3条图形管线

    -通过 fbdev 在图形管道上显示优先级

    -图形管线上的颜色格式:RGB565、ARGB1555、RGBA5551、ARGB4444、RGBA4444、 ARGB6666、RGBA6666、RGB888、ARGB8888和 RGBA8888、BMP 1/2/4/8。

    -显示参数的配置,例如显示图形的高度和宽度、显示图形的位置、每像素位数等

    -通过系统接口设置图形管道/视频管道和 VENC 目标(HDMI、HDCOMP、DVO2或 SD)。

    -通过 fbdev 对图形管道进行颜色键控

    -通过 fbdev 在图形流水线上进行扩展

    -通过 fbdev 在图形流水线上进行加密

    [引用 user="shigehiro Tsuda "]请告诉我 Linux 驱动程序中 VPDMA 的源设置描述符在哪里。

    Linux 内核(Linux-2.6.37-psp04.04.00.01)中没有用于设置 VPDMA 优先级和描述符的源代码。

    我们在 u-boot (u-boot-2010.06-psp04.04.00.01)中有源代码、用于设置 VPDMA 优先级和描述符:

    u-boot/include/logo.h
    u-boot/drivers/video/firmware.c -请参阅 desc[3]

    我们在 hdvpss_01_00_01_44封装中提供了源代码、用于设置 VPDMA 优先级和描述符。 您可以通过在 EZSDK 顶部安装 EZSDK 覆盖包来获取该软件包。 您可以在 NDA 下从您当地的 TI 代表处获取 EZSDK 覆盖包。 另一个选项是安装默认情况下随 hdvpss_01_00_01_44软件包附带的 IPNC RDK。

     - DM38X-IPNC-RDK

    此致、
    帕维尔

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

    您好、Pavel、

    感谢您的快速回复。

    我知道图形在 Linux 的 fbdev 中是受控的。
    下面的驱动程序在底部工作。
    TI-ezsdk_dm814x-evm_5_05_02_00\board-support\linux-2.6.37-psp04.04.00.01\drivers\video\ti81xx\vpSS\grpx.c

    调用 VPS_fvid2_XXX 函数、并通过调用 syslink 的 Notify_sendEvent 函数将参数发送到 M3内核。

    这个参数没有 VPDMA 描述符的详细设置、 并且 HDVPSS 的源在 M3侧执行详细设置是正确的吗?

    此致、
    新义郎

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

    GRPX.c 是 HDVPSS 图形驱动程序、它控制 HDVPSS 系统的 GRPX (图形管线)(GRPX0/GRPX1/GRPX2)和 GRPX (图形)模块。

    使用下面提到的位字段在相应的区域中设置图形区域的优先级:
    GRPX→REGAL_DISPLAY_attributes.Disc_PRIOD

    DOR (显示顺序重新切换)模块是一个完全可编程的纵横开关、可实现所有输入层的灵活显示顺序更改。 视频层数据根据其寄存器设置(vid_order 位字段)放置在图层中。 图形数据附带在 GRPX 模块中配置的四位优先级。 如果设置了全局重新排序(G_REorder=1)、则根据 COMP 寄存器设置(G0_Order、G1_Order、G2_Order 位字段)对图形层进行重新排序(从上到下)。

    图形模块(GRPX)是一款基于区域的图形处理器、可组合一个或多个图形区域、为视频合成器(COMP)模块创建显示平面输入。 GRPX 具有多区域支持、每个区域都具有显示优先级。

    [67:64] Disp_Prior -区域显示优先级
    可以指定每个区域具有图形管道间显示优先级、可用于从两个 GRPX 管道切换两个重叠区域之间的顺序。 GRPX 只需将这些值与每个像素数据一起传递到 COMP 模块、COMP 使用它在两个 GRPX 数据之间重新排序。 仅当两个 GRPX 输出连接到相同的显示输出格式和速率时、才应使用此选项。 根据每个区域的优先级、对每个区域的混合输出进行不同的计算(在 COMP 模块中)。


    使用 VPDMA 帧和区域描述符来配置图形模块(GRPX)。


    COMP_HDMI_SETTINGS、COMP_DOV2_SETTINGS 和 COMP_SD_SETTINGS

    [7] G_Order -全局重新排序。 1:全局重新排序已打开。 图形层优先级基于 g0_reorder、g1_reorder、g2_order

    [15:14] G2_Order -当 g_Order = 1时、Graphic2层显示顺序。 从低电平到高电平:00、01、10和11
    [13:12] G1_Order -当 g_Order = 1时、Graphic1层显示顺序。 从低电平到高电平:00、01、10和11
    [11:10] G0_Order -当 g_Order = 1时、Graphic0层显示顺序。 从低电平到高电平:00、01、10和11
    [9:8] VID_Order -视频层显示顺序。 从低电平到高电平:00、01、10和11
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Pavel、

    感谢您的快速回复。
    我通过您的回答了解了 Disp_Prior。

    我们 的客户 将 其 与  产品一起使用 、如下 所示。

    帧缓冲器0---grpx0--VOUT2---LCD
    帧缓冲器0--- grpx1---HDMI PHY--HDMI

    因为它显示的是同一图像,所以 grpx1的 framebuffer0的地址与 grpx0相同。
    它  不 是    由复数 图形的平面组成的。

     出现问题的症状如下所示。

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/p/579636/2127708#2127708

     是否     有需要考虑的东西?

    此致、
    新义郎

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

    Shigehiro、

    [引用 user="shigehiro Tsuda "]      是否有人认为这是什么?

    我无法理解您的最后一个问题。 您是否需要回答以下 e2e 帖子?

    对于这个 e2e 线程的主题"Setting method of the priority of VPDMA"、您还有其他问题吗?

    此致、
    帕维尔

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

    您好、Pavel、

    感谢您的快速回复。

    很抱歉, 我问了其他问题。
    由于没有答案、请回复上述 e2e 帖子。  如果可能的话。

    如果使用 HDVPSS 的固件、了解 必须自定义 HDVPSS 源代码后、VPDMA 的优先级更改是否正确?

    此致、
    新义郎

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

    [引述 USER="shigehiro Tsuda ]]由于没有答案,请回复上述 e2e 帖子。  如有可能。[/报价]

    我将在这里查看并答复。

    [引用 user="shigehiro Tsuda "]如果使用 HDVPSS 的固件,了解 必须自定义 HDVPSS 源代码后 VPDMA 的优先级更改是否正确?

    HDVPSS 固件设置 VPDMA 描述符字3 [11:9] 优先级、并将在 u-boot 阶段覆盖 VPDMA 描述符字3 [11:9]优先级设置。

    在 Linux 内核中、HDVPSS GRPX (图形)优先级只设置一次。


    总之、HDVPSS 中有两种优先级:

    1. GRPX (图形)优先级-在 Linux 内核中设置

    2. VPDMA 描述符字3 [11:9] 优先级-在 u-boot 和固件中设置

    此致、
    帕维尔

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

    您好、Pavel、

    感谢您的快速回复。

    我通过您的详细 解释了解了这些优先级。

    VPDMA 的优先级是否始终被 HDVPSS 的固件覆盖?
    还是仅是初始设置?

    此致、
    新义郎

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

    根据我的理解、U-boot 中 VPDMA 字3设置的优先级始终由 HDVPSS 固件覆盖。

    GRPX (图形)的优先级永远不会被 HDVPSS 固件覆盖。

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

    您好、Pavel、

    感谢您的快速回复。
    我了解到 HDVPSS 固件始终会覆盖此内容。

    此致、
    新义郎

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

    所有数据路径的 VPDMA 描述符中的优先级将被覆盖 HDVPSS 固件。

    此致、

    Brijesh