日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

cups源码下载 linux_【正点原子FPGA连载】第九章Linux显示设备的使用-领航者ZYNQ之linux开发指南...

發布時間:2025/3/11 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cups源码下载 linux_【正点原子FPGA连载】第九章Linux显示设备的使用-领航者ZYNQ之linux开发指南... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1)實驗平臺:正點原子領航者ZYNQ開發板

2)平臺購買地址:https://item.taobao.com/item.htm?&id=606160108761

3)全套實驗源碼+手冊+視頻下載地址:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.html

4)對正點原子FPGA感興趣的同學可以加群討論:876744900

5)關注正點原子公眾號,獲取最新資料

第九章Linux顯示設備的使用


領航者開發板上有兩個顯示設備接口,分別為HDMI接口和LCD接口,這兩個接口可以用來接HDMI顯示器和正點原子的LCD液晶屏,使用圖形界面的時候可以通過這兩個接口分別顯示在HDMI顯示器和LCD液晶屏上。本章我們講解如何使用Petalinux配置Linux內核和設備樹來驅動HDMI顯示器和LCD液晶屏。
9.1準備工作
HDMI的顯示首先需要硬件層面的支持,在《領航者ZYNQ之嵌入式開發指南》的《SD卡讀BMP圖片HDMI顯示實驗》中我們實現了裸機驅動HDMI的顯示,可見硬件層面是沒有問題的。如果想實現Linux驅動HDMI的顯示,除了需要該實驗對應的Vivado工程的硬件平臺支持外,還需要相應的Linux驅動程序,同樣LCD的顯示除了硬件層面的支持外也需要一個驅動。
Linux顯示設備的驅動程序我們放在了提供的內核源碼中。在我們提供的光盤資料:ZYNQ開發板資料盤(A盤)4_SourceCodeZYNQ_70203_Embedded_Linux資源文件kernel目錄下有兩個源碼包,分別是linux-xlnx-xilinx-v2018.3.tar.gz和linux-4.14.0-atk-v2018.3.tar.gz,前者是Xilinx官方提供的Linux內核源碼包,后者是我們定制的用于領航者開發板的Linux內核源碼包,里面添加了適用于領航者開發板的驅動程序,該內核源碼已托管到gitee網站:https://gitee.com/greatdream/linux,可從該網站獲取最新的領航者開發板的linux內核源碼。
我們將linux-4.14.0-atk-v2018.3.tar.gz解壓到ubuntu系統的work/petalinux/目錄下,或者從gitee網站clone到work/petalinux/目錄下,推薦使用第二種方式,在終端輸入命令如下:

  • cd ~/work/petalinux/
  • git clone <a href="https://gitee.com/greatdream/linux.git" target="_blank">https://gitee.com/greatdream/linux.git</a> linux-4.14

  • 上面的命令實現的功能就是將托管到gitee上的Linux內核源碼clone到linux-4.14目錄下,clone完成后,進入到linux-4.14目錄下,可看到linux內核源碼已下載完成,如下圖所示:

    圖 20.1.1 linux內核源碼目錄


    至此我們的準備工作就完成了,下面我們配置Petalinux工程和Linux內核以及設備樹來驅動HDMI或LCD的顯示。
    9.2配置Petalinux工程
    進入到第六章創建的Petalinux工程目錄下,輸入如下命令,設置Petalinux運行所需的環境變量,

  • sptl
    或者
  • source /opt/pkg/petalinux/2018.3/settings.sh

  • 執行結果如下圖所示:

    圖 20.2.1 設置Petalinux運行所需的環境變量


    現在重新配置petalinux,重新設置Linux內核的來源,輸入如下命令:

  • petalinux-config

  • 在彈出的配置窗口中,進入到“Linux Components Selection--->linux-kernel(linux-xlnx)”菜單下,配置Linux內核來源。此處選擇“ext-local-src”,也就是本地存放的Linux內核源碼,如下圖所示:

    圖 20.2.2 選擇“ext-local-src”


    也可以選擇“remote”選項,將遠程路徑指向我們托管的gitee網站,此處以本地路徑為例進行講解。按鍵盤上的下方向鍵移到“ext-local-src”,然后按鍵盤上的“Enter“鍵確定,返回到上一界面,如下圖所示:

    圖 20.2.3 返回到上一界面


    進入“External linux-kernel local source settings”子菜單,如下圖所示:

    圖 20.2.4 “External linux-kernel local source settings”子菜單


    按鍵盤上的“Enter”鍵配置“EXternal linux-kernel local source path”,如下圖所示:

    圖 20.2.5 填寫Linux內核源碼的本地路徑


    也就是填寫Linux內核源碼的本地路徑,上一節我們將Linux內核源碼clone到/home/zynq/work/petalinux/linux-4.14目錄,所以此處填寫該目錄。填寫完成后,按鍵盤上的“Enter”鍵完成配置,返回到上一界面,如下圖所示:

    圖 20.2.6 填寫內核路徑完成后的界面


    現在保存配置并退出,下一步,配置Linux內核。
    9.3配置Linux內核
    Linux內核默認都是配置好的,無需配置。下面我們看下進行了那些配置。在終端中輸入如下命令:
    petalinux-config -c kernel
    彈出Linux內核的配置窗口。在內核配置窗口中,進入“Device Drivers”菜單下的“Graphics support”菜單下,

    圖 20.3.1 “Graphics support”菜單


    可以看到默認配置了“Xilinx LCD framebuffer driver support By Alientek”,該驅動可以用來驅動HDMI和LCD的顯示。
    在“Device Drivers”菜單下的“Common Clock Framework”菜單下,可以看到默認配置了“Digilent axi_dynclk Driver”,該驅動可以根據不同的分辨率輸出不同的像素時鐘。
    至此,內核方面的配置也就完成了。保存并退出,進入下一步,配置設備樹。
    9.4配置設備樹
    編輯當前工程目錄下的project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi文件。由于文件內容太長,此處就不全部粘貼了,主要講解下在第6.2.7節的配置的基礎上追加哪些內容,在beep后面追加視頻時序,內容如下:

  • 94 beep {
  • 95 compatible = "gpio-beeper";
  • 96 gpios = <&gpio0 57 GPIO_ACTIVE_HIGH>;
  • 97 };
  • 98
  • 99 video_timings {
  • 100 timing_4x3_480x272: timing0 {
  • 101 clock-frequency = <9000000>;
  • 102 hactive = <480>;
  • 103 vactive = <272>;
  • 104
  • 105 hback-porch = <40>;
  • 106 hsync-len = <20>;
  • 107 hfront-porch = <5>;
  • 108 vback-porch = <8>;
  • 109 vsync-len = <3>;
  • 110 vfront-porch = <8>;
  • 111
  • 112 hsync-active = <0>;
  • 113 vsync-active = <0>;
  • 114 de-active = <1>;
  • 115 pixelclk-active = <0>;
  • 116 };
  • 117
  • 118 timing_4x3_800x480: timing1 {
  • 119 clock-frequency = <33000000>;
  • 120 hactive = <800>;
  • 121 vactive = <480>;
  • 122
  • 123 hback-porch = <88>;
  • 124 hsync-len = <48>;
  • 125 hfront-porch = <40>;
  • 126 vback-porch = <32>;
  • 127 vsync-len = <3>;
  • 128 vfront-porch = <13>;
  • 129
  • 130 hsync-active = <0>;
  • 131 vsync-active = <0>;
  • 132 de-active = <1>;
  • 133 pixelclk-active = <0>;
  • 134 };
  • 135
  • 136 timing_7_800x480: timing2 {
  • 137 clock-frequency = <33000000>;
  • 138 hactive = <800>;
  • 139 vactive = <480>;
  • 140
  • 141 hback-porch = <46>;
  • 142 hsync-len = <20>;
  • 143 hfront-porch = <210>;
  • 144 vback-porch = <23>;
  • 145 vsync-len = <3>;
  • 146 vfront-porch = <22>;
  • 147
  • 148 hsync-active = <0>;
  • 149 vsync-active = <0>;
  • 150 de-active = <1>;
  • 151 pixelclk-active = <0>;
  • 152 };
  • 153
  • 154 timing_7_1024x600: timing3 {
  • 155 clock-frequency = <51000000>;
  • 156 hactive = <1024>;
  • 157 vactive = <600>;
  • 158
  • 159 hback-porch = <140>;
  • 160 hsync-len = <20>;
  • 161 hfront-porch = <160>;
  • 162 vback-porch = <20>;
  • 163 vsync-len = <3>;
  • 164 vfront-porch = <12>;
  • 165
  • 166 hsync-active = <0>;
  • 167 vsync-active = <0>;
  • 168 de-active = <1>;
  • 169 pixelclk-active = <0>;
  • 170 };
  • 171
  • 172 timing_10x1_1280x800: timing4 {
  • 173 clock-frequency = <71100000>;
  • 174 hactive = <1280>;
  • 175 vactive = <800>;
  • 176
  • 177 hback-porch = <80>;
  • 178 hsync-len = <10>;
  • 179 hfront-porch = <70>;
  • 180 vback-porch = <10>;
  • 181 vsync-len = <3>;
  • 182 vfront-porch = <10>;
  • 183
  • 184 hsync-active = <0>;
  • 185 vsync-active = <0>;
  • 186 de-active = <1>;
  • 187 pixelclk-active = <1>;
  • 188 };
  • 189
  • 190 timing_1920x1080: timing5 {
  • 191 clock-frequency = <148500000>;
  • 192 hactive = <1920>;
  • 193 vactive = <1080>;
  • 194
  • 195 hback-porch = <148>;
  • 196 hsync-len = <44>;
  • 197 hfront-porch = <88>;
  • 198 vback-porch = <36>;
  • 199 vsync-len = <5>;
  • 200 vfront-porch = <4>;
  • 201
  • 202 hsync-active = <0>;
  • 203 vsync-active = <0>;
  • 204 de-active = <1>;
  • 205 pixelclk-active = <1>;
  • 206 };
  • 207 };

  • video_timings開始就是追加的內容,以timing_4x3_480x272為例,講解下命名的格式,timing也就是時序,4x3對應的是4.3寸LCD液晶屏,480x272對應的是該液晶屏的分辨率為480x272,{}內的就是具體的驅動時序,需要說明的是timing_1920x1080對應的是HDMI分辨率為1920x1080的時序。
    除了追加以上內容外,還需要在該文件的尾部追加以下內容:

  • 231 &axi_dynclk_0 {
  • 232 compatible = "digilent,axi-dynclk";
  • 233 clocks = <&clkc 15>;
  • 234 #clock-cells = <0>;
  • 235 };
  • 236
  • 237 &v_tc_0 {
  • 238 compatible = "xlnx,v-tc-5.01.a";
  • 239 };
  • 240
  • 241 &amba_pl {
  • 242 xlnx_vdma_hdmi {
  • 243 compatible = "xilinx,vdmafb";
  • 244 status = "okay";
  • 245
  • 246 xlnx,vtc = <&v_tc_0>;
  • 247 clocks = <&axi_dynclk_0>;
  • 248 clock-names = "hdmi_pclk";
  • 249 dmas = <&axi_vdma_0 0>;
  • 250 dma-names = "hdmi_vdma";
  • 251
  • 252 is-hdmi = <0x1>;
  • 253
  • 254 display-timings = <&timing_1920x1080>;
  • 255 xlnx,pixel-format = "bgr888";
  • 256 };
  • 257 };

  • amba_pl配置的是HDMI的驅動,如果顯示設備是LCD液晶屏,則需要將amba_pl修改成如下的內容:

  • &amba_pl {
  • xlnx_vdma_lcd {
  • compatible = "xilinx,vdmafb";
  • status = "okay";
  • xlnx,vtc = <&v_tc_0>;
  • clocks = <&axi_dynclk_0>;
  • clock-names = "lcd_pclk";
  • dmas = <&axi_vdma_0 0>;
  • dma-names = "lcd_vdma";
  • is-hdmi = <0x0>;
  • rst-gpios = <&gpio0 62 GPIO_ACTIVE_LOW>;
  • bl-gpios = <&gpio0 61 GPIO_ACTIVE_HIGH>;
  • atk,lcd-id = <&axi_gpio_0 0 0 GPIO_ACTIVE_LOW
  • &axi_gpio_0 1 0 GPIO_ACTIVE_LOW
  • &axi_gpio_0 2 0 GPIO_ACTIVE_LOW>;
  • display-timings = <&timing_4x3_480x272
  • &timing_4x3_800x480
  • &timing_7_800x480
  • &timing_7_1024x600
  • &timing_10x1_1280x800>;
  • xlnx,pixel-format = "rgb888";
  • };
  • };

  • 設備樹配置內容已經放在我們提供的例程源碼當中,路徑為:“領航者ZYNQ開發板資料盤(A盤)4_SourceCodeZYNQ_70203_Embedded_Linuxzynq_petalinux2_linux_hdmisoftwarepetalinuxproject-specmeta-userrecipes-bspdevice-treefilessystem-user.dtsi”,可以打開這個文件將里面的內容拷貝到這個文件中,默認提供的是HDMI的驅動配置,LCD的驅動配置需要自行替換該文件中amba_pl的內容。
    配置完了設備樹之后,就是編譯Petalinux工程了。
    9.5編譯Petalinux工程
    現在我們編譯整個Petalinux工程,在終端輸入如下命令:

  • petalinux-build

  • 執行結果如下圖所示:

    圖 20.5.1 編譯整個Petalinux工程


    9.6制作BOOT.BIN啟動文件并復制到SD卡
    使用下面命令生成 BOOT文件:

  • petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --force

  • 執行結果如下圖所示:

    圖 20.6.1 生成 BOOT文件


    生成BOOT文件后,我們插入SD卡,將該工程image/linux目錄下的BOOT.BIN和image.ub文件拷貝到名為BOOT的分區也即/dev/sdc1分區中,如下圖所示:

    圖 20.6.2 拷貝啟動鏡像到第一個分區


    本實驗只需要這兩個文件即可,現在可以卸載SD卡了。
    9.7在開發板上啟動Linux
    將SD卡插入領航者開發板的SD卡槽(卡槽位于開發板背面),然后使用Mini USB連接線將開發板左側的USB_UART接口與電腦連接,用于串口通信。接下來將領航者底板上的啟動模式開關設置為從SD卡啟動。最后連接開發板的電源線,并打開電源開關。
    HDMI顯示器顯示的內容如下圖所示:

    圖 20.7.1 HDMI顯示器顯示結果


    此時如果在領航者開發板上插入鍵盤,就可以登錄了,登錄的用戶名為:root,密碼為:root。此處我們就不演示了。至此我們完成了Linux顯示設備的驅動。

    總結

    以上是生活随笔為你收集整理的cups源码下载 linux_【正点原子FPGA连载】第九章Linux显示设备的使用-领航者ZYNQ之linux开发指南...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 狠狠躁夜夜躁 | 国产欲妇 | 国产午夜大地久久 | 波多野结衣欧美 | 国产情侣呻吟对白高潮 | 国产情侣自拍小视频 | 成人av色| 羽月希奶水一区二区三区 | 少妇又色又爽又黄的视频 | 好爽又高潮了毛片 | 懂色av一区二区三区蜜臀 | 日欧一级片 | 片集网 | 波多野结衣中文字幕在线 | 国产高清视频在线播放 | 国产精品视频久久久 | 4438国产精品一区二区 | 最近中文字幕mv免费高清在线 | 2021av在线 | 成人深夜影院 | 中文字幕一区二区三区久久久 | 好吊色视频988gao在线观看 | 无码日韩精品一区二区 | 日本福利一区二区 | 91学生片黄| 强伦人妻一区二区三区 | 射射av| 激情一区二区三区 | 欧美xxxx黑人又粗又长密月 | 日本女优一区 | 一级网站在线观看 | 秋霞成人午夜伦在线观看 | 美丽的姑娘在线观看免费 | 调教女m荡骚贱淫故事 | 美女黄色一级视频 | 杏导航aⅴ福利网站 | 亚洲精品久久久中文字幕 | 国产一级久久久 | 白又丰满大屁股bbbbb | 波多野结衣av在线观看 | 成人在线视频免费播放 | 无码人妻aⅴ一区二区三区有奶水 | 三级小视频在线观看 | 国产一级精品视频 | 青草精品视频 | 久久午夜夜伦鲁鲁片 | 亚洲国产综合视频 | 超碰pron| 国产精品久久精品 | 国产专区第一页 | 一级片亚洲 | 99婷婷| 欧美大片一区二区三区 | 成人性视频网站 | 午夜精品久久久久久久久久久久久蜜桃 | 黄页网址大全免费观看 | 红桃一区二区三区 | 午夜精品无码一区二区三区 | 亚洲国产免费看 | 好吊妞视频在线 | 日韩国产一区 | xxxxx在线观看| 麻豆免费视频 | 国产最新自拍视频 | 欧美经典一区二区三区 | 欧美成人生活片 | 夜夜躁很很躁日日躁麻豆 | 国产色网| 肉色欧美久久久久久久免费看 | 国产乡下妇女三片 | 亚洲啪啪av | 免费二区| 美腿丝袜一区二区三区 | 香蕉久久夜色精品国产使用方法 | 美女诱惑一区二区 | gogo亚洲国模私拍人体 | 星空大象在线观看免费播放 | 午夜影院日本 | 国产精品久久久久久久久久久久久久久久久久 | 女人扒开腿让男人桶爽 | 色噜噜狠狠成人中文 | 国产在线综合网 | 亚洲图片一区二区 | 日本一区二区三区免费电影 | 人人av在线 | 中文字幕亚洲欧美日韩在线不卡 | 色天天色 | 亚洲资源在线观看 | 国产毛片电影 | 日韩人妻无码一区二区三区 | 国产精品桃色 | 精品国产视频在线 | 日韩视频在线观看一区 | 国产精久久一区二区三区 | 男人女人拔萝卜视频 | 伊人焦久影院 | 51ⅴ精品国产91久久久久久 | 久久久精品免费观看 | 国产视频精品在线 |