1.ZYNQ7020嵌入式系统Petalinux创建工程、编译内核、编译文件系统

一、定制linux系统命令
在这里插入图片描述
1.通过Vivado创建硬件平台,得到hdf硬件描述文件
2.在使用petalinux之前使用sptl命令配置petalinux工作环境

$sptl

3.创建petalinux工程

$cd 
$mkdir -p work/petalinux/
petalinux-create -t project --template zynq -n zynq_linux 

4.使用petalinux-config --get-hw-description,将hdf文件导入到petalinux工程中并配置petalinux工程

cd zynq_linux petalinux-config --get-hw-description /mnt/hgfs/share/zynq_petalinux.sdk/ 

5.使用 petalinux-config -c kernel 配置 Linux 内核

petalinux-config -c kernel 
  1. 配置 Linux 根文件系统
petalinux-config -c rootfs 
  1. 配置设备树文件;
    使用 vi 命令打开 system-user.dtsi 文件,如下所示:
    原厂的设备树目录在
    D:\科研资料存储\正点原子\启明星开发板\【正点原子】启明星ZYNQ开发板资料 资料盘(A盘)\【正点原子】启明星ZYNQ开发板资料 资料盘(A盘)\4_SourceCode\3_Embedded_Linux\zynq_petalinux\1_customize_linux\software\petalinux\project-spec\meta-user\recipes-bsp\device-tree\files
    设备树为
/include/ "system-conf.dtsi"

#define GPIO_ACTIVE_HIGH   0
#define GPIO_ACTIVE_LOW    1

/ {  
    model = "Navigator Development Board"; 
    compatible = "alientek,zynq-7010","xlnx,zynq-7000"; 

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

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

        gpio-led2 {
            label = "ps_led2";
            gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "timer";
        };

        gpio-led3 {
            label = "ps_led3";
            gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
            default-state = "on";
        };
        
        gpio-led4 {
            label = "pl_led1";
            gpios = <&gpio0 58 GPIO_ACTIVE_HIGH>;
            linux,default-trigger = "timer";
        };

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

        gpio-led6 {
            label = "pl_led3";
            gpios = <&gpio0 60 GPIO_ACTIVE_HIGH>;
            default-state = "on";
        };
    };

    keys {
        compatible = "gpio-keys-polled";
        poll-interval = <20>;
        autorepeat;

        touch-key {
            label = "touch_key";
            gpios = <&gpio0 56 GPIO_ACTIVE_HIGH>;
            linux,code = <1>;     // ESC
        };
        
        gpio-key1 {
            label = "pl_key1";
            gpios = <&gpio0 54 GPIO_ACTIVE_LOW>;
            linux,code = <105>;   // Right
        };

        gpio-key2 {
            label = "pl_key2";
            gpios = <&gpio0 55 GPIO_ACTIVE_LOW>;
            linux,code = <106>;   // Left
        };

        gpio-key3 {
            label = "ps_key1";
            gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
            linux,code = <103>;   // Up
        };
        
        gpio-key4 {
            label = "ps_key2";
            gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
            linux,code = <108>;   // Down
        };
    };

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

    video_timings {
            timing_4x3_480x272: timing0 {
                clock-frequency = <9000000>;
                hactive = <480>;
                vactive = <272>;
    
                hback-porch = <40>;
                hsync-len = <20>;
                hfront-porch = <5>;
                vback-porch = <8>;
                vsync-len = <3>;
                vfront-porch = <8>;
    
                hsync-active = <0>;
                vsync-active = <0>;
                de-active = <1>;
                pixelclk-active = <0>;
            };

            timing_4x3_800x480: timing1 {
                    clock-frequency = <33000000>;
                    hactive = <800>;
                    vactive = <480>;

                    hback-porch = <88>;
                    hsync-len = <48>;
                    hfront-porch = <40>;
                    vback-porch = <32>;
                    vsync-len = <3>;
                    vfront-porch = <13>;

                    hsync-active = <0>;
                    vsync-active = <0>;
                    de-active = <1>;
                    pixelclk-active = <0>;
            };

            timing_7_800x480: timing2 {
                    clock-frequency = <33000000>;
                    hactive = <800>;
                    vactive = <480>;

                    hback-porch = <46>;
                    hsync-len = <20>;
                    hfront-porch = <210>;
                    vback-porch = <23>;
                    vsync-len = <3>;
                    vfront-porch = <22>;

                    hsync-active = <0>;
                    vsync-active = <0>;
                    de-active = <1>;
                    pixelclk-active = <0>;
            };

            timing_7_1024x600: timing3 {
                    clock-frequency = <51000000>;
                    hactive = <1024>;
                    vactive = <600>;

                    hback-porch = <140>;
                    hsync-len = <20>;
                    hfront-porch = <160>;
                    vback-porch = <20>;
                    vsync-len = <3>;
                    vfront-porch = <12>;

                    hsync-active = <0>;
                    vsync-active = <0>;
                    de-active = <1>;
                    pixelclk-active = <0>;
            };

            timing_10x1_1280x800: timing4 {
                    clock-frequency = <71100000>;
                    hactive = <1280>;
                    vactive = <800>;

                    hback-porch = <80>;
                    hsync-len = <10>;
                    hfront-porch = <70>;
                    vback-porch = <10>;
                    vsync-len = <3>;
                    vfront-porch = <10>;

                    hsync-active = <0>;
                    vsync-active = <0>;
                    de-active = <1>;
                    pixelclk-active = <1>;
            };

            timing_1920x1080: timing5 {
                    clock-frequency = <148500000>;
                    hactive = <1920>;
                    vactive = <1080>;

                    hback-porch = <148>;
                    hsync-len = <44>;
                    hfront-porch = <88>;
                    vback-porch = <36>;
                    vsync-len = <5>;
                    vfront-porch = <4>;

                    hsync-active = <0>;
                    vsync-active = <0>;
                    de-active = <1>;
                    pixelclk-active = <1>;
            };
    };       
};

&i2c1 {
    clock-frequency = <100000>;

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

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

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

vi project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi 

在这里插入图片描述
8.编译成功,制作BOOT.BIN启动文件
ZYNQ的启动文件BOOT.BIN一般包含fsb1文件、bitstream文件和uboot文件。使用下面命令生成BOOT.BIN文件

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

参数“–fsbl ./images/linux/zynq_fsbl.elf”指定 fsbl 文件的位置,如果不指定文件位置如用于指定 bitstream 文件的位置参数“–fpga”, Petalinux 会自动使用默认位置。执行结果如下图所示:
在这里插入图片描述
11.们将该工程 image/linux 目录下的 BOOT.BIN 和 image.ub 文件拷贝到
/mnt/hgfs/share,然后共享到计算机中,然后放到制作的系统盘中

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值