This quest is for the one who is seeking how to use GPIO on RTEMS.
I have tested that Pibrella Rev3 (popular all-in-one collection) and Raspberry Pi® Display-Modul 1115 (LCD+Keypad) both can work well.
Thanks for André Marques, now GPIO library is feasible on RTEMS.
Consider https://github.com/asuol/RTEMS_rpi_testing github:
Below find more detail information after this article.
Andrésaid he is still updating the file system, we look forward the official release in RTEMS.
To adopt his contributions, I clone over his branch (GPIO_API) and rebuild my RTEMS again.
Under the source directory (rtems-gpio), ./bootstrap, e.g. /home/khchen/development/rtems-gpio/, and then go to the build directory:
Makefile.am and configure.ac all need to be changed accordingly, i.e., the name of library and the path of sample.
Please note, due to ./bootstrap script, all the Makefile.am will be complied to Makefile.in in each directory.
Then we change to the directory of build and configure the building information.
And then:
If you find an error message like this:
"undefined reference to `gpio_get_val!!"
It's that the name of function gpio_get_val now is changed to gpio_get_value;
Hooray! Now you can find the complied file of example named LIBGPIO_TEST under testsuites/samples/
Therefore, we use the arm toolchain to wrap the executable file as image:
arm-rtems4.11-objcopy -Obinary $HOME/development/build-rtems-rpi-gpio/arm-rtems4.11/c/raspberrypi/testsuites/samples/LIBGPIO_TEST/LIBGPIO_TEST.exe kernel.img
----------------------------------------------------------------------
I also build two cases into the samples:
One is for LCD+Keypad:
It is important that the keypad has PULL_UP resistor.
https://github.com/c0066c/rtems-gpio/tree/Keypad_test/testsuites/samples/GPIO_KEYPAD
arm-rtems4.11-objcopy -Obinary /home/khchen/development/build-rtems-rpi-gpio/arm-rtems4.11/c/raspberrypi/testsuites/samples/GPIO_KEYPAD/GPIO_KEYPAD.exe kernel.img
Another is for Pibrella:
It is also really important that the button on Pibrella has PULL_DOWN resistor.
https://github.com/c0066c/rtems-gpio/tree/Keypad_test/testsuites/samples/GPIO_Pibrella
arm-rtems4.11-objcopy -Obinary /home/khchen/development/build-rtems-rpi-gpio/arm-rtems4.11/c/raspberrypi/testsuites/samples/GPIO_Pibrella/GPIO_Pibrella.exe kernel.img
When you press button, don't let the circuit short...
Otherwise YOU WILL CONFUSE YOURSELF!!
Resource:
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md
https://devel.rtems.org/wiki/GSoC/2013/Raspberry_Pi_BSP_Peripherals
blog https://asuolgsoc2014.wordpress.com/2014/06/
Display+Keypadhttp://www.conrad.de/ce/de/product/1070528/Raspberry-Pi-Display-Modul-1115
I have tested that Pibrella Rev3 (popular all-in-one collection) and Raspberry Pi® Display-Modul 1115 (LCD+Keypad) both can work well.
Thanks for André Marques, now GPIO library is feasible on RTEMS.
Consider https://github.com/asuol/RTEMS_rpi_testing github:
Below find more detail information after this article.
Andrésaid he is still updating the file system, we look forward the official release in RTEMS.
To adopt his contributions, I clone over his branch (GPIO_API) and rebuild my RTEMS again.
Under the source directory (rtems-gpio), ./bootstrap, e.g. /home/khchen/development/rtems-gpio/, and then go to the build directory:
Makefile.am and configure.ac all need to be changed accordingly, i.e., the name of library and the path of sample.
Please note, due to ./bootstrap script, all the Makefile.am will be complied to Makefile.in in each directory.
Then we change to the directory of build and configure the building information.
../rtems-gpio/configure --target=arm-rtems4.11 \ --enable-rtemsbsp=raspberrypi \ --enable-tests=samples \ --enable-networking \ --enable-posix \ --prefix=$HOME/development/rtems/4.11
And then:
make installOr, go in to the .../testsuites/samples/:
make install
If you find an error message like this:
"undefined reference to `gpio_get_val!!"
It's that the name of function gpio_get_val now is changed to gpio_get_value;
Hooray! Now you can find the complied file of example named LIBGPIO_TEST under testsuites/samples/
Therefore, we use the arm toolchain to wrap the executable file as image:
arm-rtems4.11-objcopy -Obinary $HOME/development/build-rtems-rpi-gpio/arm-rtems4.11/c/raspberrypi/testsuites/samples/LIBGPIO_TEST/LIBGPIO_TEST.exe kernel.img
----------------------------------------------------------------------
I also build two cases into the samples:
One is for LCD+Keypad:
It is important that the keypad has PULL_UP resistor.
https://github.com/c0066c/rtems-gpio/tree/Keypad_test/testsuites/samples/GPIO_KEYPAD
arm-rtems4.11-objcopy -Obinary /home/khchen/development/build-rtems-rpi-gpio/arm-rtems4.11/c/raspberrypi/testsuites/samples/GPIO_KEYPAD/GPIO_KEYPAD.exe kernel.img
Another is for Pibrella:
It is also really important that the button on Pibrella has PULL_DOWN resistor.
https://github.com/c0066c/rtems-gpio/tree/Keypad_test/testsuites/samples/GPIO_Pibrella
arm-rtems4.11-objcopy -Obinary /home/khchen/development/build-rtems-rpi-gpio/arm-rtems4.11/c/raspberrypi/testsuites/samples/GPIO_Pibrella/GPIO_Pibrella.exe kernel.img
When you press button, don't let the circuit short...
Otherwise YOU WILL CONFUSE YOURSELF!!
Resource:
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.md
https://devel.rtems.org/wiki/GSoC/2013/Raspberry_Pi_BSP_Peripherals
blog https://asuolgsoc2014.wordpress.com/2014/06/
Display+Keypadhttp://www.conrad.de/ce/de/product/1070528/Raspberry-Pi-Display-Modul-1115
Comments
Post a Comment