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...

[Gem5] Full system Simulation with Official Kernel

I follow the youtube provided by Gem5 to get the inspiration. (http://gem5.org/Running_gem5#Full_System_.28FS.29_Mode) I download the file here: http://www.gem5.org/dist/current/arm/ with http://www.gem5.org/dist/current/arm/aarch-system-20170616.tar.xz Then Set up M5_PATH as the place I extract the files: "/home/khchen/full_system_images/" If the setting is correct, assigning the disk-image will finish the rest of setting for dtb and kernel specifications. So far I can only use this img (aarch32-ubuntu-natty-headless.img) as my disk-image to run up to the login interface of the ubuntu: build/ARM/gem5.opt configs/example/fs.py --disk-image=/home/khchen/full_system_images/disks/aarch32-ubuntu-natty-headless.img With the other imgs, for example like "aarch64-ubuntu-trusty-headless.img", I think the kernel and the dtb should be given manually, because it will automatically load something with aarch32 prefix which doesn't make sense: info: kernel ...

[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