Difference between revisions of "BELK-AN-005: Interfacing BoraEVB to thin film electroluminescent display"

From DAVE Developer's Wiki
Jump to: navigation, search
(Physical interfacing)
Line 7: Line 7:
 
|-
 
|-
 
|1.0.0
 
|1.0.0
|
+
|15:29, 4 September 2015 (CEST)
 
|[[Bora_Embedded_Linux_Kit_(BELK)#BELK_software_components|2.2.0]]
 
|[[Bora_Embedded_Linux_Kit_(BELK)#BELK_software_components|2.2.0]]
 
|First release
 
|First release
Line 19: Line 19:
 
==Physical interfacing==
 
==Physical interfacing==
 
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.
 
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 URL TBD schematics are available for download.
+
At this [http://www.dave.eu/system/files/area-riservata/BORA_LCD_ADAPTER_Lumineq_el-320.240.36-hb_1.1.0_0.pdf|link] schematics are available for download.
  
Also the following changes need to be made on BoraEVB in order to provide LCD 12V and 5V power supplies:
+
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
 
* remove D12, D13, RP62, RP64
 
* wire D1.1 to JP23.2
 
* wire D1.1 to JP23.2
Line 32: Line 32:
  
 
[[File:An-belk-005-01.jpg|700px]]
 
[[File:An-belk-005-01.jpg|700px]]
 
LCD is driven by a controller implemented in PL that fetches pixel data from frame buffer and periodically refreshes physical screen. LCD controller provides configuration registers that are mapped in the following address range:
 
  
 
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:
 
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:
Line 45: Line 43:
 
To implement frame buffer, a portion of main SDRAM is used. This area is allocated at runtime by linux frame buffer driver.
 
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).On the frame buffer, the memory is mapped with 8bit for pixel. A byte of value 0xFF represents a ON pixel, and all the other values (0xFE to 0x00) represent a OFF pixel.
+
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 the following URL the Vivado design is available for download: TBD. Please note that, even if this application note is based on BELK 2.2.0, this design has been implemented with Vivado 2013.4
+
At this link TBD the Vivado design is available for download. Please note that, even if this application note is based on BELK 2.2.0, <strike>this design has been implemented with Vivado 2013.4</strike>.
  
There are also two GPIO, controlled by the linux driver, that manage the power supply of the display (5V and 12V from BoraEVB to Lumineq Display).
+
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==
 
==Enabling frame buffer driver in linux kernel==
 
 
 
To enable frame buffer driver user need to:
 
To enable frame buffer driver user need to:
* get the pre-built binaries from TBD
+
* get the pre-built binaries from this [http://www.dave.eu/system/files/area-riservata/AN-BELK-005-sw.zip|link].
  
Kernel and device tree can also be build with the following procedure:
+
Kernel and device tree can also be built with the following procedure:
 
* update Bora kernel repository (as described [[Bora_Embedded_Linux_Kit_(BELK)#Updating_the_repositories_from_BELK_2.1.0_to_BELK_2.2.0|here]])
 
* update Bora kernel repository (as described [[Bora_Embedded_Linux_Kit_(BELK)#Updating_the_repositories_from_BELK_2.1.0_to_BELK_2.2.0|here]])
 
* checkout ''bora-feat-lcd-support'' branch (using ''git checkout bora-feat-lcd-support'' command)
 
* checkout ''bora-feat-lcd-support'' branch (using ''git checkout bora-feat-lcd-support'' command)
 
* build the updated kernel source as usual
 
* 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 when needed. Please note that you need the following files:
+
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:
 
* boot.bin
 
* boot.bin
 
* bora.dtb
 
* bora.dtb

Revision as of 13:29, 4 September 2015

History[edit | edit source]

Version Date BELK version Notes
1.0.0 15:29, 4 September 2015 (CEST) 2.2.0 First release

Introduction[edit | edit source]

This application note shows how to interface BoraEVB to 5.7" thin film electroluminescent display Lumineq EL 320.240.36-HB. This project is based on 2.2.0. Reading of AN-BELK-004 is recommended since many concepts are shared by these two application notes.

For more information about Lumineq part, please refer to http://lumineq.com/en/product-tags/diagonal-size-57-2.

Physical interfacing[edit | edit source]

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 [1] 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

Block diagram and Vivado design[edit | edit source]

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.

An-belk-005-01.jpg

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:

An-belk-005-02.png

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 TBD 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[edit | edit source]

To enable frame buffer driver user need to:

  • get the pre-built binaries from this [2].

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:

  • boot.bin
  • bora.dtb
  • uImage
  • fpga.bin
  • uEnv.txt

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

TBD