Skip to main content

[RTEMS/RASP] GPIO/Pibrella/Display-Module on RTEMS

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.
../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 install
Or, 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

Popular posts from this blog

RSB+RTEMS 5/6 with QEMU-SMP (ARM realview_pbx_a9_qemu as example)

Since I got a request regarding this blog  written in 2016, summarizing again the complete flow with the latest version of RTEMS could be a good idea. Prepare a suitable workspace according to the adopted operating system on your host ( https://docs.rtems.org/branches/master/user/hosts/index.html ):  sudo apt-get build-dep build-essential gcc-defaults g++ gdb git unzip pax bison flex texinfo unzip python3-dev libpython-dev libncurses5-dev zlib1g-dev Checkout RSB and build: git clone git://git.rtems.org/rtems-source-builder.git rsb change directory to rsb/rtems/ and type ../source-builder/sb-set-builder --prefix=<the path you like to store the built toolchains> <the name of bsp> For example, to use QEMU, I need toolchains for ARM, so: ../source-builder/sb-set-builder --prefix=/home/kh.chen/respository/build/. 6/rtems-arm This will take a while. Please ensure your connection is reliable. Add the built folder into your PATH. For example, you can add one line in ~/.bas...

[ubuntu] Removing the instance/package which is not fully installed from apt-get

When I'm installing g77-3.4 for pgplot, I trivially use dkpg to install it. However, g77-3.4-doc is not able to fully installed. And I stuck for this kind of error due to the broken packages (refer to here ): dpkg: error processing realplayer (--configure/--purge/--remove): (Whatever messages) Errors were encountered while processing: g77-3.4-doc cd /var/lib/dpkg/info sudo rm g77-3.4-doc* sudo dpkg --remove --force-remove-reinstreq g77-3.4-doc Hmm, now apt-get works well again. https://www.youtube.com/watch?v=S9HJ-iAzf3k

[RASP] VirtualBox Raspberry Pi debuging

This article is for the perspective that planning to debug Raspberry Pi connected to (Guest) Ubuntu Virtualbox with USBtoUART and Screen/terminal. There are two important issues that you may face: You cannot detect USB devices: You probably have a permission issue on your Virtual box. Add your user ID to group vboxusers with this command: sudo usermod -a -G vboxusers $USER , log off, log on and try again. http://askubuntu.com/questions/481693/virtualbox-usb-add-device-filter-does-not-work-under-14-04 You cannot listen the ttyUSB0: Your permission of (guest) account should be feasible to the ttyUSB0: sudo gedit /etc/group goto line... dialout:x:20: add your "username" dialout:x:20:username http://askubuntu.com/questions/40959/how-do-i-connect-to-tty-com-dev-ttyusb0 After that, then you can detect the plug-in usb on-the-fly or before open the virtual machine. Then, screen /dev/ttyUSB0 115200 (DON"T FORGET TO INSTALL VIRTUALBOX GUEST ADDITION PAC...