OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 938|回复: 2

[XILINX] ZYNQ7020 HDMI+OV5640 高版本无法显示fb设备

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2023-7-21
在线时间
5 小时
发表于 2024-2-4 16:32:11 | 显示全部楼层 |阅读模式
ZYNQ7020 HDMI+OV5640

学习了例程

Ubuntu18+petalinux2018
能正常编译教程中介绍的内容
能正常显示Demo例程中Gui测试画面,能显示摄像头内容

Ubuntu20.04 + petalinux2022
能正常编译教程中介绍的内容
能正常启动后,但是启动后没有fb设备,无法显示HDMI,无法启动Demo测试程序
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

102

帖子

0

精华

高级会员

Rank: 4

积分
645
金钱
645
注册时间
2021-8-3
在线时间
152 小时
发表于 2024-2-5 11:39:54 | 显示全部楼层
得看一下哪里有改动吧,用了哪些启动文件,还有是哪个Demo
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2023-7-21
在线时间
5 小时
 楼主| 发表于 2024-2-5 18:51:56 | 显示全部楼层
helloqds 发表于 2024-2-5 11:39
得看一下哪里有改动吧,用了哪些启动文件,还有是哪个Demo

内核文件:atk-zynq-linux-xlnx.tar.gz
Uboot文件:atk-zynq-uboot-xlnx.tar.gz
设备信息:/Navigator_7020/system_wrapper.xsa
Demo示例为rootfs-qt5-atk.tar.gz中QMainApp 界面为ZYNQ 用户快速体验_V.30.pdf介绍的

system-user.dtsi 文件内容如下:

/include/ "system-conf.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/media/xilinx-vip.h>
#include <dt-bindings/phy/phy.h>

/ {
        model = "Alientek Navigator Zynq Development Board";
        compatible = "xlnx,zynq-zc702", "xlnx,zynq-7000";
//chosen {
//                bootargs = "console=ttyPS0,115200 cma=50M earlycon root=/dev/mmcblk0p2 rw rootwait";
//                stdout-path = "serial0:115200n8";
//        };

    leds {
                compatible = "gpio-leds";

                gpio-led1 {
                        label = "led1";
                        gpios = <&gpio0 54 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };

                gpio-led2 {
                        label = "led2";
                        gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
                        linux,default-trigger = "heartbeat";
                };

                gpio-led3 {
                        label = "pl_led0";
                        gpios = <&axi_gpio_0 0 0 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };

                gpio-led4 {
                        label = "pl_led1";
                        gpios = <&axi_gpio_0 1 0 GPIO_ACTIVE_HIGH>;
                        linux,default-trigger = "timer";
                };

                gpio-led5 {
                        label = "ps_led0";
                        gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };

                gpio-led6 {
                        label = "ps_led1";
                        gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
                        linux,default-trigger = "timer";
                };
        };

        keys {
                compatible = "gpio-keys";
                autorepeat;

                gpio-key1 {
                        label = "pl_key0";
                        gpios = <&gpio0 55 GPIO_ACTIVE_LOW>;
                        linux,code = <KEY_LEFT>;
                        gpio-key,wakeup;
                        autorepeat;
                };

                gpio-key2 {
                        label = "pl_key1";
                        gpios = <&gpio0 56 GPIO_ACTIVE_LOW>;
                        linux,code = <KEY_RIGHT>;
                        gpio-key,wakeup;
                        autorepeat;
                };

                gpio-key3 {
                        label = "ps_key1";
                        gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
                        linux,code = <KEY_UP>;
                        gpio-key,wakeup;
                        autorepeat;
                };

                gpio-key4 {
                        label = "ps_key2";
                        gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
                        linux,code = <KEY_DOWN>;
                        gpio-key,wakeup;
                        autorepeat;
                };

                touch-key {
                        label = "touch_key";
                        gpios = <&gpio0 57 GPIO_ACTIVE_HIGH>;
                        linux,code = <KEY_ENTER>;
                        gpio-key,wakeup;
                        autorepeat;
                };
        };

        beep {
                compatible = "gpio-beeper";
                gpios = <&gpio0 58 GPIO_ACTIVE_HIGH>;
        };

        usb_phy0: phy0@e0002000 {
                compatible = "ulpi-phy";
                #phy-cells = <0>;
                reg = <0xe0002000 0x1000>;
                view-port = <0x0170>;
                drv-vbus;
        };

        ov5640_xclk: ov5640_xclk {
                        #clock-cells = <0>;
                        clock-frequency = <24000000>;
                        compatible = "fixed-clock";
        };
};

&uart0 {
        u-boot,dm-pre-reloc;
        status = "okay";
};

&sdhci0 {
        u-boot,dm-pre-reloc;
        status = "okay";
};

&usb0 {
        dr_mode = "otg";
        usb-phy = <&usb_phy0>;
};

&qspi {
        u-boot,dm-pre-reloc;
        flash@0 { /* 16 MB */
                compatible = "w25q256", "jedec,spi-nor";
                reg = <0x0>;
                spi-max-frequency = <50000000>;
                #address-cells = <1>;
                #size-cells = <1>;
                partition@0x00000000 {
                        label = "boot";
                        reg = <0x00000000 0x00100000>;
                };
                partition@0x00100000 {
                        label = "bootenv";
                        reg = <0x00100000 0x00020000>;
                };
                partition@0x00120000 {
                        label = "bitstream";
                        reg = <0x00120000 0x00400000>;
                };
                partition@0x00520000 {
                        label = "device-tree";
                        reg = <0x00520000 0x00020000>;
                };
                partition@0x00540000 {
                        label = "kernel";
                        reg = <0x00540000 0x00500000>;
                };
                partition@0x00A40000 {
                        label = "space";
                        reg = <0x00A40000 0x00000000>;
                };
        };
};

&gem0 {
        local-mac-address = [00 0a 35 00 8b 87];

        phy-handle = <&ethernet_phy>;
        ethernet_phy: ethernet-phy@7 {        /* yt8521 */
                reg = <0x7>;
                device_type = "ethernet-phy";
        };
};

&gem1 {
        local-mac-address = [00 0a 35 00 11 55];
        phy-reset-gpio = <&gpio0 63 GPIO_ACTIVE_LOW>;
        phy-reset-active-low;

        phy-handle = <&pl_phy>;
        pl_phy: pl_phy@4 {       
                reg = <0x4>;
                device_type = "ethernet-phy";
        };
};

&watchdog0 {
        status = "okay";
        reset-on-timeout;                // Enable watchdog reset function
};

&adc {
        status = "okay";

        xlnx,channels {
                #address-cells = <1>;
                #size-cells = <0>;

                channel@0 {
                        reg = <0>;
                };
        };
};

&i2c0 {
        clock-frequency = <100000>;

        eeprom@50 {
                compatible = "atmel,24c64";
                reg = <0x50>;
                pagesize = <32>;
        };

        rtc@51 {
                compatible = "nxp,pcf8563";
                reg = <0x51>;
        };

        codec: wm8960@1a {
                compatible = "wlf,wm8960";
                reg = <0x1a>;
                #sound-dai-cells = <0>;
                wlf,shared-lrclk;

                clock-names = "mclk";
                clocks = <&clk_wiz_0 1>;
        };
};

&i2c1 {
        clock-frequency = <100000>;

        edt-ft5x06@38 {
                compatible = "edt,edt-ft5426";
                reg = <0x38>;

                interrupt-parent = <&gpio0>;
                interrupts = <60 0x2>;

                reset-gpio = <&gpio0 59 GPIO_ACTIVE_LOW>;
                interrupt-gpio = <&gpio0 60 GPIO_ACTIVE_LOW>;
        };

        goodix_ts@14 {
                compatible = "goodix,gt9xx";
                status = "okay";
                reg = <0x14>;
                interrupt-parent = <&gpio0>;
                interrupts = <60 0>;
                reset-gpio = <&gpio0 59 GPIO_ACTIVE_LOW>;
                interrupt-gpio = <&gpio0 60 GPIO_ACTIVE_LOW>;
        };
};

&i2c2 {
        clock-frequency = <100000>;

        ov5640@3c {
                compatible = "ovti,ov5640";
                reg = <0x3c>;
        clocks = <&ov5640_xclk>;
                clock-names = "xclk";
                pwdn-gpios = <&gpio0 61 GPIO_ACTIVE_HIGH>;
                reset-gpios = <&gpio0 62 GPIO_ACTIVE_LOW>;

                status = "okay";

                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                        reg = <0>;

                        ov5640_ep: endpoint {
                                remote-endpoint = <&xlnx_vcap>;
                                bus-width = <8>;
                                data-shift = <2>; /* lines 9:2 are used */
                                hsync-active = <0>;
                                vsync-active = <0>;
                                pclk-sample = <1>;
                        };
                };
        };
};

&audio_audio_formatter{
        audio-codec = <&codec>;
};

&clk_wiz_0 {
    compatible = "xlnx,clocking-wizard";
    xlnx,nr-outputs = <2>;
};

&lcd_out_lcd_pl_pwm{
        compatible = "digilent,axi-pwm";
        #pwm-cells = <2>;
        clock-names = "pwm";
        npwm = <1>;
};

&lcd_out_lcd_vtc {
        compatible = "xlnx,bridge-v-tc-6.1";
        xlnx,pixels-per-clock = <1>;
};

//#ifndef Z7010                //7010的开发板因为pl资源不够,没有添加hdmi
&hdmi_out_clk_wiz_dyn{
    compatible = "xlnx,clocking-wizard";
    xlnx,nr-outputs = <2>;
};

&hdmi_out_hdmi_vtc {
        compatible = "xlnx,bridge-v-tc-6.1";
        xlnx,pixels-per-clock = <1>;
};
//#endif

&amba_pl {
        drm_pl_disp_lcd {
                compatible = "xlnx,pl-disp";
                dmas = <&lcd_out_v_frmbuf_rd_0 0>;
                dma-names = "dma0";
                xlnx,vformat = "BG24";
                xlnx,bridge = <&lcd_out_lcd_vtc>;

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        port@0 {
                                reg = <0>;
                                pl_disp_crtc_lcd:endpoint {
                                        remote-endpoint = <&lcd_encoder>;
                                };
                        };
                };
        };

        atk_lcd_drm{
                compatible = "atk,atk_dpi";
                status = "okay";

                clocks = <&clk_wiz_0 0>;
                clock-names = "lcd_pclk";
                pwms = <&lcd_out_lcd_pl_pwm 0 5000000>;

                lcdID = <&lcd_out_lcd_id 0 0 GPIO_ACTIVE_LOW
                                 &lcd_out_lcd_id 1 0 GPIO_ACTIVE_LOW
                                 &lcd_out_lcd_id 2 0 GPIO_ACTIVE_LOW>;

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        port@0 {
                                reg = <0>;
                                lcd_encoder: endpoint {
                                        remote-endpoint = <&pl_disp_crtc_lcd>;
                                };
                        };
                };

                display-timings {                                        /* 时序信息 */
                        timing_4342: timing0 {
                                clock-frequency = <9000000>; /* LCD 像素时钟,单位 Hz */
                                hactive = <480>;                        /* LCD X 轴像素个数 */
                                vactive = <272>;                        /* LCD Y 轴像素个数 */
                                hback-porch = <2>;                        /* LCD hfp 参数 */
                                hfront-porch = <2>;                        /* LCD hbp 参数 */
                                hsync-len = <41>;                        /* LCD hspw 参数 */
                                vback-porch = <2>;                        /* LCD vbp 参数 */
                                vfront-porch = <2>;                        /* LCD vfp 参数 */
                                vsync-len = <10>;                        /* LCD vspw 参数 */
                                hsync-active = <0>;                        /* hsync 数据线极性 */
                                vsync-active = <0>;                        /* vsync 数据线极性 */
                                de-active = <1>;                        /* de 数据线极性 */
                        };
                        timing_7084: timing1 {
                                clock-frequency = <33330000>;
                                hactive = <800>;
                                vactive = <480>;
                                hback-porch = <88>;
                                hfront-porch = <40>;
                                hsync-len = <128>;
                                vback-porch = <33>;
                                vfront-porch = <10>;
                                vsync-len = <2>;
                                hsync-active = <0>;
                                vsync-active = <0>;
                                de-active = <1>;
                                pixelclk-active = <0>;
                        };
                        timing_7016: timing2 {
                                clock-frequency = <51200000>;
                                hactive = <1024>;
                                vactive = <600>;
                                hback-porch = <140>;
                                hfront-porch = <160>;
                                hsync-len = <20>;
                                vback-porch = <20>;
                                vfront-porch = <12>;
                                vsync-len = <3>;
                                hsync-active = <0>;
                                vsync-active = <0>;
                                de-active = <1>;
                                pixelclk-active = <0>;
                        };
                        timing_1018: timing3 {
                                clock-frequency = <71100000>;
                                hactive = <1280>;
                                vactive = <800>;
                                hback-porch = <80>;
                                hfront-porch = <70>;
                                hsync-len = <10>;
                                vback-porch = <10>;
                                vfront-porch = <10>;
                                vsync-len = <3>;
                                hsync-active = <0>;
                                vsync-active = <0>;
                                de-active = <1>;
                                pixelclk-active = <0>;
                        };
                };
        };

//#ifndef Z7010
        drm_pl_disp_hdmi {
                compatible = "xlnx,pl-disp";
                dmas = <&hdmi_out_v_frmbuf_rd_0 0>;
                dma-names = "dma0";
                xlnx,vformat = "BG24";
                xlnx,bridge = <&hdmi_out_hdmi_vtc>;

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        port@0 {
                                reg = <0>;
                                pl_disp_crtc_hdmi:endpoint {
                                        remote-endpoint = <&hdmi_encoder>;
                                };
                        };
                };
        };

        atk_hdmi_drm{
                compatible = "atk,atk-hdmi";
                status = "okay";

                clocks = <&hdmi_out_clk_wiz_dyn 0>, <&hdmi_out_clk_wiz_dyn 1>;
                clock-names = "hdmi_pclk", "hdmi_pclk_5x";
            clk-num = <2>;                        //时钟数
                ddc-i2c-bus = <&i2c1>;
                hpd-gpios = <&gpio0 64 GPIO_ACTIVE_HIGH>;

                ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                        port@0 {
                                reg = <0>;
                                hdmi_encoder: endpoint {
                                        remote-endpoint = <&pl_disp_crtc_hdmi>;
                                };
                        };
                };
        };
//#endif

        vcap_dvp {
                compatible = "xlnx,video";
                dmas = <&camera_in_v_frmbuf_wr_0 0>;
                dma-names = "port0";
                status = "okay";

                ports {
                        #address-cells = <1>;
                        #size-cells = <0>;

                        port@0 {
                                reg = <0>;
                                direction = "input";

                                xlnx_vcap: endpoint {
                                        remote-endpoint = <&ov5640_ep>;
                                };
                        };
                };
        };       
};
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表