Possible bug and lacking feature in BBB bsp, GPIO API hooks
Federico Garcia Cruz
federico.garciacruz at tallertechnologies.com
Wed Nov 11 19:38:00 UTC 2015
Ketul,
you should use the mmio_write() in the gpio clear bit register, if you
mantain the value of the complete bank you would clear not just the gpio
number that you want but all the gpios that current value is 1.
Here's what the data sheet says about this register:
GPIO_CLEARDATAOUT is shown in Figure 25-31 and described in Table 25-30.
Writing a 1 to a bit in the GPIO_CLEARDATAOUT register clears to 0 the
corresponding bit in the
GPIO_DATAOUT register; writing a 0 has no effect. A read of the
GPIO_CLEARDATAOUT register
returns the value of the data output register (GPIO_DATAOUT).
It's described in the section 25.4.1.25 GPIO_CLEARDATAOUT of the
AM335x_technical_reference_manual.pdf.
2015-11-11 16:29 GMT-03:00 Ketul Shah <ketulshah1993 at gmail.com>:
> 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
>>
>
>
--
<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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20151111/8672f096/attachment-0002.html>
More information about the users
mailing list