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

André Marques andre.lousa.marques at gmail.com
Sat Nov 7 09:26:46 UTC 2015


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


>
> I have already made calls to rtems_gpio_initialize() and 
> rtems_gpio_request_pin() as Ketul suggested.
> I am about to go on travel but I will attach my code once tonight I 
> get settled in, and maybe one of you can run it and see if you agree 
> with me on the symptom.
>
> Steve
>
> On Sat, Oct 31, 2015 at 6:45 AM, Gedare Bloom <gedare at rtems.org 
> <mailto:gedare at rtems.org>> wrote:
>
>     This problem indicates a lack of clear documentation. Steve, where did
>     you look for guidance on using the API?
>
>     On Sat, Oct 31, 2015 at 5:11 AM, Ketul Shah
>     <ketulshah1993 at gmail.com <mailto:ketulshah1993 at gmail.com>> wrote:
>     > Hi Steve,
>     >
>     > I suggest you to kindly configure GPIO API by using following
>     functions in
>     > your code,
>     >
>     > rtems_gpio_initialize();
>     > rtems_gpio_request_pin(.....);
>     >
>     > After using it should work properly. Me and Ben had tested on
>     our BBBs.
>     >
>     > For example code you can have a loot at link.
>     >
>     > Hope this helps.
>     >
>     > Thanks,
>     >
>     > Ketul
>     >
>     > On 31 October 2015 at 05:11, Steve B <sbattazzo at gmail.com
>     <mailto:sbattazzo at gmail.com>> wrote:
>     >>
>     >> Hi again guys,
>     >> I've noticed an unexpected (to me) behavior in the GPIO API for
>     Beaglebone
>     >> Black.
>     >>
>     >> I borrowed a periodic task from the clock test source, and set
>     it up to
>     >> toggle the GPIOs once every couple seconds.. here's what I have:
>     >>
>     >> rtems_task Test_task(
>     >>   rtems_task_argument task_index
>     >> )
>     >> {
>     >>   int task_count = 0;
>     >>   rtems_time_of_day time;
>     >>   rtems_interval    ticks;
>     >>
>     >>   ticks = task_index * 2 * rtems_clock_get_ticks_per_second();
>     >>
>     >>   for ( ; ; ) {
>     >>     task_count++;
>     >>     (void) rtems_clock_get_tod( &time );
>     >>     if ( time.second >= 35 ) {
>     >>       puts( "*** END OF CLOCK TICK TEST ***" );
>     >>       //exit( 0 );
>     >>       while(1);
>     >>     }
>     >>     put_name( Task_name[ task_index ], FALSE );
>     >>     print_time( " - rtems_clock_get_tod - ", &time, "\n" );
>     >>
>     >>     //Toggle GPIO
>     >>     if(task_count & 1) {
>     >>         rtems_gpio_set(LED1);
>     >>         rtems_gpio_set(LED2);
>     >>         }
>     >>     else rtems_gpio_clear(LED1);
>     >>
>     >>     (void) rtems_task_wake_after( ticks );
>     >>   }
>     >> }
>     >>
>     >> Notice I've defined that if the least significant bit of my
>     variable
>     >> task_count is 1, then I set both LED1 and LED2. If that LSB is
>     zero, I just
>     >> call to clear LED1.
>     >> When I actually run this, both LED1 and LED2 are being cleared!
>     Same is
>     >> true with the 3rd and 4th user LEDs as well, if I happen to set
>     all four of
>     >> them. So I think somehow rtems_gpio_bsp_clear() is clearing the
>     entire bank,
>     >> not just the single pin specified in the argument. Can somebody
>     confirm this
>     >> behavior?
>     >> I will dig around and see if I can figure out why it's
>     happening and
>     >> generate a patch if I find it.
>     >>
>     >> Also, I was hoping to be able to toggle a GPIO output by
>     checking its
>     >> current state and using that to decide whether to set or clear,
>     but I don't
>     >> see anything in the API that would allow me to check the state
>     of an output.
>     >> Is this a known/intended limitation?
>     >>
>     >> Cheers,
>     >>
>     >> Steve
>     >>
>     >>
>     >>
>     >>
>     >> _______________________________________________
>     >> users mailing list
>     >> users at rtems.org <mailto:users at rtems.org>
>     >> http://lists.rtems.org/mailman/listinfo/users
>     >
>     >
>     >
>     > _______________________________________________
>     > users mailing list
>     > users at rtems.org <mailto:users at rtems.org>
>     > http://lists.rtems.org/mailman/listinfo/users
>
>
>
>
> _______________________________________________
> users mailing list
> users at rtems.org
> http://lists.rtems.org/mailman/listinfo/users

--André Marques
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20151107/9679d29b/attachment-0002.html>


More information about the users mailing list