|
| 1 | +.. zephyr:board:: frdm_imx93 |
| 2 | +
|
| 3 | +Overview |
| 4 | +******** |
| 5 | + |
| 6 | +The FRDM-IMX93 board is a low-cost and compact platform designed to show |
| 7 | +the most commonly used features of the i.MX 93 Applications Processor in a |
| 8 | +small and low cost package. The FRDM-IMX93 board is an entry-level development |
| 9 | +board, which helps developers to get familiar with the processor before |
| 10 | +investing a large amount of resources in more specific designs. |
| 11 | + |
| 12 | +i.MX93 MPU is composed of one cluster of 2x Cortex®-A55 cores and a single |
| 13 | +Cortex®-M33 core. Zephyr RTOS is ported on Cortex®-A55 core. |
| 14 | + |
| 15 | +Hardware |
| 16 | +******** |
| 17 | + |
| 18 | +- i.MX 93 applications processor |
| 19 | + |
| 20 | + - The processor integrates up to two Arm Cortex-A55 cores, and supports |
| 21 | + built-in Arm Cortex-M33 core. |
| 22 | + |
| 23 | +- RAM: 2GB LPDDR4 |
| 24 | +- Storage: |
| 25 | + |
| 26 | + - SanDisk 16GB eMMC5.1 |
| 27 | + - microSD Socket |
| 28 | +- Wireless: |
| 29 | + |
| 30 | + - Murata Type-2EL (SDIO+UART+SPI) module. It is based on NXP IW612 SoC, |
| 31 | + which supports dual-band (2.4 GHz /5 GHz) 1x1 Wi-Fi 6, Bluetooth 5.2, |
| 32 | + and 802.15.4 |
| 33 | +- USB: |
| 34 | + |
| 35 | + - One USB 2.0 Type C connector |
| 36 | + - One USB 2.0 Type A connector |
| 37 | +- Ethernet |
| 38 | +- PCI-E M.2 |
| 39 | +- Connectors: |
| 40 | + |
| 41 | + - 40-Pin Dual Row Header |
| 42 | +- LEDs: |
| 43 | + |
| 44 | + - 1x Power status LED |
| 45 | + - 1x RGB LED |
| 46 | +- Debug |
| 47 | + |
| 48 | + - JTAG 3-pin connector |
| 49 | + - USB-C port for UART debug, two COM ports for A55 and M33 |
| 50 | + |
| 51 | + |
| 52 | +Supported Features |
| 53 | +================== |
| 54 | + |
| 55 | +.. zephyr:board-supported-hw:: |
| 56 | +
|
| 57 | +Devices |
| 58 | +======== |
| 59 | +System Clock |
| 60 | +------------ |
| 61 | + |
| 62 | +This board configuration uses a system clock frequency of 24 MHz. |
| 63 | +Cortex-A55 Core runs up to 1.7 GHz. |
| 64 | +Cortex-M33 Core runs up to 200MHz in which SYSTICK runs on same frequency. |
| 65 | + |
| 66 | +Serial Port |
| 67 | +----------- |
| 68 | + |
| 69 | +This board configuration uses a single serial communication channel with the |
| 70 | +CPU's UART2 for A55 core and M33 core. |
| 71 | + |
| 72 | +User Button GPIO Option |
| 73 | +-------------------------- |
| 74 | + |
| 75 | +The user buttons USER_BTN1 and USER_BTN2 are connected to onboard GPIO expander |
| 76 | +PCAL6524 by default, but can be changed to connect to FRDM-IMX93 GPIO. A devicetree |
| 77 | +overlay is included to support this. |
| 78 | + |
| 79 | +Run following command to test user buttons connected to FRDM-IMX93 GPIO: |
| 80 | + |
| 81 | +.. zephyr-app-commands:: |
| 82 | + :zephyr-app: samples/basic/button |
| 83 | + :host-os: unix |
| 84 | + :board: frdm_imx93/mimx9352/a55 |
| 85 | + :goals: build |
| 86 | + :gen-args: -DEXTRA_DTC_OVERLAY_FILE=frdm_imx93_mimx9352_native_btn.overlay |
| 87 | + |
| 88 | +Note: The overlay only supports ``mimx9352/a55``, but can be extended to support |
| 89 | +``mimx9352/m33`` if I2C and PCAL6524 is enabled. |
| 90 | + |
| 91 | +Programming and Debugging (A55) |
| 92 | +******************************* |
| 93 | + |
| 94 | +U-Boot "cpu" command is used to load and kick Zephyr to Cortex-A secondary Core, Currently |
| 95 | +it is supported in : `Real-Time Edge U-Boot`_ (use the branch "uboot_vxxxx.xx-y.y.y, |
| 96 | +xxxx.xx is uboot version and y.y.y is Real-Time Edge Software version, for example |
| 97 | +"uboot_v2023.04-2.9.0" branch is U-Boot v2023.04 used in Real-Time Edge Software release |
| 98 | +v2.9.0), and pre-build images and user guide can be found at `Real-Time Edge Software`_. |
| 99 | + |
| 100 | +.. _Real-Time Edge U-Boot: |
| 101 | + https://github.com/nxp-real-time-edge-sw/real-time-edge-uboot |
| 102 | +.. _Real-Time Edge Software: |
| 103 | + https://www.nxp.com/rtedge |
| 104 | + |
| 105 | +Copy the compiled ``zephyr.bin`` to the first FAT partition of the SD card and |
| 106 | +plug the SD card into the board. Power it up and stop the u-boot execution at |
| 107 | +prompt. |
| 108 | + |
| 109 | +Use U-Boot to load and kick zephyr.bin to Cortex-A55 Core1: |
| 110 | + |
| 111 | +.. code-block:: console |
| 112 | +
|
| 113 | + fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; cpu 1 release 0xd0000000 |
| 114 | +
|
| 115 | +
|
| 116 | +Or use the following command to kick zephyr.bin to Cortex-A55 Core0: |
| 117 | + |
| 118 | +.. code-block:: console |
| 119 | +
|
| 120 | + fatload mmc 1:1 0xd0000000 zephyr.bin; dcache off; icache flush; go 0xd0000000 |
| 121 | +
|
| 122 | +
|
| 123 | +Use this configuration to run basic Zephyr applications and kernel tests, |
| 124 | +for example, with the :zephyr:code-sample:`synchronization` sample: |
| 125 | + |
| 126 | +.. zephyr-app-commands:: |
| 127 | + :zephyr-app: samples/synchronization |
| 128 | + :host-os: unix |
| 129 | + :board: frdm_imx93/mimx9352/a55 |
| 130 | + :goals: build |
| 131 | + |
| 132 | +This will build an image with the synchronization sample app, boot it and |
| 133 | +display the following console output: |
| 134 | + |
| 135 | +.. code-block:: console |
| 136 | +
|
| 137 | + *** Booting Zephyr OS build v4.1.0-41-g6395333e3d18 *** |
| 138 | + thread_a: Hello World from cpu 0 on frdm_imx93! |
| 139 | + thread_b: Hello World from cpu 0 on frdm_imx93! |
| 140 | + thread_a: Hello World from cpu 0 on frdm_imx93! |
| 141 | + thread_b: Hello World from cpu 0 on frdm_imx93! |
| 142 | +
|
| 143 | +System Reboot (A55) |
| 144 | +=================== |
| 145 | + |
| 146 | +Currently i.MX93 only support cold reboot and doesn't support warm reboot. |
| 147 | +Use this configuratiuon to verify cold reboot with :zephyr:code-sample:`shell-module` |
| 148 | +sample: |
| 149 | + |
| 150 | +.. zephyr-app-commands:: |
| 151 | + :zephyr-app: samples/subsys/shell/shell_module |
| 152 | + :host-os: unix |
| 153 | + :board: frdm_imx93/mimx9352/a55 |
| 154 | + :goals: build |
| 155 | + |
| 156 | +This will build an image with the shell sample app, boot it and execute |
| 157 | +kernel reboot command in shell command line: |
| 158 | + |
| 159 | +.. code-block:: console |
| 160 | +
|
| 161 | + uart:~$ kernel reboot cold |
| 162 | +
|
| 163 | +.. include:: ../../common/board-footer.rst |
| 164 | + :start-after: nxp-board-footer |
0 commit comments