Making Picostation m2HP work

Adrian Chadd adrian at freebsd.org
Fri Jul 19 07:02:29 UTC 2013


Cool, so next is populating the MAP device fields in a kernel config
hints file with the relevant flash offsets.

That way you can setup the rootfs right.

What's 'printenv' from uboot show?


-adrian

On 17 July 2013 16:54, hiren panchasara <hiren.panchasara at gmail.com> wrote:
> On Tue, Jul 16, 2013 at 6:48 AM, Luiz Otavio O Souza <lists.br at gmail.com> wrote:
>> On 16 July 2013 00:52, Adrian Chadd <adrian at freebsd.org> wrote:
>>>
>>> Right,
>>>
>>> you have to get the mdio bus configured up right, then attach arswitch to
>>> it.
>>>
>>> Then you tell arge0/arge1 what PHY it speaks to, via Stefan's mdioproxy
>>> stuff.
>>>
>>> _then_ arge0/arge1 will come up.
>>>
>>> Now, as for how you do that - i'd have to re-read the datasheet and
>>> write some documentation:
>>>
>>> * one of them (I think arge0) is directly glued to arswitch with no
>>> PHY per se - it's hard-programmed with a MIIbus mode (RMGII I think?)
>>> and 100/full or 1000/full
>>
>>
>> It's usually the arge1 which is dedicated to switch and it's hard-programmed
>> as 1000/full (even when the switch ports are just 10/100).
>>
>> arge0 is the 'WAN' port (using the dedicated PHY 4).
>>
>> The MDIO is at arge0 on ar7240 and at arge1 on ar7241.
>>
>> [...]
>>>
>>>
>>> I'll follow this up with a post explaining how the miibus, mdiobus,
>>> mdioproxy stuff and how arswitch is configured. Then I'll braindump
>>> that into the wiki.
>>
>>
>> Thanks Adrian!
>>
>> Stefan also has a nice documentation about how this stuff fits together:
>>
>> https://wiki.freebsd.org/StefanBethke/EtherSwitch
>> http://www.bsdcan.org/2012/schedule/attachments/201_BSDCan-2012-Bethke-Ethernet-Switch-Framework.pdf
>>
>
> Thanks a lot Adrian and Luiz for the explanation.
>
> I've built just the kernel with in-tree (-head) kernconf AP91 and
> hints file from Luiz: http://pastebin.com/Z647yiZh
>
> And I am seeing arge0/1 attaching:
>
> ar7240> go 80050100
> ## Starting application at 0x80050100 ...
> CPU platform: Atheros AR7241 rev 1
> CPU Frequency=390 MHz
> CPU DDR Frequency=390 MHz
> CPU AHB Frequency=195 MHz
> platform frequency: 390000000
> CPU reference clock: 5 MHz
> arguments:
>   a0 = 00000001
>   a1 = 81f4fcbc
>   a2 = 00000010
>   a3 = fffffffe
> Cmd line:argv is invalid
> Environment:
> envp is invalid
> Cache info:
>   picache_stride    = 4096
>   picache_loopcount = 16
>   pdcache_stride    = 4096
>   pdcache_loopcount = 8
> cpu0: MIPS Technologies processor v116.147
>   MMU: Standard TLB, 16 entries
>   L1 i-cache: 4 ways of 512 sets, 32 bytes per line
>   L1 d-cache: 4 ways of 256 sets, 32 bytes per line
>   Config1=0x9ee3519e<PerfCount,WatchRegs,MIPS16,EJTAG>
>   Config3=0x20
> KDB: debugger backends: ddb
> KDB: current backend: ddb
> Copyright (c) 1992-2013 The FreeBSD Project.
> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
>         The Regents of the University of California. All rights reserved.
> FreeBSD is a registered trademark of The FreeBSD Foundation.
> FreeBSD 10.0-CURRENT #1 r252757M: Wed Jul 17 16:45:15 PDT 2013
>     root at flymockour-l7.corp.yahoo.com:/usr/home/hirenp/head/obj/mips.mips/usr/home/hirenp/head/sys/AP91
> mips
> gcc version 4.2.1 20070831 patched [FreeBSD]
> real memory  = 16777216 (16384K bytes)
> avail memory = 11968512 (11MB)
> random device not loaded; using insecure entropy
> nexus0: <MIPS32 root nexus>
> clock0: <Generic MIPS32 ticker> on nexus0
> Timecounter "MIPS32" frequency 195000000 Hz quality 800
> Event timer "MIPS32" frequency 195000000 Hz quality 800
> argemdio0: <Atheros AR71xx built-in ethernet interface, MDIO
> controller> at mem 0x1a000000-0x1a000fff on nexus0
> mdio0: <MDIO> on argemdio0
> mdioproxy0: <MII/MDIO proxy, MDIO side> on mdio0
> arswitch0: <Atheros AR7240 Ethernet Switch> on mdio0
> miibus0: <MII bus> on arswitch0
> ukphy0: <Generic IEEE 802.3u media interface> PHY 0 on miibus0
> ukphy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
> 1000baseT-FDX, 1000baseT-FDX-master, auto
> miibus1: <MII bus> on arswitch0
> ukphy1: <Generic IEEE 802.3u media interface> PHY 1 on miibus1
> ukphy1:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
> 1000baseT-FDX, 1000baseT-FDX-master, auto
> miibus2: <MII bus> on arswitch0
> ukphy2: <Generic IEEE 802.3u media interface> PHY 2 on miibus2
> ukphy2:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
> 1000baseT-FDX, 1000baseT-FDX-master, auto
> miibus3: <MII bus> on arswitch0
> ukphy3: <Generic IEEE 802.3u media interface> PHY 3 on miibus3
> ukphy3:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
> 1000baseT-FDX, 1000baseT-FDX-master, auto
> mdio1: <MDIO> on arswitch0
> mdioproxy1: <MII/MDIO proxy, MDIO side> on mdio1
> etherswitch0: <Switch controller> on arswitch0
> apb0 at irq 4 on nexus0
> uart0: <16550 or compatible> on apb0
> uart0: console (115200,n,8,1)
> pcib0 at irq 0 on nexus0
> pcib0: found EEPROM at 0x1fff1000 on 0.0.0
> pcib0: EEPROM firmware: 0x1fff1000 @ 4096 bytes
> pcib0: device EEPROM 'pcib.0.bus.0.0.0.eeprom_firmware' registered
> pci0: <PCI bus> on pcib0
> pci0: <network> at device 0.0 (no driver attached)
> arge0: <Atheros AR71xx built-in ethernet interface> at mem
> 0x19000000-0x19000fff irq 2 on nexus0
> arge0: Overriding MAC from EEPROM
> miiproxy0: <MII/MDIO proxy, MII side> on arge0
> miiproxy0: attached to target mdio1
> arge0: finishing attachment, phymask 0010, proxy set
> miibus4: <MII bus> on miiproxy0
> ukphy4: <Generic IEEE 802.3u media interface> PHY 4 on miibus4
> ukphy4:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
> 1000baseT-FDX, 1000baseT-FDX-master, auto
> arge0: Ethernet address: 8e:42:00:5c:3c:04
> arge1: <Atheros AR71xx built-in ethernet interface> at mem
> 0x1a000000-0x1a000fff irq 3 on nexus0
> arge1: finishing attachment, phymask 0000, proxy null
> arge1: Ethernet address: 8e:42:00:5c:3c:05
> spi0: <AR71XX SPI> at mem 0x1f000000-0x1f00000f on nexus0
> spibus0: <spibus bus> on spi0
> mx25l0: <M25Pxx Flash Family> at cs 0 on spibus0
> mx25l0: w25q64, sector 65536 bytes, 128 sectors
> ar71xx_wdog0: <Atheros AR71XX watchdog timer> on nexus0
> ar71xx_wdog0: Previous reset was due to watchdog timeout
> Timecounters tick every 1.000 msec
> arswitch0port1: link state changed to DOWN
> arswitch0port2: link state changed to DOWN
> arswitch0port3: link state changed to DOWN
> arswitch0port4: link state changed to DOWN
> Trying to mount root from ufs:/dev/map/rootfs.uncompress []...
> mountroot: waiting for device /dev/map/rootfs.uncompress ...
> Mounting from ufs:/dev/map/rootfs.uncompress failed with error 19.
>
> Loader variables:
>
> Manual root filesystem specification:
>   <fstype>:<device> [options]
>       Mount <device> using filesystem <fstype>
>       and with the specified (optional) option list.
>
>     eg. ufs:/dev/da0s1a
>         zfs:tank
>         cd9660:/dev/acd0 ro
>           (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)
>
>   ?               List valid disk boot devices
>   .               Yield 1 second (for background tasks)
>   <empty line>    Abort manual input


More information about the freebsd-embedded mailing list