Linux Kernel - i.MX8

From Boundary Devices Wiki

This section will provide all the details about the Boundary Devices Linux kernel for 64-bit i.MX8 platforms.

Where is BD Linux kernel source code?

Just like most of our source code, it is located on GitHub:

Note that the master branch README should give you all the details about which branch to use (latest and older ones).

How to build the Linux kernel manually?

Here is the procedure to build the kernel for all i.MX8 platforms:

  1. Install the ARM64 toolchain:
~$ sudo apt-get install crossbuild-essential-arm64
  1. Download the kernel repository:
~$ git clone https://github.com/boundarydevices/linux-imx6
    -b boundary-imx_4.14.x_2.0.0_ga
~$ cd linux-imx6
  1. Build the kernel and device trees:
~/linux-imx6$ export ARCH=arm64
~/linux-imx6$ export CROSS_COMPILE=aarch64-linux-gnu-
~/linux-imx6$ make boundary_defconfig
~/linux-imx6$ make -j8

The above will generate the Imageimx8*.dtb and *.ko modules files needed to boot your Linux OS.

You can then copy the above binaries to your OS image on SD card or use TFTP/NFS procedure to boot it (see U-Boot i.MX8 section).

How can I configure the display?

Right now, our previous display configuration from U-Boot hasn't been adapted to i.MX8 platforms so display configuration has to be done in device tree manually.

That being said, the HDMI resolution can still be specified by command line as follows:

setenv cmd_custom 'setenv bootargs video=HDMI-A-1:3840x2160-32@60'

Note that the following limitations were noted with current NXP kernel:

  • Only displays advertising standard CEA modes seem to work properly
setenv cmd_custom 'setenv bootargs drm_kms_helper.edid_firmware=HDMI-A-1:edid/1920x1080.bin'
  • 4K 3D performances seem pretty limited