前言


在以往修改内核驱动时,一般在源码里 arch/arm/boot/dts/文件下,有相应的设备树文件
而使用petalinux后,在哪里修改,内核源码在哪里?


在使用petalinux-build后,会自动生成文件project-spec/meta-user/recipes-bsp/device-tree/files文件,在此文件夹下有system-user.dtsi,这个就是设备树


常见的问题


1、以太网不能使用


系统启动后,打印输出


Could not find eth0

并且用命令行ifconfig -a 查看,没有发现eth0


2、SD卡在启动阶段提示错误,并且不支持动态插拔


现象一:


mmc1: error -110 whilst initialising SD card

现象二:
在选择使用SD卡启动时显示一下错误,找不到mmcblk1p2


root@ZYNQ:/mnt# [ 2639.610797] mmc1: new high speed SDHC card at address e624
[ 2639.616678] mmcblk1: mmc1:e624 SU04G 3.69 GiB (ro)
[ 2639.632772]  mmcblk1: p1 p2
[ 2639.908276] /dev/mmcblk1p1: Can't open blockdev
[ 2639.916043] EXT4-fs (mmcblk1p2): INFO: recovery required on readonly filesystem
[ 2639.923362] EXT4-fs (mmcblk1p2): write access unavailable, cannot proceed (try mounting with noload)
[ 2639.932709] /dev/mmcblk1p2: Can't open blockdev
[ 2639.998528] EXT4-fs (mmcblk1p2): INFO: recovery required on readonly filesystem
[ 2640.005836] EXT4-fs (mmcblk1p2): write access unavailable, cannot proceed (try mounting with noload)
[ 2640.015281] /dev/mmcblk1p2: Can't open blockdev

现象三:


[    3.772317] VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2): error -6

解决方法,


在设备树system-user.dtsi添加驱动


aliases {
                ethernet0 = "&gem3";
                mmc0 = &sdhci1;
        };
…

&gem3 {
        status = "okay";
        phy-handle = <&phy0>;
        phy-mode = "rgmii-id";
        phy0: phy@21 {
                reg = <5>;
                ti,rx-internal-delay = <0x8>;
                ti,tx-internal-delay = <0xa>;
                ti,fifo-depth = <0x1>;
                ti,dp83867-rxctrl-strap-quirk;
        };
};

&sdhci1 {
        status = "okay";
        no-1-8-v;
        xlnx,mio_bank = <1>;
};