- Build and Install Debian Bullseye for SMARC-iMX8MP (Dual and Quad Core)
- Availability
- Carrier Board
- Basic Resources
- Generating SSH Keys
- Create build environment
- Make Debian
- Setup SD card Automatically
- Setup SD Card Manually
- Build Results
- Linux Console Access
- Setup eMMC
- Modify the kernel configuration
- Video Decoding
- WiFi
Build and Install Debian Bullseye for SMARC-iMX8MP (Dual and Quad Core)
This document provides instructions for advanced users how Embedian offers patches and builds Debian Bullseye for Embedian's SMARC-iMX8MP product platform and how to install the images to bring the evaluation board up and running.
Our aim is to fully support our hardware through device drivers. We also provide unit tests so that testing a board is easy and custom development can start precisely. The recommended host environment is Ubuntu 16.04.
Availability
SMARC-iMX8MP from Embedian
Carrier Board
EVK-STD-CARRIER-S20 (universal carrier board for all SMARC 2.0 modules) from Embedian
Basic Resources
- AArch64 Cross Compiler
- Bootloader
- Das U-Boot – the Universal Boot Loader http://www.denx.de/wiki/U-Boot
- Source – http://git.denx.de/?p=u-boot.git;a=summary
- Linux Kernel
- Linus's Mainline tree: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=summary
- Freescale Linux source tree: git://git.freescale.com/imx/linux-imx.git
- Freescale BSP meta layer: git://git.freescale.com/imx/meta-fsl-bsp-release
- OpenEmbedded/Yocto BSP layer for Freescale's ARM platform git://git.yoctoproject.org/meta-fsl-arm
- Embedian SMARC-iMX8MP kernel source tree for linux smarc_8mp_lf-5.10.y: git@git.embedian.com:developer/smarc-fsl-linux-kernel.git
- ARM based rootfs
- Debian Squeeze: http://www.debian.org/
- Debian Squeeze: http://www.debian.org/
Generating SSH Keys
We recommend you use SSH keys to establish a secure connection between your computer and Embedian Gitlab server. To download u-boot and kernel source codes from Embedian server. You need to register from Embedian's Gitlab server and put your ssh public key there. The steps below will walk you through generating an SSH key and then adding the public key to our Gitlab account.
Step 1. Check for SSH keys
First, we need to check for existing ssh keys on your computer. Open up Git Bash and run:
Check the directory listing to see if you have a file named either id_rsa.pub
or id_dsa.pub
. If you don't have either of those files go to step 2. Otherwise, you already have an existing keypair, and you can skip to step 3.
Step 2. Generate a new SSH key
To generate a new SSH key, enter the code below. We want the default settings so when asked to enter a file in which to save the key, just press enter.
Now you need to enter a passphrase.
Which should give you something like this:
Step 3. Add your SSH key to Embedian Gitlab Server
Copy the key to your clipboard.
Go to Embedian Git Server. At Profile Setting --> SSH Keys --> Add SSH Key
Paste your public key and press "Add Key" and your are done.
Create build environment
Install required packages
On Ubuntu machine:
Deploy Sources
Download archive containing the build script and support files for building Debian Bullseye
This environment prepared to build.
Make Debian
Build all
The internet connection in your host PC has to be available.
Build by parts
Build bootloader
Build kernel, dtb files and kernel modules
Build rootfs
Pack rootfs
Setup SD card Automatically
where "/dev/sdX" is the SD block device in your host system. Shunt the "TEST#" pin of your device to Ground. Insert the SD card and you will see SMARC-iMX8MP booting with Debian Bullseye. Console port is defined on SER3.
Selecting display configuration is a matter of selecting an appropriate DTB file.
All available DTB files are listed in the table below.
DTB File Name | Description |
---|---|
imx8mp-smarc.dtb | Device tree blob for no display configuration. |
imx8mp-smarc-hdmi.dtb | Device tree blob for HDMI display configuration. |
imx8mp-smarc-lvds.dtb | Device tree blob for LVDS display configuration. |
imx8mp-smarc-m7.dtb | Device tree blob for Cortex-M7 co-processor configuration. |
Setup SD Card Manually
For these instruction, we are assuming: DISK=/dev/mmcblk0, "lsblk" is very useful for determining the device id.
Erase SD card:
Create Partition Layout: Leave 2MB offset for flash.bin.
With util-linux v2.26, sfdisk was rewritten and is now based on libfdisk.
Create Partitions:
Format Partitions:
Mount Partitions:
On some systems, these partitions may be auto-mounted...
Install Boot File
Users need to shunt cross the TEST# pin to ground. In this way, SMARC-iMX8MP will always boot up from SD card.
Fuse flash.bin to the SD card.
uEnv.txt based bootscript
Copy uEnv.txt to the boot partition:
Install Kernel Image
Copy Image to the boot partition:
Install Kernel Device Tree Binary
Selecting display configuration is a matter of selecting an appropriate DTB file.
All available DTB files are listed in the table below.
DTB File Name | Description |
---|---|
imx8mp-smarc.dtb | Device tree blob for no display configuration. |
imx8mp-smarc-hdmi.dtb | Device tree blob for HDMI display configuration. |
imx8mp-smarc-lvds.dtb | Device tree blob for LVDS display configuration. |
imx8mp-smarc-m7.dtb | Device tree blob for Cortex-M7 co-processor configuration. |
Install Root File System and Kernel Modules
Extract Root File System:
Remove SD card:
Build Results
The resulted images are locared in ~/smarc_mx8mp_debian/output
directory:
Image Name | Description |
---|---|
rootfs.tar.gz | Root filesystem tarball for installation on SD card and eMMC |
Image | Linux Kernel Image |
imx-boot-sd.bin | Boot file for SD card and eMMC |
DTB File Name | Description |
---|---|
imx8mp-smarc.dtb | Device tree blob for no display configuration. |
imx8mp-smarc-hdmi.dtb | Device tree blob for HDMI display configuration. |
imx8mp-smarc-lvds.dtb | Device tree blob for LVDS display configuration. |
imx8mp-smarc-m7.dtb | Device tree blob for Cortex-M7 co-processor configuration. |
Linux Console Access
User Name | User Password | User Descriptor |
---|---|---|
root | root | system administrator |
user | user | local user |
x_user | used for X session access |
Setup eMMC
Shunt TEST# pin to Ground and boot up from your SD card. Run the following command as root
user.
Modify the kernel configuration
To modify the kernel configuration (add/remove features and drivers). Please follow the step below.
Video Decoding
For playing video, we can use three solutions to support it.
a) # gplay-1.0 <video file>
b) # gst-launch-1.0 playbin uri=file://<video absolute path>
c) ( i ) if video container on .mp4 format
#
gst-launch-1.0 filesrc location=<file name.mp4> typefind=true ! video/quicktime ! qtdemux ! queue max-size-time=0 ! vpudec ! queue max-size-time=0 ! kmssink force-hantrope=true sync=false &
( ii ) if video container on .ts format
# gst-launch-1.0 filesrc location=<file name.ts> typefind=true ! video/mpegts ! tsdemux ! queue max-size-time=0 ! vpudec ! queue max-size-time=0 ! waylandsink
WiFi
The Debian Bullseye release includes NXP 88W8997 wifi chipset. Users can choose mPCIe or M.2 key E form factor wifi modules based on NXP 88W8997 chipset.
M.2 Form Factor:
AzureWave P/N: AW-CM276MA-PUR
Laird Connectivity P/N: 60-2230C
Embedded Artists 1YM M.2 Module
mPCIe Factor:
Globascale Technologies NXP 88W8997 2x2 WiFi 802.11ac+BT 5.0 mini PCIe Card w/ Two External SMA Antennas
Boot up the device and load the driver modules in the kernel.
Verify that the module is now visible to the system.
Get the related packages
In case you need to see which network and you can scan it and select the one you need.
Identify the network and add it to the WPA supplicant file.
Remove the wpa_supplicant that might already be in use.
Associate the Wi-Fi with config
Check if you have right SSID associated.
Use DHCP to get IP
You should be able to ping local network now.
Modify /etc/resolv.conf of your preference, you will be able to ping out.
version 1.0a, 12/20/2021
Last updated 2022-06-21