2418201_en-US

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2418201_en-US

2418201_en-US

FRDM i.MX 95 Pro Hands-On: Flashing SD Card, BSP & Waveshare 7 DSI Display

Introduction

This hands-on walks you through bringing a display to life on the FRDM-IMX95-PRO board. You will flash a BSP image to an SD card, attach a Waveshare 7" DSI LCD, select the correct device tree in U-Boot, and then exercise the panel with brightness control, screen rotation, capacitive touch, and a live camera video pipeline. By the end you will have a fully working touch display and the core skills to configure DSI panels on i.MX 95.

By the end of this hands-on you will be able to:

  • Flash a BSP image to a microSD card using UUU in Serial Download mode.
  • Connect the Waveshare 7" DSI display (FPC, power, and I2C) correctly.
  • Select the matching device tree for the panel from the U-Boot prompt.
  • Adjust and script the display backlight brightness.
  • Rotate the screen through Weston's configuration.
  • Verify capacitive touch with evtest.
  • Stream live camera video to the panel with GStreamer.

Hardware & Prerequisites

  • FRDM-IMX95-PRO board.
  • MicroSD card — 16 GB or larger.
  • Waveshare 7" DSI LCD — 1024×600 IPS, 5-point capacitive touch.
  • 22-pin FPC cable.
  • Host PC with UUU installed.

Watch the Module Video

Watch the full hands-on walkthrough first to see each step performed on real hardware, then follow along on your own board using the steps below.

This video is currently being processed. Please try again in a few minutes.
(view in My Videos)

Steps to Run the Hands-On

1. Enter Serial Download Mode

Put the board into Serial Download Protocol (SDP) mode so the host can push the image, then connect it to your PC:

  • Set boot switch SW1 = 1000 (Serial Download Protocol mode).
  • Connect J7 USB-C to the host PC.
  • Connect J22 USB-C to view debug output on the serial console.

2. Flash the BSP Image with UUU

Run the following command on your host computer to flash the BSP boot image and full image to the SD card:

# --- UUU ---
# Run the following command on your host computer

uuu.exe –b sd_all imx-boot-imx95-19x19-lpddr5-frdm-pro-sd.bin-flash_a55 imx-image-full-imx95evk.wic.zst

3. Switch to SD Boot

Once flashing completes, reconfigure the board to boot from the SD card:

  • Power off the board.
  • Set boot switches SW3 and SW4 = 0011 (SD card boot).
  • Turn on the board.

4. Connect the Display — FPC Cable

Attach the 22-pin FPC cable between the board and the Waveshare panel, paying close attention to cable orientation on each end:

  • Connect the 22-pin FPC to the board's MIPI-DSI connector — the stiffener side faces the board connector.
  • Connect the other end to the Waveshare panel (15-pin side) — the conductive side faces the panel.

5. Connect the Display — Power & I2C

The panel needs both power and an I2C connection for the display output to come up:

  • Connect I2C via the J6 4-pin header.
  • Connect 5V power to J17 (or any 5V connector).
  • I2C must be connected for display output to work.

6. Change the Device Tree in U-Boot

Watch the serial console during boot and press any key at the U-Boot countdown to reach the prompt:

Hit any key to stop autoboot:  3
=>  (U-Boot prompt)

At the U-Boot prompt, select the device tree for the Waveshare panel and boot:

# --- U-Boot: select the device tree for the display ---

fatls mmc 1
setenv fdtfile imx95-19x19-frdm-pro-waveshare-7inch-c-panel.dtb
saveenv
boot

7. Set & Check Backlight Brightness

Once Linux is running on the board, the panel backlight is exposed through sysfs. The commands below set a brightness value and read the current and maximum allowed values. Valid range is 0 (off) up to max_brightness. Run these as root:

# --- Linux on board ---
# Run the following command on the board

# Path to the backlight
/sys/class/backlight/3-0045/

# Set brightness
echo 128 > /sys/class/backlight/3-0045/brightness

# Read the current value
cat /sys/class/backlight/3-0045/brightness

# Read the maximum allowed value
cat /sys/class/backlight/3-0045/max_brightness

8. Fun Example — Breathing Backlight

For a quick visual test, this small script ramps the backlight up and down continuously, giving a "breathing" effect. Save it as breathe.sh, make it executable, and run it as root. Press Ctrl+C to stop.

# --- Linux ---
# Breathing back light

# Create and open the file
vi breathe.sh

# Write the following lines into the bash script

BL=/sys/class/backlight/3-0045
MAX=$(cat "$BL/max_brightness")
while true; do
  for ((i=0; i<=MAX; i++)); do echo "$i" > "$BL/brightness"; sleep 0.01; done
  for ((i=MAX; i>=0; i--)); do echo "$i" > "$BL/brightness"; sleep 0.01; done
done

# Change the permissions of the bash script
chmod +x breathe.sh

# Run the bash script
./breathe.sh

9. Rotate the Screen (Weston)

Display orientation is controlled in Weston's configuration file. Edit weston.ini, add an [output] section with the desired transform, then restart the service:

# --- Linux ---
# On board

# File path
/etc/xdg/weston/weston.ini

# Open the file
vi /etc/xdg/weston/weston.ini

# Add the following
[output]
name=DPI-1
transform=rotate-90

# Valid formats
# normal       - 0 degrees (default)
# rotate-90    - 90 degrees clockwise
# rotate-180   - upside down
# rotate-270   - 270 degrees clockwise

# Reboot or restart the service
systemctl restart Weston

# Check the status of the service
systemctl status weston

You can confirm the panel resolution and active modes with modetest:

# --- Linux ---
# Check the panel resolution
modetest -c   # list connectors & modes

# full DRM/KMS overview
modetest

# Look for the DSI/DPI connector and confirm
# 1024x600 is listed as an active mode

10. Test Capacitive Touch (evtest)

Run evtest with no arguments to list the available input devices, then select the touch screen's event number to start capturing touch events:

# --- Linux ---
# Touch screen evtest

# Run the evtest command
evtest

# It will list the available devices
Available devices:
/dev/input/event0:    scmi_dev.11
/dev/input/event1:    Goodix Capacitive TouchScreen
Select the device event number [0-1]: 1

# Then it will run the evtest of the touch screen

11. Display Camera Video (GStreamer)

Stream live camera video to the panel to verify both the camera and the display path in one go:

# --- Linux ---
# Gstreamer pipe line for webcam

# Run the following command
gst-launch-1.0 v4l2src device=/dev/video52 ! video/x-raw,width=640,height=480 ! Glimagesink

# Pipeline breakdown
# v4l2src device=/dev/video52  - capture from V4L2 node
# video/x-raw,width=640,height=480  - raw 640x480 video
# glimagesink  - render on display via OpenGL

Troubleshooting

Symptom What to check
No display output Check FPC orientation — the stiffener side must face the board connector. Ensure the I2C bus (J6) is connected; it is required for display output.
fatls mmc 1 fails Verify the SD card is inserted. Confirm SW3 and SW4 = 0011 (SD boot mode).
"No such file or directory" at the backlight path Confirm the node name with ls /sys/class/backlight/.
Touch not working after screen rotation Add a calibration_matrix for the touch device in weston.ini, or configure the touch coordinate transform via libinput.

Conclusion

In this hands-on you brought up a Waveshare 7" DSI display on the FRDM-IMX95-PRO board from a fresh SD card flash all the way to a working touch panel with live camera video. Key takeaways:

  • Flashed a BSP image to the SD card with UUU and switched the board to SD boot.
  • Connected the DSI panel correctly (FPC orientation, 5V power, and the required I2C link).
  • Selected the matching device tree in U-Boot so the panel enumerates at 1024×600.
  • Controlled backlight brightness, rotated the display in Weston, validated touch with evtest, and verified the camera path with GStreamer.

Be sure to watch the module video above to see each step in action, and explore the rest of the FRDM-IMX95-PRO Training Hub for more hands-on modules.

FRDM-Training
Tags (1)
No ratings
Version history
Last update:
3 hours ago
Updated by: