Possible bug and lacking feature in BBB bsp, GPIO API hooks

Ketul Shah ketulshah1993 at gmail.com
Wed Nov 11 19:29:16 UTC 2015


Hi All,

Dear Federico Garcia,

I really appreciate your great efforts. My views on this are :-

Following are the macros from bsp.h

#define mmio_write(a,v) (*(volatile uint32_t *)(a) = (v))
#define mmio_set(a,v) mmio_write((a), mmio_read((a)) | (v))

So purpose of using mmio_set() is to make change on the desired bit only
(not the whole bank).
While using of mmio_write() will always make change on 32 bits (Value of
desired bit would be 1 and rest would be forced to 1), the bank.

However I will try to test your code too on my BBB after a small Diwali
vacation.

Latest RTEMS was tested OK by me as well as Ben.

Thanks & Regards,
Ketul

On 12 November 2015 at 00:21, Federico Garcia Cruz <
federico.garciacruz at tallertechnologies.com> wrote:

> Hi all,
> we've been working with the latest rtems on the Beaglebone and we've seen
> the same behavior Steve B describes.
> Finally we've found what is the source of this unexpected behavior.
> As you could see in bbb-gpio.c, "rtems_gpio_bsp_multi_clear" and
> "rtems_gpio_bsp_clear" they both use "mmio_set" on
> the AM335X_GPIO_CLEARDATAOUT register of the beaglebone.
> The problem is that" mmio_set" reads the current value of the register,
> then it sets the bit of interest and then it writes this new value in the
> AM335X_GPIO_CLEARDATAOUT, but according the datasheet of the AM355X, every
> bit set in this register will produce a clear of the corresponding GPIO so
> that every GPIO in 1 will be cleared.
> We changed the "mmio_set" for "mmio_write" and then tested
> "rtems_gpio_clear" and "rtems_gpio_multi_clear" and they are working fine.
> Attached is the diff file.
> Steve, could you please check if this fixes your problem too?
> Thanks.
>
> 2015-11-07 16:33 GMT-03:00 Gedare Bloom <gedare at rtems.org>:
>
>> On Sat, Nov 7, 2015 at 4:26 AM, André Marques
>> <andre.lousa.marques at gmail.com> wrote:
>> > Hello
>> >
>> > Às 17:31 de 02-11-2015, Steve B escreveu:
>> >
>> > I just looked at some sample code on Ketul's github, and the source
>> code of
>> > the API itself, rather than any actual documentation.
>> >
>> >
>> > Documentation on the GPIO API can be found in
>> >
>> https://devel.rtems.org/wiki/GSoC/2015/RaspberryPi_peripherals_and_SD_card#RTEMSGPIOAPI
>> >
>> This deserves its own page.
>> _______________________________________________
>> users mailing list
>> users at rtems.org
>> http://lists.rtems.org/mailman/listinfo/users
>>
>
>
>
> --
>
> <http://www.tallertechnologies.com>
>
>
> Federico Garcia Cruz
>
> Software Engineer
>
>
> San Lorenzo 47, 3rd Floor, Office 5
>
> Córdoba, Argentina
>
>
> Phone: +54 351 4217888 / +54 351 4218211
>
>
> <http://www.linkedin.com/company/taller-technologies>
> <https://www.facebook.com/tallertechnologies>
>
> _______________________________________________
> users mailing list
> users at rtems.org
> http://lists.rtems.org/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20151112/92f7cea2/attachment-0002.html>


More information about the users mailing list