LibBSD PowerPC motorola_shared BSP PCI Support

Chris Johns chrisj at rtems.org
Fri Oct 30 00:01:26 UTC 2020


On 29/10/20 11:44 pm, Heinz Junkes wrote:
> I have now changed to a more modern board: MVME2500
> And built rtems6 and libbsd for qoriq_e500.

Thank you for testing and reporting.

> Unfortunately the board hangs when loading the image:
> 
> MVME2500=> setenv tfile dhcpcd02_6
> MVME2500=> run rtems_myTests
> reading mvme2500.dtb
> 12363 bytes read in 32 ms (377 KiB/s)
> Speed: 1000, full duplex
> Using eTSEC1 device
> TFTP from server 141.14.128.9; our IP address is 141.14.128.89
> Filename 'dhcpcd02_6.img'.
> Load address: 0x10000000
> Loading: #################################################################
>          ####################################################
>          10.3 MiB/s
> done
> Bytes transferred = 1709285 (1a14e5 hex)
> WARNING: adjusting available memory to 30000000
> ## Booting kernel from Legacy Image at 10000000 ...
>    Image Name:   dhcpcd02
>    Created:      2020-10-29  12:38:52 UTC
>    Image Type:   PowerPC Linux Kernel Image (gzip compressed)
>    Data Size:    1709221 Bytes = 1.6 MiB
>    Load Address: 00004000
>    Entry Point:  00004000
>    Verifying Checksum ... OK
> ## Flattened Device Tree blob at 20000000
>    Booting using the fdt blob at 0x20000000
>    Uncompressing Kernel Image ... OK
>    Loading Device Tree to 03ff9000, end 03fff04a ... OK
> 
> Hangs ...

This looks like the BSP is not booting. I am not familiar with this BSP or the
set up.

Does hello or ticker from the rtems.git testsuite work?

Note, this BSP is from a different family and the PCI patch I pushed only
effects the motorola_shared family of BSPs.

Chris

> With RTEMS5 in spring it looked like this:
> 
> 
> MVME2500=> setenv tfile dhcpcd02
> MVME2500=> run rtems_myTests
> reading mvme2500.dtb
> 12363 bytes read in 32 ms (377 KiB/s)
> Speed: 1000, full duplex
> Using eTSEC1 device
> TFTP from server 141.14.128.9; our IP address is 141.14.128.89
> Filename 'dhcpcd02.img'.
> Load address: 0x10000000
> Loading: #################################################################
>          ###################################
>          10 MiB/s
> done
> Bytes transferred = 1455058 (1633d2 hex)
> WARNING: adjusting available memory to 30000000
> ## Booting kernel from Legacy Image at 10000000 ...
>    Image Name:   dhcpcd02
>    Created:      2020-02-17  13:51:47 UTC
>    Image Type:   PowerPC Linux Kernel Image (gzip compressed)
>    Data Size:    1454994 Bytes = 1.4 MiB
>    Load Address: 00004000
>    Entry Point:  00004000
>    Verifying Checksum ... OK
> ## Flattened Device Tree blob at 20000000
>    Booting using the fdt blob at 0x20000000
>    Uncompressing Kernel Image ... OK
>    Loading Device Tree to 03ff9000, end 03fff04a ... OK
> *** LIBBSD DHCPCD 2 TEST ***
> nexus0: <RTEMS Nexus device>
> 
> RTEMS Shell on /dev/console. Useo 'help' to list commands.
> SHLL [/] # bus0: <Open Firmware Device Tree> on nexus0
> simplebus0: <Flattened device tree simple bus> on ofwbus0
> simplebus1: <Flattened device tree simple bus> mem 0xffe05000-0xffe05fff irq 3 on ofwbus0
> tsec0: <Enhanced Three-Speed Ethernet Controller> mem 0x24000-0x24fff irq 13,14,18 on simplebus0
> miibus0: <MII bus> on tsec0
> ukphy0: <Generic IEEE 802.3u media interface> PHY 1 on miibus0
> ukphy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto
> info: tsec0: Ethernet address: ec:9e:cd:19:3c:61
> tsec1: <Enhanced Three-Speed Ethernet Controller> mem 0x25000-0x25fff irq 19,20,24 on simplebus0
> miibus1: <MII bus> on tsec1
> ukphy1: <Generic IEEE 802.3u media interface> PHY 7 on miibus1
> ukphy1:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto
> info: tsec1: Ethernet address: ec:9e:cd:19:3c:62
> tsec2: <Enhanced Three-Speed Ethernet Controller> mem 0x26000-0x26fff irq 15,16,17 on simplebus0
> miibus2: <MII bus> on tsec2
> ukphy2: <Generic IEEE 802.3u media interface> PHY 3 on miibus2
> ukphy2:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto
> info: tsec2: Ethernet address: ec:9e:cd:19:3c:63
> [zone: unpcb] kern.ipc.maxsockets limit reached
> info: lo0: link state changed to UP
> info: version 6.2.1 starting
> info: tsec0: link state changed to DOWN
> info: tsec1: link state changed to DOWN
> info: tsec2: link state changed to DOWN
> warning: no interfaces have a carrier
> info: tsec0: waiting for carrier
> info: tsec1: waiting for carrier
> info: tsec2: waiting for carrier
> W�������to UP
> info: tsec0: carrier acquired
> info: DUID 00:01:00:01:e9:6d:a1:84:ec:9e:cd:19:3c:61
> info: tsec0: IAID cd:19:3c:61
> info: tsec1: link state changed to UP
> ...
> 
> 
> 
> 
> Viele Grüße
> Heinz Junkes
> --
> Experience directly varies with equipment ruined.
> 
> 
> 
>> On 29. Oct 2020, at 12:07, Heinz Junkes <junkes at fhi-berlin.mpg.de> wrote:
>>
>> I can now run the test programs of libbsd. But on the MVME6100
>> no network interfaces gets found.
>>
>> MVME6100> netShut
>> /-----------------------------------------
>> config addr is 0xf1000cf8
>> config data is 0xf1000cfc
>> Welcome to RTEMS rtems-6.0.0 (PowerPC/Generic (classic FPU)/beatnik)
>> CPU: MPC7457
>> Board Type: MVME6100-0163 (S/N E173D27)
>> Bus Clock Freq:   133333333 Hz
>> CPU Clock Freq:  1266666654 Hz
>> Memory:           536870912 bytes
>> -----------------------------------------
>> Now BSP_mem_size = 0x1fe00000
>> Configuration.work_space_size = ed620
>> Page table setup finished; will activate it NOW...
>> Going to start PCI buses scanning and initialization
>> Number of PCI buses found is : 3
>> MSR 0x2003032
>> Exit from bspstart
>> unable to find the universe in pci config space
>> Tundra Tsi148 PCI-VME bridge detected at 0x81100000, IRQ 84
>> Tsi148 Outbound Ports:
>> Port  VME-Addr   Size       PCI-Adrs   Mode:
>> 0:    0x20000000 0x0e000000 0x90000000 A32, SUP, D32, SCT
>> 1:    0x00000000 0x00ff0000 0x9f000000 A24, SUP, D32, SCT
>> 2:    0x00000000 0x00010000 0x9fff0000 A16, SUP, D32, SCT
>> 7:    0x00000000 0x01000000 0x9e000000 CSR, SUP, D32, SCT
>> Tsi148 Inbound Ports:
>> Port  VME-Addr   Size       PCI-Adrs   Mode:
>> 0:    0x90000000 0x1fe00000 0x00000000 A32, PGM, DAT, SUP, USR, MBLT, BLT
>> vmeTsi148 IRQ manager: looking for registers on VME...
>> Trying to find CSR on VME...
>> vmeTsi148 - IRQ manager using VME CSR to flush FIFO
>> Registering /dev/console as minor 0 (==/dev/ttyS0)
>>
>>
>> *** BEGIN OF TEST LIBBSD DHCPCD 1 ***
>> *** TEST VERSION: 6.0.0.5f4fd63a0c2b4b0657b64abdcfa70c47bee21c52
>> *** TEST STATE: EXPECTED_PASS
>> *** TEST BUILD: RTEMS_POSIX_API
>> *** TEST TOOLS: 10.2.1 20201026 (RTEMS 6, RSB 5f4fd63a0c2b4b0657b64abdcfa70c47bee21c52, Newlib 17b7dfc)
>>
>> RTEMS Shell on /dev/console. Use 'help' to list commands.
>> SHLL [/] # xus0: <RTEMS Nexus device>
>> [zone: unpcb] kern.ipc.maxsockets limit reached
>> info: lo0: link state changed to UP
>> info: version 6.2.1 starting
>> err: no valid interfaces found
>> warning: no interfaces have a carrier
>>
>> Viele Grüße
>> Heinz Junkes
>> --
>> Experience directly varies with equipment ruined.
>>
>>
>>
>>> On 27. Oct 2020, at 18:41, Sebastian Huber <sebastian.huber at embedded-brains.de> wrote:
>>>
>>>
>>> On 27/10/2020 15:41, Joel Sherrill wrote:
>>>>
>>>>
>>>> On Tue, Oct 27, 2020 at 9:23 AM Heinz Junkes <junkes at fhi-berlin.mpg.de <mailto:junkes at fhi-berlin.mpg.de>> wrote:
>>>>
>>>>   I am currently trying git rtems6.
>>>>
>>>>   ../source-builder/sb-set-builder --prefix=$HOME/.rtems --log
>>>>   powerpc_beatnik.log --no-clean --target=powerpc-rtems6
>>>>   --with-rtems-bsp=beatnik 6/rtems-powerpc 6/rtems-kernel
>>>>
>>>>   works …
>>>>
>>>>   Unfortunately It fails here:
>>>>
>>>>   ../source-builder/sb-set-builder --prefix=$HOME/.rtems --log
>>>>   libbsd.log --no-clean --target=powerpc-rtems6
>>>>   --with-rtems-bsp=beatnik --host=powerpc-rtems6 6/rtems-libbsd
>>>>
>>>>   ...
>>>>   [1562/1948] Compiling freebsd/sbin/nvmecontrol/ns.c
>>>>   In file included from
>>>>   /home/ad/.rtems/lib/gcc/powerpc-rtems6/10.2.1/include/c++/cstdlib:75,
>>>>                    from
>>>>   /home/ad/.rtems/lib/gcc/powerpc-rtems6/10.2.1/include/c++/stdlib.h:36,
>>>>                    from ../../freebsd/sys/sys/libkern.h:216,
>>>>                    from ../../freebsd/sys/sys/systm.h:543,
>>>>                    from ../../freebsd/sys/sys/mbuf.h:42,
>>>>                    from ../../rtemsbsd/rtems/rtems-bsd-cxx.cc:48:
>>>>   /home/ad/.rtems/powerpc-rtems6/include/stdlib.h:309:6: error:
>>>>   conflicting declaration of C function 'void qsort_r(void*, size_t,
>>>>   size_t, int (*)(const void*, const void*, void*
>>>>   ), void*)'
>>>>     309 | void qsort_r (void *__base, size_t __nmemb, size_t __size,
>>>>   int (*_compar)(const void *, const void *, void *), void *__thunk);
>>>>         |      ^~~~~~~
>>>>   In file included from ../../freebsd/sys/sys/systm.h:543,
>>>>                    from ../../freebsd/sys/sys/mbuf.h:42,
>>>>                    from ../../rtemsbsd/rtems/rtems-bsd-cxx.cc:48:
>>>>   ../../freebsd/sys/sys/libkern.h:211:7: note: previous declaration
>>>>   'void qsort_r(void*, size_t, size_t, void*, int (*)(void*, const
>>>>   void*, const void*))'
>>>>     211 | void  qsort_r(void *base, size_t nmemb, size_t size, void
>>>>   *thunk,
>>>>         |       ^~~~~~~
>>>>
>>>>   Waf: Leaving directory
>>>>   `/home/ad/RTEMS_DEV/rtems-source-builder/rtems/build/rtems-libbsd-d964a6703c705cc92fd053bcefc08bb3b6baa0e2-powerpc-rtems6-1/rtems-libbsd-d964a6703c705cc9
>>>>   2fd053bcefc08bb3b6baa0e2/build/powerpc-rtems6-beatnik-default'
>>>>   Build failed
>>>>    -> task in 'bsd' failed with exit status 1 (run with -v to
>>>>   display more information)
>>>>   shell cmd failed: /bin/sh -ex
>>>>   /home/ad/RTEMS_DEV/rtems-source-builder/rtems/build/rtems-libbsd-d964a6703c705cc92fd053bcefc08bb3b6baa0e2-powerpc-rtems6-1/do-build
>>>>   error: building
>>>>   rtems-libbsd-d964a6703c705cc92fd053bcefc08bb3b6baa0e2-powerpc-rtems6-1
>>>>
>>>>
>>>> I'm not sure why this would not have shown up before but the FreeBSD kernel reuses some standard library method names with different signatures. The file rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h renames a lot of items to put them in a BSD namespace. qsort_r isn't in this list but perhaps should be.
>>>
>>> I think its is this bug:
>>>
>>> https://devel.rtems.org/ticket/4078
>>>
>>> I added a workaround to the latest master and 6-freebsd-12 branches.
>>>
>>> -- 
>>> Sebastian Huber, embedded brains GmbH
>>>
>>> Address : Dornierstr. 4, D-82178 Puchheim, Germany
>>> Phone   : +49 89 189 47 41-16
>>> Fax     : +49 89 189 47 41-09
>>> E-Mail  : sebastian.huber at embedded-brains.de
>>> PGP     : Public key available on request.
>>>
>>> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>>>
>>
>> _______________________________________________
>> devel mailing list
>> devel at rtems.org
>> http://lists.rtems.org/mailman/listinfo/devel
> 
> 
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
> 


More information about the devel mailing list