全志Allwinner V3s我想用以太网使用tftp下载zImage和设备树,
使用nfs根文件系统,
可是u-boot如何启用以太网Ehernet呢?
离线
参考这篇文章: Licheepi Zero Ethernet适配指南 可以搞定u-boot使用以太网。
Licheepi Zero Ethernet适配指南
一、U-Boot适配Ethernet
U-Boot 2017已经支持了sun8i-emac的驱动,只需要在编译时选上并且修改dts就行。
进入u-boot源码目录:
$ make LicheePi_Zero_defconfig
$ make menuconfig选择 Device Drivers --->
选择 Network device support ---> 并选中 Allwinner Sun8i Ethernet MAC support
修改dts
sun8i-v3s-licheepi-zero.dts:diff --git a/arch/arm/dts/sun8i-v3s-licheepi-zero.dts b/arch/arm/dts/sun8i-v3s-licheepi-zero.dts
index 3d9168c..b8b9fc3 100644
--- a/arch/arm/dts/sun8i-v3s-licheepi-zero.dts
+++ b/arch/arm/dts/sun8i-v3s-licheepi-zero.dts
@@ -49,6 +49,7 @@
compatible = "licheepi,licheepi-zero", "allwinner,sun8i-v3s";aliases {
+ ethernet0 = &emac;
serial0 = &uart0;
};@@ -81,3 +82,14 @@
usb0_id_det-gpio = <&pio 5 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
+
+&emac {
+ phy = <&phy0>;
+ phy-mode = "mii";
+ allwinner,use-internal-phy;
+ allwinner,leds-active-low;
+ status = "okay";
+ phy0: ethernet-phy@0 {
+ reg = <1>;
+ };
+};
sun8i-v3s.dtsi:diff --git a/arch/arm/dts/sun8i-v3s.dtsi b/arch/arm/dts/sun8i-v3s.dtsi
index ebefc0f..cb81dd5 100644
--- a/arch/arm/dts/sun8i-v3s.dtsi
+++ b/arch/arm/dts/sun8i-v3s.dtsi
@@ -96,6 +96,11 @@
#size-cells = <1>;
ranges;+ syscon: syscon@01c00000 {
+ compatible = "allwinner,sun8i-h3-syscon","syscon";
+ reg = <0x01c00000 0x34>;
+ };
+
mmc0: mmc@01c0f000 {
compatible = "allwinner,sun7i-a20-mmc";
reg = <0x01c0f000 0x1000>;
@@ -208,6 +213,17 @@
interrupt-controller;
#interrupt-cells = <3>;+ emac_rgmii_pins: emac0@0 {
+ allwinner,pins = "PD0", "PD1", "PD2", "PD3",
+ "PD4", "PD5", "PD7",
+ "PD8", "PD9", "PD10",
+ "PD12", "PD13", "PD15",
+ "PD16", "PD17";
+ allwinner,function = "emac";
+ allwinner,drive = <SUN4I_PINCTRL_40_MA>;
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+ };
+
uart0_pins_a: uart0@0 {
pins = "PB8", "PB9";
function = "uart0";
@@ -270,6 +286,20 @@
status = "disabled";
};+ emac: ethernet@1c30000 {
+ compatible = "allwinner,sun8i-h3-emac";
+ reg = <0x01c30000 0x104>, <0x01c00030 0x4>;
+ reg-names = "emac", "syscon";
+ interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+ resets = <&ccu RST_BUS_EMAC>, <&ccu RST_BUS_EPHY>;
+ reset-names = "ahb", "ephy";
+ clocks = <&ccu CLK_BUS_EMAC>, <&ccu CLK_BUS_EPHY>;
+ clock-names = "ahb", "ephy";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
gic: interrupt-controller@01c81000 {
compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
reg = <0x01c81000 0x1000>,
编译:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
烧写:
$ dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8
使用Ethernet:
离线
这是我编译好的带以太网的u-boot: u-boot-sunxi-with-splethernet.7z
能不能用都可以到本帖反馈。
跟着教程走了一遍,也用了你提供的u-boot试了下
都不能使用以太网
都是这样的
离线
感觉好像是你的设备树或者驱动没配置好?
还有你用u-boot哪个分支?
v3s-current
这个,如果是像你说的那样就好了
离线
我用的是 v3s-spi-experimental,
你可以试一试这个。
大佬大佬,还是不行
离线
git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-spi-experimental
选择 Network device support ---> 并选中 Allwinner Sun8i Ethernet MAC support 没有这个选项
离线
可以的哦,刚刚重新试过一次:
git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-spi-experimental
cd u-boot/
make LicheePi_Zero_defconfig
make menuconfig
离线
git pull 就有了,谢谢
离线
离线
荔枝派zero核心板pdf:
https://whycan.cn/files/20171005/11/lichee_zero(核心板).pdf
荔枝派zero底板pdf:
https://whycan.cn/files/20171005/11/lichee_base(底板).pdf
全志V3s手册V1.0: Allwinner_V3s_Datasheet_V1.0.pdf
全志S3手册V0.2: Allwinner_S3_Datasheet_V0_2.pdf (索智S3手册)
-----------------------------------------------
这个新款的板子我没有,但是从原理图看那个短路的地方貌似正常。
显示 0M DDR 可能是硬件出问题了, 参考一下这个帖子: https://whycan.cn/t_1702_1.html#p9734
离线
晕哥 说:这是我编译好的带以太网的u-boot: u-boot-sunxi-with-splethernet.7z
能不能用都可以到本帖反馈。
跟着教程走了一遍,也用了你提供的u-boot试了下
都不能使用以太网都是这样的
https://whycan.cn/files/members/449/QQ20180206112609.png
我安装流程走,在编译u-boot的时候dts文件出现警告,不知道有没有影响,也是u-boot ping不通,kernel可以ping通
离线
晕哥,请教你一个问题,我看这个主题中。u-boot居然也有dts。
那么我的问题是,dts在u-boot编译make之前生效的,还是之后生效的。
因为我看最后的步骤都是
dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8
而这个命令,都没有提到dts。
难道是make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 就把dts文件
编译到-boot-sunxi-with-spl.bin 中么?
最近编辑记录 晕哥小弟 (2019-05-08 21:07:42)
离线
对,这个uboot的 dtb 是和 u-boot二进制文件一起打包的,应该是通过某些机制自己能找到 dtb的位置,然后自行加载。
这个机制和kernel的不一样,kernel并未把dts的打包到uImage或者zImage之类的系统镜像内。
离线
晕哥 说:对,这个uboot的 dtb 是和 u-boot二进制文件一起打包的,应该是通过某些机制自己能找到 dtb的位置,然后自行加载。
这个机制和kernel的不一样,kernel并未把dts的打包到uImage或者zImage之类的系统镜像内。
对,我记得 openwrt 默认就是把设备树和 kernel一起打包的,你可以搜索证实并研究一下。
离线
好的,听你这么一说,感觉是这样的,因为在树莓派上运行openwrt我尝试过。编译出来的直接是打包好的镜像文件。比如xxx.img。所以我猜测这里面就应该有dts文件。
离线
晕哥,我想从u-boot,启动内核和文件系统。有这个命令么? lichepi zero平台。
我目前是按照这个思路折腾,首先按照这个主题把u-boot的网口连同,可能还要设置tftp。然后通过tftp下载内核。当然这个rootfs是编译进kernel里面。
如果不正确烦请指出。谢谢。
离线
1. rootfs 和 kernel 一起打包是可以的, 在 menuconfig 的 initramfs 指定文件系统目录即可, 然后再 bootargs 设置 rdinit 参数:
https://whycan.cn/t_1634.html#p18197
2. u-boot驱动了网卡的前提下, 可以通过 tftp 下载 zImage, dtb 等文件
3. 不如直接用 sunxi-fel 下载, 比 tftp 优秀多了:
https://whycan.cn/t_2388.html
离线
我在平台licheepi zero的u-boot上开通网口,按照上述步骤,遇到一个问题:
1、saveenv 报错
=> saveenv
Saving Environment to SPI Flash...
SF: unrecognized JEDEC id bytes: 00, 00, 00
*** Warning - spi_flash_probe_bus_cs() failed, using default environmenthimport_r: can't insert "stdin=serial,usbkbd" into hash table
himport_r: can't insert "stdout=serial,vga" into hash table
himport_r: can't insert "stderr=serial,vga" into hash table
=>
这个是怎么回事呢?我是把u-boot.bin dd到SD卡中的。 另外板子上也焊接了SPI-FLASH。
2、setenv ipaddr xxx.xxx.xxx.xxx
既然保存不了,我就不保存吧。直接使用ping
Using ethernet@1c30000 device
data abort
pc : [<43d9cd3c>] lr : [<43d9e230>]
reloc pc : [<42e3bd3c>] lr : [<42e3d230>]
sp : 43b55de8 ip : 000000ed fp : 43d68f74
r10: 43ded430 r9 : 43b58ee8 r8 : 43ded430
r7 : 00000001 r6 : 00000000 r5 : 0000002a r4 : 43ded48e
r3 : 14000045 r2 : 07aad672 r1 : 43b55df0 r0 : 43ded48e
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...resetting ...
直接重启了。
我使用的 u-boot为: https://github.com/Lichee-Pi/u-boot.git v3s-spi-experimental
离线
1. 你的 flash 是什么型号?
CONFIG_SPI_FLASH_BAR
CONFIG_SPI_FLASH_ATMEL
CONFIG_SPI_FLASH_EON
CONFIG_SPI_FLASH_GIGADEVI
CONFIG_SPI_FLASH_MACRONIX
CONFIG_SPI_FLASH_SPANSION
CONFIG_SPI_FLASH_STMICRO
CONFIG_SPI_FLASH_SST
CONFIG_SPI_FLASH_WINBOND
这是具体的 SPI 厂家, 你看下有没有开起来.
2. 你设备树没有开启 网卡吧?
离线
1、我的SPI-FLASH选择的是W25Q128FVFIG 是WINBOND的。
我也打开了
2、设备树修改两个文件。一个是liche.dts 一个v3s.dtsi,都是按照这个主题上的方法来。也核对了一遍。
离线
离线
U-Boot 2017.01-rc2-00073-gdd6e874-dirty (May 10 2019 - 16:04:10 +0800) Allwinner Technology
CPU: Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM: 64 MiB
MMC: SUNXI SD/MMC: 0
SF: Detected mx25l12805 with page size 256 Bytes, erase size 64 KiB, total 16 MiB
*** Warning - bad CRC, using default environmentIn: serial@01c28000
Out: serial@01c28000
Err: serial@01c28000
Net: phy interface0
eth0: ethernet@1c30000
starting USB...
No controllers found
Hit any key to stop autoboot: 0
=> dhcp
BOOTP broadcast 1
data abort
pc : [<43d9a5c8>] lr : [<43d9bf68>]
reloc pc : [<42e3a5c8>] lr : [<42e3bf68>]
sp : 43b54da0 ip : 000000ed fp : 43dec83c
r10: 43dec38c r9 : 43b57ee8 r8 : 0000000e
r7 : 00000000 r6 : 43dee6d0 r5 : 00000000 r4 : 43dec88e
r3 : 00060101 r2 : 00000008 r1 : 43dec842 r0 : 0000000e
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...resetting ...
网卡是不是没有配置成功?
离线
我这个没有任何把内核的dts放到SD卡中,是否有影响?
离线
另外你上面的操作有个错误,针对我的licheepi zero
aliases {
52 serial0 = &uart0;
53 spi0 = &spi0;
54 ethernet0 = &emac;
55 };
spi0这项你没有写,那么spi-flash不能生效。
离线
=> ping
ping - send ICMP ECHO_REQUEST to network hostUsage:
ping pingAddress
=>
ping - send ICMP ECHO_REQUEST to network hostUsage:
ping pingAddress
=> tftp
*** ERROR: `serverip' not set
=>
离线
一旦使用这些命令,就会导致重启
=> setenv ipaddr 192.168.0.100
=> ping 192.168.0.100
Using ethernet@1c30000 device
data abort
pc : [<43d9c054>] lr : [<43d9d548>]
reloc pc : [<42e3c054>] lr : [<42e3d548>]
sp : 43b54de8 ip : 000000ed fp : 43d67f74
r10: 43dec830 r9 : 43b57ee8 r8 : 43dec830
r7 : 00000001 r6 : 00000000 r5 : 0000002a r4 : 43dec88e
r3 : 14000045 r2 : 6400a8c0 r1 : 43b54df0 r0 : 43dec88e
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...resetting ...
U-Boot SPL 2017.01-rc2-00073-gdd6e874-dirty (May 10 2019 - 16:04:10)
DRAM: 64 MiB
Trying to boot from MMC1U-Boot 2017.01-rc2-00073-gdd6e874-dirty (May 10 2019 - 16:04:10 +0800) Allwinner Technology
CPU: Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM: 64 MiB
MMC: SUNXI SD/MMC: 0
SF: Detected mx25l12805 with page size 256 Bytes, erase size 64 KiB, total 16 MiB
*** Warning - bad CRC, using default environmentIn: serial@01c28000
Out: serial@01c28000
Err: serial@01c28000U-Boot 2017.01-rc2-00073-gdd6e874-dirty (May 10 2019 - 16:04:10 +0800) Allwinner Technology
CPU: Allwinner V3s (SUN8I 1681)
Model: Lichee Pi Zero
DRAM: 64 MiB
MMC: SUNXI SD/MMC: 0
SF: Detected mx25l12805 with page size 256 Bytes, erase size 64 KiB, total 16 MiB
*** Warning - bad CRC, using default environmentIn: serial@01c28000
Out: serial@01c28000
Err: serial@01c28000
Net: phy interface0
eth0: ethernet@1c30000
starting USB...
No controllers found
Hit any key to stop autoboot: 0
=>
离线
这是我编译好的带以太网的u-boot: u-boot-sunxi-with-splethernet.7z
能不能用都可以到本帖反馈。
晕哥啊,晕哥,我就奇怪了。为什么你这个可以呢?你到底改啥了啊?????????????????
离线
离线
能否在百忙之中,重新来过一次,感觉这个很重要。
离线
我已经试过
1、我克隆 https://github.com/Lichee-Pi/u-boot.git v3s-spi-experimental
2、make LicheePi_Zero_defconfig
2、改dts 和dtsi
3、make menuconfig
4、最后make,产生u-boot.bin文件。
结果还是一样。一ping就重启
离线
那我有空再试一试
晕哥,有尝试么? 坐等指导。如果有时间的麻烦,折腾下nfs。使用主线kernel.希望晕哥开坛讲法,卡在这了。
离线
离线
2019-08-05
额。。。。为什么
git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-spi-experimental
git下来的
make LicheePi_Zero_defconfig
make menuconfig
Device Drivers>Network device support下面什么选项都没有啊。。。还需要做什么其他操作码 ?
离线
晕哥 这个问题有办法解决了吗,我的也是uboot网卡 执行dhcp就是重启。
离线
收藏,这种方式比较好。
离线
晕哥 这个问题有办法解决了吗,我的也是uboot网卡 执行dhcp就是重启。
会重启吗 我用这修改设备树方法启动不来
[ 1.067291] ALSA device list:
[ 1.070260] #0: V3s Audio Codec
[ 1.075917] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities
[ 1.085431] EXT4-fs (mmcblk0p2): couldn't mount as ext2 due to feature incompatibilities
[ 1.196040] musb-hdrc musb-hdrc.1.auto: VBUS_ERROR in b_idle (80, <SessEnd), retry #0, port1 00000100
[ 2.224738] random: fast init done
[ 11.764150] sunxi-mmc 1c0f000.mmc: data error, sending stop command
[ 11.770505] sunxi-mmc 1c0f000.mmc: send stop command failed
[ 11.776163] mmcblk0: error -110 sending status command, retrying
[ 11.782208] mmcblk0: error -110 sending status command, retrying
[ 11.788296] mmcblk0: error -110 sending status command, aborting
[ 11.794604] mmc0: card 5048 removed
[ 11.804082] EXT4-fs (mmcblk0p2): recovery complete
[ 11.809187] JBD2: Error -5 detected when updating journal superblock for mmcblk0p2-8.
[ 11.817069] Aborting journal on device mmcblk0p2-8.
[ 11.821994] JBD2: Error -5 detected when updating journal superblock for mmcblk0p2-8.
[ 11.829859] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 11.838051] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 11.844345] devtmpfs: mounted
离线
我也是遇到这个问题,ping IP地址就会重启
离线
我也遇到这个问题,一ping就重启
离线
知道是什么原因了,是编译器版本问题,必须要用文档中那个版本的编译器,换了就好了,太坑了!
离线
知道是什么原因了,是编译器版本问题,必须要用文档中那个版本的编译器,换了就好了,太坑了!
是用的哪个版本的工具链方便分享一下吗,我试了好几个都有一样的问题
离线
PeterCui 说:知道是什么原因了,是编译器版本问题,必须要用文档中那个版本的编译器,换了就好了,太坑了!
是用的哪个版本的工具链方便分享一下吗,我试了好几个都有一样的问题
终于解决了,果然是工具链的问题,我用的是这个(gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf-develop-11.0)版本的工具链。
原来文档中的链接似乎是失效了,我是网上翻到的,上传在这,需要的自取。
https://whycan.com/files/members/9611/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf-develop-11.0.zip
最近编辑记录 你在卖萌吗 (2023-03-18 17:30:10)
离线
PeterCui 说:知道是什么原因了,是编译器版本问题,必须要用文档中那个版本的编译器,换了就好了,太坑了!
是用的哪个版本的工具链方便分享一下吗,我试了好几个都有一样的问题
也遇到同样的问题,正在用这个版本的编译器编译。
离线
@晕哥小弟
data abort 问题, 是armv7 什么字节不能对齐
离线