BELK-AN-005: Interfacing BoraEVB to thin film electroluminescent display
|This application note was validated against specific versions of the kit only. It may not work with other versions. Supported versions are listed in the History section.|
|1.0.0||08:40, 9 September 2015 (CEST)||2.2.0 (*)||First release|
(*) Please note that, even if BELK 2.2.0 is based on Vivado 2014.4, the design released along with this Application Note has been implemented with Vivado 2013.4.
This application note shows how to interface BoraEVB to 5.7" thin film electroluminescent display Lumineq EL 320.240.36-HB. As staded on Lumineq web site, "Lumineq TFEL non-transparent displays are used in mining, marine, military, medical and many more demanding environments. TFEL displays are robust and reliable, and usually used in extreme environments, where traditional displays cannot cope with the conditions." These characteristics make these displays an ideal solution when is used is such environments.
For more information about Lumineq part, please refer to this link.
To interface the display a small adapter board is needed. On BoraEVB side it is connected to JP17 and JP23 headers. On display side it connects to LCD panel through a flat cable that is plugged onto JP3 header. At this link schematics are available for download.
Also the following changes need to be made on BoraEVB in order to provide LCD required power supplies (12V and 5V):
- remove D12, D13, RP62, RP64
- wire D1.1 to JP23.2
- wire D1.1 to JP23.4
- wire C164.1 to JP23.1
- wire C164.1 to JP23.3
The following table shows the signals used to drive the display:
|LCD Signal||BORA SOM Signal|
Block diagram and Vivado design
The following picture shows simplified block diagram of the design. In principle the structure of the design is the same of the one described in AN-BELK-004.
The TFEL display is driven by a controller implemented in PL that fetches pixel data from frame buffer and periodically refreshes physical screen. The LCD controller system is composed of an AXI VDMA IP and a custom version of the LCD controller (derived from AN-BELK-004 LCD controller) itself. AXI VDMA and the LCD controller provides configuration registers that are mapped in the following address range:
- AXI VDMA: 0x43000000 - 0x4300FFFF
- Custom LCD Controller: 0x43C00000 - 0x43C0FFFF
The following picture shows the block diagram of the Vivado project:
To implement frame buffer, a portion of main SDRAM is used. This area is allocated at runtime by linux frame buffer driver.
Every pixel on the display has 2 possible states, ON (light pixel) or OFF (dark pixel). In the frame buffer, each pixel is represented by 8 bits. A byte of value 0xFF represents an ON pixel, and all the other values (0xFE down to 0x00) represent an OFF pixel.
At this link the Vivado design is available for download. Please note that, even if this application note is based on BELK 2.2.0, this design has been implemented with Vivado 2013.4.
Two PL IOs, controlled by the linux driver, manage the power supplies of the display (5V and 12V from BoraEVB to Lumineq Display).
Enabling frame buffer driver in linux kernel
To enable frame buffer driver user need to:
- get the pre-built binaries from this link.
Kernel and device tree can also be built with the following procedure:
- update Bora kernel repository (as described here)
- checkout bora-feat-lcd-support branch (using git checkout bora-feat-lcd-support command)
- build the updated kernel source as usual
Put the binaries on the first (FAT32) partition of your BELK 2.2.0 SD card, overwriting the original one if needed. Please note that you need the following files:
Insert the SD card into BoraEVB and turn on the board.
During kernel bootstrap, the following messages are printed out on console, indicating framebuffer driver has been loaded succesfully:
[ 0.600553] borafb_lum borafb_lum.0: fb0: Virtual frame buffer device, using 16384K of video memory @ phys 2d900000
You will also see two Tuxes on the top left corner of the LCD, indicating that this Linux system has two cores:
Once the kernel has completed boot, frame buffer can be accessed from user space applications via
/dev/fb0 device file (for more details please refer to https://www.kernel.org/doc/Documentation/fb/framebuffer.txt).
The following image shows a slideshow generated with feh image viewer on top of X Window System: