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

Ketul Shah ketulshah1993 at gmail.com
Sat Oct 31 09:11:49 UTC 2015


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
<https://github.com/ketul93/rtems/blob/GPIO_BBB/testsuites/samples/gpio/init.c>
.

Hope this helps.

Thanks,

Ketul

On 31 October 2015 at 05:11, Steve B <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
> http://lists.rtems.org/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20151031/9c335b19/attachment-0002.html>


More information about the users mailing list