zoukankan      html  css  js  c++  java
  • A10 A20 display controller

    全志的A10 A20 SOC可谓功能强大,尤其是外设方面,可以说常用的接口基本配置全了。在显示方面,支持各种显示器,下图是显示控制器的内部结构:

     因为整图太宽了,分为左右两部分

     

    从数据流的角度:输入->处理->输出

    输入

    输入数据主要分为两部分,写入到 linux framebuffer 的显示数据和摄像头捕获的图像。输入共2路。

    处理

    处理较复杂,很多概念还没弄清楚,目前只知道进行了前端FE(Frontend engine)和后端BE(Backend engine)处理,其中在后端进行了图层(video layer)叠加。处理共2路

    输出

    显示设备分为LCD接口和TV接口,LCD支持RGB、LVDS、8080等,TV支持HDMI、VGA、CVBS、YPrPb等。TV2路,LCD2路。

    多路开关

    这个部件非常重要,经过一定配置,可以得到多种输出组合。图中用红色数字标出的部分(带X图标)即是多路开关,下面分析各个多路开关的输入、输出和配置寄存器。

    • -1

    -1 号开关决定3号开关(TCON FIFO1)的输入,可以选择两个摄像头中的一个CSI0/1。

    • 0

    0 号开关用于选择显示数据的来源,这个开关实际上并不存在,只是为了说明显示数据可以来自framebuffer、CSI0/1(摄像头)。

    • 1

    1号开关决定FE的输入,可以来自DRAM、BE0/1、LCD0/1。

    寄存器为:DEFE_FRM_CTL_REG

    • 2

    2号开关决定BE的输入,可以来自FE0/1。

    寄存器为:DEFE_FRM_CTL_REG

    • 3

    3号开关决定TCON(Timing controller)FIFO1的输入,之后将发往LCD接口,可以来自CSI0/1、BE0/1。

    寄存器为:TCON0_CTL_REG

    • 5

    5号开关决定LCD接口的输入,可以来自TCON 的FIFO1 和testdata。见3号开关配置。

    • 4

    5号开关决定TCON(Timing controller)FIFO2的输入,之后将发往TV engine或HDMI,可以来自BE0/1。

    寄存器为:TCON1_CTL_REG

    • 6

    6号开关决定TVE(TV engine)或 HDMI 的输入,之后将发往TV或 HDMI  接口,可以来自TCON(Timing controller)FIFO2和测试用的bluedata(蓝屏)。

    见开关4。

    • 7和8

     7号开关决定 HDMI 和 TVE 的输入,可以来自 LCD0-TCON1 或 LCD1-TCON1。

    寄存器为:

    TCON_MUX_CTL_REG

    文档并不全面,补上代码:

    __u8 tcon_set_hdmi_src(__u8 src)
    {
        LCDC_INIT_BIT(0,LCDC_MUX_CTRL,0x3<<8,src<<8);
        return 0;    
    }
    
    __u8 tcon_set_tv_src(__u32 tv_index, __u8 src)
    {
            if(tv_index == 0)
            {
                LCDC_INIT_BIT(0,LCDC_MUX_CTRL,0x3<<4,src<<4);
        }
        else
        {
                LCDC_INIT_BIT(0,LCDC_MUX_CTRL,0x3<<0,src<<0);
        }
        return 0;    
    }
    • 9

    9 号开关没有标出,在TVE0 和 TVE1之后,TV-DAC之前,用于选择电视输出的信号来自 TVE0还是TVE1。

    寄存器为 TVE_000_REG

    疑问

    HDMI

    始终未找到HDMI的输入源在哪里,HDMI硬件解口只有一个,目前的猜测是:哪个LCD-TCON使用的是TV模式,则HDMI连接到该通道,如果为LCD模式则不连接。最终的后果是:如果用2路输出,其中1路必须为LCD,否则HDMI输入源会冲突。这个猜想等待以后验证。

  • 相关阅读:
    [Erlang05]gen_server怎么去写eunit?
    [Erlang04]为什么有了rpc还有net_kernel:connect/1?
    [Erlang03]Erlang有哪些好用的静态分析工具?
    [SIP01]SIP Header Fields里面各字段用途
    [SIP00]SIP 概念总结
    [Erlang00]:gen_server:reply/2
    Makefile教程
    Linux 环境下开发 STM32
    Ubuntu 18.04 + ROS Melodic + TurtleBot3仿真
    Ubuntu系统鼠标不能点击
  • 原文地址:https://www.cnblogs.com/JonnyLulu/p/3638905.html
Copyright © 2011-2022 走看看