This project describes how to use the Linux BSP (Board Support Package) provide by Terasic. Users can develop touch-screen GUI program easily with the BPS even without support from Linux X Window.
Board Support Package
Figure 1 shows the block diagram of Linux BSP for Atlas-SoC kit with Terasic Multi-Touch LCD Module Second Edition(MTL2) . The BPS incudes two major parts:
The Linux image files are implemented on HPS/ARM and the Quartus project is implemented on FPGA/Qsys. The Linux image files include the pre-built Linux system. Users can create a Linux bootable microSD card with the image files. The Quartus project includes the controller for VGA display and the touch-screen controller for touch-screen panel. For how to create a Linux bootable microSD card with the image files, please refter to chapter 5 of the
DE0-Nano-SoC_Getting_Started_Guide.pdf. Note that, please setting the MSEL switch to "0000".
Figure 1 Block diagram of Linux BSP for Atlas-SoC kit
LXDE Desktop
Figure 2 shows a screenshot of LXDE desktop after login. The LXDE desktop is displayed on the LCD touch panel.

Figure 2 Screenshot of LXDE desktop
Quarts Project
The Quartus project is designed based on Altera Qsys tool. There are three major parts:
- VGA display
- Touch-screen
- HPS component
The VGA display part is designed to display the Linux console or desktop on the LCD touch panel. Altera Video and Image Processing (VIP) suite is used to implement this function. The Linux frame buffer driver fills up the DDR3 with data to be displayed, and the VIP frame-reader component reads the data from the DDR3 in a DMA manner. The video data is streamed into the VIP Clocked Video Output component. Finally, the VIP Clocked Video Output component drives the VGA DAC chip to display the video data.
A customized component developed by Terasic in Qsys is used to communicate with the touch-screen panel. The component interfaces with the touch-screen panel through
I2C -like protocol, and reports the status of touch-screen panel through a parallel bus.
The HPS component acts as a bridge between ARM and FPGA. Program running on ARM can communicate with FPGA through memory-mapped interface. The Quartus project is located under this link :