Sign in for a personalized NXP experience.
1
Out of the Box2
Get Software3
Build and Run4
Developer ExperienceSign in to save your progress. Don't have an account? Create one.
The following section describes the steps to boot the FRDM-IMX93.
The development kit contains:
Get started developing your application on the FRDM-IMX93 with the out-of-the-box video. For more information please visit the i.MX 93 applications processor documentation.
This is a modal window.
Beginning of dialog window. Escape will cancel and close the window.
End of dialog window.
This is a modal window. This modal can be closed by pressing the Escape key or activating the close button.
This is a modal window. This modal can be closed by pressing the Escape key or activating the close button.
The FRDM-IMX93 comes with a pre-built NXP Linux binary demo image flashed on the eMMC. Without modifying the binary inside, booting from the eMMC provides a default system with certain features for building other applications on top of Linux.
To understand more about NXP’s Embedded Linux®, continue reading the next sections.
Something went wrong! Please try again.
Connect the supplied USB Type-C cable to the debug UART port P16
, then connect the other end of the cable to a host
computer.
Two UART connections will appear on the host computer. The first port is for A55 core and the second port is for M33 core system debugging.
If you are unfamiliar with terminal applications, please view one of the following tutorials before continuing to step 1.4: Minicom Tutorial, Tera Term Tutorial, PuTTY Tutorial
To debug under Linux, make sure CH342F Linux driver is installed.
Something went wrong! Please try again.
To experience the user interface provided with the image binary, connect a monitor via the HDMI connector P5
.
Something went wrong! Please try again.
See the next table to configure accordingly.
Something went wrong! Please try again.
Connect the power supply cable to the power connector P1
.
The board has been set up to boot from eMMC by default. The processor starts executing the bootable image from eMMC. Then, the U-Boot execution should begin automatically.
Information is printed in the serial console for the Arm® Cortex®-A55. If you do not stop the U-Boot process, it continues to boot the kernel.
As the board boots up, you will see 2 penguins appear in the upper left-hand corner of the monitor, and then you will see the Linux terminal icon on the top left and timer on right top corner.
Congratulations, you are up and running.
Something went wrong! Please try again.
The i.MX Linux board support package (BSP) is a collection of binary files, source code and support files that are used to boot an Embedded Linux image on a specific i.MX development platform.
Current releases of Linux binary demo files can be found on Linux download page. Additional documentation is available in the i.MX Linux documentation bundle under the Linux sections of the i.MX Software and Development Tools.
FRDM-IMX93 support booting from eMMC and SD card.
This Getting Started guide only outlines a few methods of flashing the Linux BSP image to an SD card. Experienced Linux developers can explore other options if desired.
Something went wrong! Please try again.
The latest pre-built images for the FRDM-IMX93 are available on the FRDM i.MX 93 Development Board.
The pre-built NXP Linux binary demo image provides a typical system and basic set of features for using and evaluating the processor. Without modifying the system, the users can evaluate hardware interfaces, test SoC features and run user space applications.
Something went wrong! Please try again.
In addition to the connections from "Out of the Box" section, connect the USB1
to the host machine using the proper USB cable.
Turn off the board. Refer to the "1.5 Boot Switch Setup" section and configure the board to boot on serial download protocol (SDP) mode.
Depending on the OS used in the host machine, the way to transfer the Linux BSP image onto an SD card can vary. Choose an option below for detailed instructions:
Download the latest stable files from UUU GitHub page. If further assistance for UUU is needed, please refer to this extensive tutorial .
uuu
libusb1
(via apt-get or any other package manager)By default, this procedure flashes the image to the SD card. Check the UUU GitHub page for reference on how to flash the image to other devices.
Open a terminal application and change the directory to the location where uuu and the latest Linux distribution for FRDM-IMX93 are located. Add execution permission to the uuu file and execute it. uuu will wait for the USB device to connect
1$ chmod a+x uuu $ sudo ./uuu -b sd_all imx-image-full-imx93frdm.rootfs.wic.zst
Confirm FRDM-IMX93 boot mode is switched to serial download mode, and turn on the board, uuu
will start to flash the images to the SD card.
When it finishes, turn off the board and the terminal. If further assistance with configuring the board to boot from SD card is needed, please consult the 1.5 Boot Switch Setup.
Download the latest stable files from UUU GitHub page. If further assistance for UUU is needed, please refer to this extensive tutorial.
uuu.exe
By default, this procedure flashes the image to the SD card. Check the UUU GitHub page for reference on how to flash the image to other devices.
Open the command prompt application and navigate to the directory where the uuu.exe file and the Linux release for the FRDM-IMX93 are located.
1uuu.exe -b sd_all imx-image-full-imx93frdm.rootfs.wic.zst
Confirm FRDM-IMX93 boot mode is switched to serial download mode, and turn on the board, uuu will start to copy the images to the board.
When it finishes, turn off the board and the command prompt application. If further assistance with configuring the board to boot from SD card is needed, please consult the 1.5 Boot Switch Setup.
Something went wrong! Please try again.
In the section, a brief guide of how to build Yocto BSP image for FRDM-IMX93 is introduced, along with how to add Matter support and how to build Debian release image
The FRDM-IMX93 BSP release is based on i.MX SW 2024 Q3 release with Yocto Project 5.0 (Scarthgap). To build FRDM-IMX93 image from source code, please first check i.MX Yocto Project User's Guide to get familiar with Yocto project and Yocto build. Then please follow below steps to build image for FRDM-IMX93.
12$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.36-2.1.0.xml
$ repo sync
12$ cd ${MY_YOCTO}/sources
$ git clone https://github.com/nxp-imx-support/meta-imx-frdm.git
1$ MACHINE=imx93frdm DISTRO=fsl-imx-xwayland source sources/meta-imx-frdm/tools/imx-frdm-setup.sh -b frdm-imx93
1$ bitbake imx-image-full
1$ zstdcat imx-image-full-imx93frdm.rootfs.wic.zst | sudo dd of=/dev/sdx bs=1M && sync
Or using uuu to burn image into SD card:
1$ uuu -b sd_all imx-image-full-imx93frdm.rootfs.wic.zst
Something went wrong! Please try again.
FRDM-IMX93 has support for Matter. To include Matter support, please follow below steps to include Matter layer into Yocto build.
12$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.36-2.1.0.xml
$ repo sync
123$ cd ${MY_YOCTO}/sources/meta-nxp-connectivity
$ git remote update
$ git checkout imx_matter_2024_q3
12$ cd ${MY_YOCTO}/sources
$ git clone https://github.com/nxp-imx-support/meta-imx-frdm.git
1$ MACHINE=imx93frdm-iwxxx-matter DISTRO=fsl-imx-xwayland source sources/meta-imx-frdm/tools/imx-frdm-matter-setup.sh bld-xwayland-imx93
1$ bitbake imx-image-multimedia
Something went wrong! Please try again.
FRDM-IMX93 has support for Debian 12 OS. i.MX Debian Linux SDK distribution is a combination of NXP-provided kernel and boot loaders with a Debian distro user-space image, which includes:
For more details of NXP Debian Linux SDK Distribution, please check NXP Debian Linux SDK Distribution for i.MX and Layerscape
To create an SD card with Debian for FRDM-IMX93, please follow below steps.
123$ wget http://www.nxp.com/lgfiles/sdk/lsdk2412/flex-installer
$ chmod +x flex-installer
$ sudo mv flex-installer /usr/bin
1234# format SD card
$ flex-installer -i pf -d /dev/sdb
# automatically download and install images into SD card
$ flex-installer -i auto -d /dev/mmcblk1 -m imx93frdm
1$ dhclient -i end0
1$ date -s "22 Nov 2024 09:00:00"
1$ debian-post-install-pkg desktop
1$ debian-post-install-pkg server
To build Debian image with Flexbuild for FRDM-IMX93, please follow below steps.
12345$ git clone https://github.com/nxp/flexbuild
$ cd flexbuild && source setup.env
#Continue to run commands below in case you need to build in Docker due to lack of Ubuntu 22.04 or Debian 12 host
$ bld docker
$ source setup.env
1$ bld -m imx93frdm
To build individual part of the image, please check below command list for Flexbuild usage
123456789$ bld uboot -m imx93frdm (compile u-boot image for imx93frdm)
$ bld linux (compile linux kernel for all arm64 i.MX machines)
$ bld bsp -m imx93frdm (generate BSP firmware)
$ bld boot (generate boot partition tarball including kernel, dtb, modules, distro bootscript for iMX machines)
$ bld multimedia (build multimedia components for i.MX platforms)
$ bld rfs -r debian:server (generate Debian server rootfs)
$ bld apps -r debian:server (compile apps against runtime dependencies of Debian server RootFS)
$ bld merge-apps -r debian:server (merge iMX-specific apps into target Debian server RootFS)
$ bld packrfs -r debian:server (pack and compress target debian server rootfs)
Something went wrong! Please try again.
To enable faster development for users of all skill levels, FRDM-IMX93 provides extensive example applications to showcase various features and capabilities of the FRDM-IMX93, especially on machine learning related use case accelerated by Neural-network Processing Unit (NPU) available in FRDM-IMX93.
Currently 9 example applications are available on FRDM-IMX93:
The details of supported example applications are available in Application Code Hub (ACH) and GoPoint.
The Application Code Hub (ACH) repository enables engineers to easily find microcontroller and processor software examples, code snippets, application software packs and demos developed by NXP in-house experts. This space provides a quick, easy and consistent way to find microcontroller and processor applications.
ACH provides filter and search options to quickly find specific applications. With the support of Git capabilities, there is an easy way to import and use applications within user’s development environments.
To learn more details of Application Code Hub (ACH), please visit this link.
To find available example applications for FRDM-IMX93, please select “i.MX” in Device Families as shown below.
Select each example application to check for details.
To get the source code of each example application, click the “Visit on GitHub” button on the top to visit the code repository in NXP GitHub.
Something went wrong! Please try again.
The GoPoint for i.MX Application Processors is a user-friendly application launches pre-built applications packed with the Linux BSP, giving users an excellent out-of-the-box experience and hands-on experience with i.MX SoC's capabilities. GoPoint highlights advanced features while providing practical solutions for implementation, with source code and build recipes for the applications provided in GitHub.
To learn more details of GoPoint, please visit this link .
For FRDM-IMX93, GoPoint is included in the BSP release by default. To open the GoPoint GUI launcher, press the NXP logo displayed on the top left-hand corner of the screen after the FRDM-IMX93 boot up as shown below.
Available example applications are shown with icons of screenshot for each application. When selecting the example application, a brief description of this example application is shown on the right side. To launch the currently selected application, click the “Launch Demo” button. After an application is started, it can then be force-quit by clicking the “Stop Current Demo” button in the launcher (appears once the application is started).
For more details of the usage for each application, please refer to GoPoint for i.MX Applications Processors User's Guide.
Something went wrong! Please try again.
The serial-to-USB drivers are available at CH342F Linux Drivers .
On the command prompt of the Linux host machine, run the following command to determine the port number:
1ls /dev/ttyCH343USB*
The first number is for Arm® Cortex®-A55.
Use the following commands to install and run the Minicom program:
1sudo apt-get install minicom
1sudo minicom /dev/ttyCH343USB * -s
Configure Minicom as show in Figure and Exit configure.
The WCH USB-serial chip on FRDM-IMX93 enumerates 2 serial ports. Assume that the ports are
COM11
,COM12
. The first
Port(COM11
) is for the serial console communication from Arm® Cortex®-A55. The serial-to-USB drivers
are available at
CH342F Windows Driver .
Note: To determine the port number of the i.MX board virtual COM port, open the Windows device manager and find USB serial Port in Ports (COM and LPT).
Tera Term is an open source terminal emulation application. This program displays the information sent from the NXP development platform’s virtual serial port.
PuTTY is a popular terminal-emulation application. This program displays the information sent from the NXP development platform's virtual serial port.
FRDM-IMX93 has one general-purpose Arm® Cortex®-M33 running up to 250 MHz, which can be used for real-time and low-power processing. In this section, developers can learn how to build program, run program and debug program for Cortex-M33 core.
Note: The Yocto build already includes several Cortex-M33 example images under rootfs /lib/firmware/
folder for quick evaluation and validation. Developers can jump to Section “Run Cortex-M33 program” if example images are used.
The Cortex-M33 MCUXpresso SDK is distributed by the MCUXpresso Web Builder tool . The MCUXpresso SDK includes a flexible set of peripheral drivers designed to speed up and simplify development of embedded applications. Along with the peripheral drivers, the MCUXpresso SDK provides an extensive and rich set of example applications covering everything from basic peripheral use case examples to demo applications. The MCUXpresso SDK also contains optional RTOS integrations such as FreeRTOS and Azure RTOS, and device stack to support rapid development on devices.
To obtain the MCUXpresso SDK for FRDM-IMX93, please follow below steps.
Please refer to “Getting Started with MCUXpresso SDK for MCIMX93-EVK.pdf” document in the docs folder in the SDK package to learn how to setup toolchain and build cortex-M33 program.
There are two methods to run compiled program on Cortex-M33: U-Boot bootaux and Linux remoteproc. After using bootaux or remoteproc to start the Cortex-M33 core, using remoteproc to stop the Cortex-M33 core is for debug purposes only. It is not recommended to stop the Cortex-M33 core from Linux OS in a production system.
Before starting the Cortex-M33 core, make sure the debug UART port of Cortex-M33 core is opened in the debug terminal.
In this example, Cortex-M33 program is first loaded from SD card's partition 1 in U-Boot. Then Cortex-M33 core is booted by bootaux command. Finally, the Linux is booted on Cortex-A55 core by boot command. Please make sure the Cortex-M33 program binary is stored in the SD card's partition 1 with fat partition format. In this example, the binary file “imx93-11x11-evk_m33_TCM_power_mode_switch.bin” is used as an example.
After the board is powered up, press any key in the Cortex-A55's debug terminal to enter U-Boot. Then use following command to start Cortex-M33 core.
12345678u-boot=> fatload mmc 1:1 ${loadaddr} imx93-11x11-evk_m33_TCM_power_mode_switch.bin
19080 bytes read in 6 ms (3 MiB/s)
u-boot=> cp.b ${loadaddr} 0x201e0000 ${filesize}
u-boot=> bootaux 0x1ffe0000 0
## Starting auxiliary core addr = 0x1FFE0000...
u-boot=> setenv mmcargs 'setenv bootargs ${jh_clk} ${mcore_clk} console=${console} root=${mmcroot} clk_ignore_unused'
u-boot=> run prepare_mcore
u-boot=> boot
If the Cortex-M33 core boots successfully with this binary file, following log should be printed in the Cortex-M33 debug terminal:
In this example, Cortex-M33 program is loaded from Linux's rootfs, and boots with remoteproc. The binary file “imx93-11x11-evk_m33_TCM_power_mode_switch.elf” is used here as an example.
Note: If you choose to use remoteproc to start the Cortex-M33 core, please execute “run prepare_mcore” command in U-Boot as following before starting the Linux OS.
12u-boot=> run prepare_mcore
u-boot=> boot
After Linux boots up, use following command in the Cortex-A55’s debug terminal to start Cortex-M33 core.
12root@imx93frdm:~# echo /lib/firmware/imx93-11x11-evk_m33_TCM_power_mode_switch.elf > /sys/class/remoteproc/remoteproc0/firmware
root@imx93frdm:~# echo start > /sys/class/remoteproc/remoteproc0/state
If the Cortex-M33 core boots successfully with this binary file, following log should be printed in the Cortex-M33 debug terminal.
Please refer to application note AN14120 “Debugging Cortex-M with VS Code on i.MX 8M, i.MX 8ULP, and i.MX 93”.
FRDM-IMX93 has an Ethos-U65 NPU to accelerate neural-network machine learning inference. It runs at 1 GHz and provides 0.5 Tops computation power (256 MAC/cycle). For more details of the HW and SW architecture of Ethos-U65, please check i.MX Machine Learning User's Guide.
To be accelerated by the Ethos-U65 NPU, the neural-network operators must be quantized to either 8-bit (unsigned or signed) or 16-bit (signed). For model quantization, please download latest eIQ toolkit and check the user guide.
To deploy the quantized neural network (NN) model on Ethos-U65, the first step is to use Vela to compile the prepared model. The Vela tool is used to compile a TensorFlow Lite NN model into an optimized version that can run on an embedded system containing an Arm Ethos-U NPU. The optimized model contains TFLite Custom operators for those parts of the model that can be accelerated by the Ethos-U NPU. Parts of the model that cannot be accelerated are left unchanged and run on CPU (Cortex-A or Cortex-M) using an appropriate kernel. After compilation, the optimized model can only be run on an Ethos-U NPU embedded system. The tool also generates performance estimates for the compiled model.
FRDM-IMX93 supports on target Vela compilation and offline Vela compilation. For on target Vela compilation, the Vela compiler is already installed in the Linux BSP by default. Developers can directly use following command on FRDM-IMX93 with Linux BSP to do on target vela compilation.
1root@imx93frdm:~# vela YOUR_MODEL_NAME.tflite
If running successfully, the vela compiled model YOUR_MODEL_NAME_vela.tflite is generated in the output folder.
For offline Vela compilation, please download latest eIQ toolkit and check the user guide.
To evaluate Vela compiled model’s performance on NPU, the simplest method is to use the benchmark_model tool in Linux BSP. It uses random data as input and gives average inference time for a given number of runs. Here is an example:
1root@imx93frdm:~# /usr/bin/tensorflow-lite-2.16.2/examples/benchmark_model --graph=/root/mobilenet_v1_1.0_224_quant_vela.tflite --external_delegate_path=/usr/lib/libethosu_delegate.so
If running successfully, the following log is printed in the debug terminal.
The benchmark_model tool can also provide operator profiling report by setting --enable_op_profiling=true in the command. For more usage of benchmark_model, please use --help to check.
For how to write code in c++ & python to run model inference on NPU, please refer to example applications in GoPoint.
Besides Tensorflow, PyTorch is also a popular deep learning frameworks to build NN models. But the Vela tool only support compilation for TensorFlow Lite NN models. For how to convert PyTorch models into TensorFlow Lite models, please check application note AN13769 “Deploy PyTorch Models to NXP Supported Inference Engines Using ONNX”.
FRDM-IMX93 has a Pixel Processing Pipeline (PXP) module that can be used to process graphics buffers or composite video and graphics data before sending to an LCD display or TV encoder. It is used to minimize the memory footprint required for the display pipeline and provide an area and performance optimized to both SDRAM-less and SRAM-based systems. The PXP combines scaling, color space conversion and rotation processing into a single processing engine.
For more details of PXP and how to use it, please check application note AN13829“How to Use PXP in GStreamer and Wayland”.
System security and integrity is always one of the most critical aspects to be considered in product development.
FRDM-IMX93 support secure boot feature and encrypted boot feature, helping to prevent unauthorized software execution during the device boot sequence and protect bootloader data from unauthorized access.
For more details of secure boot feature, please check application note AN12312 “Secure Boot on AHAB Supported Devices”.
For more details of encrypted boot feature, please check application note AN13994 “i.MX Encrypted Boot on AHAB-Enabled Devices”.
In certain use cases, there is requirement for the device boot time, which means the device needs to complete booting in a given time limit.
To optimize the boot time, FRDM-IMX93 supports falcon mode in U-Boot. Falcon mode is a feature in U-Boot that enables fast booting by allowing SPL to directly start the Linux kernel. It completely skips the U-Boot loading and initialization, with the effect of reducing the time spent in the bootloader.
For how to enable falcon mode and further optimize boot time, please check AN14093 “Fast Boot on i.MX 8M and i.MX 9 Using Falcon Mode and Kernel Optimizations”.