fdu / STM32F746G-disco_Buildroot

28 stars 29 forks source link

more ethernet #3

Closed cfriedt closed 5 years ago

cfriedt commented 5 years ago

I was able to get Linux to probe the ethernet with the following snippet of device tree

        mac: ethernet@40028000 {
            compatible = "st,stm32-dwmac", "snps,dwmac-3.50a", "snps,dwmac";
            reg = <0x40028000 0x8000>;
            reg-names = "stmmaceth";

            resets = <&rcc STM32F7_AHB1_RESET(ETHMAC)>;
            reset-names = "stmmaceth";

            clocks = <&rcc 0 STM32F7_AHB1_CLOCK(ETHMAC)>,
                 <&rcc 0 STM32F7_AHB1_CLOCK(ETHMACTX)>,
                 <&rcc 0 STM32F7_AHB1_CLOCK(ETHMACRX)>;
            clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";

            interrupts = <61>, <62>;
            interrupt-names = "macirq", "eth_wake_irq";

            dma-ranges;
            st,syscon = <&syscfg 0x4>;

            pinctrl-0 = <&ethernet_rmii>;
            phy-mode = "rmii";
            phy-handle = <&phy0>;

            status = "okay";

            mdio0 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "snps,dwmac-mdio";
                phy0: ethernet-phy@0 {
                    reg = <0>;
                };
            };
        };
...
            ethernet_rmii: rmii@0 {
                  pins {
                      pinmux = <STM32_PINMUX('G', 13, AF11)>, /* ETH_RMII_TXD0 */
                           <STM32_PINMUX('G', 14, AF11)>, /* ETH_RMII_TXD1 */
                           <STM32_PINMUX('G', 11, AF11)>, /* ETH_RMII_TX_EN */
                           <STM32_PINMUX('A',  2, AF11)>, /* ETH_MDIO */
                           <STM32_PINMUX('C',  1, AF11)>, /* ETH_MDC */
                           <STM32_PINMUX('A',  1, AF11)>, /* ETH_RMII_REF_CLK */
                           <STM32_PINMUX('A',  7, AF11)>, /* ETH_RMII_CRS_DV */
                           <STM32_PINMUX('C',  4, AF11)>, /* ETH_RMII_RXD0 */
                           <STM32_PINMUX('C',  5, AF11)>; /* ETH_RMII_RXD1 */
                      slew-rate = <2>;
                  };
            };
``

[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.15.7 (cfriedt@cfriedt-MacBookPro) (gcc version 6.3.0 (Buildroot 2017.02.9-dirty)) #4 PREEMPT Sun Dec 9 09:59:01 EST 2018 [ 0.000000] CPU: ARMv7-M [410fc271] revision 1 (ARMv7M), cr=00000000 [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache [ 0.000000] OF: fdt: Machine model: STMicroelectronics STM32F746-DISCO board [ 0.000000] debug: ignoring loglevel setting. [ 0.000000] On node 0 totalpages: 2048 [ 0.000000] Normal zone: 16 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 2048 pages, LIFO batch:0 [ 0.000000] random: fast init done [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists, mobility grouping off. Total pages: 2032 [ 0.000000] Kernel command line: console=ttyS0,115200 earlyprintk consoleblank=0 ignore_loglevel panic=3 [ 0.000000] Dentry cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Inode-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.000000] Memory: 5064K/8192K available (1763K kernel code, 132K rwdata, 556K rodata, 272K init, 134K bss, 3128K reserved, 0K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0x00000000 - 0x00001000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0x00000000 - 0xffffffff (4095 MB) [ 0.000000] lowmem : 0xc0000000 - 0xc0800000 ( 8 MB) [ 0.000000] .text : 0x(ptrval) - 0x(ptrval) (1764 kB) [ 0.000000] .init : 0x(ptrval) - 0x(ptrval) ( 272 kB) [ 0.000000] .data : 0x(ptrval) - 0x(ptrval) ( 133 kB) [ 0.000000] .bss : 0x(ptrval) - 0x(ptrval) ( 135 kB) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] Tasks RCU enabled. [ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16 [ 0.000000] interrupt-controller@40013c00: bank0, External IRQs available:0xffffff [ 0.000000] clocksource: arm_system_timer: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 298634427 ns [ 0.000000] ARM System timer initialized as clocksource [ 0.000000] /soc/timer@40000c00: STM32 clockevent driver initialized (32 bits) [ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns [ 0.060000] Calibrating delay loop... 393.21 BogoMIPS (lpj=1966080) [ 0.060000] pid_max: default: 4096 minimum: 301 [ 0.060000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.060000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.060000] Hierarchical SRCU implementation. [ 0.070000] devtmpfs: initialized [ 0.110000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.110000] pinctrl core: initialized pinctrl subsystem [ 0.120000] NET: Registered protocol family 16 [ 0.140000] stm32f746-pinctrl soc:pin-controller: GPIOA bank added [ 0.140000] stm32f746-pinctrl soc:pin-controller: GPIOB bank added [ 0.150000] stm32f746-pinctrl soc:pin-controller: GPIOC bank added [ 0.150000] stm32f746-pinctrl soc:pin-controller: GPIOD bank added [ 0.150000] stm32f746-pinctrl soc:pin-controller: GPIOE bank added [ 0.150000] stm32f746-pinctrl soc:pin-controller: GPIOF bank added [ 0.150000] stm32f746-pinctrl soc:pin-controller: GPIOG bank added [ 0.160000] stm32f746-pinctrl soc:pin-controller: GPIOH bank added [ 0.160000] stm32f746-pinctrl soc:pin-controller: GPIOI bank added [ 0.160000] stm32f746-pinctrl soc:pin-controller: GPIOJ bank added [ 0.160000] stm32f746-pinctrl soc:pin-controller: GPIOK bank added [ 0.160000] stm32f746-pinctrl soc:pin-controller: Pinctrl STM32 initialized [ 0.210000] pps_core: LinuxPPS API ver. 1 registered [ 0.210000] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti giometti@linux.it [ 0.210000] PTP clock support registered [ 0.220000] clocksource: Switched to clocksource arm_system_timer [ 0.230000] NET: Registered protocol family 2 [ 0.230000] TCP established hash table entries: 1024 (order: 0, 4096 bytes) [ 0.230000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes) [ 0.230000] TCP: Hash tables configured (established 1024 bind 1024) [ 0.230000] UDP hash table entries: 256 (order: 0, 4096 bytes) [ 0.230000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) [ 0.230000] NET: Registered protocol family 1 [ 0.360000] workingset: timestamp_bits=30 max_order=11 bucket_order=0 [ 0.410000] io scheduler noop registered (default) [ 0.410000] io scheduler mq-deadline registered [ 0.410000] io scheduler kyber registered [ 0.420000] STM32 USART driver initialized [ 0.420000] 40011000.serial: ttyS0 at MMIO 0x40011000 (irq = 32, base_baud = 6250000) is a stm32-usart [ 0.870000] console [ttyS0] enabled [ 0.870000] stm32-usart 40011000.serial: rx dma alloc failed [ 0.880000] stm32-usart 40011000.serial: interrupt mode used for rx (no dma) [ 0.890000] stm32-usart 40011000.serial: tx dma alloc failed [ 0.890000] stm32-usart 40011000.serial: interrupt mode used for tx (no dma) [ 0.910000] libphy: Fixed MDIO Bus: probed [ 0.910000] stm32-dwmac 40028000.ethernet: PTP uses main clock [ 0.910000] stmmac - user ID: 0x10, Synopsys ID: 0x35 [ 0.930000] stm32-dwmac 40028000.ethernet: Ring mode enabled [ 0.930000] stm32-dwmac 40028000.ethernet: DMA HW capability register supported [ 0.930000] stm32-dwmac 40028000.ethernet: Enhanced/Alternate descriptors [ 0.950000] stm32-dwmac 40028000.ethernet: Enabled extended descriptors [ 0.950000] stm32-dwmac 40028000.ethernet: RX Checksum Offload Engine supported [ 0.950000] stm32-dwmac 40028000.ethernet: COE Type 2 [ 0.960000] stm32-dwmac 40028000.ethernet: TX Checksum insertion supported [ 0.970000] stm32-dwmac 40028000.ethernet: Wake-Up On Lan supported [ 0.980000] stm32-dwmac 40028000.ethernet: Enable RX Mitigation via HW Watchdog Timer [ 0.990000] libphy: stmmac: probed [ 1.000000] i2c /dev entries driver [ 1.020000] NET: Registered protocol family 10 [ 1.020000] Segment Routing with IPv6 [ 1.020000] NET: Registered protocol family 17 [ 1.040000] hctosys: unable to open rtc device (rtc0) [ 1.050000] Freeing unused kernel memory: 272K [ 1.060000] This architecture does not have kernel memory protection. Initializing random number generator... urandom start: failed. done. Starting network: OK

Welcome to Buildroot STM32F746-disco login: root Jan 1 00:00:07 login[62]: root login on 'console'

BusyBox v1.26.2 (2018-12-09 09:20:10 EST) hush - the humble shell Enter 'help' for a list of built-in commands.

~ # ifconfig -a eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:31 Base address:0x8000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

~ # ifconfig eth0 up 192.168.1.250 [ 25.100000] stm32-dwmac 40028000.ethernet eth0: device MAC address 76:43:3b:ef:b5:95 [ 25.150000] Generic PHY stmmac-0:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=stmmac-0:00, irq=POLL) [ 25.160000] ------------[ cut here ]------------ [ 25.160000] WARNING: CPU: 0 PID: 65 at arch/arm/mm/dma-mapping-nommu.c:65 arm_nommu_dma_alloc+0x39/0x4c [ 25.170000] CPU: 0 PID: 65 Comm: ifconfig Not tainted 4.15.7 #4 [ 25.170000] Hardware name: STM32 (Device Tree Support) [ 25.180000] [] (unwind_backtrace) from [] (show_stack+0xb/0xc) [ 25.190000] [] (show_stack) from [] (warn+0x87/0xa0) [ 25.200000] [] (warn) from [] (warn_slowpath_null+0x21/0x2a) [ 25.200000] [] (warn_slowpath_null) from [] (arm_nommu_dma_alloc+0x39/0x4c) [ 25.200000] [] (arm_nommu_dma_alloc) from [] (stmmac_open+0x18f/0x7e8) [ 25.220000] [] (stmmac_open) from [] (dev_open+0x8f/0xb0) [ 25.230000] [] (__dev_open) from [] (dev_change_flags+0xf7/0x104) [ 25.240000] [] (dev_change_flags) from [] (dev_change_flags+0x11/0x2e) [ 25.250000] [] (dev_change_flags) from [] (devinet_ioctl+0x271/0x3a0) [ 25.250000] [] (devinet_ioctl) from [] (sock_ioctl+0x4b/0x146) [ 25.250000] [] (sock_ioctl) from [] (vfs_ioctl+0x11/0x1c) [ 25.270000] [] (vfs_ioctl) from [] (do_vfs_ioctl+0x5f/0x3d6) [ 25.280000] [] (do_vfs_ioctl) from [] (SyS_ioctl+0x23/0x3c) [ 25.280000] [] (SyS_ioctl) from [] (ret_fast_syscall+0x1/0x58) [ 25.280000] ---[ end trace f2d80d54ef08e73e ]--- [ 25.300000] [ 25.300000] Unhandled exception: IPSR = 00000006 LR = fffffff1 [ 25.300000] CPU: 0 PID: 65 Comm: ifconfig Tainted: G W 4.15.7 #4 [ 25.300000] Hardware name: STM32 (Device Tree Support) [ 25.300000] PC is at consume_skb+0x2/0x2e [ 25.300000] LR is at stmmac_free_rx_buffer+0x53/0x6c [ 25.300000] pc : [] lr : [] psr: 4100000b [ 25.300000] sp : c02efdd0 ip : 00000000 fp : 014080c0 [ 25.300000] r10: c022db48 r9 : c02e1078 r8 : c01eb898 [ 25.300000] r7 : c000c4e9 r6 : 00000001 r5 : c0683460 r4 : 00000000 [ 25.300000] r3 : 00000000 r2 : 00000002 r1 : 00000001 r0 : 00000002 [ 25.300000] xPSR: 4100000b [ 25.300000] CPU: 0 PID: 65 Comm: ifconfig Tainted: G W 4.15.7 #4 [ 25.300000] Hardware name: STM32 (Device Tree Support) [ 25.300000] [] (unwind_backtrace) from [] (show_stack+0xb/0xc) [ 25.300000] [] (show_stack) from [] (__invalid_entry+0x4b/0x4c) [ 25.300000] [] (invalid_entry) from [] (stmmac_free_rx_buffer+0x53/0x6c) [ 25.300000] [] (stmmac_free_rx_buffer) from [] (0xc0683460)

cfriedt commented 5 years ago

Fairly sure that the dma is not properly reserved.

cfriedt commented 5 years ago

duplicate of #1