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

Efficient Computation of Deadline-Miss Probability and Potential Pitfalls

Fortunately, I will attend the DATE 2019 conference to present my work. The title of my work is: Efficient Computation of Deadline-Miss Probability and Potential Pitfalls This work is regarding the approximation of Deadline-Miss probability for soft real-time systems. The abstract is as the following: In soft real-time systems, rare deadline misses are often tolerable by the applications. Towards this, probabilistic arguments and analyses are applicable to the timing analyses of this class of systems, as demonstrated in many existing researches. Convolution-based analyses allow to derive tight deadline-miss probabilities, but suffer from a high time complexity. Among the analytical approaches, which result in a significantly faster runtime than the convolution-based approaches, the Chernoff bounds provide the tightest results. In this paper, we show that calculating the deadline-miss probability using Chernoff bounds can be solved by considering an equivalent convex optimization ...