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

歡迎訪問 生活随笔!

生活随笔

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

linux

zynq-7000移植linux操作系统

發布時間:2024/1/18 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zynq-7000移植linux操作系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 1.u-boot
    • 2.linux內核
    • 3.devicetree.dtb
    • 4.BOOT.bin
    • 5.根文件系統
    • 6.修改bootargs與bootcmd
    • 7.相關網站

開發環境: vivado 2017.4, ubuntu 16.04 開發板: ax7010 編譯器: gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf u-boot: u-boot-xlnx-v2017.4 linux內核: linux-xlnx-xilinx-v2017.4 rootfs: debian文件系統

1.u-boot

  • 配置
##寫入zc702的默認配置 選擇選相近型號即可 make ARCH=arm zynq_zc702_defconfig ##進入圖形配置界面 make ARCH=arm menuconfig
  • BOOT media->support QSPI/SPI flash
  • 編譯
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  • 編譯成功后生產的是 u-boot,重命名為 u-boot.elf,用于生成 BOOT.bin文件

2.linux內核

  • 配置
##寫入zynq的默認配置 make ARCH=arm xilinx_zynq_defconfig ##進入圖形配置界面 make ARCH=arm menuconfig
  • Device Drivers->Memory Technology Device(MTD) surport->Self-contained MTD device drivers->support most SPI Flash
  • Device Drivers->Common Clock Framework->Digilent axi_dynclk Driver
  • Device Drivers->Graphics support-> Digilent VGA/HDMI DRM Encoder Driver
  • 編譯
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
  • 編譯成功后生成的 ./arch/arm/boot/zImage 即為內核文件

3.devicetree.dtb

  • 生成設備樹可參考利用Xilinx SDK生成設備樹
  • 修改pcw.dtsi中的qpsi節點
&qspi {is-dual = <0>;num-cs = <1>;spi-rx-bus-width = <4>;spi-tx-bus-width = <4>;status = "okay";#address-cells = <1>;#size-cells = <0>;flash0: flash@0 {compatible = "n25q512a","micron,m25p80";reg = <0x0>;#address-cells = <1>;#size-cells = <1>;spi-max-frequency = <50000000>;partition@0x00000000 {label = "boot";reg = <0x00000000 0x00500000>;};partition@0x00500000 {label = "bootenv";reg = <0x00500000 0x00020000>;};partition@0x00520000 {label = "kernel"; reg = <0x00520000 0x00a80000>;};partition@0x00fa0000 {label = "devicetree";reg = <0x00fa0000 0x00020000>;};partition@0x00fc0000 {label = "bitstream";reg = <0x00fc0000 0x00500000>;};}; };
  • 修改設備樹system-top.dts文件
/dts-v1/; /include/ "zynq-7000.dtsi" /include/ "pl.dtsi" /include/ "pcw.dtsi"/ {chosen {bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait earlycon";stdout-path = "serial0:115200n8";};aliases {ethernet0 = &gem0;serial0 = &uart1;spi0 = &qspi;};memory {device_type = "memory";reg = <0x0 0x20000000>;};usb_phy0: usb_phy@0 {compatible = "ulpi-phy";#phy-cells = <0>;reg = <0xe0002000 0x1000>;view-port = <0x0170>;drv-vbus;}; };&i2c0 {clock-frequency = <100000>; };&usb0 {dr_mode = "host";usb-phy = <&usb_phy0>; };&sdhci0 {u-boot,dm-pre-reloc; };&uart1 {u-boot,dm-pre-reloc; };&flash0 {compatible = "micron,m25p80", "w25q256", "spi-flash"; };&gem0 {phy-handle = <&ethernet_phy>;ethernet_phy: ethernet-phy@1 {reg = <1>;device_type = "ethernet-phy";}; };&amba_pl {hdmi_encoder_0:hdmi_encoder {compatible = "digilent,drm-encoder";digilent,edid-i2c = <&i2c0>;};xilinx_drm {compatible = "xlnx,drm";xlnx,vtc = <&v_tc_0>;xlnx,connector-type = "HDMIA";xlnx,encoder-slave = <&hdmi_encoder_0>;clocks = <&axi_dynclk_0>;dglnt,edid-i2c = <&i2c0>;planes {xlnx,pixel-format = "rgb888";plane0 {dmas = <&axi_vdma_0 0>;dma-names = "dma";};};}; };&axi_dynclk_0 {compatible = "digilent,axi-dynclk";#clock-cells = <0>;clocks = <&clkc 15>; };&v_tc_0 {compatible = "xlnx,v-tc-5.01.a"; };
  • 編譯設備樹
dtc -I dts -O dtb -o devicetree.dtb system-top.dts

4.BOOT.bin

  • BOOT.bin由FSBL.elf,FPGA.bit,u-boot.elf打包生成
- FSBL.elf ##使用Xilinx SDK例程即可- FPGA.bit ##此處使用黑金例程提供的.bit文件- u-boot.elf ##u-boot編譯生成
  • Xilinx SDK->Xilinx->Create Boot Image->依次添加FSBL.elf,FPGA.bit,u-boot.elf->Create Image
  • BOOT.bin即在上圖Output path路徑下

5.根文件系統

  • 將SD卡分為兩個區
  • Part1 fat32 用于存儲BOOT.bin zImage devicetree.dtb
  • Part2 ext4 用于存儲根文件系統

  • 此處使用的是黑金提供的debian系統,寫入SD卡ext4fs分區即可。假定掛載路徑為/media/dingz/rootfs:
tar -zxvfp debian_rootfs.tar.gz -C /media/dingz/rootfs

6.修改bootargs與bootcmd

  • 開發板啟動方式設為SD卡啟動,連接串口,打開超級終端,autoboot前按下任意鍵,進入u-boot命令行
##NFS ##setenv bootargs 'console=ttyPS0,115200 root=/dev/nfs nfsroot=192.168.1.100:/home/dingz/work/nfs/rootfs,proto=tcp ip=192.168.1.110:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off rw earlyprintk rootfstype=ext4 rootwait earlycon' setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait earlycon' setenv bootcmd 'fatload mmc 0:1 0x2080000 zImage;fatload mmc 0:1 0x2000000 devicetree.dtb;bootz 0x2080000 - 0x2000000' ##將.bit文件從BOOT.bin中剝離時 #1使用.bit #setenv bootcmd 'fatload mmc 0:1 0x100000 design_1_wrapper.bit;fpga loadb 0 0x100000 0x200000;fatload mmc 0:1 0x2080000 zImage;fatload mmc 0:1 0x2000000 devicetree.dtb;bootz 0x2080000 - 0x2000000' #2使用.bin #setenv bootcmd 'fatload mmc 0:1 0x100000 design_1_wrapper.bin;fpga load 0 0x100000 0x200000;fatload mmc 0:1 0x2080000 zImage;fatload mmc 0:1 0x2000000 devicetree.dtb;bootz 0x2080000 - 0x2000000' saveenv print ##檢查是否修改成功 boot ##執行bootcmd啟動linux系統

7.相關網站

  • ARM交叉編譯器:linaro arm交叉編譯器
  • u-boot-xlnx-v2017.4.tar.gz:xilinx u-boot
  • linux-xlnx-xilinx-v2017.4.tar.gz:xilinx linux

總結

以上是生活随笔為你收集整理的zynq-7000移植linux操作系统的全部內容,希望文章能夠幫你解決所遇到的問題。

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