GSoC 2015 RPi USB Support

Joel Sherrill joel.sherrill at oarcorp.com
Thu Aug 6 21:08:10 UTC 2015



On August 6, 2015 3:57:40 PM CDT, Yurii Shevtsov <ungetch at gmail.com> wrote:
>What do you mean by "getting pulled"?


As I understood things, you had a linked executable but an empty section. Just curious if your devices were showing up at all.

>2015-08-06 23:48 GMT+03:00 Joel Sherrill <joel.sherrill at oarcorp.com>:
>>
>>
>> On 8/6/2015 3:42 PM, Yurii Shevtsov wrote:
>>>
>>> 2015-08-06 23:36 GMT+03:00 Joel Sherrill
><joel.sherrill at oarcorp.com>:
>>>>
>>>>
>>>>
>>>> On 8/6/2015 3:22 PM, Yurii Shevtsov wrote:
>>>>>
>>>>>
>>>>> Ping! Any news?
>>>>
>>>>
>>>>
>>>> The people with experience with the libbsd code is quite small. :(
>>>>
>>>>>
>>>>> 2015-08-05 18:29 GMT+03:00 Yurii Shevtsov <ungetch at gmail.com>:
>>>>>>
>>>>>>
>>>>>> The problem is that rtemsroset.bsd.nexus.content doesn't exist in
>>>>>> final elf. If I change driver's name in
>RTEMS_BSD_DEFINE_NEXUS_DEVICE
>>>>>> macro, linker will throw an error
>>>>>> (.rtemsroset.bsd.nexus.content+0x10): undefined reference to
>'%wrong
>>>>>> driver's name%'. Otherwise with correct name - no
>errors(warnings) and
>>>>>> no nexus.content section. How can you explain this??
>>>>
>>>>
>>>>
>>>> The RTEMS_BSD_DEFINE_NEXUS_DEVICE() macro must reference a
>bus/mexus,
>>>> not a regular device driver. I would expect a nexus device for the
>Pi
>>>> to be in
>>>>
>https://github.com/freebsd/freebsd/tree/master/sys/arm/broadcom/bcm2835
>>>> or pointed to by a file in there.
>>>>
>>>> Look at the configuration for the various bsps in nexus-devices.h
>and
>>>> then at the source the macros refer to.
>>>>
>>>> Raspberry Pi source will have to be imported from the FreeBSD tree.
>>>
>>>
>>> Of course, I did it!)
>>>
>>>
>https://github.com/gtament/rtems-libbsd/commit/cf3f0fcafef3bcb9b0ec80d8c57e1304689ebace
>>
>>
>> Is bcm283x_dwcotg* getting pulled into your build?
>>
>>
>>>>>> 2015-08-02 18:02 GMT+03:00 Joel Sherrill
><joel.sherrill at oarcorp.com>:
>>>>>>>
>>>>>>>
>>>>>>> On 08/01/2015 04:00 PM, Yurii Shevtsov wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> During debugging of compiled Nexus module(driver) I found out
>that
>>>>>>>> content which suppose to be created in
>RTEMS_BSD_DEFINE_SET(nexus,
>>>>>>>> rtems_bsd_device) is empty, That should mean that either it is
>not
>>>>>>>> found or cannot be read. Please, let me know why empty content
>is not
>>>>>>>> create any error message and in what situation it can be empty.
>>>>>>>>
>>>>>>> Sebastian just added the pc386 to the nexus-devices file. Make
>sure
>>>>>>> the bsp.h is tripping the conditional logic in that file to get
>the Pi
>>>>>>> path as a minimum.
>>>>>>>
>>>>>>> Then you are going to need to add the appropriate devices for Pi
>>>>>>> USB.  If the Pi  doesn't have one of the standard USB
>controllers,
>>>>>>> then
>>>>>>> you will have to import the source for it from FreeBSD.
>>>>>>>
>>>>>>> The pc386 is stuck at the point where it detects the NIC
>configured
>>>>>>> but needs resources. I am going to try to debug that.
>>>>>>>
>>>>>>>> 2015-06-29 19:50 GMT+03:00 Yurii Shevtsov<ungetch at gmail.com>:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> So, it is empty.
>>>>>>>>>
>>>>>>>>>     .rtemsroset.bsd.nexus.begin
>>>>>>>>>                    0x001104bc        0x0
>>>>>>>>> ./libbsd.a(rtems-bsd-nexus.c.16.o)
>>>>>>>>>                    0x001104bc               
>_bsd__start_set_nexus
>>>>>>>>>     .rtemsroset.bsd.nexus.end
>>>>>>>>>                    0x001104bc        0x0
>>>>>>>>> ./libbsd.a(rtems-bsd-nexus.c.16.o)
>>>>>>>>>                    0x001104bc               
>_bsd__stop_set_nexus
>>>>>>>>>
>>>>>>>>> What will be next step? My repo:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>https://github.com/gtament/rtems-libbsd/commit/cf3f0fcafef3bcb9b0ec80d8c57e1304689ebace
>>>>>>>>>
>>>>>>>>> 2015-06-29 9:43 GMT+03:00 Sebastian
>>>>>>>>> Huber<sebastian.huber at embedded-brains.de>:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> You can debug this issue on Qemu. The Nexus childes are
>registered
>>>>>>>>>> in
>>>>>>>>>> a
>>>>>>>>>> linker set, so I would consult the linker map file.  It
>should look
>>>>>>>>>> like
>>>>>>>>>> this:
>>>>>>>>>>
>>>>>>>>>>     .rtemsroset.bsd.nexus.begin
>>>>>>>>>>                    0x000000000052ef7c        0x0
>>>>>>>>>> libbsd.a(rtems-bsd-nexus.o)
>>>>>>>>>>                    0x000000000052ef7c _bsd__start_set_nexus
>>>>>>>>>>     .rtemsroset.bsd.nexus.content
>>>>>>>>>>                    0x000000000052ef7c       0x28
>>>>>>>>>> testsuite/telnetd01/test_main.o
>>>>>>>>>>     .rtemsroset.bsd.nexus.end
>>>>>>>>>>                    0x000000000052efa4        0x0
>>>>>>>>>> libbsd.a(rtems-bsd-nexus.o)
>>>>>>>>>>                    0x000000000052efa4 _bsd__stop_set_nexus
>>>>>>>>>>
>>>>>>>>>> The  .rtemsroset.bsd.nexus.content section must be non-empty.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 27/06/15 16:39, Yurii Shevtsov wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Any ideas? Maybe I did some typo? Maybe you can compile and
>try it
>>>>>>>>>>> in
>>>>>>>>>>> qemu?
>>>>>>>>>>>
>>>>>>>>>>> 2015-06-26 17:05 GMT+03:00 Yurii
>Shevtsov<ungetch at gmail.com>:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> 2015-06-25 16:00 GMT+03:00 Sebastian Huber
>>>>>>>>>>>> <sebastian.huber at embedded-brains.de>:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I would set a break point to nexus_probe(). In this loop
>>>>>>>>>>>>>
>>>>>>>>>>>>>         SET_FOREACH(nd, nexus) {
>>>>>>>>>>>>>             device_add_child(dev, nd->name, nd->unit);
>>>>>>>>>>>>>         }
>>>>>>>>>>>>>
>>>>>>>>>>>>> your device must get added. I would also set break points
>to the
>>>>>>>>>>>>> probe
>>>>>>>>>>>>> and
>>>>>>>>>>>>> attach functions of your device.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Added printfs()
>>>>>>>>>>>>
>>>>>>>>>>>>         printf("before setforeach\n");
>>>>>>>>>>>>
>>>>>>>>>>>>         SET_FOREACH(nd, nexus) {
>>>>>>>>>>>>             printf("setforeach: %s\n", nd->name);
>>>>>>>>>>>>             device_add_child(dev, nd->name, nd->unit);
>>>>>>>>>>>>         }
>>>>>>>>>>>>
>>>>>>>>>>>> Got only 'before setforeach' in console. So it doesn't step
>into
>>>>>>>>>>>> loop.
>>>>>>>>>>>> Any ideas? Also I already had printfs in my driver's probe
>and
>>>>>>>>>>>> attach,
>>>>>>>>>>>> also got no output.
>>>>>>>>>>>>
>>>>>>>>>>>>> On 25/06/15 14:50, Yurii Shevtsov wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> This is ping message, with small update: the problem is
>not on
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> linking stage, driver is linked to testsuite (checked
>with
>>>>>>>>>>>>>> objdump)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2015-06-21 17:57 GMT+03:00 Yurii
>Shevtsov<ungetch at gmail.com>:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hello)
>>>>>>>>>>>>>>> Now I have apps from libbsd testsuite running. But DWC
>OTG
>>>>>>>>>>>>>>> driver
>>>>>>>>>>>>>>> doesn't
>>>>>>>>>>>>>>> loads.
>>>>>>>>>>>>>>> I added this lines to init01/test_main.c:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> +SYSINIT_NEED_USB_CORE;
>>>>>>>>>>>>>>> +SYSINIT_DRIVER_REFERENCE(bcm283x_dwcotg, nexus);
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> (I know it's bad hardcode)
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> If I run it. I get only this:
>>>>>>>>>>>>>>>        nexus0:<RTEMS Nexus device>
>>>>>>>>>>>>>>>        devctl: +nexus0 at   on root0
>>>>>>>>>>>>>>>        devctl: !system=IFNET subsystem=lo0 type=ATTACH
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Of course, I modified
>>>>>>>>>>>>>>> rtemsbsd/include/machine/rtems-bsd-sysinit.h
>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>> rtemsbsd/include/bsp/nexus-devices.h (took vlues from
>working
>>>>>>>>>>>>>>> DTS)
>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>> did other nexus-related changes to drivers. You can find
>>>>>>>>>>>>>>> changes
>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>> my
>>>>>>>>>>>>>>> repo https://github.com/gtament/rtems-libbsd/
>>>>>>>>>>>>>>> So I need some kind of code review, please.
>>>>>>>>>>>>>>> P.S. All testsuites (netshell01, usb01) with shell hangs
>>>>>>>>>>>>>>> without
>>>>>>>>>>>>>>> any
>>>>>>>>>>>>>>> output.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks in advance!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> devel mailing list
>>>>>>>>>>>>>> devel at rtems.org
>>>>>>>>>>>>>> http://lists.rtems.org/mailman/listinfo/devel
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> 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.
>>>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> -- Joel Sherrill
>>>>>>> Ask me about RTEMS: a free RTOS
>>>>>>> Support and Training Available
>>>>>>>
>>>>
>>>> --
>>>> Joel Sherrill, Ph.D.             Director of Research & Development
>>>> joel.sherrill at OARcorp.com        On-Line Applications Research
>>>> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>>>> Support Available                (256) 722-9985
>>
>>
>> --
>> Joel Sherrill, Ph.D.             Director of Research & Development
>> joel.sherrill at OARcorp.com        On-Line Applications Research
>> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>> Support Available                (256) 722-9985

--joel



More information about the devel mailing list