[GSOC] Project update

Andre Marques andre.lousa.marques at gmail.com
Wed Jun 18 11:00:49 UTC 2014


Hello,

On 06/18/14 02:21, Alan Cudmore wrote:
> A question about the rtems_gpio_setup_UART functions;
> Could it be implemented with rtems_gpio_set_mb(RPI_PORT, 
> RPI_GPIO_UART_MASK) , or would it do additional setup?
>
The set function is for digital output pins, which sets a pin value to 
1. For the interface functions each pin would need to be setup with the 
corresponding funtion (as the JTAG setup does), and not a specific value.

This setup may be done in two ways:

1 - Using the existing rtems_gpio_setup_pin, which would receive the pin 
number and its function, so if the interface needs to setup 5 pins it 
would call this function 5 times, one for each pin;

2 - A interface_setup function which would receive a struct with the 
pins and functions. Each BSP could define a structure for each interface 
it suports, so the user would still get a one call setup. In practice 
for each pin defined on the struct this function would call 
rtems_gpio_setup_pin, so this would be a wrapper function.

To me the second options seems the best, as only one function call could 
setup any number of BSP specific GPIO configurations.

> If BSP specific mask defines could be used, it would be easier to 
> implement, and it would not matter which GPIO peripherals each BSP 
> supported.
>
> Alan
>
>
>
>
>
> On Tue, Jun 17, 2014 at 10:52 AM, Andre Marques 
> <andre.lousa.marques at gmail.com <mailto:andre.lousa.marques at gmail.com>> 
> wrote:
>
>     On 06/17/14 15:39, Alan Cudmore wrote:
>>     Hi Andre,
>>     I checked out the your GPIO_API branch and tried it out. I had do
>>     do a couple of things to get it to build:
>>     1. On the configure, I had to use --disable-multiprocessing ( I
>>     think that is the option, I'm going from memory ). I wonder if
>>     this is now required for non SMP systems?
>
>     I don't use that option.
>
>
>>     2. I had to add the libgpio.h header install in the
>>     cpukit/preinstall.am <http://preinstall.am> file
>>
>
>     I forgot to push it. It is on github now.
>
>
>>     I like the idea of setting up individual peripherals such as the
>>     UART, JTAG, or I2C with a single call. But, are all CPUs with
>>     GPIO configured this way? If this configuration is unique the the
>>     Pi/Broadcom CPU then it may not be applicable as a generic GPIO API.
>>
>
>     The point was if a certain CPU does not support one of the
>     interfaces it would not implement that function, and return some
>     rtems status code to signal that. I am also not sure if the right
>     place for it is in the GPIO API, but I do like the idea of the API
>     being able to track which pins are being used. Maybe a better
>     approach would be to have the peripheral functions somewhere else
>     and they would call a function on the GPIO API to request pins, so
>     it could still track them.
>
>
>>     I wonder if we should just make the GPIO library specific to the
>>     Raspberry Pi BSP for now, then try to take on the project of
>>     creating a generic GPIO API for all RTEMS BSPs later. I feel that
>>     we need more community input to make a generic GPIO API that will
>>     not change.
>>
>
>     Sure.
>
>
>>     Thanks,
>>     Alan
>>
>>
>>     On Mon, Jun 16, 2014 at 6:39 PM, Andre Marques
>>     <andre.lousa.marques at gmail.com
>>     <mailto:andre.lousa.marques at gmail.com>> wrote:
>>
>>         Hello all,
>>
>>         I have been very busy with my undergraduate thesis, but I
>>         expect to have more free time by friday. In the meantime, i
>>         have added some code to github which implement some of the
>>         features I have mentioned on the last blog post.
>>
>>         First I added a function on the GPIO API that will alow a BSP
>>         that support JTAG interfacing through GPIO to setup and use
>>         it. The advantage of doing this through the API is that it
>>         tracks which pins are being used, preventing the use of pins
>>         that were already setup for something else. It also makes it
>>         very easy to the user to setup a JTAG interface (a test case
>>         was also created to demonstrate that). This JTAG setup
>>         function can also be seen as a proof of concept of the
>>         usefulness (or not) of having a function for these sort of
>>         interfaces that may be available through GPIO.
>>
>>         The JTAG libgpio function is based on alan's JTAG gpio setup
>>         program, along with some changes both to that code and to the
>>         pin setup function on the API, that can now setup pins to
>>         functions other than just input and output (up to 6 alternate
>>         "generic" functions, which would be BSP specific).
>>
>>         libgpio api ->
>>         https://github.com/asuol/rtems/blob/GPIO_API/cpukit/libgpio/libgpio.h
>>         libgpio raspberry implementation ->
>>         https://github.com/asuol/rtems/blob/GPIO_API/c/src/lib/libbsp/arm/raspberrypi/gpio/libgpio.c
>>
>>         libgpio jtag function test case ->
>>         https://github.com/asuol/rtems/blob/GPIO_API/testsuites/samples/LIBGPIO_JTAG/init.c
>>         alan's jtag program ->
>>         https://github.com/alanc98/hello-rtems-jtag/blob/master/test.c
>>
>>         Any feedback is well apreciated!
>>
>>         Thanks for your time,
>>         André Marques.
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20140618/e670781a/attachment-0002.html>


More information about the devel mailing list