MCUXpresso Platform Customization: Difference between revisions
No edit summary |
(Update Release Date) |
||
(148 intermediate revisions by 6 users not shown) | |||
Line 17: | Line 17: | ||
-->{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M-MINI | / VAR-SOM-MX8M-MINI }}<!-- | -->{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M-MINI | / VAR-SOM-MX8M-MINI }}<!-- | ||
-->{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX6 | / DART-MX6 / VAR-SOM-SOLO/DUAL }}<!-- | -->{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX6 | / DART-MX6 / VAR-SOM-SOLO/DUAL }}<!-- | ||
-->{{#ifeq: {{#var:HARDWARE_NAME}} | DART-6UL | / VAR-SOM-6UL }} | -->{{#ifeq: {{#var:HARDWARE_NAME}} | DART-6UL | / VAR-SOM-6UL }}<!-- | ||
-->{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX93 | {{#ifeq: {{#var:BOARD_FOLDER1}} | boards/dart_mx93 | / DART-MX93 }} }} | |||
|- | |- | ||
| SOM revision || {{#var:SUPPORTED_REV_SOM}} | | SOM revision || {{#var:SUPPORTED_REV_SOM}} | ||
Line 77: | Line 78: | ||
|- | |- | ||
| GPIO (GPIO4_IO03) | | GPIO (GPIO4_IO03) | ||
| LED7 for | | LED7 for DT8MCustomBoard 1.x<br> U43.2 / R228 for DT8MCustomBoard >= 2.0 (Use Oscilloscope to observe output signal) | ||
|- | |- | ||
| I2C (I2C3) | | I2C (I2C3) | ||
Line 128: | Line 129: | ||
* demo_apps/hello_world<!-- | * demo_apps/hello_world<!-- | ||
--><section end=DART-MX8M_DEMOS_SECTION/> | --><section end=DART-MX8M_DEMOS_SECTION/> | ||
=== Available Demos v2 === | |||
<section begin=DART-MX8M_DEMOS_SECTION_V2/><!-- | |||
-->* driver_examples/i2c/interrupt_b2b_transfer/slave | |||
* driver_examples/i2c/interrupt_b2b_transfer/master | |||
* driver_examples/i2c/polling_b2b_transfer/slave | |||
* driver_examples/i2c/polling_b2b_transfer/master | |||
* driver_examples/wdog | |||
* driver_examples/gpio/led_output | |||
* driver_examples/tmu/tmu_monitor_report | |||
* driver_examples/pwm* | |||
* driver_examples/uart/auto_baudrate_detect | |||
* driver_examples/uart/interrupt | |||
* driver_examples/uart/interrupt_rb_transfer | |||
* driver_examples/uart/polling | |||
* driver_examples/uart/interrupt_transfer | |||
* driver_examples/gpt/timer | |||
* driver_examples/gpt/capture | |||
* driver_examples/ecspi/ecspi_loopback | |||
* driver_examples/qspi/polling_transfer | |||
* driver_examples/rdc | |||
* driver_examples/sema4/uboot | |||
* freertos_examples/freertos_hello | |||
* freertos_examples/freertos_queue | |||
* freertos_examples/freertos_sem | |||
* freertos_examples/freertos_generic | |||
* freertos_examples/freertos_tickless | |||
* freertos_examples/freertos_mutex | |||
* freertos_examples/freertos_event | |||
* freertos_examples/freertos_swtimer | |||
* cmsis_driver_examples/i2c/int_b2b_transfer/slave | |||
* cmsis_driver_examples/i2c/int_b2b_transfer/master | |||
* cmsis_driver_examples/uart/interrupt_transfer | |||
* cmsis_driver_examples/ecspi/int_loopback_transfer | |||
* multicore_examples/rpmsg_lite_str_echo_rtos | |||
* multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote | |||
* demo_apps/hello_world | |||
<br> | |||
<nowiki>*</nowiki>Not supported running from U-Boot | |||
<br><!-- | |||
--><section end=DART-MX8M_DEMOS_SECTION_V2/> | |||
=== NXP Memory types === | === NXP Memory types === | ||
Line 159: | Line 202: | ||
All linker files are locate in the '''armgcc''' folder of each demo. | All linker files are locate in the '''armgcc''' folder of each demo. | ||
The DDR reserved area must | The DDR reserved area must match the one declared in the kernel device tree: at least 2 GB of RAM is required on the SoM to allow Cortex-M4 accessing the range 0x80000000 - 0x80FFFFFF. | ||
The RPMSG area is located at 0xB8000000: at least 3 GB of RAM is required on the SoM to allow Cortex-M4 accessing the RPMSG area. | The RPMSG area is located at 0xB8000000: at least 3 GB of RAM is required on the SoM to allow Cortex-M4 accessing the RPMSG area. | ||
Line 169: | Line 212: | ||
* '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | * '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | ||
Further details about memory mapping are available in [https:// | Further details about memory mapping are available in the following [https://www.nxp.com/doc/IMX8MDQLQRM i.MX 8M Applications Processor Reference Manual] paragraphs: | ||
* 2.1.2 Cortex-A53 Memory Map | * 2.1.2 Cortex-A53 Memory Map | ||
Line 205: | Line 248: | ||
All linker files are locate in the '''armgcc''' folder of each demo. | All linker files are locate in the '''armgcc''' folder of each demo. | ||
The DDR reserved area must | The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M4 accessing the range 0x7E000000 - 0x7EFFFFFF. For some reason, Cortex-M4 is not able to access RAM locations below 0x60000000: SoMs with 512 MB of RAM are not suitable to use Cortex-M4. | ||
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M4 accessing the RPMSG area. | The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M4 accessing the RPMSG area. | ||
Line 216: | Line 259: | ||
* '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | * '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | ||
Further details about memory mapping are available in [https://www.nxp.com/ | Further details about memory mapping are available in the following [https://www.nxp.com/doc/IMX8MDQLQRM i.MX 8M Applications Processor Reference Manual] paragraphs: | ||
* 2.1.2 Cortex-A53 Memory Map | * 2.1.2 Cortex-A53 Memory Map | ||
Line 653: | Line 696: | ||
-->{{#vardefine:DEACTIVATE_LMEM_CACHE_PATCH|0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch}}<!-- | -->{{#vardefine:DEACTIVATE_LMEM_CACHE_PATCH|0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch}}<!-- | ||
-->{{#vardefine:BOARD_SDK|dart_mx8mq}}<!-- | -->{{#vardefine:BOARD_SDK|dart_mx8mq}}<!-- | ||
--><section end=MCUXPRESSO_2.13.0_V1.0_DART-MX8M/> | --><section end=MCUXPRESSO_2.13.0_V1.0_DART-MX8M/><!-- | ||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
= | *RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | ||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
== | *MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | ||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
=== | *SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | ||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
*DEACTIVATE_LMEM_CACHE_PATCH = '''{{#var:DEACTIVATE_LMEM_CACHE_PATCH}}''' | |||
*BOARD_SDK = '''{{#var:BOARD_SDK}}''' | |||
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M4. | === mcuxpresso-2.15.0-mx8mq-v1.0 === | ||
<section begin=MCUXPRESSO_2.15.0_V1.0_DART-MX8M/><!-- | |||
{| class="wikitable" | -->{{#vardefine:OS|FreeRTOS}}<!-- | ||
|- | -->{{#vardefine:HARDWARE_NAME|DART-MX8M}}<!-- | ||
! scope="col" | File Name<br/> | -->{{#vardefine:RELEASE_NAME|mcuxpresso-2.15.0-mx8mq-v1.0}}<!-- | ||
! scope="col" | Description<br/> | -->{{#vardefine:RELEASE_LINK|MCUXPRESSO_2.15.0_V1.0_DART-MX8M}}<!-- | ||
|- | -->{{#vardefine:MCUXPRESSO_VERSION|2.15.0}}<!-- | ||
| style="padding: 5px;"| imx8mm-var-dart-dt8mcustomboard-'''m4'''.dtb | -->{{#vardefine:SDK_PATH|~/var-mcuxpresso}}<!-- | ||
| style="padding: 5px;"| DART-MX8M-MINI device tree blob for kernel >= 5.4.74 (Yocto Dunfell) | -->{{#vardefine:SDK_GIT_URL|https://github.com/varigit/freertos-variscite}}<!-- | ||
|- | -->{{#vardefine:SDK_GIT_BRANCH|mcuxpresso_sdk_2.15.x-var01}}<!-- | ||
| style="padding: 5px;"| imx8mm-var-dart-'''m4'''.dtb | -->{{#vardefine:TOOLCHAIN_URL|https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | ||
| style="padding: 5px;"| DART-MX8M-MINI device tree blob for kernel 5.4.3 (Yocto Zeus) on SOM rev. > 1.0 | -->{{#vardefine:TOOLCHAIN_BZ2_NAME|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | ||
-->{{#vardefine:TOOLCHAIN_FOLDER|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi}}<!-- | |||
-->{{#vardefine:BOARD_FOLDER|boards/dart_mx8mq}}<!-- | |||
-->{{#vardefine:DOCS_FOLDER|docs}}<!-- | |||
-->{{#vardefine:PINS_SECTION|DART-MX8M_PINS_SECTION}}<!-- | |||
-->{{#vardefine:DEMOS_SECTION|DART-MX8M_DEMOS_SECTION_V2}}<!-- | |||
-->{{#vardefine:DTBS_SECTION|DART-MX8M_DTBS_SECTION}}<!-- | |||
-->{{#vardefine:MEMORY_TYPES_SECTION|DART-MX8M_MEMORY-TYPES_VAR_SECTION}}<!-- | |||
-->{{#vardefine:JTAG_SECTION|DART-MX8M_JTAG_SECTION}}<!-- | |||
-->{{#vardefine:NXP_USER_GUIDE|Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf}}<!-- | |||
-->{{#vardefine:NXP_REFERENCE_KIT|EVK-MIMX8MQ}}<!-- | |||
-->{{#vardefine:SDK_GIT_TAG|dart-mx8mq_mcuxpresso-2.15.0_v10}}<!-- | |||
-->{{#vardefine:RELEASE_DATE|11/01/2024}}<!-- | |||
-->{{#vardefine:SUPPORTED_REV_SOM|v1.1 and higher}} <!-- | |||
-->{{#vardefine:SUPPORTED_REV_CARRIER|v1.1 and higher}} <!-- | |||
-->{{#vardefine:YOCTO_RELEASE_TAG|mx8m-yocto-mickledore-6.1.36_2.1.0-v1.0}}<!-- | |||
-->{{#vardefine:DEACTIVATE_LMEM_CACHE_PATCH|0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch}}<!-- | |||
-->{{#vardefine:BOARD_SDK|dart_mx8mq}}<!-- | |||
--><section end=MCUXPRESSO_2.15.0_V1.0_DART-MX8M/><!-- | |||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
*RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | |||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
*MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | |||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
*SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | |||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
*DEACTIVATE_LMEM_CACHE_PATCH = '''{{#var:DEACTIVATE_LMEM_CACHE_PATCH}}''' | |||
*BOARD_SDK = '''{{#var:BOARD_SDK}}''' | |||
= DART-MX8M-MINI = | |||
== Sections == | |||
=== Available dtbs === | |||
<section begin=DART-MX8M-MINI_DTBS_SECTION/><!-- | |||
-->To allow Cortex M4 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing '''m4''' label in the name, using the fdt_file environment variable in U-Boot. | |||
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M4. | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | File Name<br/> | |||
! scope="col" | Description<br/> | |||
|- | |||
| style="padding: 5px;"| imx8mm-var-dart-dt8mcustomboard-'''m4'''.dtb | |||
| style="padding: 5px;"| DART-MX8M-MINI device tree blob for kernel >= 5.4.74 (Yocto Dunfell) | |||
|- | |||
| style="padding: 5px;"| imx8mm-var-dart-'''m4'''.dtb | |||
| style="padding: 5px;"| DART-MX8M-MINI device tree blob for kernel 5.4.3 (Yocto Zeus) on SOM rev. > 1.0 | |||
|- | |- | ||
| style="padding: 5px;"| fsl-imx8mm-var-dart-'''m4'''.dtb | | style="padding: 5px;"| fsl-imx8mm-var-dart-'''m4'''.dtb | ||
Line 833: | Line 951: | ||
--><section end=DART-MX8M-MINI_DEMOS_SECTION/> | --><section end=DART-MX8M-MINI_DEMOS_SECTION/> | ||
=== Variscite Memory types === | === Available Demos v2 === | ||
<section begin=DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION/><!-- | <section begin=DART-MX8M-MINI_DEMOS_SECTION_V2/><!-- | ||
-->The SDK allow linking using 2 different memory types: DDR, TCM. | -->* driver_examples/i2c/interrupt_b2b_transfer/slave | ||
* driver_examples/i2c/interrupt_b2b_transfer/master | |||
Here is available a short summary of memory areas used by Cortex-M4 as described in related linker file. | * driver_examples/i2c/polling_b2b_transfer/slave | ||
* driver_examples/i2c/polling_b2b_transfer/master | |||
{| class="wikitable" | * driver_examples/wdog | ||
|- | * driver_examples/sdma/scatter_gather | ||
! scope="col" | memory type | * driver_examples/sdma/memory_to_memory | ||
! scope="col" | M4 memory area | * driver_examples/gpio/led_output | ||
! scope="col" | A53 memory area | * driver_examples/pwm | ||
! scope="col" | memory lentgh | * driver_examples/uart/auto_baudrate_detect | ||
! scope="col" | linker file | * driver_examples/uart/interrupt | ||
|- | * driver_examples/uart/idle_detect_sdma_transfer | ||
| DDR | * driver_examples/uart/interrupt_rb_transfer | ||
| 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | * driver_examples/uart/sdma_transfer | ||
* driver_examples/uart/polling | |||
* driver_examples/uart/interrupt_transfer | |||
* driver_examples/gpt/timer | |||
* driver_examples/gpt/capture | |||
* driver_examples/ecspi/ecspi_loopback | |||
* driver_examples/ecspi/interrupt_b2b_transfer/slave | |||
* driver_examples/ecspi/interrupt_b2b_transfer/master | |||
* driver_examples/ecspi/polling_b2b_transfer/slave | |||
* driver_examples/ecspi/polling_b2b_transfer/master | |||
* driver_examples/rdc | |||
* driver_examples/tmu_1/monitor_threshold | |||
* driver_examples/tmu_1/temperature_polling | |||
* driver_examples/sema4/uboot | |||
* freertos_examples/freertos_hello | |||
* freertos_examples/freertos_queue | |||
* freertos_examples/freertos_sem | |||
* freertos_examples/freertos_generic | |||
* freertos_examples/freertos_tickless | |||
* freertos_examples/freertos_mutex | |||
* freertos_examples/freertos_event | |||
* freertos_examples/freertos_swtimer | |||
* cmsis_driver_examples/i2c/int_b2b_transfer/slave | |||
* cmsis_driver_examples/i2c/int_b2b_transfer/master | |||
* cmsis_driver_examples/uart/sdma_transfer | |||
* cmsis_driver_examples/uart/interrupt_transfer | |||
* cmsis_driver_examples/ecspi/int_loopback_transfer | |||
* cmsis_driver_examples/ecspi/sdma_loopback_transfer | |||
* multicore_examples/rpmsg_lite_str_echo_rtos | |||
* multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote | |||
* demo_apps/hello_world<!-- | |||
--><section end=DART-MX8M-MINI_DEMOS_SECTION_V2/> | |||
=== Variscite Memory types === | |||
<section begin=DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION/><!-- | |||
-->The SDK allow linking using 2 different memory types: DDR, TCM. | |||
Here is available a short summary of memory areas used by Cortex-M4 as described in related linker file. | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | memory type | |||
! scope="col" | M4 memory area | |||
! scope="col" | A53 memory area | |||
! scope="col" | memory lentgh | |||
! scope="col" | linker file | |||
|- | |||
| DDR | |||
| 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | |||
| 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | | 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | ||
| 16MB (DDR) | | 16MB (DDR) | ||
Line 863: | Line 1,029: | ||
All linker files are locate in the '''armgcc''' folder of each demo. | All linker files are locate in the '''armgcc''' folder of each demo. | ||
The DDR reserved area must | The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M4 accessing the range 0x7E000000 - 0x7EFFFFFF. For some reason, Cortex-M4 is not able to access RAM locations below 0x60000000: SoMs with 512 MB of RAM are not suitable to use Cortex-M4. | ||
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M4 accessing the RPMSG area. | The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M4 accessing the RPMSG area. | ||
Line 874: | Line 1,040: | ||
* '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | * '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | ||
Further details about memory mapping are available in [https://www.nxp.com/ | Further details about memory mapping are available in the following [https://www.nxp.com/doc/IMX8MMRM i.MX 8M Mini Applications Processor Reference Manual] paragraphs: | ||
* 2.1.2 Cortex-A53 Memory Map | * 2.1.2 Cortex-A53 Memory Map | ||
Line 1,269: | Line 1,435: | ||
-->{{#vardefine:BOARD_SDK|dart_mx8mm}}<!-- | -->{{#vardefine:BOARD_SDK|dart_mx8mm}}<!-- | ||
--><section end=MCUXPRESSO_2.13.0_V1.0_DART-MX8M-MINI/><!-- | --><section end=MCUXPRESSO_2.13.0_V1.0_DART-MX8M-MINI/><!-- | ||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
*RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | |||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
*MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | |||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
*SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | |||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DEACTIVATE_LMEM_CACHE_PATCH = '''{{#var:DEACTIVATE_LMEM_CACHE_PATCH}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
= VAR-SOM-MX8M-NANO = | === mcuxpresso-2.15.0-mx8mm-v1.0 === | ||
<section begin=MCUXPRESSO_2.15.0_V1.0_DART-MX8M-MINI/><!-- | |||
== Sections == | -->{{#vardefine:OS|FreeRTOS}}<!-- | ||
-->{{#vardefine:HARDWARE_NAME|DART-MX8M-MINI}}<!-- | |||
=== Available dtbs === | -->{{#vardefine:RELEASE_NAME|mcuxpresso-2.15.0-mx8mm-v1.0}}<!-- | ||
<section begin=VAR-SOM-MX8M-NANO_DTBS_SECTION/><!-- | -->{{#vardefine:RELEASE_LINK|MCUXPRESSO_2.15.0_V1.0_DART-MX8M-MINI}}<!-- | ||
-->To allow Cortex M7 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing '''m7''' label in the name, using the fdt_file environment variable in U-Boot. | -->{{#vardefine:MCUXPRESSO_VERSION|2.15.0}}<!-- | ||
-->{{#vardefine:SDK_PATH|~/var-mcuxpresso}}<!-- | |||
{| class="wikitable" | -->{{#vardefine:SDK_GIT_URL|https://github.com/varigit/freertos-variscite}}<!-- | ||
|- | -->{{#vardefine:SDK_GIT_BRANCH|mcuxpresso_sdk_2.15.x-var01}}<!-- | ||
! scope="col" | File Name<br/> | -->{{#vardefine:TOOLCHAIN_URL|https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | ||
! scope="col" | Description<br/> | -->{{#vardefine:TOOLCHAIN_BZ2_NAME|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | ||
-->{{#vardefine:TOOLCHAIN_FOLDER|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi}}<!-- | |||
-->{{#vardefine:BOARD_FOLDER|boards/dart_mx8mm}}<!-- | |||
-->{{#vardefine:DOCS_FOLDER|docs}}<!-- | |||
-->{{#vardefine:PINS_SECTION|DART-MX8M-MINI_PINS_SECTION_V2}}<!-- | |||
-->{{#vardefine:DEMOS_SECTION|DART-MX8M-MINI_DEMOS_SECTION_V2}}<!-- | |||
-->{{#vardefine:DTBS_SECTION|DART-MX8M-MINI_DTBS_SECTION}}<!-- | |||
-->{{#vardefine:MEMORY_TYPES_SECTION|DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION}}<!-- | |||
-->{{#vardefine:JTAG_SECTION|DART-MX8M_JTAG_SECTION}}<!-- | |||
-->{{#vardefine:SDK_GIT_TAG|dart-mx8mm_mcuxpresso-2.15.0_v10}} <!-- | |||
-->{{#vardefine:RELEASE_DATE|09/16/2024}} <!-- | |||
-->{{#vardefine:SUPPORTED_REV_SOM|v1.1 and higher}} <!-- | |||
-->{{#vardefine:SUPPORTED_REV_CARRIER|v1.1 and higher}} <!-- | |||
-->{{#vardefine:NXP_USER_GUIDE|Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf}}<!-- | |||
-->{{#vardefine:NXP_REFERENCE_KIT|EVK-MIMX8MM}}<!-- | |||
-->{{#vardefine:YOCTO_RELEASE_TAG|mx8mm-yocto-mickledore-6.1.36_2.1.0-v1.2}}<!-- | |||
-->{{#vardefine:DEACTIVATE_LMEM_CACHE_PATCH|0001-iMX8M-MINI-deactivated-the-LMEM-caches-to-debug-in-e.patch}}<!-- | |||
-->{{#vardefine:LMEM_CACHE_FILE|MIMX8MM6/system_MIMX8MM6_cm4.c}}<!-- | |||
-->{{#vardefine:BOARD_SDK|dart_mx8mm}}<!-- | |||
--><section end=MCUXPRESSO_2.15.0_V1.0_DART-MX8M-MINI/><!-- | |||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
*RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | |||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
*MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | |||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
*SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | |||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DEACTIVATE_LMEM_CACHE_PATCH = '''{{#var:DEACTIVATE_LMEM_CACHE_PATCH}}''' | |||
*LMEM_CACHE_FILE = '''{{#var:LMEM_CACHE_FILE}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
= VAR-SOM-MX8M-NANO = | |||
== Sections == | |||
=== Available dtbs === | |||
<section begin=VAR-SOM-MX8M-NANO_DTBS_SECTION/><!-- | |||
-->To allow Cortex M7 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing '''m7''' label in the name, using the fdt_file environment variable in U-Boot. | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | File Name<br/> | |||
! scope="col" | Description<br/> | |||
|- | |- | ||
| style="padding: 5px;"| imx8mn-var-som-symphony-'''m7'''.dtb | | style="padding: 5px;"| imx8mn-var-som-symphony-'''m7'''.dtb | ||
| style="padding: 5px;"| VAR-SOM-MX8M-NANO device tree blob for kernel | | style="padding: 5px;"| VAR-SOM-MX8M-NANO device tree blob for kernel = 5.4.74 (Yocto Dunfell) on Symphony-Board 1.4a and above and for kernel >= 5.10.72 (Yocto Hardknott) on all Symphony-Boards | ||
|- | |- | ||
| style="padding: 5px;"| imx8mn-var-som-symphony-legacy-'''m7'''.dtb | | style="padding: 5px;"| imx8mn-var-som-symphony-legacy-'''m7'''.dtb | ||
| style="padding: 5px;"| VAR-SOM-MX8M-NANO device tree blob for kernel | | style="padding: 5px;"| VAR-SOM-MX8M-NANO device tree blob for kernel = 5.4.74 (Yocto Dunfell) on Symphony-Board 1.4 and below | ||
|- | |- | ||
| style="padding: 5px;"| imx8mn-var-som-'''m7'''.dtb | | style="padding: 5px;"| imx8mn-var-som-'''m7'''.dtb | ||
Line 1,353: | Line 1,594: | ||
=== Available Demos === | === Available Demos === | ||
<section begin=VAR-SOM-MX8M-NANO_DEMOS_SECTION/><!-- | <section begin=VAR-SOM-MX8M-NANO_DEMOS_SECTION/><!-- | ||
--> | -->{{#ifeq: {{#var:MCUXPRESSO_VERSION}} | 2.15.0 | {{VAR-SOM-MX8M-NANO_DEMOS_SECTION_2.15.0}} | {{VAR-SOM-MX8M-NANO_DEMOS_SECTION_LEGACY}} }}<!-- | ||
--><section end=VAR-SOM-MX8M-NANO_DEMOS_SECTION/> | |||
=== Memory types === | |||
<section begin=VAR-SOM-MX8MN_MEMORY-TYPES/><!-- | |||
-->The SDK allow linking using 2 different memory types: DDR, TCM. | |||
Here is available a short summary of memory areas used by Cortex-M7 as described in related linker file. | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | memory type | |||
! scope="col" | M7 memory area | |||
! scope="col" | A53 memory area | |||
! scope="col" | memory lentgh | |||
! scope="col" | linker file | |||
|- | |||
| DDR | |||
| 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | |||
| 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | |||
| 16MB (DDR) | |||
| MIMX8MN6xxxxx_cm7_ddr_ram.ld | |||
|- | |||
| TCM | |||
| 0x00000000-0x0001FFFF (code)<br>0x20000000-0x2001FFFF (data)<br>0x7E000000-0x7EFFFFFF (data2) | |||
| 0x007E0000-0x007FFFFF (code)<br>0x00800000-0x0081FFFF (data)<br>0x7E000000-0x7EFFFFFF (data2) | |||
| 256kB (TCM) + 16MB (DDR) | |||
| MIMX8MN6xxxxx_cm7_ram.ld | |||
|- | |||
|} | |||
--><section end=VAR-SOM-MX8M-NANO_DEMOS_SECTION/> | |||
=== Memory types === | |||
<section begin=VAR-SOM-MX8MN_MEMORY-TYPES/><!-- | |||
-->The SDK allow linking using 2 different memory types: DDR, TCM. | |||
Here is available a short summary of memory areas used by Cortex-M7 as described in related linker file. | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | memory type | |||
! scope="col" | M7 memory area | |||
! scope="col" | A53 memory area | |||
! scope="col" | memory lentgh | |||
! scope="col" | linker file | |||
|- | |||
| DDR | |||
| 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | |||
| 0x7E000000-0x7E1FFFFF (code)<br>0x7E200000-0x7E3FFFFF (data)<br>0x7E400000-0x7EFFFFFF (data2) | |||
| 16MB (DDR) | |||
| MIMX8MN6xxxxx_cm7_ddr_ram.ld | |||
|- | |||
| TCM | |||
| 0x00000000-0x0001FFFF (code)<br>0x20000000-0x2001FFFF (data)<br>0x7E000000-0x7EFFFFFF (data2) | |||
| 0x007E0000-0x007FFFFF (code)<br>0x00800000-0x0081FFFF (data)<br>0x7E000000-0x7EFFFFFF (data2) | |||
| 256kB (TCM) + 16MB (DDR) | |||
| MIMX8MN6xxxxx_cm7_ram.ld | |||
|- | |||
|} | |||
All linker files are locate in the '''armgcc''' folder of each demo. | All linker files are locate in the '''armgcc''' folder of each demo. | ||
The DDR reserved area must | The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M7 accessing the range 0x7E000000 - 0x7EFFFFFF. For some reason, Cortex-M7 is not able to access RAM locations below 0x60000000: SoMs with 512 MB of RAM are not suitable to use Cortex-M7. | ||
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M7 accessing the RPMSG area. | The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M7 accessing the RPMSG area. | ||
Line 1,443: | Line 1,638: | ||
* '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | * '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | ||
Further details about memory mapping are available in [https://www.nxp.com/ | Further details about memory mapping are available in the following [https://www.nxp.com/doc/IMX8MNRM i.MX 8M Nano Applications Processor Reference Manual] paragraphs: | ||
* 2.1.2 Cortex-A53 Memory Map | * 2.1.2 Cortex-A53 Memory Map | ||
* 2.1.3 Cortex-M7 Memory Map<!-- | * 2.1.3 Cortex-M7 Memory Map<!-- | ||
Line 1,839: | Line 2,034: | ||
-->{{#vardefine:BOARD_SDK|som_mx8mn}}<!-- | -->{{#vardefine:BOARD_SDK|som_mx8mn}}<!-- | ||
--><section end=MCUXPRESSO_2.13.0_V1.0_VAR-SOM-MX8M-NANO/><!-- | --><section end=MCUXPRESSO_2.13.0_V1.0_VAR-SOM-MX8M-NANO/><!-- | ||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
*SOC_HAS_M7 = '''{{#var:SOC_HAS_M7}}''' | |||
*RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | |||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
*MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | |||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
*SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | |||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
= | === mcuxpresso-2.15.0-mx8mn-v1.0 === | ||
<section begin=MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX8M-NANO/><!-- | |||
-->{{#vardefine:OS|FreeRTOS}}<!-- | |||
-->{{#vardefine:HARDWARE_NAME|VAR-SOM-MX8M-NANO}}<!-- | |||
-->{{#vardefine:SOC_HAS_M7|true}}<!-- | |||
<section begin= | -->{{#vardefine:RELEASE_NAME|mcuxpresso-2.15.0-mx8mn-v1.0}}<!-- | ||
--> | -->{{#vardefine:RELEASE_LINK|MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX8M-NANO}}<!-- | ||
-->{{#vardefine:MCUXPRESSO_VERSION|2.15.0}}<!-- | |||
-->{{#vardefine:SDK_PATH|~/var-mcuxpresso}}<!-- | |||
-->{{#vardefine:SDK_GIT_URL|https://github.com/varigit/freertos-variscite}}<!-- | |||
{| | -->{{#vardefine:SDK_GIT_BRANCH|mcuxpresso_sdk_2.15.x-var01}}<!-- | ||
|- | -->{{#vardefine:TOOLCHAIN_URL|https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | ||
-->{{#vardefine:TOOLCHAIN_BZ2_NAME|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | |||
-->{{#vardefine:TOOLCHAIN_FOLDER|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi}}<!-- | |||
|- | -->{{#vardefine:BOARD_FOLDER|boards/som_mx8mn}}<!-- | ||
-->{{#vardefine:DOCS_FOLDER|docs}}<!-- | |||
| | -->{{#vardefine:PINS_SECTION|VAR-SOM-MX8M-NANO_PINS_SECTION}}<!-- | ||
|- | -->{{#vardefine:DEMOS_SECTION|VAR-SOM-MX8M-NANO_DEMOS_SECTION}}<!-- | ||
-->{{#vardefine:DTBS_SECTION|VAR-SOM-MX8M-NANO_DTBS_SECTION}}<!-- | |||
-->{{#vardefine:MEMORY_TYPES_SECTION|VAR-SOM-MX8MN_MEMORY-TYPES}}<!-- | |||
|- | -->{{#vardefine:JTAG_SECTION|VAR-SOM-MX8MN_JTAG_SECTION}}<!-- | ||
| | -->{{#vardefine:NXP_USER_GUIDE|Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf}}<!-- | ||
| | -->{{#vardefine:NXP_REFERENCE_KIT|EVK-MIMX8MN}}<!-- | ||
|- | -->{{#vardefine:SDK_GIT_TAG|som-mx8mn_mcuxpresso-2.15.0_v10}}<!-- | ||
| | -->{{#vardefine:RELEASE_DATE|05/06/2024}}<!-- | ||
-->{{#vardefine:SUPPORTED_REV_SOM|v1.0 and higher}} <!-- | |||
-->{{#vardefine:SUPPORTED_REV_CARRIER|v1.2 and higher}} <!-- | |||
-->{{#vardefine:YOCTO_RELEASE_TAG|mx8mn-yocto-mickledore-6.1.36_2.1.0-v1.0}}<!-- | |||
-->{{#vardefine:BOARD_SDK|som_mx8mn}}<!-- | |||
--><section end=MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX8M-NANO/><!-- | |||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
*SOC_HAS_M7 = '''{{#var:SOC_HAS_M7}}''' | |||
*RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | |||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
*MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | |||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
*SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | |||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
= DART-MX8M-PLUS = | |||
=== | == Sections == | ||
{| class="wikitable" | === Available dtbs === | ||
<section begin=DART-MX8M-PLUS_DTBS_SECTION/><!-- | |||
-->To allow Cortex M7 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing '''m7''' label in the name, using the fdt_file environment variable in U-Boot. | |||
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M7. | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | File Name<br/> | |||
! scope="col" | Description<br/> | |||
|- | |||
| style="padding: 5px;"| imx8mp-var-dart-dt8mcustomboard-'''m7'''.dtb | |||
| style="padding: 5px;"| DART-MX8M-PLUS device tree blob for kernel >= 5.4.70 (Yocto Zeus) on DT8MCustomBoard 2.x | |||
|- | |||
| style="padding: 5px;"| imx8mp-var-dart-dt8mcustomboard-legacy-'''m7'''.dtb | |||
| style="padding: 5px;"| DART-MX8M-PLUS device tree blob for kernel >= 5.4.70 (Yocto Zeus) on on DT8MCustomBoard 1.x | |||
|- | |||
| style="padding: 5px;"| imx8mp-var-som-symphony-'''m7'''.dtb | |||
| style="padding: 5px;"| VAR-SOM-MX8M-PLUS device tree blob for kernels >= 5.4.70 (Yocto Zeus) on on Symphony-Board | |||
|- | |||
| style="padding: 5px;"| imx8mp-var-som-symphony-2nd-ov5640'''m7'''.dtb | |||
| style="padding: 5px;"| VAR-SOM-MX8M-PLUS device tree blob for kernels >= 5.4.70 (Yocto Zeus) on on Symphony-Board with 2nd OV5640 | |||
|- | |||
|} | |||
<section end=DART-MX8M-PLUS_DTBS_SECTION/> | |||
=== Default M7 pins v1 === | |||
<section begin=DART-MX8M-PLUS_PINS_SECTION/><!-- | |||
-->Default M7 pins used by the demos are: | |||
{| class="wikitable" | |||
|- | |- | ||
! scope="col" | Function | ! scope="col" | Function | ||
Line 2,039: | Line 2,307: | ||
--><section end=DART-MX8M-PLUS_DEMOS_SECTION/> | --><section end=DART-MX8M-PLUS_DEMOS_SECTION/> | ||
=== Variscite Memory types === | === Available Demos v2 === | ||
<section begin=DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION/><!-- | <section begin=DART-MX8M-PLUS_DEMOS_SECTION_V2/><!-- | ||
-->The SDK allow linking using 2 different memory types: DDR, TCM. | -->* driver_examples/i2c/interrupt_b2b_transfer/slave | ||
* driver_examples/i2c/interrupt_b2b_transfer/master | |||
Here is available a short summary of memory areas used by Cortex-M7 as described in related linker file. | * driver_examples/i2c/polling_b2b_transfer/slave | ||
* driver_examples/i2c/polling_b2b_transfer/master | |||
* driver_examples/wdog | |||
* driver_examples/gpio/led_output | |||
* driver_examples/pwm | |||
* driver_examples/uart/auto_baudrate_detect | |||
* driver_examples/uart/interrupt | |||
* driver_examples/uart/interrupt_rb_transfer | |||
* driver_examples/uart/polling | |||
* driver_examples/uart/interrupt_transfer | |||
* driver_examples/gpt/timer | |||
* driver_examples/gpt/capture | |||
* driver_examples/ecspi/ecspi_loopback | |||
* driver_examples/ecspi/interrupt_b2b_transfer/slave | |||
* driver_examples/ecspi/interrupt_b2b_transfer/master | |||
* driver_examples/ecspi/polling_b2b_transfer/slave | |||
* driver_examples/ecspi/polling_b2b_transfer/master | |||
* driver_examples/tmu/monitor_threshold | |||
* driver_examples/tmu/temperature_polling | |||
* driver_examples/sema4/uboot | |||
{{#if: {{#var:SDK_SUPPORT_CAN}} | | |||
* driver_examples/flexcan/interrupt_transfer | |||
* driver_examples/flexcan/loopback | |||
* driver_examples/flexcan/loopback_transfer | |||
* driver_examples/flexcan/ping_pong_buffer_transfer | |||
}} | |||
* freertos_examples/freertos_hello | |||
* freertos_examples/freertos_queue | |||
* freertos_examples/freertos_sem | |||
* freertos_examples/freertos_generic | |||
* freertos_examples/freertos_tickless | |||
* freertos_examples/freertos_mutex | |||
* freertos_examples/freertos_event | |||
* freertos_examples/freertos_swtimer | |||
* cmsis_driver_examples/i2c/int_b2b_transfer/slave | |||
* cmsis_driver_examples/i2c/int_b2b_transfer/master | |||
* cmsis_driver_examples/uart/interrupt_transfer | |||
* cmsis_driver_examples/ecspi/int_loopback_transfer | |||
* multicore_examples/rpmsg_lite_str_echo_rtos | |||
* multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote | |||
* demo_apps/hello_world<!-- | |||
--><section end=DART-MX8M-PLUS_DEMOS_SECTION_V2/> | |||
=== Variscite Memory types === | |||
<section begin=DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION/><!-- | |||
-->The SDK allow linking using 2 different memory types: DDR, TCM. | |||
Here is available a short summary of memory areas used by Cortex-M7 as described in related linker file. | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 2,069: | Line 2,384: | ||
All linker files are locate in the '''armgcc''' folder of each demo. | All linker files are locate in the '''armgcc''' folder of each demo. | ||
The DDR reserved area must | The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M7 accessing the range 0x80000000 - 0x80FFFFFF. | ||
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M7 accessing the RPMSG area. | The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M7 accessing the RPMSG area. | ||
Line 2,080: | Line 2,395: | ||
* '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | * '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | ||
Further details about memory mapping are available in [https://www.nxp.com/ | Further details about memory mapping are available in the following [https://www.nxp.com/doc/IMX8MPRM i.MX 8M Plus Applications Processor Reference Manual] paragraphs: | ||
* 2.2 Cortex-A53 Memory Map | * 2.2 Cortex-A53 Memory Map | ||
Line 2,390: | Line 2,705: | ||
-->{{#vardefine:BOARD_SDK|dart_mx8mp}}<!-- | -->{{#vardefine:BOARD_SDK|dart_mx8mp}}<!-- | ||
--><section end=MCUXPRESSO_2.13.0_V1.0_DART-MX8M-PLUS/><!-- | --><section end=MCUXPRESSO_2.13.0_V1.0_DART-MX8M-PLUS/><!-- | ||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
*RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | |||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
*MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | |||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
*SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | |||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
*SOM_CAN_SUPPORT_1GB_DDR = '''{{#var:SOM_CAN_SUPPORT_1GB_DDR}}''' | |||
= VAR-SOM-MX8X = | === mcuxpresso-2.15.0-mx8mp-v1.0 === | ||
<section begin=MCUXPRESSO_2.15.0_V1.0_DART-MX8M-PLUS/><!-- | |||
== Sections == | -->{{#vardefine:OS|FreeRTOS}}<!-- | ||
-->{{#vardefine:HARDWARE_NAME|DART-MX8M-PLUS}}<!-- | |||
=== Available dtbs === | -->{{#vardefine:RELEASE_NAME|mcuxpresso-2.15.0-mx8mp-v1.0}}<!-- | ||
<section begin=VAR-SOM-MX8X_DTBS_SECTION/><!-- | -->{{#vardefine:RELEASE_LINK|MCUXPRESSO_2.15.0_V1.0_DART-MX8M-PLUS}}<!-- | ||
-->To allow Cortex M4 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing '''m4''' label in the name, using the fdt_file environment variable in U-Boot. | -->{{#vardefine:MCUXPRESSO_VERSION|2.15.0}}<!-- | ||
-->{{#vardefine:SDK_PATH|~/var-mcuxpresso}}<!-- | |||
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M4. | -->{{#vardefine:SDK_GIT_URL|https://github.com/varigit/freertos-variscite}}<!-- | ||
-->{{#vardefine:SDK_GIT_BRANCH|mcuxpresso_sdk_2.15.x-var01}}<!-- | |||
{| class="wikitable" | -->{{#vardefine:TOOLCHAIN_URL|https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | ||
|- | -->{{#vardefine:TOOLCHAIN_BZ2_NAME|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz}}<!-- | ||
-->{{#vardefine:TOOLCHAIN_FOLDER|arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi}}<!-- | |||
-->{{#vardefine:BOARD_FOLDER|boards/dart_mx8mp}}<!-- | |||
-->{{#vardefine:BOARD_FOLDER1|boards/som_mx8mp}}<!-- | |||
-->{{#vardefine:DOCS_FOLDER|docs}}<!-- | |||
-->{{#vardefine:PINS_SECTION|DART-MX8M-PLUS_PINS_SECTION}}<!-- | |||
-->{{#vardefine:DEMOS_SECTION|DART-MX8M-PLUS_DEMOS_SECTION_V2}}<!-- | |||
-->{{#vardefine:DTBS_SECTION|DART-MX8M-PLUS_DTBS_SECTION}}<!-- | |||
-->{{#vardefine:MEMORY_TYPES_SECTION|DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION}}<!-- | |||
-->{{#vardefine:JTAG_SECTION|DART-MX8M-PLUS_JTAG_SECTION}}<!-- | |||
-->{{#vardefine:SDK_GIT_TAG|dart-mx8mp_mcuxpresso-2.15.0_v10}} <!-- | |||
-->{{#vardefine:RELEASE_DATE|10/11/2024}} <!-- | |||
-->{{#vardefine:SUPPORTED_REV_SOM|v1.1 and higher}} <!-- | |||
-->{{#vardefine:SUPPORTED_REV_CARRIER|v1.4 and higher}} <!-- | |||
-->{{#vardefine:NXP_USER_GUIDE|Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf}}<!-- | |||
-->{{#vardefine:NXP_REFERENCE_KIT|EVK-MIMX8MP}}<!-- | |||
-->{{#vardefine:SDK_SUPPORT_CAN|yes}}<!-- | |||
-->{{#vardefine:YOCTO_RELEASE_TAG|mx8mp-yocto-mickledore-6.1.36_2.1.0-v1.3}}<!-- | |||
-->{{#vardefine:BOARD_SDK|dart_mx8mp}}<!-- | |||
--><section end=MCUXPRESSO_2.15.0_V1.0_DART-MX8M-PLUS/><!-- | |||
-->*HARDWARE_NAME = '''{{#var:HARDWARE_NAME}}''' | |||
*RELEASE_NAME = '''{{#var:RELEASE_NAME}}''' | |||
*RELEASE_LINK = '''{{#var:RELEASE_LINK}}''' | |||
*MCUXPRESSO_VERSION = '''{{#var:MCUXPRESSO_VERSION}}''' | |||
*SDK_PATH = '''{{#var:SDK_PATH}}''' | |||
*SDK_GIT_URL = '''{{#var:SDK_GIT_URL}}''' | |||
*SDK_GIT_BRANCH = '''{{#var:SDK_GIT_BRANCH}}''' | |||
*TOOLCHAIN_URL = '''{{#var:TOOLCHAIN_URL}}''' | |||
*TOOLCHAIN_BZ2_NAME = '''{{#var:TOOLCHAIN_BZ2_NAME}}''' | |||
*TOOLCHAIN_FOLDER = '''{{#var:TOOLCHAIN_FOLDER}}''' | |||
*BOARD_FOLDER = '''{{#var:BOARD_FOLDER}}''' | |||
*DOCS_FOLDER = '''{{#var:DOCS_FOLDER}}''' | |||
*PINS_SECTION = '''{{#var:PINS_SECTION}}''' | |||
*DEMOS_SECTION = '''{{#var:DEMOS_SECTION}}''' | |||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | |||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | |||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | |||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | |||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | |||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}}''' | |||
= VAR-SOM-MX8X = | |||
== Sections == | |||
=== Available dtbs === | |||
<section begin=VAR-SOM-MX8X_DTBS_SECTION/><!-- | |||
-->To allow Cortex M4 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing '''m4''' label in the name, using the fdt_file environment variable in U-Boot. | |||
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M4. | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | File Name<br/> | ! scope="col" | File Name<br/> | ||
! scope="col" | Description<br/> | ! scope="col" | Description<br/> | ||
Line 2,561: | Line 2,949: | ||
* '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | * '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | ||
Further details about memory mapping are available in [https://www.nxp.com/ | Further details about memory mapping are available in the following [https://www.nxp.com/doc/IMX8DQXPRM i.MX 8DualX/8DualXPlus/8QuadXPlus Applications Processor Reference Manual] paragraphs: | ||
* 2.2 System Memory Map | * 2.2 System Memory Map | ||
Line 2,651: | Line 3,039: | ||
-->{{#vardefine:NXP_REFERENCE_KIT|IMX8QXP-MEK}}<!-- | -->{{#vardefine:NXP_REFERENCE_KIT|IMX8QXP-MEK}}<!-- | ||
-->{{#vardefine:SCFW_SOC|mx8qx_b0}} <!-- | -->{{#vardefine:SCFW_SOC|mx8qx_b0}} <!-- | ||
-->{{#vardefine:SCFW_PATCH_URL| | -->{{#vardefine:SCFW_PATCH_URL|{{VAR_FILES_DOMAIN_URL}}/VAR-SOM-MX8X/Software/SCFW}} <!-- | ||
-->{{#vardefine:SCFW_M4_PATCH|0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff}} <!-- | -->{{#vardefine:SCFW_M4_PATCH|0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff}} <!-- | ||
-->{{#vardefine:SDK_GIT_TAG|som-mx8qx_mcuxpresso-2.5.2_v10}} <!-- | -->{{#vardefine:SDK_GIT_TAG|som-mx8qx_mcuxpresso-2.5.2_v10}} <!-- | ||
Line 2,709: | Line 3,097: | ||
-->{{#vardefine:NXP_REFERENCE_KIT|IMX8QXP-MEK}}<!-- | -->{{#vardefine:NXP_REFERENCE_KIT|IMX8QXP-MEK}}<!-- | ||
-->{{#vardefine:SCFW_SOC|mx8qx_b0}} <!-- | -->{{#vardefine:SCFW_SOC|mx8qx_b0}} <!-- | ||
-->{{#vardefine:SCFW_PATCH_URL| | -->{{#vardefine:SCFW_PATCH_URL|{{VAR_FILES_DOMAIN_URL}}/VAR-SOM-MX8X/Software/SCFW}} <!-- | ||
-->{{#vardefine:SCFW_M4_PATCH|0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff}} <!-- | -->{{#vardefine:SCFW_M4_PATCH|0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff}} <!-- | ||
-->{{#vardefine:IMX_MKIMAGE_SOC|iMX8QX}} <!-- | -->{{#vardefine:IMX_MKIMAGE_SOC|iMX8QX}} <!-- | ||
Line 2,773: | Line 3,161: | ||
-->{{#vardefine:NXP_REFERENCE_KIT|IMX8QXP-MEK}}<!-- | -->{{#vardefine:NXP_REFERENCE_KIT|IMX8QXP-MEK}}<!-- | ||
-->{{#vardefine:SCFW_SOC|mx8qx_b0}} <!-- | -->{{#vardefine:SCFW_SOC|mx8qx_b0}} <!-- | ||
-->{{#vardefine:SCFW_PATCH_URL| | -->{{#vardefine:SCFW_PATCH_URL|{{VAR_FILES_DOMAIN_URL}}/VAR-SOM-MX8X/Software/SCFW}} <!-- | ||
-->{{#vardefine:SCFW_M4_PATCH|0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff}} <!-- | -->{{#vardefine:SCFW_M4_PATCH|0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff}} <!-- | ||
-->{{#vardefine:IMX_MKIMAGE_SOC|iMX8QX}} <!-- | -->{{#vardefine:IMX_MKIMAGE_SOC|iMX8QX}} <!-- | ||
Line 3,431: | Line 3,819: | ||
*DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | *DTBS_SECTION = '''{{#var:DTBS_SECTION}}''' | ||
*MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | *MEMORY_TYPES_SECTION = '''{{#var:MEMORY_TYPES_SECTION}}''' | ||
*JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | *JTAG_SECTION = '''{{#var:JTAG_SECTION}}''' | ||
*NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | *NXP_USER_GUIDE = '''{{#var:NXP_USER_GUIDE}}''' | ||
*NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | *NXP_REFERENCE_KIT = '''{{#var:NXP_REFERENCE_KIT}}''' | ||
*SCFW_SOC = = '''{{#var:SCFW_SOC}} | *SCFW_SOC = = '''{{#var:SCFW_SOC}} | ||
*SCFW_DEFINES_URL = = '''{{#var:SCFW_DEFINES_URL}} | *SCFW_DEFINES_URL = = '''{{#var:SCFW_DEFINES_URL}} | ||
*IMX_MKIMAGE_SOC = = '''{{#var:IMX_MKIMAGE_SOC}} | *IMX_MKIMAGE_SOC = = '''{{#var:IMX_MKIMAGE_SOC}} | ||
*SDK_GIT_TAG = '''{{#var:SDK_GIT_TAG}} | *SDK_GIT_TAG = '''{{#var:SDK_GIT_TAG}} | ||
*RELEASE_DATE = '''{{#var:RELEASE_DATE}} | *RELEASE_DATE = '''{{#var:RELEASE_DATE}} | ||
*SUPPORTED_REV_SOM = '''{{#var:SUPPORTED_REV_SOM}} | *SUPPORTED_REV_SOM = '''{{#var:SUPPORTED_REV_SOM}} | ||
*SUPPORTED_REV_CARRIER = '''{{#var:SUPPORTED_REV_CARRIER}} | *SUPPORTED_REV_CARRIER = '''{{#var:SUPPORTED_REV_CARRIER}} | ||
*YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}} | *YOCTO_RELEASE_TAG = '''{{#var:YOCTO_RELEASE_TAG}} | ||
<section begin=MCUXPRESSO_GLOBALS/> | <section begin=MCUXPRESSO_GLOBALS/> | ||
<!-- | <!-- | ||
Set variables for all releases | Set variables for all releases | ||
Cortex M4 or M7: | Cortex M4 or M7: | ||
--> {{#vardefine:CORTEX_M_TYPE | <!-- | --> {{#vardefine:CORTEX_M_TYPE | <!-- | ||
--> {{#switch:{{#var:HARDWARE_NAME}} | <!-- | --> {{#switch:{{#var:HARDWARE_NAME}} | <!-- | ||
--> VAR-SOM-MX8M-NANO = m7 | <!-- | --> VAR-SOM-MX8M-NANO = m7 | <!-- | ||
--> DART-MX8M-PLUS = m7 | <!-- | --> DART-MX8M-PLUS = m7 | <!-- | ||
--> m4 <!-- | --> VAR-SOM-MX93 = m33 | <!-- | ||
--> }} <!-- | --> m4 <!-- | ||
--> }} <!-- | --> }} <!-- | ||
--> {{#vardefine:CORTEX_M_TYPE_UC | <span style="text-transform: uppercase;">{{#var:CORTEX_M_TYPE}}</span>}}<!-- | --> }} <!-- | ||
--> {{#vardefine:CORTEX_M_TYPE_UC | <span style="text-transform: uppercase;">{{#var:CORTEX_M_TYPE}}</span>}}<!-- | |||
SDK SOC_INCLUDE_PATH | |||
--> {{#vardefine:SDK_DEVICE|<!-- | |||
--> {{#switch:{{#var:HARDWARE_NAME}} | <!-- | |||
--> VAR-SOM-MX8M-NANO = MIMX8MN6 | <!-- | |||
--> DART-MX8M-MINI = MIMX8MM6 | <!-- | |||
--> DART-MX8M-PLUS = MIMX8ML8 | <!-- | |||
--> DART-MX8M = MIMX8MQ6 | <!-- | |||
--> VAR-SOM-MX8 = MIMX8QM6 | <!-- | |||
--> VAR-SOM-MX8X = MIMX8QX6 | <!-- | |||
--> }} <!-- | |||
--> }} <!-- | |||
--> {{#vardefine:SOC_INCLUDE_PATH|{{#var:SDK_PATH}}/freertos-variscite/devices/{{#var:SDK_DEVICE}}}}<!-- | |||
--><section end=MCUXPRESSO_GLOBALS/> | |||
{{#var:SOC_INCLUDE_PATH}} | |||
= VAR-SOM-MX93= | |||
== Sections == | |||
=== Available dtbs - VAR-SOM-MX93 === | |||
<section begin=VAR-SOM-MX93_DTBS_SECTION/><!-- | |||
-->To allow the Cortex-M33 to access shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, by selecting the right version with the symbolic link in the /boot folder of the booting media.<br> | |||
These device trees contain '''m33''' label in their name. | |||
The below table lists an example dtb blob file name for VAR-SOM-MX93 (on the Symphony Board) with support for the '''M33''' for each kernel version / Yocto release: | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | File Name<br/> | |||
! scope="col" | Description<br/> | |||
|- | |||
| style="padding: 5px;"| imx93-var-som-symphony-'''m33'''.dtb | |||
| style="padding: 5px;"| VAR-SOM-MX93 (Rev 2.x+) device tree blob for kernel = 6.1.1 (Yocto Langdale) on Symphony-Board 1.4a and above. | |||
|- | |||
| style="padding: 5px;"| imx93-var-som-1.x-symphony-'''m33'''.dtb | |||
| style="padding: 5px;"| VAR-SOM-MX93 (Rev 1.x) device tree blob for kernel = 6.1.1 (Yocto Langdale) on Symphony-Board 1.4a and above. | |||
|- | |||
|} | |||
This device tree disables some of the base device tree nodes in order to avoid conflicts between the Cortex-A55 processors and Cortex-M33. | |||
For the full list of device tree blob files, refer to the "Build Results" section in the appropriate wiki page for the specific Yocto/Debian release you are using.<!-- | |||
--><section end=VAR-SOM-MX93_DTBS_SECTION/> | |||
=== Available dtbs - VAR-SOM-MX93/DART-MX93 === | |||
<section begin=VAR-SOM-MX93_DART-MX93_DTBS_SECTION/><!-- | |||
-->To allow the Cortex-M33 to access shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, by selecting the right version with the symbolic link in the /boot folder of the booting media.<br> | |||
These device trees contain '''m33''' label in their name. | |||
The below table lists dtb blob file names for VAR-SOM-MX93 (on the Symphony Board) and DART-MX93 (on DT8MCustomBoard) with support for the '''M33''': | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | File Name<br/> | |||
! scope="col" | Description<br/> | |||
|- | |||
| style="padding: 5px;"| imx93-var-som-symphony-'''m33'''.dtb | |||
| style="padding: 5px;"| VAR-SOM-MX93 (Rev 2.x+) device tree blob for Symphony-Board 1.4a and above. | |||
|- | |||
| style="padding: 5px;"| imx93-var-dart-dt8mcustomboard-'''m33'''.dtb | |||
| style="padding: 5px;"| DART-MX93 device tree blob for DT8MCustomBoard 2.0 and above. | |||
|- | |||
|} | |||
These device trees disable some of the base device tree nodes in order to avoid conflicts between the Cortex-A55 processors and Cortex-M33. | |||
For the full list of device tree blob files, refer to the "Build Results" section in the appropriate wiki page for the specific Yocto/Debian release you are using.<!-- | |||
--><section end=VAR-SOM-MX93_DART-MX93_DTBS_SECTION/> | |||
=== Default M33 pins - VAR-SOM-MX93 === | |||
<section begin=VAR-SOM-MX93_PINS_SECTION/><!-- | |||
-->Default M33 pins used by the demos are: | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | Function | |||
! scope="col" | SoC balls | |||
! scope="col" | {{#var:HARDWARE_NAME}} Pins | |||
! scope="col" | Symphony Pins | |||
! scope="col" | Notes | |||
|- | |||
| UART7 RX/TX | |||
| M21 / M20 | |||
| J1.175 / J1.124 | |||
| J18.5 / J18.3 | |||
| | |||
|- | |||
| TPM6-CH3 - PWM Output or Input Capture | |||
| W21 | |||
| J1.69 | |||
| J18.2 | |||
| | |||
|- | |||
| CAN1 RX/TX | |||
| J17 / G17 | |||
| J1.46 / J1.44 | |||
| J16.18 / J16.20, CANL / CANH levels (CAN transceiver mounted!) | |||
| If enabled, CAN devices will no longer visible from Linux | |||
|- | |||
| LPSPI6 CS0/SCK/SDI/SDO | |||
| J21 / K21 / J20 / K20 | |||
| J1.39 / J1.43 / J1.41 / J1.45 | |||
| J16.4 / J16.2 / J16.6 / J16.8 | |||
| If enabled, SPI6 devices will no longer be visible from Linux | |||
|- | |||
| LPI2C7 SCL/SDA | |||
| L21 / L20 | |||
| J1.174 / J1.176 | |||
| J16.10 / J16.12 | |||
| If enabled, I2C7 devices will no longer be visible from Linux | |||
|- | |||
| GPIO GPIO4.28 | |||
| U4 | |||
| J1.75 | |||
| J17.6 | |||
| GPIO pin is 1.8V IO level! | |||
|- | |||
|}<!-- | |||
--><section end=VAR-SOM-MX93_PINS_SECTION/> | |||
=== Default M33 pins - VAR-SOM-MX93/DART-MX93 === | |||
<section begin=VAR-SOM-MX93_DART-MX93_PINS_SECTION/><!-- | |||
-->Default M33 pins used by the demos are: | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | Function | |||
! scope="col" | SoC balls | |||
! scope="col" | DART-MX93 Pins | |||
! scope="col" | DT8MCB Pins | |||
! scope="col" | VAR-SOM-MX93 Pins | |||
! scope="col" | Symphony Pins | |||
! scope="col" | Notes | |||
|- | |||
| UART7 RX/TX | |||
| M21 / M20 | |||
| J2.87 / J2.89 | |||
| J12.11 / J12.13 | |||
| J1.175 / J1.124 | |||
| J18.5 / J18.3 | |||
| | |||
|- | |||
| TPM6-CH3 - PWM Output or Input Capture | |||
| W21 | |||
| J2.54 | |||
| J13.17 | |||
| J1.69 | |||
| J18.2 | |||
| | |||
|- | |||
| CAN1 RX/TX | |||
| J17 / G17 | |||
| J2.56 / J2.50 | |||
| J16.9 / J16.7 on DT8MCB rev 2.x, CANL/CANH levels (CAN transceiver mounted!) | |||
| J1.46 / J1.44 | |||
| J16.18 / J16.20, CANL / CANH levels (CAN transceiver mounted!) | |||
| If enabled, CAN devices will no longer visible from Linux | |||
|- | |||
| LPSPI5 CS0/SCK/SDI/SDO | |||
| R18 / T21 / R17 / T20 | |||
| J2.40 / J2.44 / J2.34 / J2.36 | |||
| J13.8 / J13.18 / J13.10 / J13.12 | |||
| | |||
| | |||
| If enabled, SPI5 devices will no longer be visible from Linux | |||
|- | |||
| LPSPI6 CS0/SCK/SDI/SDO | |||
| J21 / K21 / J20 / K20 | |||
| | |||
| | |||
| J1.39 / J1.43 / J1.41 / J1.45 | |||
| J16.4 / J16.2 / J16.6 / J16.8 | |||
| If enabled, SPI6 devices will no longer be visible from Linux | |||
|- | |||
| LPI2C5 SCL/SDA | |||
| U20 / U18 | |||
| J3.46 / J3.42 | |||
| J12.18 / J12.20 | |||
| | |||
| | |||
| If enabled, I2C5 devices will no longer be visible from Linux | |||
|- | |||
| LPI2C7 SCL/SDA | |||
| L21 / L20 | |||
| | |||
| | |||
| J1.174 / J1.176 | |||
| J16.10 / J16.12 | |||
| If enabled, I2C7 devices will no longer be visible from Linux | |||
|- | |||
| GPIO GPIO4.01 | |||
| AA10 | |||
| J1.11 | |||
| J12.14 | |||
| | |||
| | |||
| | |||
|- | |||
| GPIO GPIO4.28 | |||
| U4 | |||
| | |||
| | |||
| J1.75 | |||
| J17.6 | |||
| GPIO pin is 1.8V IO level! | |||
|- | |||
|}<!-- | |||
--><section end=VAR-SOM-MX93_DART-MX93_PINS_SECTION/> | |||
=== Available Demos === | |||
<section begin=VAR-SOM-MX93_DEMOS_SECTION/><!-- | |||
-->{{#switch: {{#var:RELEASE_NAME}} | |||
| mcuxpresso-2.15.0-mx93-v1.1 =<!-- | |||
-->* demo_apps/ethosu_apps_rpmsg | |||
* demo_apps/hello_world | |||
* driver_examples/canfd/interrupt_transfer | |||
* driver_examples/canfd/loopback_transfer | |||
* driver_examples/canfd/loopback | |||
* driver_examples/canfd/ping_pong_buffer_transfer | |||
* driver_examples/edma4/channel_link* | |||
* driver_examples/edma4/interleave_transfer | |||
* driver_examples/edma4/memory_to_memory | |||
* driver_examples/edma4/memory_to_memory_transfer | |||
* driver_examples/edma4/memset | |||
* driver_examples/edma4/wrap_transfer | |||
* driver_examples/flexcan/efifo_interrupt_transfer | |||
* driver_examples/flexcan/interrupt_transfer | |||
* driver_examples/flexcan/loopback_edma_transfer | |||
* driver_examples/flexcan/loopback_transfer | |||
* driver_examples/flexcan/loopback | |||
* driver_examples/flexcan/ping_pong_buffer_transfer | |||
* driver_examples/lpi2c/interrupt_b2b_transfer/master | |||
* driver_examples/lpi2c/interrupt_b2b_transfer/slave | |||
* driver_examples/lpi2c/polling_b2b/master | |||
* driver_examples/lpi2c/polling_b2b/slave | |||
* driver_examples/lpit/chained_channel | |||
* driver_examples/lpit/single_channel | |||
* driver_examples/lpspi/interrupt_b2b/master | |||
* driver_examples/lpspi/interrupt_b2b/slave | |||
* driver_examples/lpspi/interrupt_b2b_transfer/master | |||
* driver_examples/lpspi/interrupt_b2b_transfer/slave | |||
* driver_examples/lpspi/polling_b2b_transfer/master | |||
* driver_examples/lpspi/polling_b2b_transfer/slave | |||
* driver_examples/edma/memory_to_memory | |||
* driver_examples/edma/scatter_gather | |||
* driver_examples/rgpio/led_output | |||
* driver_examples/lptmr | |||
* driver_examples/lpuart/interrupt_rb_transfer | |||
* driver_examples/lpuart/interrupt_transfer | |||
* driver_examples/lpuart/interrupt | |||
* driver_examples/lpuart/polling | |||
* driver_examples/tstmr | |||
* multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote | |||
* multicore_examples/rpmsg_lite_str_echo_rtos | |||
* freertos_examples/freertos_event | |||
* freertos_examples/freertos_generic | |||
* freertos_examples/freertos_hello | |||
* freertos_examples/freertos_mutex | |||
* freertos_examples/freertos_queue | |||
* freertos_examples/freertos_sem | |||
* freertos_examples/freertos_swtimer | |||
<br> | |||
<nowiki>*</nowiki>Not supported on the DART-MX93 | |||
<br> | |||
Additional demos may be provided on this platform in a future release.<!-- | |||
--> | mcuxpresso-2.15.0-mx93-v1.0 =<!-- | |||
-->* demo_apps/ethosu_apps_rpmsg | |||
* demo_apps/hello_world | |||
* driver_examples/canfd/interrupt_transfer | |||
* driver_examples/canfd/loopback_transfer | |||
* driver_examples/canfd/loopback | |||
* driver_examples/canfd/ping_pong_buffer_transfer | |||
* driver_examples/edma4/channel_link* | |||
* driver_examples/edma4/interleave_transfer | |||
* driver_examples/edma4/memory_to_memory | |||
* driver_examples/edma4/memory_to_memory_transfer | |||
* driver_examples/edma4/memset | |||
* driver_examples/edma4/wrap_transfer | |||
* driver_examples/flexcan/efifo_interrupt_transfer | |||
* driver_examples/flexcan/interrupt_transfer | |||
* driver_examples/flexcan/loopback_edma_transfer | |||
* driver_examples/flexcan/loopback_transfer | |||
* driver_examples/flexcan/loopback | |||
* driver_examples/flexcan/ping_pong_buffer_transfer | |||
* driver_examples/lpi2c/interrupt_b2b_transfer/master | |||
* driver_examples/lpi2c/interrupt_b2b_transfer/slave | |||
* driver_examples/lpi2c/polling_b2b/master | |||
* driver_examples/lpi2c/polling_b2b/slave | |||
* driver_examples/lpit/chained_channel | |||
* driver_examples/lpit/single_channel | |||
* driver_examples/lpspi/interrupt_b2b/master | |||
* driver_examples/lpspi/interrupt_b2b/slave | |||
* driver_examples/lpspi/interrupt_b2b_transfer/master | |||
* driver_examples/lpspi/interrupt_b2b_transfer/slave | |||
* driver_examples/lpspi/polling_b2b_transfer/master | |||
* driver_examples/lpspi/polling_b2b_transfer/slave | |||
* driver_examples/edma/memory_to_memory | |||
* driver_examples/edma/scatter_gather | |||
* driver_examples/rgpio/led_output | |||
* driver_examples/lptmr | |||
* driver_examples/lpuart/interrupt_rb_transfer | |||
* driver_examples/lpuart/interrupt_transfer | |||
* driver_examples/lpuart/interrupt | |||
* driver_examples/lpuart/polling | |||
* driver_examples/tstmr | |||
* multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote | |||
* multicore_examples/rpmsg_lite_str_echo_rtos | |||
* freertos_examples/freertos_event | |||
* freertos_examples/freertos_generic | |||
* freertos_examples/freertos_hello | |||
* freertos_examples/freertos_mutex | |||
* freertos_examples/freertos_queue | |||
* freertos_examples/freertos_sem | |||
* freertos_examples/freertos_swtimer | |||
<br> | |||
Additional demos may be provided on this platform in a future release.<!-- | |||
--> | mcuxpresso-2.13.1-mx93-v1.0 =<!-- | |||
-->* demo_apps/ethosu_apps_rpmsg | |||
* demo_apps/hello_world | |||
* driver_examples/canfd/loopback | |||
* driver_examples/canfd/loopback_transfer | |||
* driver_examples/edma/memory_to_memory | |||
* driver_examples/edma/scatter_gather | |||
* driver_examples/edma4/channel_link | |||
* driver_examples/edma4/interleave_transfer | |||
* driver_examples/edma4/memory_to_memory | |||
* driver_examples/edma4/memory_to_memory_transfer | |||
* driver_examples/edma4/memset | |||
* driver_examples/edma4/ping_pong_transfer | |||
* driver_examples/edma4/scatter_gather | |||
* driver_examples/edma4/wrap_transfer | |||
* driver_examples/flexcan/loopback | |||
* driver_examples/flexcan/loopback_edma_transfer | |||
* driver_examples/flexcan/loopback_transfer | |||
* driver_examples/lpit/chained_channel | |||
* driver_examples/lpit/single_channel | |||
* driver_examples/lptmr | |||
* driver_examples/lpuart/interrupt | |||
* driver_examples/lpuart/interrupt_rb_transfer | |||
* driver_examples/lpuart/interrupt_transfer | |||
* driver_examples/lpuart/polling | |||
* driver_examples/tpm/input_capture | |||
* driver_examples/tpm/output_compare | |||
* driver_examples/tpm/simple_pwm | |||
* driver_examples/tpm/timer | |||
* driver_examples/tstmr | |||
* multicore_examples/rpmsg_lite_pingpong_rtos | |||
* multicore_examples/rpmsg_lite_str_echo_rtos | |||
* rtos_examples/freertos_event | |||
* rtos_examples/freertos_generic | |||
* rtos_examples/freertos_hello | |||
* rtos_examples/freertos_mutex | |||
* rtos_examples/freertos_queue | |||
* rtos_examples/freertos_sem | |||
* rtos_examples/freertos_swtimer | |||
<br> | |||
Additional demos may be provided on this platform in a future release.<!-- | |||
--> | #default = <!-- | |||
-->* demo_apps/ethosu_apps_rpmsg/ethosu_apps_rpmsg | |||
* demo_apps/hello_world/hello_world | |||
* driver_examples/canfd/efifo_interrupt_transfer/canfd_efifo_interrupt_transfer | |||
* driver_examples/canfd/interrupt_transfer/canfd_interrupt_transfer | |||
* driver_examples/canfd/loopback_transfer/canfd_loopback_transfer | |||
* driver_examples/canfd/loopback/canfd_loopback | |||
* driver_examples/canfd/ping_pong_buffer_transfer/canfd_ping_pong_buffer_transfer | |||
* driver_examples/edma4/channel_link/edma4_channel_link | |||
* driver_examples/edma4/interleave_transfer/edma4_interleave_transfer | |||
* driver_examples/edma4/memory_to_memory/edma4_memory_to_memory | |||
* driver_examples/edma4/memory_to_memory_transfer/edma4_memory_to_memory_transfer | |||
* driver_examples/edma4/memset/edma4_memset | |||
* driver_examples/edma4/ping_pong_transfer/edma4_ping_pong_transfer | |||
* driver_examples/edma4/scatter_gather/edma4_scatter_gather | |||
* driver_examples/edma4/wrap_transfer/edma4_wrap_transfer | |||
* driver_examples/flexcan/efifo_interrupt_transfer/flexcan_efifo_interrupt_transfer | |||
* driver_examples/flexcan/interrupt_transfer/flexcan_interrupt_transfer | |||
* driver_examples/flexcan/loopback_edma_transfer/flexcan_loopback_edma_transfer | |||
* driver_examples/flexcan/loopback_transfer/flexcan_loopback_transfer | |||
* driver_examples/flexcan/loopback/flexcan_loopback | |||
* driver_examples/flexcan/ping_pong_buffer_transfer/flexcan_ping_pong_buffer_transfer | |||
* driver_examples/lpi2c/interrupt_b2b_transfer/master/lpi2c_interrupt_b2b_transfer_master | |||
* driver_examples/lpi2c/interrupt_b2b_transfer/slave/lpi2c_interrupt_b2b_transfer_slave | |||
* driver_examples/lpi2c/polling_b2b/master/lpi2c_polling_b2b_master | |||
* driver_examples/lpi2c/polling_b2b/slave/lpi2c_polling_b2b_slave | |||
* driver_examples/lpit/chained_channel/lpit_chained_channel | |||
* driver_examples/lpit/single_channel/lpit_single_channel | |||
* driver_examples/lpspi/interrupt_b2b/master/lpspi_interrupt_b2b_master | |||
* driver_examples/lpspi/interrupt_b2b/slave/lpspi_interrupt_b2b_slave | |||
* driver_examples/lpspi/interrupt_b2b_transfer/master/lpspi_interrupt_b2b_transfer_master | |||
* driver_examples/lpspi/interrupt_b2b_transfer/slave/lpspi_interrupt_b2b_transfer_slave | |||
* driver_examples/lpspi/polling_b2b/master/lpspi_polling_b2b_master | |||
* driver_examples/lpspi/polling_b2b_transfer/slave/lpspi_polling_b2b_transfer_slave | |||
* driver_examples/edma/memory_to_memory/dma3_memory_to_memory | |||
* driver_examples/edma/scatter_gather/dma3_scatter_gather | |||
* driver_examples/flexcan/loopback_transfer/flexcan_loopback_transfer | |||
* driver_examples/flexcan/loopback/flexcan_loopback | |||
* driver_examples/flexcan/ping_pong_buffer_transfer/flexcan_ping_pong_buffer_transfer | |||
* driver_examples/flexcan/efifo_interrupt_transfer/flexcan_efifo_interrupt_transfer | |||
* driver_examples/flexcan/interrupt_transfer/flexcan_interrupt_transfer | |||
* driver_examples/rgpio/led_output/rgpio_led_output | |||
* driver_examples/lpi2c/polling_b2b/master/lpi2c_polling_b2b_master | |||
* driver_examples/lpi2c/polling_b2b/slave/lpi2c_polling_b2b_slave | |||
* driver_examples/lptmr/lptmr | |||
* driver_examples/lpuart/interrupt_rb_transfer/lpuart_interrupt_rb_transfer | |||
* driver_examples/lpuart/interrupt_transfer/lpuart_interrupt_transfer | |||
* driver_examples/lpuart/interrupt/lpuart_interrupt | |||
* driver_examples/lpuart/polling/lpuart_polling | |||
* driver_examples/tstmr/tstmr | |||
* multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote/rpmsg_lite_pingpong_rtos_linux_remote | |||
* multicore_examples/rpmsg_lite_str_echo_rtos/rpmsg_lite_str_echo_rtos_imxcm33 | |||
* rtos_examples/freertos_event/freertos_event | |||
* rtos_examples/freertos_generic/freertos_generic | |||
* rtos_examples/freertos_hello/freertos_hello | |||
* rtos_examples/freertos_lpi2c_b2b/master/freertos_lpi2c_b2b_master | |||
* rtos_examples/freertos_lpi2c_b2b/slave/freertos_lpi2c_b2b_slave | |||
* rtos_examples/freertos_lpspi_b2b/master/freertos_lpspi_b2b_master | |||
* rtos_examples/freertos_lpspi_b2b/slave/freertos_lpspi_b2b_slave | |||
* rtos_examples/freertos_mutex/freertos_mutex | |||
* rtos_examples/freertos_queue/freertos_queue | |||
* rtos_examples/freertos_sem/freertos_sem | |||
* rtos_examples/freertos_swtimer/freertos_swtimer | |||
<br> | |||
Additional demos may be provided on this platform in a future release. | |||
<br><br> | |||
{{note|The Wi-Fi/Bluetooth module interfaces have been disabled in the M33 device tree to not conflict with certain demos, however, if the module is present on your SoM, you should also disable the Wi-Fi service from running in Linux via "systemctl disable variscite-wifi"}}<!-- | |||
-->}} | |||
<section end=VAR-SOM-MX93_DEMOS_SECTION/> | |||
==Building Using Yocto== | |||
<section begin=VAR-SOM-MX93_BUILDING_USING_YOCTO_SECTION/><!-- | |||
--> | |||
In Yocto Dunfell and newer, Variscite provides a Yocto recipe for building and installing firmware into the Yocto image. Note, the examples below apply to the original release of this recipe in Dunfell and thus some of the syntax (such as the overrides) may need to be updated for newer versions. | |||
https://github.com/varigit/meta-variscite-fslc/tree/dunfell/recipes-bsp/freertos-variscite | |||
This recipe installs the following firmware files: | |||
{{!}}- | |||
{{!}} /boot/cm_<demo name>.bin.debug {{!}}{{!}} TCM {{!}}{{!}} U-Boot | |||
{{!}}- | |||
{{!}} /lib/firmware/cm_<demo name>.elf.debug {{!}}{{!}} TCM {{!}}{{!}} Linux Remoteproc Framework | |||
If you have modified freertos-variscite in your own Git repository and kept the same directory structure, you can easily build your custom firmware by creating a bbappend file: | |||
$ mkdir -p <your-layer>/recipes-bsp/freertos-variscite | |||
$ nano <your-layer>/recipes-bsp/freertos-variscite/freertos-variscite_2.13.x.bbappend | |||
Append '''SRC_URI''' and '''SRCREV''' to use your freertos-variscite Git repository | |||
SRC_URI:remove = "git://github.com/varigit/freertos-variscite.git;protocol=git;branch=${MCUXPRESSO_BRANCH};" | |||
SRC_URI:append = " <your Git repository>" | |||
SRCREV = "<your Git commit id>" | |||
Append '''CM_DEMOS''' to build your firmware. For example, to build rtos_examples/freertos_hello: | |||
CM_DEMOS:append = "rtos_examples/freertos_hello" | |||
Rebuild fsl-image-gui: | |||
$ bitbake -c cleansstate freertos-variscite && bitbake fsl-image-gui | |||
The firmware binary files should now be installed to /boot/ and elf files to /lib/firmware/ | |||
<section end=VAR-SOM-MX93_BUILDING_USING_YOCTO_SECTION/> | |||
=== Running a demo === | |||
<section begin=VAR-SOM-MX93_RUNNING_DEMO_SECTION/><!-- | |||
--> | |||
== Running a demo from U-Boot == | |||
To assist in loading M33 firmware from U-Boot prior to Linux boot, Variscite has created a dedicated set of U-Boot environment commands. | |||
{{note|To allow Cortex-M accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded.}} | |||
To enable Cortex-M U-Boot auto-loading: | |||
=> setenv use_m33 yes; saveenv | |||
To disable Cortex-M U-Boot auto-loading: | |||
=> setenv use_m33 no; saveenv | |||
Note that the Cortex A55s and M33 have a different memory addressing "view" that is documented in the reference manual. Additionally, the bootaux command for the M33 uses secure aliases from the M33's point of view. Thus, two variables must be set properly in order to set the loading address (defaults used in the example below): | |||
=> setenv m33_addr 0x201E0000 | |||
=> setenv m33_addr_auxview 0x1FFE0000 | |||
=> saveenv | |||
To set the name of the Cortex-M binary | |||
=> setenv m33_bin cm_hello_world.bin; saveenv | |||
{{note|The .bin file is expected to exist in the directory /boot of the booting media.}} | |||
<br> | |||
After enabling as above, the U-Boot '''boot''' command will handle loading the Cortex-M firmware when the system begins the boot process. For testing, it is possible to invoke the Cortex-M33 boot process manually: | |||
=> run loadm33bin && run runm33bin | |||
After booting in Linux, the M33 will be listed as in the "attached" state by remoteproc: | |||
# cat /sys/class/remoteproc/remoteproc0/state | |||
attached | |||
Additional details and step by step procedure to run each of the demos is available [{{#var:SDK_GIT_URL}}/blob/{{#var:SDK_GIT_BRANCH}}/{{#var:DOCS_FOLDER}}/{{urlencode:{{#var:NXP_USER_GUIDE}}|PATH}} online] or in the following document: | |||
{{#var:SDK_PATH}}/freertos-variscite/{{#var:DOCS_FOLDER}}/{{#var:NXP_USER_GUIDE}} | |||
{{note|This process can be simplified using /etc/remoteproc/variscite-rproc-u-boot in Linux<br> | |||
Please refer to the Yocto Scripts section below for more information}} | |||
== Running a demo from Linux == | |||
The Linux remoteproc framework can be used to load the Cortex-M33 firmware from Linux userspace. | |||
{{note|The U-Boot M33 auto-loading must not be currently enabled in order to allow for remoteproc control and loading of the M33.}} | |||
Increase kernel loglevel while debugging: | |||
# sysctl kernel.printk=7; | |||
If the state is 'running', stop the Cortex-M33 | |||
# echo stop > /sys/class/remoteproc/remoteproc0/state | |||
Load new firmware | |||
# echo cm_hello_world.elf > /sys/class/remoteproc/remoteproc0/firmware | |||
{{note| The .elf file is expected to exist in the /lib/firmware directory}} | |||
Run the new firmware | |||
# echo start > /sys/class/remoteproc/remoteproc0/state | |||
{{note|This process can be simplified using /etc/remoteproc/variscite-rproc-linux in Linux<br> | |||
Please refer to the Yocto Scripts section below for more information}} | |||
{{note|By default, Linux disables unused clocks. Certain M33 examples may use peripherals which are not enabled in Linux. Depending on the clock source, Linux may disable the clock by default, resulting in the example/peripheral not functioning. Therefore, when running M33 examples, it is recommended to override this. The easiest way to achieve this is to append the bootarg "clk_ignore_unused." }} | |||
== Running a Demo using Yocto Scripts == | |||
In Yocto, Variscite provides scripts to simplify loading firmware via U-Boot or Linux: | |||
{| class="wikitable" | |||
|- | |||
! Script | |||
! Description | |||
|- | |||
| <span id="yocto_scripts_u_boot">/etc/remoteproc/variscite-rproc-u-boot</span> || Configure U-Boot to load firmware on boot | |||
|- | |||
| <span id="yocto_scripts_rproc">/etc/remoteproc/variscite-rproc-linux</span> || Load and run firmware using Linux remoteproc framework | |||
|} | |||
'''Examples''' | |||
variscite-rproc-u-boot example on imx93-var-som: | |||
root@imx93-var-som:~# /etc/remoteproc/variscite-rproc-u-boot -f /boot/cm_hello_world.bin.release | |||
Configuring for TCM memory | |||
+ fw_setenv m33_addr 0x201E0000 | |||
Cannot read environment, using default | |||
+ fw_setenv fdt_file imx93-var-som-symphony-m33.dtb | |||
+ fw_setenv use_m33 yes | |||
+ fw_setenv m33_bin cm_hello_world.bin.release | |||
+ fw_setenv kernelargs ' clk_ignore_unused' | |||
+ fw_setenv m33_addr_auxview 0x1FFE0000 | |||
Finished: Please reboot, the m33 firmware will run during U-Boot | |||
variscite-rproc-linux example on imx93-var-som: | |||
root@imx93-var-som:~# /etc/remoteproc/variscite-rproc-linux -f /lib/firmware/cm_hello_world.elf.release | |||
Cortex-M: Loading cm_hello_world.elf.release | |||
Cortex-M: Starting | |||
[ 974.434796] remoteproc remoteproc0: powering up imx-rproc | |||
[ 974.442420] remoteproc remoteproc0: Booting fw image cm_hello_world.elf.release, size 99776 | |||
[ 974.451172] remoteproc remoteproc0: header-less resource table | |||
<section end=VAR-SOM-MX93_RUNNING_DEMO_SECTION/> | |||
=== NXP Memory types === | |||
<section begin=VAR-SOM-MX93_MEMORY-TYPES_NXP_SECTION/><!-- | |||
-->The SDK currently allows linking only out of TCM. | |||
Below is a short summary of memory areas used by Cortex-M33 as described in related linker file: | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | Memory Type | |||
! scope="col" | M33 Memory Area | |||
! scope="col" | A55 Memory Area | |||
! scope="col" | Memory Length | |||
! scope="col" | Linker File | |||
|- | |||
| TCM | |||
| 0x0FFE0000 - 0x0FFFFFFF (code)<br>0x20000000 – 0x2001FFFF (data) | |||
| 0x201E0000 – 0x201FFFFF (code)<br>0x20200000 – 0x2021FFFF (data) | |||
| 128kB (Code TCM) + 128kB (System TCM) | |||
| MIMX9352_cm33_ram.ld | |||
|- | |||
|} | |||
All linker files are located in the '''armgcc''' folder of each demo. Please consult the linker file for the actual memory used by each demo. | |||
After launching the build_all.sh command the following folder will be created in the armgcc folder | |||
* '''debug''': containing TCM binaries compiled in debug mode (not stripped: symbols available) | |||
* '''release''': containing TCM binaries compiled in release mode (stripped: no symbols available) | |||
<!-- | |||
--><section end=VAR-SOM-MX93_MEMORY-TYPES_NXP_SECTION/> | |||
=== JTAG === | |||
<section begin=VAR-SOM-MX93_JTAG_SECTION/><!-- | |||
-->The JTAG interface is not exposed directly on the VAR-SOM-MX93 but the associated signals are exposed via the J1 SOM connector, which are shown in the table below:<br> | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | Signal | |||
! scope="col" | SoC balls | |||
! scope="col" | VAR-SOM-MX93 Pins | |||
! scope="col" | Symphony Pins | |||
! scope="col" | Segger Adapter Pins | |||
|- | |||
| TCLK_SWCLK | |||
| Y1 | |||
| J1.51 | |||
| J18.8 | |||
| 9 | |||
|- | |||
| TDI | |||
| W1 | |||
| J1.53 | |||
| J18.6 | |||
| 5 | |||
|- | |||
| TDO_TRACESWO | |||
| Y2 | |||
| J1.52 | |||
| J18.4 | |||
| 13 | |||
|- | |||
| TMS_SWDIO | |||
| W2 | |||
| J1.50 | |||
| J18.10 | |||
| 7 | |||
|- | |||
| Vtref | |||
| | |||
| | |||
| J3.2 | |||
| 1 | |||
|- | |||
| GND | |||
| | |||
| | |||
| J3.20 | |||
| 4 | |||
|- | |||
|} | |||
{{note|These signals are shared with the Wi-Fi module if present, so usage will require disabling this interface and making any appropriate pin muxing adjustments.<br><br> | |||
Please refer to SoM datasheet for further details.}} | |||
<!-- | |||
--><section end=VAR-SOM-MX93_JTAG_SECTION/> | |||
<section begin=VAR-SOM-MX93_DART-MX93_JTAG_SECTION/><!-- | |||
-->The JTAG interface is not exposed directly on the VAR-SOM-MX93 / DART-MX93 but the associated signals are exposed via the J1 connector for the VAR-SOM-MX93 and via the J2 connector for the DART-MX93. They are shown in the table below:<br> | |||
{| class="wikitable" | |||
|- | |||
! scope="col" | Signal | |||
! scope="col" | SoC balls | |||
! scope="col" | VAR-SOM-MX93 Pins | |||
! scope="col" | Symphony Pins | |||
! scope="col" | DART-MX93 Pins | |||
! scope="col" | DT8MCB Pins | |||
! scope="col" | Segger Adapter Pins | |||
|- | |||
| TCLK_SWCLK | |||
| Y1 | |||
| J1.51 | |||
| J18.8 | |||
| J2.26 | |||
| J12.7 | |||
| 9 | |||
|- | |||
| TDI | |||
| W1 | |||
| J1.53 | |||
| J18.6 | |||
| J2.24 | |||
| J12.5 | |||
| 5 | |||
|- | |||
| TDO_TRACESWO | |||
| Y2 | |||
| J1.52 | |||
| J18.4 | |||
| J2.20 | |||
| J12.1 | |||
| 13 | |||
|- | |||
| TMS_SWDIO | |||
| W2 | |||
| J1.50 | |||
| J18.10 | |||
| J2.22 | |||
| J12.3 | |||
| 7 | |||
|- | |||
| Vtref | |||
| | |||
| | |||
| J3.2 | |||
| | |||
| J13.3 | |||
| 1 | |||
|- | |||
| GND | |||
| | |||
| | |||
| J3.20 | |||
| | |||
| J13.4 | |||
| 4 | |||
|- | |||
|} | |||
{{note|For both the DART-MX93 and VAR-SOM-MX93 "WBD" or "WBE" SoMs, the JTAG pins are configured as UART5 signals used by the Wi-Fi/Bluetooth module. To use JTAG, it is necessary to disable this interface and make the necessary pin muxing adjustments. The Cortex-M33 dedicated device trees, as mentioned in the Prerequisites section, already disable the Wi-Fi/Bluetooth module, allowing for JTAG use as described above.<br><br> | |||
Please refer to SoM datasheet for further details.}} | |||
<!-- | |||
--><section end=VAR-SOM-MX93_DART-MX93_JTAG_SECTION/> | |||
<noinclude>{{:MPC_VAR-SOM-MX93}}</noinclude><includeonly><!-- | |||
--><section begin=MCUXPRESSO_2.13.1_V1.0_VAR-SOM-MX93/><!-- | |||
-->{{#lst:MPC_VAR-SOM-MX93|MCUXPRESSO_2.13.1_V1.0_VAR-SOM-MX93}}<!-- | |||
--><section end=MCUXPRESSO_2.13.1_V1.0_VAR-SOM-MX93/><!-- | |||
--><section begin=MCUXPRESSO_2.13.1_V1.1_VAR-SOM-MX93/><!-- | |||
-->{{#lst:MPC_VAR-SOM-MX93|MCUXPRESSO_2.13.1_V1.0_VAR-SOM-MX93}}<!-- | |||
-->{{#lst:MPC_VAR-SOM-MX93|MCUXPRESSO_2.13.1_V1.1_VAR-SOM-MX93}}<!-- | |||
--><section end=MCUXPRESSO_2.13.1_V1.1_VAR-SOM-MX93/><!-- | |||
--><section begin=MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX93/><!-- | |||
-->{{#lst:MPC_VAR-SOM-MX93|MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX93}}<!-- | |||
--><section end=MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX93/><!-- | |||
--><section begin=MCUXPRESSO_2.15.0_V1.1_VAR-SOM-MX93/><!-- | |||
-->{{#lst:MPC_VAR-SOM-MX93|MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX93}}<!-- | |||
-->{{#lst:MPC_VAR-SOM-MX93|MCUXPRESSO_2.15.0_V1.1_VAR-SOM-MX93}}<!-- | |||
--><section end=MCUXPRESSO_2.15.0_V1.1_VAR-SOM-MX93/><!-- | |||
--> | |||
</includeonly> | |||
Latest revision as of 15:29, 1 November 2024
DART-MX8M
Sections
Available dtbs
To allow Cortex M4 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, by selecting the right version with the symbolic link in the /boot folder of the booting media.
These device trees contain m4 label in their name.
The below table lists an example dtb blob file name for DART-MX8M (on DT8MCustomBoard rev. 1.3 and higher) with support for M4 (and SD card and LVDS), for each kernel version / Yocto release:
File Name |
Description |
---|---|
imx8mq-var-dart-dt8mcustomboard-m4-sd-lvds.dtb | For kernel >= 5.4.85 (Yocto >= Dunfell) |
imx8mq-var-dart-m4-sd-lvds.dtb | For kernel = 5.4.24 (Yocto Zeus) |
fsl-imx8mq-var-dart-m4-sd-lvds.dtb | For kernel = 4.19.35 (Yocto Warrior) |
Image.gz-fsl-imx8mq-var-dart-m4-sd-lvds.dtb | For kernel = 4.14.98 (Yocto Sumo) |
For the full list of device tree blob files, refer to the "Build Results" section in the appropriate wiki page for the specific Yocto/Debian release you are using.
Default M4 pins
Default M4 pins used by the demos are:
Function | Pin |
---|---|
debug UART (UART2) | RX: J12.6 / TX: J12.4 |
GPIO (GPIO4_IO03) | LED7 for DT8MCustomBoard 1.x U43.2 / R228 for DT8MCustomBoard >= 2.0 (Use Oscilloscope to observe output signal) |
I2C (I2C3) | SCL: J12.18 / SDA: J12.20 |
PWM (PWM2) | J14.3 |
Available Demos
- driver_examples/i2c/interrupt_b2b_transfer/slave
- driver_examples/i2c/interrupt_b2b_transfer/master
- driver_examples/i2c/polling_b2b_transfer/slave
- driver_examples/i2c/polling_b2b_transfer/master
- driver_examples/wdog
- driver_examples/gpio/led_output
- driver_examples/tmu/tmu_monitor_report
- driver_examples/pwm
- driver_examples/uart/auto_baudrate_detect
- driver_examples/uart/interrupt
- driver_examples/uart/interrupt_rb_transfer
- driver_examples/uart/polling
- driver_examples/uart/interrupt_transfer
- driver_examples/gpt/timer
- driver_examples/gpt/capture
- driver_examples/ecspi/ecspi_loopback
- driver_examples/qspi/polling_transfer
- driver_examples/rdc
- driver_examples/sema4/uboot
- rtos_examples/freertos_ecspi/ecspi_loopback
- rtos_examples/freertos_hello
- rtos_examples/freertos_queue
- rtos_examples/freertos_sem
- rtos_examples/freertos_generic
- rtos_examples/freertos_uart
- rtos_examples/freertos_tickless
- rtos_examples/freertos_mutex
- rtos_examples/freertos_event
- rtos_examples/freertos_swtimer
- rtos_examples/freertos_i2c
- cmsis_driver_examples/i2c/int_b2b_transfer/slave
- cmsis_driver_examples/i2c/int_b2b_transfer/master
- cmsis_driver_examples/uart/interrupt_transfer
- cmsis_driver_examples/ecspi/int_loopback_transfer
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- demo_apps/hello_world
Available Demos v2
- driver_examples/i2c/interrupt_b2b_transfer/slave
- driver_examples/i2c/interrupt_b2b_transfer/master
- driver_examples/i2c/polling_b2b_transfer/slave
- driver_examples/i2c/polling_b2b_transfer/master
- driver_examples/wdog
- driver_examples/gpio/led_output
- driver_examples/tmu/tmu_monitor_report
- driver_examples/pwm*
- driver_examples/uart/auto_baudrate_detect
- driver_examples/uart/interrupt
- driver_examples/uart/interrupt_rb_transfer
- driver_examples/uart/polling
- driver_examples/uart/interrupt_transfer
- driver_examples/gpt/timer
- driver_examples/gpt/capture
- driver_examples/ecspi/ecspi_loopback
- driver_examples/qspi/polling_transfer
- driver_examples/rdc
- driver_examples/sema4/uboot
- freertos_examples/freertos_hello
- freertos_examples/freertos_queue
- freertos_examples/freertos_sem
- freertos_examples/freertos_generic
- freertos_examples/freertos_tickless
- freertos_examples/freertos_mutex
- freertos_examples/freertos_event
- freertos_examples/freertos_swtimer
- cmsis_driver_examples/i2c/int_b2b_transfer/slave
- cmsis_driver_examples/i2c/int_b2b_transfer/master
- cmsis_driver_examples/uart/interrupt_transfer
- cmsis_driver_examples/ecspi/int_loopback_transfer
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- demo_apps/hello_world
*Not supported running from U-Boot
NXP Memory types
The SDK allow linking using 2 different memory types: DDR, TCM.
Here is available a short summary of memory areas used by Cortex-M4 as described in related linker file.
memory type | M4 memory area | A53 memory area | memory lentgh | linker file |
---|---|---|---|---|
DDR | 0x80000000-0x801FFFFF (code) 0x80200000-0x803FFFFF (data) 0x80400000-0x80FFFFFF (data2) |
0x80000000-0x801FFFFF (code) 0x80200000-0x803FFFFF (data) 0x80400000-0x80FFFFFF (data2) |
16MB (DDR) | MIMX8MQ6xxxJZ_cm4_ddr_ram.ld |
TCM | 0x1FFE0000-0x1FFFFFFF (code) 0x20000000-0x2001FFFF (data) 0x80000000-0x80FFFFFF (data2) |
0x007E0000-0x007FFFFF (code) 0x00800000-0x0081FFFF (data) 0x80000000-0x80FFFFFF (data2) |
256kB (TCM) + 16MB (DDR) | MIMX8MQ6xxxJZ_cm4_ram.ld |
All linker files are locate in the armgcc folder of each demo.
The DDR reserved area must match the one declared in the kernel device tree: at least 2 GB of RAM is required on the SoM to allow Cortex-M4 accessing the range 0x80000000 - 0x80FFFFFF.
The RPMSG area is located at 0xB8000000: at least 3 GB of RAM is required on the SoM to allow Cortex-M4 accessing the RPMSG area. After launching the build_all.sh command the following folder will be created in the armgcc folder
- ddr_debug: containing DDR binaries compiled in debug mode (not stripped: symbols available)
- ddr_release: containing DDR binaries compiled in release mode (stripped: no symbols available)
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
Further details about memory mapping are available in the following i.MX 8M Applications Processor Reference Manual paragraphs:
- 2.1.2 Cortex-A53 Memory Map
- 2.1.3 Cortex-M4 Memory Map
Variscite Memory types
The SDK allow linking using 2 different memory types: DDR, TCM.
Here is available a short summary of memory areas used by Cortex-M4 as described in related linker file.
memory type | M4 memory area | A53 memory area | memory lentgh | linker file |
---|---|---|---|---|
DDR | 0x7E000000-0x7E1FFFFF (code) 0x7E200000-0x7E3FFFFF (data) 0x7E400000-0x7EFFFFFF (data2) |
0x7E000000-0x7E1FFFFF (code) 0x7E200000-0x7E3FFFFF (data) 0x7E400000-0x7EFFFFFF (data2) |
16MB (DDR) | MIMX8MQ6xxxJZ_cm4_ddr_ram.ld |
TCM | 0x1FFE0000-0x1FFFFFFF (code) 0x20000000-0x2001FFFF (data) 0x7E000000-0x7EFFFFFF (data2) |
0x007E0000-0x007FFFFF (code) 0x00800000-0x0081FFFF (data) 0x7E000000-0x7EFFFFFF (data2) |
256kB (TCM) + 16MB (DDR) | MIMX8MQ6xxxJZ_cm4_ram.ld |
All linker files are locate in the armgcc folder of each demo.
The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M4 accessing the range 0x7E000000 - 0x7EFFFFFF. For some reason, Cortex-M4 is not able to access RAM locations below 0x60000000: SoMs with 512 MB of RAM are not suitable to use Cortex-M4.
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M4 accessing the RPMSG area.
After launching the build_all.sh command the following folder will be created in the armgcc folder
- ddr_debug: containing DDR binaries compiled in debug mode (not stripped: symbols available)
- ddr_release: containing DDR binaries compiled in release mode (stripped: no symbols available)
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
Further details about memory mapping are available in the following i.MX 8M Applications Processor Reference Manual paragraphs:
- 2.1.2 Cortex-A53 Memory Map
- 2.1.3 Cortex-M4 Memory Map
JTAG
The VAR-DT8MCustomBoard exports the DART-MX8M JTAG signals through J29, a standard 1.27" 10 pin header.
Here is the pinout:
pin | signal | description | pin | signal | description |
---|---|---|---|---|---|
1 | JTAG_VREF | JTAG IO reference voltage, connects to SOM_NVCC_3V3. |
2 | JTAG_TMS | JTAG Mode Select signal |
3 | GND | Digital Ground | 4 | JTAG_TCK | JTAG Clock signal, requires 10K pull down. |
5 | GND | Digital Ground | 6 | JTAG_TDO | JTAG Data Out signal |
7 | GND | Digital Ground | 8 | JTAG_TDI | JTAG Data In signal |
9 | JTAG_NTRST_C | JTAG Reset signal | 10 | NRST_CON | Programmer Reset, used to put the SOC in reset state. |
Please refer to board schematics for further details.
Releases
mcuxpresso-2.5.1-mx8mq-v1.0
- HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.5.1-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.5.1_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.5.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.5.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-7-2018-q2-update
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_NXP_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK i.MX 8M Devices.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
mcuxpresso-2.5.1-mx8mq-v1.1
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.5.1-mx8mq-v1.1
- RELEASE_LINK = MCUXPRESSO_2.5.1_V1.1_DART-MX8M
- MCUXPRESSO_VERSION = 2.5.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.5.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-7-2018-q2-update
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK i.MX 8M Devices.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
mcuxpresso-2.8.0-mx8mq-v1.0
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.8.0-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.8.0_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.8.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.8.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
mcuxpresso-2.9.0-mx8mq-v1.0
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.9.0-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.9.0_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.9.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.9.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8mq-v1.0
mcuxpresso-2.10.0-mx8mq-v1.0
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.10.0-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.10.0_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.10.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.10.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10-2020-q4-major
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8mq-v1.3
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch
- BOARD_SDK = dart_mx8mq
mcuxpresso-2.11.1-mx8mq-v1.0
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.11.1-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.11.1_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.11.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.11.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.07/gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.07
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8mq-v1.5
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch
- BOARD_SDK = dart_mx8mq
mcuxpresso-2.12.1-mx8mq-v1.0
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.12.1-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.12.1_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.12.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.12.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
- YOCTO_RELEASE_TAG = mx8m-yocto-kirkstone-5.15-2.0.x-v1.0
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch
- BOARD_SDK = dart_mx8mq
mcuxpresso-2.13.0-mx8mq-v1.0
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.13.0-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.13.0_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.13.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.13.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
- YOCTO_RELEASE_TAG = mx8m-yocto-kirkstone-5.15-2.0.x-v1.2
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch
- BOARD_SDK = dart_mx8mq
mcuxpresso-2.15.0-mx8mq-v1.0
*HARDWARE_NAME = DART-MX8M
- RELEASE_NAME = mcuxpresso-2.15.0-mx8mq-v1.0
- RELEASE_LINK = MCUXPRESSO_2.15.0_V1.0_DART-MX8M
- MCUXPRESSO_VERSION = 2.15.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.15.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_BZ2_NAME = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_FOLDER = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi
- BOARD_FOLDER = boards/dart_mx8mq
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M_PINS_SECTION
- DEMOS_SECTION = DART-MX8M_DEMOS_SECTION_V2
- DTBS_SECTION = DART-MX8M_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MQ.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MQ
- YOCTO_RELEASE_TAG = mx8m-yocto-mickledore-6.1.36_2.1.0-v1.0
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8MQ-deactivated-the-LMEM-caches-to-debug-in-exter.patch
- BOARD_SDK = dart_mx8mq
DART-MX8M-MINI
Sections
Available dtbs
To allow Cortex M4 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing m4 label in the name, using the fdt_file environment variable in U-Boot.
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M4.
File Name |
Description |
---|---|
imx8mm-var-dart-dt8mcustomboard-m4.dtb | DART-MX8M-MINI device tree blob for kernel >= 5.4.74 (Yocto Dunfell) |
imx8mm-var-dart-m4.dtb | DART-MX8M-MINI device tree blob for kernel 5.4.3 (Yocto Zeus) on SOM rev. > 1.0 |
fsl-imx8mm-var-dart-m4.dtb | DART-MX8M-MINI device tree blob for in kernels < 5.4.3 on SOM rev. > 1.0 |
imx8mm-var-som-symphony-m4.dtb | VAR-SOM-MX8M-MINI device tree blob for kernel >= 5.4.74 (Yocto Dunfell) on Symphony-Board 1.4a and above |
imx8mm-var-som-symphony-legacy-m4.dtb | VAR-SOM-MX8M-MINI device tree blob for kernel >= 5.4.74 (Yocto Dunfell) on Symphony-Board 1.4 and below |
imx8mm-var-som-m4.dtb | VAR-SOM-MX8M-MINI device tree blob for kernel 5.4.3 (Yocto Zeus) on SOM rev. > 1.0 |
imx8mm-var-som-rev10-m4.dtb | VAR-SOM-MX8M-MINI device tree blob for kernel 5.4.3 (Yocto Zeus) on SOM rev. 1.0 |
fsl-imx8mm-var-som-m4.dtb | VAR-SOM-MX8M-MINI device tree blob for in kernels < 5.4.3 on SOM rev. > 1.0 |
fsl-imx8mm-var-som-rev10-m4.dtb | VAR-SOM-MX8M-MINI device tree blob for in kernels < 5.4.3 on SOM rev. 1.0 |
Default M4 pins
Default M4 pins used by the demos are:
Function | Pin |
---|---|
Debug UART (UART2) | RX: J12.6 / TX: J12.4 |
GPIO (GPIO4_IO03) | LED7 |
I2C (I2C4) | SCL: J12.17 / SDA: J12.19 |
PWM (PWM2) | J14.3 |
Default M4 pins v2
Default M4 pins used by the demos are:
Function | SoC balls | DART-MX8M-MINI pins | DT8MCB pins | VAR-SOM-MX8M-MINI pins | Symphony pins | Notes |
---|---|---|---|---|---|---|
UART3 RX/TX | E18 / D18 | J2.87 / J2.89 | J12.11 / J12.13 | J1.175 / J1.124 | J18.5 / J18.3 | |
GPIO4_IO03 | AF15 | J2.59 | GPLED1 | J1.84 | J17.3 | The led_output demo makes the GPLED1 blink for only DT8MCustomBoard 1.x, use the scope on one of the following test points for DT8MCustomBoard >= 2.x (U43.2/R228/MIPI-CSI pin 20) |
I2C4 SCL/SDA | D13 / E13 | J1.17 / J1.19 | J12.17/ J12.19 | J1.174 / J1.176 | J16.10 / J16.12 | |
PWM3 | AF9 | J3.36 | J14.7 | J1.69 | J18.2 | |
SPI1 CS0/SCK/SDI/SDO | B6 / D6 / A7 / B7 | J2.79 / J2.77 / J2.81 / J2.83 | J16.4/ J16.2 / J16.8 / J16.6 | J1.39 / J1.43 / J1.41 / J1.45 | J16.4/ J16.2 / J16.6 / J16.8 | Enabling it SPI devices will be no longer visible from Linux |
Available Demos
- driver_examples/i2c/interrupt_b2b_transfer/slave
- driver_examples/i2c/interrupt_b2b_transfer/master
- driver_examples/i2c/polling_b2b_transfer/slave
- driver_examples/i2c/polling_b2b_transfer/master
- driver_examples/wdog
- driver_examples/sdma/scatter_gather
- driver_examples/sdma/memory_to_memory
- driver_examples/gpio/led_output
- driver_examples/pwm
- driver_examples/uart/auto_baudrate_detect
- driver_examples/uart/interrupt
- driver_examples/uart/idle_detect_sdma_transfer
- driver_examples/uart/interrupt_rb_transfer
- driver_examples/uart/sdma_transfer
- driver_examples/uart/polling
- driver_examples/uart/interrupt_transfer
- driver_examples/gpt/timer
- driver_examples/gpt/capture
- driver_examples/ecspi/ecspi_loopback
- driver_examples/ecspi/interrupt_b2b_transfer/slave
- driver_examples/ecspi/interrupt_b2b_transfer/master
- driver_examples/ecspi/polling_b2b_transfer/slave
- driver_examples/ecspi/polling_b2b_transfer/master
- driver_examples/rdc
- driver_examples/tmu_1/monitor_threshold
- driver_examples/tmu_1/temperature_polling
- driver_examples/sema4/uboot
- rtos_examples/freertos_ecspi/ecspi_loopback
- rtos_examples/freertos_hello
- rtos_examples/freertos_queue
- rtos_examples/freertos_sem
- rtos_examples/freertos_generic
- rtos_examples/freertos_uart
- rtos_examples/freertos_tickless
- rtos_examples/freertos_mutex
- rtos_examples/freertos_event
- rtos_examples/freertos_swtimer
- rtos_examples/freertos_i2c
- cmsis_driver_examples/i2c/int_b2b_transfer/slave
- cmsis_driver_examples/i2c/int_b2b_transfer/master
- cmsis_driver_examples/uart/sdma_transfer
- cmsis_driver_examples/uart/interrupt_transfer
- cmsis_driver_examples/ecspi/int_loopback_transfer
- cmsis_driver_examples/ecspi/sdma_loopback_transfer
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- demo_apps/hello_world
Available Demos v2
- driver_examples/i2c/interrupt_b2b_transfer/slave
- driver_examples/i2c/interrupt_b2b_transfer/master
- driver_examples/i2c/polling_b2b_transfer/slave
- driver_examples/i2c/polling_b2b_transfer/master
- driver_examples/wdog
- driver_examples/sdma/scatter_gather
- driver_examples/sdma/memory_to_memory
- driver_examples/gpio/led_output
- driver_examples/pwm
- driver_examples/uart/auto_baudrate_detect
- driver_examples/uart/interrupt
- driver_examples/uart/idle_detect_sdma_transfer
- driver_examples/uart/interrupt_rb_transfer
- driver_examples/uart/sdma_transfer
- driver_examples/uart/polling
- driver_examples/uart/interrupt_transfer
- driver_examples/gpt/timer
- driver_examples/gpt/capture
- driver_examples/ecspi/ecspi_loopback
- driver_examples/ecspi/interrupt_b2b_transfer/slave
- driver_examples/ecspi/interrupt_b2b_transfer/master
- driver_examples/ecspi/polling_b2b_transfer/slave
- driver_examples/ecspi/polling_b2b_transfer/master
- driver_examples/rdc
- driver_examples/tmu_1/monitor_threshold
- driver_examples/tmu_1/temperature_polling
- driver_examples/sema4/uboot
- freertos_examples/freertos_hello
- freertos_examples/freertos_queue
- freertos_examples/freertos_sem
- freertos_examples/freertos_generic
- freertos_examples/freertos_tickless
- freertos_examples/freertos_mutex
- freertos_examples/freertos_event
- freertos_examples/freertos_swtimer
- cmsis_driver_examples/i2c/int_b2b_transfer/slave
- cmsis_driver_examples/i2c/int_b2b_transfer/master
- cmsis_driver_examples/uart/sdma_transfer
- cmsis_driver_examples/uart/interrupt_transfer
- cmsis_driver_examples/ecspi/int_loopback_transfer
- cmsis_driver_examples/ecspi/sdma_loopback_transfer
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- demo_apps/hello_world
Variscite Memory types
The SDK allow linking using 2 different memory types: DDR, TCM.
Here is available a short summary of memory areas used by Cortex-M4 as described in related linker file.
memory type | M4 memory area | A53 memory area | memory lentgh | linker file |
---|---|---|---|---|
DDR | 0x7E000000-0x7E1FFFFF (code) 0x7E200000-0x7E3FFFFF (data) 0x7E400000-0x7EFFFFFF (data2) |
0x7E000000-0x7E1FFFFF (code) 0x7E200000-0x7E3FFFFF (data) 0x7E400000-0x7EFFFFFF (data2) |
16MB (DDR) | MIMX8MM6xxxxx_cm4_ddr_ram.ld |
TCM | 0x1FFE0000-0x1FFFFFFF (code) 0x20000000-0x2001FFFF (data) 0x7E000000-0x7EFFFFFF (data2) |
0x007E0000-0x007FFFFF (code) 0x00800000-0x0081FFFF (data) 0x7E000000-0x7EFFFFFF (data2) |
256kB (TCM) + 16MB (DDR) | MIMX8MM6xxxxx_cm4_ram.ld |
All linker files are locate in the armgcc folder of each demo.
The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M4 accessing the range 0x7E000000 - 0x7EFFFFFF. For some reason, Cortex-M4 is not able to access RAM locations below 0x60000000: SoMs with 512 MB of RAM are not suitable to use Cortex-M4.
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M4 accessing the RPMSG area.
After launching the build_all.sh command the following folder will be created in the armgcc folder
- ddr_debug: containing DDR binaries compiled in debug mode (not stripped: symbols available)
- ddr_release: containing DDR binaries compiled in release mode (stripped: no symbols available)
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
Further details about memory mapping are available in the following i.MX 8M Mini Applications Processor Reference Manual paragraphs:
- 2.1.2 Cortex-A53 Memory Map
- 2.1.3 Cortex-M4 Memory Map
Releases
freertos-1.0.1-mx7-v1.0
mcuxpresso-2.5.0-mx8mm-v1.0
- HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.5.0-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.5.0_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.5.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.5.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-7-2018-q2-update
- BOARD_FOLDER = boards/dart_mx8mm
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for i.MX 8M Mini.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
mcuxpresso-2.5.0-mx8mm-v1.1
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.5.0-mx8mm-v1.1
- RELEASE_LINK = MCUXPRESSO_2.5.0_V1.1_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.5.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.5.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-7-2018-q2-update
- BOARD_FOLDER = boards/dart_mx8mm
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for i.MX 8M Mini.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
mcuxpresso-2.8.0-mx8mm-v1.0
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.8.0-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.8.0_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.8.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.8.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/dart_mx8mm
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
mcuxpresso-2.9.0-mx8mm-v1.0
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.9.0-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.9.0_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.9.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.9.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/dart_mx8mm
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8mm-v1.1
mcuxpresso-2.10.0-mx8mm-v1.0
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.10.0-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.10.0_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.10.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.10.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10-2020-q4-major
- BOARD_FOLDER = boards/dart_mx8mm
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8M-MINI-deactivated-the-LMEM-caches-to-debug-in-e.patch
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
- YOCTO_RELEASE_TAG = hardknott-fslc-5.4-2.3.x-mx8mm-v1.1
mcuxpresso-2.11.1-mx8mm-v1.0
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.11.1-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.11.1_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.11.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.11.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.07/gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.07
- BOARD_FOLDER = boards/dart_mx8mm
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8M-MINI-deactivated-the-LMEM-caches-to-debug-in-e.patch
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
- YOCTO_RELEASE_TAG = hardknott-fslc-5.4-2.3.x-mx8mm-v1.4
mcuxpresso-2.12.1-mx8mm-v1.0
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.12.1-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.12.1_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.12.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.12.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/dart_mx8mm
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8M-MINI-deactivated-the-LMEM-caches-to-debug-in-e.patch
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
- YOCTO_RELEASE_TAG = mx8mm-yocto-kirkstone-5.15-2.0.x-v1.0
mcuxpresso-2.13.0-mx8mm-v1.0
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.13.0-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.13.0_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.13.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.13.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/dart_mx8mm
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8M-MINI-deactivated-the-LMEM-caches-to-debug-in-e.patch
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
- YOCTO_RELEASE_TAG = mx8mm-yocto-kirkstone-5.15-2.0.x-v1.1
mcuxpresso-2.15.0-mx8mm-v1.0
*HARDWARE_NAME = DART-MX8M-MINI
- RELEASE_NAME = mcuxpresso-2.15.0-mx8mm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.15.0_V1.0_DART-MX8M-MINI
- MCUXPRESSO_VERSION = 2.15.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.15.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_BZ2_NAME = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_FOLDER = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi
- BOARD_FOLDER = boards/dart_mx8mm
- DEACTIVATE_LMEM_CACHE_PATCH = 0001-iMX8M-MINI-deactivated-the-LMEM-caches-to-debug-in-e.patch
- LMEM_CACHE_FILE = MIMX8MM6/system_MIMX8MM6_cm4.c
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-MINI_PINS_SECTION_V2
- DEMOS_SECTION = DART-MX8M-MINI_DEMOS_SECTION_V2
- DTBS_SECTION = DART-MX8M-MINI_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-MINI_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MM.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MM
- YOCTO_RELEASE_TAG = mx8mm-yocto-mickledore-6.1.36_2.1.0-v1.2
VAR-SOM-MX8M-NANO
Sections
Available dtbs
To allow Cortex M7 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing m7 label in the name, using the fdt_file environment variable in U-Boot.
File Name |
Description |
---|---|
imx8mn-var-som-symphony-m7.dtb | VAR-SOM-MX8M-NANO device tree blob for kernel = 5.4.74 (Yocto Dunfell) on Symphony-Board 1.4a and above and for kernel >= 5.10.72 (Yocto Hardknott) on all Symphony-Boards |
imx8mn-var-som-symphony-legacy-m7.dtb | VAR-SOM-MX8M-NANO device tree blob for kernel = 5.4.74 (Yocto Dunfell) on Symphony-Board 1.4 and below |
imx8mn-var-som-m7.dtb | VAR-SOM-MX8M-NANO device tree blob for kernel 5.4.3 - 5.4.24 (Yocto Zeus) on som rev > 1.0 |
imx8mn-var-som-rev10-m7.dtb | VAR-SOM-MX8M-NANO device tree blob for kernel 5.4.3 - 5.4.24 (Yocto Zeus) on som rev 1.0 |
fsl-imx8mn-var-som-m7.dtb | VAR-SOM-MX8M-NANO device tree blob for kernel < 5.4.3 on som rev > 1.0 |
fsl-imx8mn-var-som-rev10-m7.dtb | VAR-SOM-MX8M-NANO device tree blob for kernel < 5.4.3 on som rev 1.0 |
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M7.
Default M7 pins
Default M7 pins used by the demos are:
Function | SoC balls | VAR-SOM-MX8M-NANO pins | Symphony pins | Notes |
---|---|---|---|---|
UART3 RX/TX | E18 / D18 | J1.175 / J1.124 | J18.5 / J18.3 | |
GPIO4_IO23 | AC24 | J1.21 | J16.5 | |
I2C4 SCL/SDA | D13 / E13 | J1.174 / J1.176 | J16.10 / J16.12 | |
PWM3 | AF9 | J1.69 | J18.2 | |
SPI1 CS0/SCK/SDI/SDO | B6 / D6 / A7 / B7 | J1.39 / J1.43 / J1.41 / J1.45 | J16.4/ J16.2 / J16.6 / J16.8 | Enabling it SPI devices will be no longer visible from Linux |
Available Demos
- driver_examples/i2c/interrupt_b2b_transfer/slave
- driver_examples/i2c/interrupt_b2b_transfer/master
- driver_examples/i2c/polling_b2b_transfer/slave
- driver_examples/i2c/polling_b2b_transfer/master
- driver_examples/wdog
- driver_examples/gpio/led_output
- driver_examples/pwm
- driver_examples/uart/auto_baudrate_detect
- driver_examples/uart/interrupt
- driver_examples/uart/interrupt_rb_transfer
- driver_examples/uart/polling
- driver_examples/uart/interrupt_transfer
- driver_examples/gpt/timer
- driver_examples/gpt/capture
- driver_examples/ecspi/ecspi_loopback
- driver_examples/ecspi/interrupt_b2b_transfer/slave
- driver_examples/ecspi/interrupt_b2b_transfer/master
- driver_examples/ecspi/polling_b2b_transfer/slave
- driver_examples/ecspi/polling_b2b_transfer/master
- driver_examples/rdc
- driver_examples/tmu/monitor_threshold
- driver_examples/tmu/temperature_polling
- driver_examples/sema4/uboot
- freertos_examples/freertos_hello
- freertos_examples/freertos_queue
- freertos_examples/freertos_sem
- freertos_examples/freertos_generic
- freertos_examples/freertos_tickless
- freertos_examples/freertos_mutex
- freertos_examples/freertos_event
- freertos_examples/freertos_swtimer
- cmsis_driver_examples/i2c/int_b2b_transfer/slave
- cmsis_driver_examples/i2c/int_b2b_transfer/master
- cmsis_driver_examples/uart/interrupt_transfer
- cmsis_driver_examples/ecspi/int_loopback_transfer
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- demo_apps/hello_world
Memory types
The SDK allow linking using 2 different memory types: DDR, TCM.
Here is available a short summary of memory areas used by Cortex-M7 as described in related linker file.
memory type | M7 memory area | A53 memory area | memory lentgh | linker file |
---|---|---|---|---|
DDR | 0x7E000000-0x7E1FFFFF (code) 0x7E200000-0x7E3FFFFF (data) 0x7E400000-0x7EFFFFFF (data2) |
0x7E000000-0x7E1FFFFF (code) 0x7E200000-0x7E3FFFFF (data) 0x7E400000-0x7EFFFFFF (data2) |
16MB (DDR) | MIMX8MN6xxxxx_cm7_ddr_ram.ld |
TCM | 0x00000000-0x0001FFFF (code) 0x20000000-0x2001FFFF (data) 0x7E000000-0x7EFFFFFF (data2) |
0x007E0000-0x007FFFFF (code) 0x00800000-0x0081FFFF (data) 0x7E000000-0x7EFFFFFF (data2) |
256kB (TCM) + 16MB (DDR) | MIMX8MN6xxxxx_cm7_ram.ld |
All linker files are locate in the armgcc folder of each demo.
The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M7 accessing the range 0x7E000000 - 0x7EFFFFFF. For some reason, Cortex-M7 is not able to access RAM locations below 0x60000000: SoMs with 512 MB of RAM are not suitable to use Cortex-M7.
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M7 accessing the RPMSG area.
After launching the build_all.sh command the following folder will be created in the armgcc folder
- ddr_debug: containing DDR binaries compiled in debug mode (not stripped: symbols available)
- ddr_release: containing DDR binaries compiled in release mode (stripped: no symbols available)
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
Further details about memory mapping are available in the following i.MX 8M Nano Applications Processor Reference Manual paragraphs:
- 2.1.2 Cortex-A53 Memory Map
- 2.1.3 Cortex-M7 Memory Map
JTAG
VAR-SOM-MX8M-NANO exposes JTAG signals on a header (not assembled by default) on the SOM top left side.
Here is the pinout:
pin | signal | description | pin | signal | description |
---|---|---|---|---|---|
1 | JTAG_VREF | JTAG IO reference voltage, connected to SOM_3V3_PER via 150 Ohm. |
2 | JTAG_TMS | JTAG Mode Select signal |
3 | GND | Digital Ground | 4 | JTAG_TCK | JTAG Clock signal, include PD of 8.2K Ohm. |
5 | GND | Digital Ground | 6 | JTAG_TDO | JTAG Data Out signal |
7 | GND | Digital Ground | 8 | JTAG_TDI | JTAG Data In signal |
9 | JTAG_TRST_B | JTAG Reset signal, active low signal |
10 | POR_B | Programmer Reset, used to put the SOC in reset state. |
Please refer to SoM datasheet for further details.
Releases
mcuxpresso-2.7.0-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.7.0-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.7.0_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.7.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.7.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2019q3/RC1.1/gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-8-2019-q3-update-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-8-2019-q3-update
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
mcuxpresso-2.8.0-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.8.0-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.8.0_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.8.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.8.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
mcuxpresso-2.9.0-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.9.0-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.9.0_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.9.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.9.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8mn-v1.1
mcuxpresso-2.10.0-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.10.0-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.10.0_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.10.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.10.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10-2020-q4-major
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8mn-v1.6
mcuxpresso-2.11.1-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.11.1-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.11.1_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.11.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.11.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.07/gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.07
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8mn-v1.8
mcuxpresso-2.12.1-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.12.1-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.12.1_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.12.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.12.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
- YOCTO_RELEASE_TAG = mx8mn-yocto-hardknott-5.10.72_2.2.1-v1.0
mcuxpresso-2.13.0-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.13.0-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.13.0_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.13.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.13.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
- YOCTO_RELEASE_TAG = mx8mn-yocto-kirkstone-5.15-2.0.x-v1.0
mcuxpresso-2.15.0-mx8mn-v1.0
*HARDWARE_NAME = VAR-SOM-MX8M-NANO
- SOC_HAS_M7 = true
- RELEASE_NAME = mcuxpresso-2.15.0-mx8mn-v1.0
- RELEASE_LINK = MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX8M-NANO
- MCUXPRESSO_VERSION = 2.15.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.15.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_BZ2_NAME = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_FOLDER = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi
- BOARD_FOLDER = boards/som_mx8mn
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8M-NANO_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8M-NANO_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8M-NANO_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8MN_MEMORY-TYPES
- JTAG_SECTION = VAR-SOM-MX8MN_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MN.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MN
- YOCTO_RELEASE_TAG = mx8mn-yocto-mickledore-6.1.36_2.1.0-v1.0
DART-MX8M-PLUS
Sections
Available dtbs
To allow Cortex M7 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing m7 label in the name, using the fdt_file environment variable in U-Boot.
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M7.
File Name |
Description |
---|---|
imx8mp-var-dart-dt8mcustomboard-m7.dtb | DART-MX8M-PLUS device tree blob for kernel >= 5.4.70 (Yocto Zeus) on DT8MCustomBoard 2.x |
imx8mp-var-dart-dt8mcustomboard-legacy-m7.dtb | DART-MX8M-PLUS device tree blob for kernel >= 5.4.70 (Yocto Zeus) on on DT8MCustomBoard 1.x |
imx8mp-var-som-symphony-m7.dtb | VAR-SOM-MX8M-PLUS device tree blob for kernels >= 5.4.70 (Yocto Zeus) on on Symphony-Board |
imx8mp-var-som-symphony-2nd-ov5640m7.dtb | VAR-SOM-MX8M-PLUS device tree blob for kernels >= 5.4.70 (Yocto Zeus) on on Symphony-Board with 2nd OV5640 |
Default M7 pins v1
Default M7 pins used by the demos are:
Function | SoC balls | DART-MX8M-PLUS pins | DT8MCB pins | VAR-SOM-MX8M-PLUS pins | Symphony pins | Notes |
---|---|---|---|---|---|---|
UART3 RX/TX | AE6 / AJ4 | J2.87 / J2.89 | J12.11 / J12.13 | |||
UART4 RX/TX | AH5 / AJ5 | J1.115 / J1.171 | J18.9 / J18.7 | |||
GPIO3_IO14 | R26 | J1.79 | J17.10 | |||
GPIO4_IO03 | AF10 | J2.59 | GPLED1 on DT8MCB rev 1.x J11.20 on DT8MCB rev 2.x |
|||
I2C3 SCL/SDA | AJ7 / AJ6 | J3.46 / J3.42 | J12.18/ J12.20 | |||
I2C4 SCL/SDA | AF8 / AD8 | J1.92 / J1.90 | J16.13 / J16.15 | Enabling it SPI devices will be no longer visible from Linux | ||
PWM2 | D8 | J1.69 | J18.2 | |||
PWM3 | AE18 | J3.36 | J14.7 | |||
SPI1 CS0/SCK/SDI/SDO | AE20 / AF20 / AD20 / AC20 | J2.79 / J2.77 / J2.81 / J2.83 | J16.4/ J16.2 / J16.8 / J16.6 | Enabling it SPI devices will be no longer visible from Linux | ||
SPI2 CS0/SCK/SDI/SDO | AJ22 / AH21 / AH20 / AJ21 | J1.39 / J1.43 / J1.41 / J1.45 | J16.4/ J16.2 / J16.6 / J16.8 | Enabling it SPI devices will be no longer visible from Linux | ||
FLEXCAN1 RX/TX | AH15 / AJ16 | j2.56 / j2.50 | J13.11 / J13.5 on DT8MCB rev 1.x, TTL levels (CAN transceiver not mounted!) | Enabling it FLEXCAN1 devices will be no longer visible from Linux | ||
J16.9 / J16.7 on DT8MCB rev 2.x, CANL/CANH levels (CAN transceiver mounted!) | ||||||
FLEXCAN2 RX/TX | AJ4 / AE6 | J1.46 / J1.44 | J16.18 / J16.20, CANL/CANH levels (CAN transceiver mounted!) | Enabling it FLEXCAN2 devices will be no longer visible from Linux |
Available Demos
- driver_examples/i2c/interrupt_b2b_transfer/slave
- driver_examples/i2c/interrupt_b2b_transfer/master
- driver_examples/i2c/polling_b2b_transfer/slave
- driver_examples/i2c/polling_b2b_transfer/master
- driver_examples/wdog
- driver_examples/sdma/scatter_gather
- driver_examples/sdma/memory_to_memory
- driver_examples/gpio/led_output
- driver_examples/pwm
- driver_examples/uart/auto_baudrate_detect
- driver_examples/uart/interrupt
- driver_examples/uart/interrupt_rb_transfer
- driver_examples/uart/polling
- driver_examples/uart/interrupt_transfer
- driver_examples/gpt/timer
- driver_examples/gpt/capture
- driver_examples/ecspi/ecspi_loopback
- driver_examples/ecspi/interrupt_b2b_transfer/slave
- driver_examples/ecspi/interrupt_b2b_transfer/master
- driver_examples/ecspi/polling_b2b_transfer/slave
- driver_examples/ecspi/polling_b2b_transfer/master
- driver_examples/rdc
- driver_examples/tmu/monitor_threshold
- driver_examples/tmu/temperature_polling
- driver_examples/sema4/uboot
- rtos_examples/freertos_ecspi/ecspi_loopback
- rtos_examples/freertos_hello
- rtos_examples/freertos_queue
- rtos_examples/freertos_sem
- rtos_examples/freertos_generic
- rtos_examples/freertos_uart
- rtos_examples/freertos_tickless
- rtos_examples/freertos_mutex
- rtos_examples/freertos_event
- rtos_examples/freertos_swtimer
- rtos_examples/freertos_i2c
- cmsis_driver_examples/i2c/int_b2b_transfer/slave
- cmsis_driver_examples/i2c/int_b2b_transfer/master
- cmsis_driver_examples/uart/interrupt_transfer
- cmsis_driver_examples/ecspi/int_loopback_transfer
- cmsis_driver_examples/ecspi/sdma_loopback_transfer
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- demo_apps/hello_world
- driver_examples/uart/idle_detect_sdma_transfer
- driver_examples/uart/sdma_transfer
- cmsis_driver_examples/uart/sdma_transfer
Available Demos v2
- driver_examples/i2c/interrupt_b2b_transfer/slave
- driver_examples/i2c/interrupt_b2b_transfer/master
- driver_examples/i2c/polling_b2b_transfer/slave
- driver_examples/i2c/polling_b2b_transfer/master
- driver_examples/wdog
- driver_examples/gpio/led_output
- driver_examples/pwm
- driver_examples/uart/auto_baudrate_detect
- driver_examples/uart/interrupt
- driver_examples/uart/interrupt_rb_transfer
- driver_examples/uart/polling
- driver_examples/uart/interrupt_transfer
- driver_examples/gpt/timer
- driver_examples/gpt/capture
- driver_examples/ecspi/ecspi_loopback
- driver_examples/ecspi/interrupt_b2b_transfer/slave
- driver_examples/ecspi/interrupt_b2b_transfer/master
- driver_examples/ecspi/polling_b2b_transfer/slave
- driver_examples/ecspi/polling_b2b_transfer/master
- driver_examples/tmu/monitor_threshold
- driver_examples/tmu/temperature_polling
- driver_examples/sema4/uboot
- freertos_examples/freertos_hello
- freertos_examples/freertos_queue
- freertos_examples/freertos_sem
- freertos_examples/freertos_generic
- freertos_examples/freertos_tickless
- freertos_examples/freertos_mutex
- freertos_examples/freertos_event
- freertos_examples/freertos_swtimer
- cmsis_driver_examples/i2c/int_b2b_transfer/slave
- cmsis_driver_examples/i2c/int_b2b_transfer/master
- cmsis_driver_examples/uart/interrupt_transfer
- cmsis_driver_examples/ecspi/int_loopback_transfer
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- demo_apps/hello_world
Variscite Memory types
The SDK allow linking using 2 different memory types: DDR, TCM.
Here is available a short summary of memory areas used by Cortex-M7 as described in related linker file.
memory type | M7 memory area | A53 memory area | memory lentgh | linker file |
---|---|---|---|---|
DDR | 0x80000000-0x801FFFFF (code) 0x80200000-0x803FFFFF (data) 0x80400000-0x80FFFFFF (data2) |
0x80000000-0x801FFFFF (code) 0x80200000-0x803FFFFF (data) 0x80400000-0x80FFFFFF (data2) |
16MB (DDR) | MIMX8MN6xxxxx_cm7_ddr_ram.ld |
TCM | 0x00000000-0x0001FFFF (code) 0x20000000-0x2001FFFF (data) 0x80000000-0x80FFFFFF (data2) |
0x007E0000-0x007FFFFF (code) 0x00800000-0x0081FFFF (data) 0x80000000-0x80FFFFFF (data2) |
256kB (TCM) + 16MB (DDR) | MIMX8MN6xxxxx_cm7_ram.ld |
All linker files are locate in the armgcc folder of each demo.
The DDR reserved area must match the one declared in the kernel device tree: at least 1 GB of RAM is required on the SoM to allow Cortex-M7 accessing the range 0x80000000 - 0x80FFFFFF.
The RPMSG area is located at 0x40000000: all SoMs allow Cortex-M7 accessing the RPMSG area.
After launching the build_all.sh command the following folder will be created in the armgcc folder
- ddr_debug: containing DDR binaries compiled in debug mode (not stripped: symbols available)
- ddr_release: containing DDR binaries compiled in release mode (stripped: no symbols available)
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
Further details about memory mapping are available in the following i.MX 8M Plus Applications Processor Reference Manual paragraphs:
- 2.2 Cortex-A53 Memory Map
- 2.3 Cortex-M7 Memory Map
JTAG
The VAR-SOM-MX8M-PLUS exposes JTAG interface via an optional 10-pin header, on the SOM top left side.
The DART-MX8M-PLUS exports JTAG interface via an optional 10-pin header, on the DT8MCustomBoard top side.
Here is the pinout:
pin | signal | description | pin | signal | description |
---|---|---|---|---|---|
1 | JTAG_VREF | JTAG IO reference voltage, connected to SOM_3V3_PER via 150 Ohm. |
2 | JTAG_TMS | JTAG Mode Select signal |
3 | GND | Digital Ground | 4 | JTAG_TCK | JTAG Clock signal, include PD of 8.2K Ohm. |
5 | GND | Digital Ground | 6 | JTAG_TDO | JTAG Data Out signal |
7 | GND | Digital Ground | 8 | JTAG_TDI | JTAG Data In signal |
9 | JTAG_TRST_B | JTAG Reset signal, active low signal |
10 | POR_B | Programmer Reset, used to put the SOC in reset state. |
Please refer to SoM datasheet for further details.
Releases
mcuxpresso-2.9.0-mx8mp-v1.0
*HARDWARE_NAME = DART-MX8M-PLUS
- RELEASE_NAME = mcuxpresso-2.9.0-mx8mp-v1.0
- RELEASE_LINK = MCUXPRESSO_2.9.0_V1.0_DART-MX8M-PLUS
- MCUXPRESSO_VERSION = 2.9.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.9.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/dart_mx8mp
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-PLUS_PINS_SECTION
- DEMOS_SECTION = DART-MX8M-PLUS_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-PLUS_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M-PLUS_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MP
- YOCTO_RELEASE_TAG = zeus-fsl-5.4.70_2.3.2-mx8mp-v1.1
- SOM_CAN_SUPPORT_1GB_DDR = yes
mcuxpresso-2.10.0-mx8mp-v1.0
*HARDWARE_NAME = DART-MX8M-PLUS
- RELEASE_NAME = mcuxpresso-2.10.0-mx8mp-v1.0
- RELEASE_LINK = MCUXPRESSO_2.10.0_V1.0_DART-MX8M-PLUS
- MCUXPRESSO_VERSION = 2.10.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.10.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10-2020-q4-major
- BOARD_FOLDER = boards/dart_mx8mp
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-PLUS_PINS_SECTION
- DEMOS_SECTION = DART-MX8M-PLUS_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-PLUS_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M-PLUS_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MP
- YOCTO_RELEASE_TAG = hardknott-fsl-5.10.52_2.1.0-mx8mp-v1.2
- SOM_CAN_SUPPORT_1GB_DDR = yes
mcuxpresso-2.11.1-mx8mp-v1.0
*HARDWARE_NAME = DART-MX8M-PLUS
- RELEASE_NAME = mcuxpresso-2.11.1-mx8mp-v1.0
- RELEASE_LINK = MCUXPRESSO_2.11.1_V1.0_DART-MX8M-PLUS
- MCUXPRESSO_VERSION = 2.11.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.11.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.07/gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.07
- BOARD_FOLDER = boards/dart_mx8mp
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-PLUS_PINS_SECTION
- DEMOS_SECTION = DART-MX8M-PLUS_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-PLUS_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M-PLUS_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MP
- YOCTO_RELEASE_TAG = hardknott-fsl-5.10.52_2.1.0-mx8mp-v1.2
- SOM_CAN_SUPPORT_1GB_DDR = yes
mcuxpresso-2.12.1-mx8mp-v1.0
*HARDWARE_NAME = DART-MX8M-PLUS
- RELEASE_NAME = mcuxpresso-2.12.1-mx8mp-v1.0
- RELEASE_LINK = MCUXPRESSO_2.12.1_V1.0_DART-MX8M-PLUS
- MCUXPRESSO_VERSION = 2.12.1
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.12.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/dart_mx8mp
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-PLUS_PINS_SECTION
- DEMOS_SECTION = DART-MX8M-PLUS_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-PLUS_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M-PLUS_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MP
- YOCTO_RELEASE_TAG = mx8mp-yocto-kirkstone-5.15-2.0.x-v1.0
- SOM_CAN_SUPPORT_1GB_DDR = yes
mcuxpresso-2.13.0-mx8mp-v1.0
*HARDWARE_NAME = DART-MX8M-PLUS
- RELEASE_NAME = mcuxpresso-2.13.0-mx8mp-v1.0
- RELEASE_LINK = MCUXPRESSO_2.13.0_V1.0_DART-MX8M-PLUS
- MCUXPRESSO_VERSION = 2.13.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.13.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-10.3-2021.10
- BOARD_FOLDER = boards/dart_mx8mp
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-PLUS_PINS_SECTION
- DEMOS_SECTION = DART-MX8M-PLUS_DEMOS_SECTION
- DTBS_SECTION = DART-MX8M-PLUS_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M-PLUS_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MP
- YOCTO_RELEASE_TAG = mx8mp-yocto-kirkstone-5.15-2.0.x-v1.2
- SOM_CAN_SUPPORT_1GB_DDR = yes
mcuxpresso-2.15.0-mx8mp-v1.0
*HARDWARE_NAME = DART-MX8M-PLUS
- RELEASE_NAME = mcuxpresso-2.15.0-mx8mp-v1.0
- RELEASE_LINK = MCUXPRESSO_2.15.0_V1.0_DART-MX8M-PLUS
- MCUXPRESSO_VERSION = 2.15.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.15.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_BZ2_NAME = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz
- TOOLCHAIN_FOLDER = arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi
- BOARD_FOLDER = boards/dart_mx8mp
- DOCS_FOLDER = docs
- PINS_SECTION = DART-MX8M-PLUS_PINS_SECTION
- DEMOS_SECTION = DART-MX8M-PLUS_DEMOS_SECTION_V2
- DTBS_SECTION = DART-MX8M-PLUS_DTBS_SECTION
- MEMORY_TYPES_SECTION = DART-MX8M-PLUS_MEMORY-TYPES_VAR_SECTION
- JTAG_SECTION = DART-MX8M-PLUS_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for EVK-MIMX8MP.pdf
- NXP_REFERENCE_KIT = EVK-MIMX8MP
- YOCTO_RELEASE_TAG = mx8mp-yocto-mickledore-6.1.36_2.1.0-v1.3
VAR-SOM-MX8X
Sections
Available dtbs
To allow Cortex M4 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing m4 label in the name, using the fdt_file environment variable in U-Boot.
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M4.
File Name |
Description |
---|---|
imx8qxp-var-som-symphony-sd-m4.dtb | VAR-SOM-MX8 device tree blob for kernel >= 5.4.85 (Yocto Dunfell) |
imx8qxp-var-som-symphony-m4.dtb | VAR-SOM-MX8 device tree blob for kernel >= 5.4.85 (Yocto Dunfell) |
Default M4 pins
Default M4 pins used by the demos are:
Function | Pin |
---|---|
debug UART (UART2) | RX: J18.5 / TX: J18.3 |
I2C (I2C3) | SCL: J16.10 / SDA: J16.12 |
M4 GPIO (M40_GPIO0_IO00) | J16.3 |
M4 PWM (M40_TPM0_CH0) | J16.7 |
Available Demos
- cmsis_driver_examples/lpi2c/int_b2b_transfer/slave
- cmsis_driver_examples/lpi2c/int_b2b_transfer/master
- cmsis_driver_examples/lpi2c/edma_b2b_transfer/slave
- cmsis_driver_examples/lpi2c/edma_b2b_transfer/master
- cmsis_driver_examples/lpuart/edma_transfer
- cmsis_driver_examples/lpuart/interrupt_transfer
- demo_apps/hello_world
- driver_examples/edma/scatter_gather
- driver_examples/edma/memory_to_memory
- driver_examples/intmux
- driver_examples/lpi2c/edma_b2b_transfer/slave
- driver_examples/lpi2c/edma_b2b_transfer/master
- driver_examples/lpi2c/interrupt_b2b_transfer/slave
- driver_examples/lpi2c/interrupt_b2b_transfer/master
- driver_examples/lpi2c/polling_b2b_transfer/slave
- driver_examples/lpi2c/polling_b2b_transfer/master
- driver_examples/lpi2c/read_accel_value_transfer
- driver_examples/lpit
- driver_examples/lpuart/edma_transfer
- driver_examples/lpuart/interrupt_rb_transfer
- driver_examples/lpuart/polling
- driver_examples/lpuart/interrupt_transfer
- driver_examples/rgpio/led_output
- driver_examples/sema42/uboot
- driver_examples/tpm/input_capture
- driver_examples/tpm/dual_edge_capture
- driver_examples/tpm/timer
- driver_examples/tpm/simple_pwm
- driver_examples/tpm/output_compare
- driver_examples/tstmr
- driver_examples/wdog32
- mmcau_examples/mmcau_api
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- multicore_examples/rpmsg_lite_str_echo_rtos
- rtos_examples/freertos_hello
- rtos_examples/freertos_queue
- rtos_examples/freertos_sem
- rtos_examples/freertos_generic
- rtos_examples/freertos_tickless
- rtos_examples/freertos_mutex
- rtos_examples/freertos_event
- rtos_examples/freertos_swtimer
Additional demos are available as reference code, but require HW/SW customization.
NXP Memory types
The SDK allow linking using 2 different memory types: DDR, TCM.
Here is available a short summary of memory areas used by Cortex-M4 as described in related linker file.
memory type | M4 memory area | A35 memory area | memory lentgh | linker file |
---|---|---|---|---|
DDR | 0x88000000-0x881FFFFF (code) 0x88200000-0x883FFFFF (data) 0x88400000-0x8FFFFFFF (data2) |
0x88000000-0x881FFFFF (code) 0x88200000-0x883FFFFF (data) 0x88400000-0x8FFFFFFF (data2) |
128MB (DDR) | MIMX8QX6xxxFZ_cm4_ddr_ram.ld |
TCM | 0x1FFE0000-0x1FFFFFFF (code) 0x20000000-0x2001FFFF (data) 0x88000000-0x8FFFFFFF (data2) |
0x34FE0000-0x34FFFFFF (code) 0x35000000-0x3501FFFF (data) 0x88000000-0x8FFFFFFF (data2) |
256kB (TCM) + 128MB (DDR) | MIMX8QX6xxxFZ_cm4_ram.ld |
All linker files are locate in the armgcc folder of each demo.
After launching the build_all.sh command the following folder will be created in the armgcc folder
- ddr_debug: containing DDR binaries compiled in debug mode (not stripped: symbols available)
- ddr_release: containing DDR binaries compiled in release mode (stripped: no symbols available)
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
Further details about memory mapping are available in the following i.MX 8DualX/8DualXPlus/8QuadXPlus Applications Processor Reference Manual paragraphs:
- 2.2 System Memory Map
- 2.2.9 Cortex-M4 Memory Map
JTAG
The VAR-SOM-MX8X exposes JTAG interface via an optional 10-pin header
Here is the pinout:
pin | signal | description | pin | signal (ball) | description |
---|---|---|---|---|---|
1 | JTAG_VREF | JTAG reference voltage (3.3V) | 2 | JTAG_TMS (AG35) | JTAG Mode Select |
3 | GND | Digital Ground | 4 | JTAG_TCK (AE31) | JTAG Clock |
5 | GND | Digital Ground | 6 | JTAG_TDO (AF32) | JTAG Data Out |
7 | RTCK | JTAG Return clock | 8 | JTAG_TDI (AH34) | JTAG Data In |
9 | JTAG_TRST_B_CONN | JTAG TAP reset | 10 | JTAG_SRST_B | JTAG System reset |
Please refer to SOM datasheet for further details.
Releases
mcuxpresso-2.5.2-mx8qx-v1.0
*HARDWARE_NAME = VAR-SOM-MX8X
- SOC_HAS_SCU = true
- RELEASE_NAME = mcuxpresso-2.5.2-mx8qx-v1.0
- RELEASE_LINK = MCUXPRESSO_2.5.2_V1.0_VAR-SOM-MX8X
- YOCTO_RELEASE_LINK = RELEASE_SUMO_V1.2_VAR-SOM-MX8X
- MCUXPRESSO_VERSION = 2.5.2
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.5.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-7-2018-q2-update
- BOARD_FOLDER = boards/som_mx8qx
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8X_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8X_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8X_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8X_MEMORY-TYPES_NXP_SECTION
- JTAG_SECTION = VAR-SOM-MX8X_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for i.MX 8QuadXPlus.pdf
- NXP_REFERENCE_KIT = IMX8QXP-MEK
- SCFW_SOC = = mx8qx_b0
- SCFW_PATCH_URL = = https://variscite-public.nyc3.cdn.digitaloceanspaces.com/VAR-SOM-MX8X/Software/SCFW
- SCFW_M4_PATCH = = 0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff
- IMX_MKIMAGE_SOC = = iMX8QX
mcuxpresso-2.8.0-mx8qx-v1.0
*HARDWARE_NAME = VAR-SOM-MX8X
- SOC_HAS_SCU = true
- RELEASE_NAME = mcuxpresso-2.8.0-mx8qx-v1.0
- RELEASE_LINK = MCUXPRESSO_2.8.0_V1.0_VAR-SOM-MX8X
- YOCTO_RELEASE_LINK = RELEASE_SUMO_V1.2_VAR-SOM-MX8X
- MCUXPRESSO_VERSION = 2.8.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.8.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/som_mx8qx
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8X_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8X_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8X_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8X_MEMORY-TYPES_NXP_SECTION
- JTAG_SECTION = VAR-SOM-MX8X_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for MEK-MIMX8QX.pdf
- NXP_REFERENCE_KIT = IMX8QXP-MEK
- SCFW_SOC = = mx8qx_b0
- SCFW_PATCH_URL = = https://variscite-public.nyc3.cdn.digitaloceanspaces.com/VAR-SOM-MX8X/Software/SCFW
- SCFW_M4_PATCH = = 0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff
- IMX_MKIMAGE_SOC = = iMX8QX
- SDK_GIT_TAG = som-mx8qx_mcuxpresso-2.8.0_v10
- RELEASE_DATE = 02/18/2021
- SUPPORTED_REV_SOM = v1.1 and higher
- SUPPORTED_REV_CARRIER = v1.1 and higher
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8x-v1.0
mcuxpresso-2.9.0-mx8qx-v1.0
*HARDWARE_NAME = VAR-SOM-MX8X
- SOC_HAS_SCU = true
- RELEASE_NAME = mcuxpresso-2.9.0-mx8qx-v1.0
- RELEASE_LINK = MCUXPRESSO_2.9.0_V1.0_VAR-SOM-MX8X
- YOCTO_RELEASE_LINK = RELEASE_SUMO_V1.2_VAR-SOM-MX8X
- MCUXPRESSO_VERSION = 2.9.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.9.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/som_mx8qx
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8X_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8X_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8X_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8X_MEMORY-TYPES_NXP_SECTION
- JTAG_SECTION = VAR-SOM-MX8X_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for MEK-MIMX8QX.pdf
- NXP_REFERENCE_KIT = IMX8QXP-MEK
- SCFW_SOC = = mx8qx_b0
- SCFW_PATCH_URL = = https://variscite-public.nyc3.cdn.digitaloceanspaces.com/VAR-SOM-MX8X/Software/SCFW
- SCFW_M4_PATCH = = 0002-mx8qxp-var-som_scfw-1.2.2_sample-M4-customization.diff
- IMX_MKIMAGE_SOC = = iMX8QX
- SDK_GIT_TAG = som-mx8qx_mcuxpresso-2.9.0_v10
- RELEASE_DATE = 03/04/2021
- SUPPORTED_REV_SOM = v1.1 and higher
- SUPPORTED_REV_CARRIER = v1.1 and higher
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8x-v1.0
VAR-SOM-MX8
Sections
Available dtbs
To allow Cortex M4 accessing shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, containing m4 label in the name, using the fdt_file environment variable in U-Boot.
This device tree disables some of the base device tree nodes in order to avoid conflicts between the main processor and Cortex M4.
File Name |
Description |
---|---|
imx8qm-var-som-symphony-dp-m4.dtb | DTB file for VAR-SOM-MX8 with DP display and Cortex-M4 on Symphony Board for kernel >= 5.10.72 (Yocto Hardknott) |
imx8qm-var-som-symphony-hdmi-m4.dtb | DTB file for VAR-SOM-MX8 with HDMI display and Cortex-M4 on Symphony Board for kernel >= 5.10.72 (Yocto Hardknott) |
imx8qm-var-som-symphony-lvds-m4.dtb | DTB file for VAR-SOM-MX8 with LVDS display and Cortex-M4 on Symphony Board for kernel >= 5.10.72 (Yocto Hardknott) |
imx8qm-var-spear-sp8customboard-dp-m4.dtb | DTB file for SPEAR-MX8 with DP display and Cortex-M4 on SP8CustomBoard for kernel >= 5.10.72 (Yocto Hardknott) |
imx8qm-var-spear-sp8customboard-hdmi-m4.dtb | DTB file for SPEAR-MX8 with HDMI display and Cortex-M4 on SP8CustomBoard for kernel >= 5.10.72 (Yocto Hardknott) |
imx8qm-var-spear-sp8customboard-lvds.m4.dtb | DTB file for SPEAR-MX8 with LVDS display and Cortex-M4 on SP8CustomBoard for kernel >= 5.10.72 (Yocto Hardknott) |
imx8qm-var-som-dp-m4.dtb | DTB file for VAR-SOM-MX8 with DP display and Cortex-M4 on Symphony Board for kernel = 5.4.142 (Yocto Dunfell) |
imx8qm-var-som-hdmi-m4.dtb | DTB file for VAR-SOM-MX8 with HDMI display and Cortex-M4 on Symphony Board for kernel = 5.4.142 (Yocto Dunfell) |
imx8qm-var-som-lvds-m4.dtb | DTB file for VAR-SOM-MX8 with LVDS display and Cortex-M4 on Symphony Board for kernel = 5.4.142 (Yocto Dunfell) |
imx8qm-var-spear-dp-m4.dtb | DTB file for SPEAR-MX8 with DP display and Cortex-M4 on SP8CustomBoard for kernel = 5.4.142 (Yocto Dunfell) |
imx8qm-var-spear-hdmi-m4.dtb | DTB file for SPEAR-MX8 with HDMI display and Cortex-M4 on SP8CustomBoard for kernel = 5.4.142 (Yocto Dunfell) |
imx8qm-var-spear-lvds-m4.dtb | DTB file for SPEAR-MX8 with LVDS display and Cortex-M4 on SP8CustomBoard for kernel = 5.4.142 (Yocto Dunfell) |
Default M4 pins
Default M4 pins used by the demos are:
Function | SoC balls | VAR-SOM-MX8 pins | Symphony pins | SPEAR-MX8 pins | SP8CustomBoard pins | Notes |
---|---|---|---|---|---|---|
M40_UART0 RX / TX | AM44 / AU51 | N/A | N/A | J3.32 / J3.38 | J40 | SP8CustomBoard requires SW8 ON, SW9 OFF |
DMA_UART2 RX / TX | BE35 / BE37 | J1.175 / J1.124 | J18.5 / J18.3 | J1.80 / J1.82 | J26.19 /J26.17 | |
DMA_UART4 RX / TX | AR47 / AU53 | J1.115 / J1.171 | J18.9 / J18.7 | J3.34 / J3.29 | J20.2 / J20.4 | SPEAR-MX8 demos do not refer it |
FLEXCAN0 RX/TX | C5 / H6 | J1.46 / J1.44 | J16.18 / J16.20 | J4.79 / J4.80 | J26.1 / J26.3 | |
M41_I2C0 SCL/SDA | AR45 / AU49 | N/A | N/A | J1.9 / J3.36 | J20.18 / J20.20 | |
DMA_I2C0 SCL/SDA | BN9 / BN7 | J1.174 / J1.176 | J16.10 / J16.12 | J2.88 / J1.90 | J26.2 / J26.4 | |
DMA_SPI0 CS0 / SCK / SDI / SDO | BC1 / BB4 / BA5 / AY6 | J1.79 / J1.75 / J1.77 / J1.70 | J17.10 / J17.6 / J17.8 / J17.4 | J2.78 / j2.74 / J2.72 / J2.76 | J20.7 / J20.1 / J20.5 / J20.3 | |
ADC_IN6 | AL9 | J1.39 | J16.4 | J4.62 | J29.16 | VAR-SOM-MX8 requires enabling a buffer (refer to the datasheet) |
M40_TPM0 0 / 1 | AR47 / AU53 | J1.115 / J1.171 | J18.9 / J18.7 | J3.34 / J3.29 | J20.2 / J20.4 | pins are share with with DMA_UART4 |
GPIO3_IO06 | BA3 | J1.40 | J17.2 | J2.80 | J20.9 |
Available Demos
- cmsis_driver_examples/lpi2c/int_b2b_transfer/master
- cmsis_driver_examples/lpi2c/int_b2b_transfer/slave
- cmsis_driver_examples/lpi2c/edma_b2b_transfer/master
- cmsis_driver_examples/lpi2c/edma_b2b_transfer/slave
- cmsis_driver_examples/lpuart/edma_transfer
- cmsis_driver_examples/lpuart/interrupt_transfer
- cmsis_driver_examples/lpspi/edma_b2b_transfer/master
- cmsis_driver_examples/lpspi/edma_b2b_transfer/slave
- cmsis_driver_examples/lpspi/int_b2b_transfer/master
- cmsis_driver_examples/lpspi/int_b2b_transfer/slave
- demo_apps/hello_world
- driver_examples/canfd/loopback_transfer
- driver_examples/canfd/loopback
- driver_examples/canfd/interrupt_transfer
- driver_examples/edma/scatter_gather
- driver_examples/edma/memory_to_memory
- driver_examples/flexcan/loopback_edma_transfer
- driver_examples/flexcan/loopback_transfer
- driver_examples/flexcan/loopback
- driver_examples/flexcan/interrupt_transfer
- driver_examples/intmux
- driver_examples/lpadc/interrupt
- driver_examples/lpadc/polling
- driver_examples/lpi2c/edma_b2b_transfer/slave
- driver_examples/lpi2c/edma_b2b_transfer/master
- driver_examples/lpi2c/interrupt_b2b_transfer/slave
- driver_examples/lpi2c/interrupt_b2b_transfer/master
- driver_examples/lpi2c/polling_b2b_transfer/slave
- driver_examples/lpi2c/polling_b2b_transfer/master
- driver_examples/lpi2c/read_accel_value_transfer
- driver_examples/lpspi/edma_b2b_transfer/master
- driver_examples/lpspi/edma_b2b_transfer/slave
- driver_examples/lpspi/interrupt_b2b/master
- driver_examples/lpspi/interrupt_b2b/slave
- driver_examples/lpspi/interrupt_b2b_transfer/master
- driver_examples/lpspi/interrupt_b2b_transfer/slave
- driver_examples/lpspi/polling_b2b_transfer/master
- driver_examples/lpspi/polling_b2b_transfer/slave
- driver_examples/lpspi/polling_b2b_transfer/master
- driver_examples/lpspi/polling_b2b_transfer/slave
- driver_examples/lpit
- driver_examples/lpuart/edma_transfer
- driver_examples/lpuart/interrupt_rb_transfer
- driver_examples/lpuart/polling
- driver_examples/lpuart/interrupt_transfer
- driver_examples/lpuart/interrupt
- driver_examples/gpio/led_output
- driver_examples/rgpio/led_output
- driver_examples/sema42/uboot
- driver_examples/sema42/dual_core
- driver_examples/tpm/timer
- driver_examples/tpm/simple_pwm
- driver_examples/tpm/pwm_twochannel
- driver_examples/tpm/output_compare
- driver_examples/tpm/input_capture
- driver_examples/tpm/dual_edge_capture
- driver_examples/tpm/combine_pwm
- driver_examples/tstmr
- driver_examples/wdog32
- mmcau_examples/mmcau_api
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote
- multicore_examples/rpmsg_lite_str_echo_rtos
- multicore_examples/rpmsg_lite_pingpong_rtos/sdk_remote
- multicore_examples/rpmsg_lite_pingpong_rtos/sdk_master
- rtos_examples/freertos_hello
- rtos_examples/freertos_queue
- rtos_examples/freertos_sem
- rtos_examples/freertos_generic
- rtos_examples/freertos_tickless
- rtos_examples/freertos_mutex
- rtos_examples/freertos_lpuart
- rtos_examples/freertos_event
- rtos_examples/freertos_swtimer
- rtos_examples/freertos_lpi2c
- rtos_examples/freertos_lpspi_b2b/master
- rtos_examples/freertos_lpspi_b2b/slave
- rtos_examples/freertos_lpspi
Additional demos are available as reference code, but require HW/SW customization.
NXP Memory types
The SDK allow linking using 2 different memory types: DDR, TCM.
Here is available a short summary of memory areas used by Cortex-M4 as described in related linker file.
memory type | M4 if | M4 memory area | memory lentgh | linker file |
---|---|---|---|---|
DDR | 0 | 0x88000000-0x881FFFFF (code) 0x88200000-0x883FFFFF (data) 0x88400000-0x887FFFFF (data2) |
8MB (DDR) | MIMX8QM6xxxFF_cm4_core0_ddr_ram.ld |
DDR | 1 | 0x88800000-0x88BFFFFF (code) 0x88C00000-0x88FFFFFF (data) 0x89000000-0x8FFFFFFF (data2) |
120MB (DDR) | MIMX8QM6xxxFF_cm4_core1_ddr_ram.ld |
TCM | 0 | 0x1FFE0000-0x1FFFFFFF (code) 0x20000000-0x2001FFFF (data) 0x88000000-0x887FFFFF (data2) |
256kB (TCM) + 8MB (DDR) | MIMX8QM6xxxFF_cm4_core0_ram.ld |
TCM | 1 | 0x1FFE0000-0x1FFFFFFF (code) 0x20000000-0x2001FFFF (data) 0x88800000-0x8FFFFFFF (data2) |
256kB (TCM) + 120MB (DDR) | MIMX8QM6xxxFF_cm4_core1_ram.ld |
All linker files are locate in the armgcc folder of each demo.
After launching the build_all.sh command the following folder will be created in the armgcc folder
- ddr_debug: containing DDR binaries compiled in debug mode (not stripped: symbols available)
- ddr_release: containing DDR binaries compiled in release mode (stripped: no symbols available)
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
JTAG
The VAR-SOM-MX8 and SPEAR-MX8 exposes JTAG interface via an optional 10-pin header
Here is the pinout:
pin | signal | description | pin | signal (ball) | description |
---|---|---|---|---|---|
1 | JTAG_VREF | JTAG reference voltage (3.3V) | 2 | JTAG_TMS (AG35) | JTAG Mode Select |
3 | GND | Digital Ground | 4 | JTAG_TCK (AE31) | JTAG Clock |
5 | GND | Digital Ground | 6 | JTAG_TDO (AF32) | JTAG Data Out |
7 | RTCK | JTAG Return clock | 8 | JTAG_TDI (AH34) | JTAG Data In |
9 | JTAG_TRST_B_CONN | JTAG TAP reset | 10 | JTAG_SRST_B | JTAG System reset |
Please refer to SOM datasheet for further details.
Releases
mcuxpresso-2.5.2-mx8qm-v1.0
*HARDWARE_NAME = VAR-SOM-MX8
- SOC_HAS_SCU = true
- SOC_HAS_M40_M41 = true
- RELEASE_NAME = mcuxpresso-2.5.2-mx8qm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.5.2_V1.0_VAR-SOM-MX8
- YOCTO_RELEASE_LINK = RELEASE_SUMO_V1.2_VAR-SOM-MX8
- MCUXPRESSO_VERSION = 2.5.2
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.5.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-7-2018-q2-update
- BOARD_FOLDER = boards/som_mx8qm
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8_MEMORY-TYPES_NXP_SECTION
- JTAG_SECTION = VAR-SOM-MX8_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for i.MX 8QuadMax.pdf
- NXP_REFERENCE_KIT = IMX8QM-MEK
- SCFW_SOC = = mx8qm_b0
- SCFW_DEFINES_URL = = https://github.com/varigit/imx-sc-firmware/blob/1.2.8/src/scfw_export_mx8qm_b0/platform/board/mx8qm_var_som/board.c#L79
- IMX_MKIMAGE_SOC = = iMX8QM
mcuxpresso-2.8.0-mx8qm-v1.0
*HARDWARE_NAME = VAR-SOM-MX8
- SOC_HAS_SCU = true
- SOC_HAS_M40_M41 = true
- RELEASE_NAME = mcuxpresso-2.8.0-mx8qm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.8.0_V1.0_VAR-SOM-MX8
- YOCTO_RELEASE_LINK = RELEASE_SUMO_V1.2_VAR-SOM-MX8
- MCUXPRESSO_VERSION = 2.8.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.8.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/som_mx8qm
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8_MEMORY-TYPES_NXP_SECTION
- JTAG_SECTION = VAR-SOM-MX8_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for MEK-MIMX8QM.pdf
- NXP_REFERENCE_KIT = IMX8QM-MEK
- SCFW_SOC = = mx8qm_b0
- SCFW_DEFINES_URL = = https://github.com/varigit/imx-sc-firmware/blob/1.2.8/src/scfw_export_mx8qm_b0/platform/board/mx8qm_var_som/board.c#L79
- IMX_MKIMAGE_SOC = = iMX8QM
- SDK_GIT_TAG = som-mx8qm_mcuxpresso-2.8.0_v10
- RELEASE_DATE = 02/19/2021
- SUPPORTED_REV_SOM = v1.1 and higher
- SUPPORTED_REV_CARRIER = v1.1 and higher
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8-v1.1
mcuxpresso-2.9.0-mx8qm-v1.0
*HARDWARE_NAME = VAR-SOM-MX8
- SOC_HAS_SCU = true
- SOC_HAS_M40_M41 = true
- RELEASE_NAME = mcuxpresso-2.9.0-mx8qm-v1.0
- RELEASE_LINK = MCUXPRESSO_2.9.0_V1.0_VAR-SOM-MX8
- YOCTO_RELEASE_LINK = RELEASE_SUMO_V1.2_VAR-SOM-MX8
- MCUXPRESSO_VERSION = 2.9.0
- SDK_PATH = ~/var-mcuxpresso
- SDK_GIT_URL = https://github.com/varigit/freertos-variscite
- SDK_GIT_BRANCH = mcuxpresso_sdk_2.9.x-var01
- TOOLCHAIN_URL = https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_BZ2_NAME = gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
- TOOLCHAIN_FOLDER = gcc-arm-none-eabi-9-2020-q2-update
- BOARD_FOLDER = boards/som_mx8qm
- DOCS_FOLDER = docs
- PINS_SECTION = VAR-SOM-MX8_PINS_SECTION
- DEMOS_SECTION = VAR-SOM-MX8_DEMOS_SECTION
- DTBS_SECTION = VAR-SOM-MX8_DTBS_SECTION
- MEMORY_TYPES_SECTION = VAR-SOM-MX8_MEMORY-TYPES_NXP_SECTION
- JTAG_SECTION = VAR-SOM-MX8_JTAG_SECTION
- NXP_USER_GUIDE = Getting Started with MCUXpresso SDK for MEK-MIMX8QM.pdf
- NXP_REFERENCE_KIT = IMX8QM-MEK
- SCFW_SOC = = mx8qm_b0
- SCFW_DEFINES_URL = = https://github.com/varigit/imx-sc-firmware/blob/1.2.8/src/scfw_export_mx8qm_b0/platform/board/mx8qm_var_som/board.c#L79
- IMX_MKIMAGE_SOC = = iMX8QM
- SDK_GIT_TAG = som-mx8qm_mcuxpresso-2.9.0_v10
- RELEASE_DATE = 03/15/2021
- SUPPORTED_REV_SOM = v1.1 and higher
- SUPPORTED_REV_CARRIER = v1.1 and higher
- YOCTO_RELEASE_TAG = dunfell-fslc-5.4-2.1.x-mx8-v1.1
~/var-mcuxpresso/freertos-variscite/devices/MIMX8QM6
VAR-SOM-MX93
Sections
Available dtbs - VAR-SOM-MX93
To allow the Cortex-M33 to access shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, by selecting the right version with the symbolic link in the /boot folder of the booting media.
These device trees contain m33 label in their name.
The below table lists an example dtb blob file name for VAR-SOM-MX93 (on the Symphony Board) with support for the M33 for each kernel version / Yocto release:
File Name |
Description |
---|---|
imx93-var-som-symphony-m33.dtb | VAR-SOM-MX93 (Rev 2.x+) device tree blob for kernel = 6.1.1 (Yocto Langdale) on Symphony-Board 1.4a and above. |
imx93-var-som-1.x-symphony-m33.dtb | VAR-SOM-MX93 (Rev 1.x) device tree blob for kernel = 6.1.1 (Yocto Langdale) on Symphony-Board 1.4a and above. |
This device tree disables some of the base device tree nodes in order to avoid conflicts between the Cortex-A55 processors and Cortex-M33.
For the full list of device tree blob files, refer to the "Build Results" section in the appropriate wiki page for the specific Yocto/Debian release you are using.
Available dtbs - VAR-SOM-MX93/DART-MX93
To allow the Cortex-M33 to access shared resources without experiencing Linux kernel conflicts, a dedicated device tree must be loaded, by selecting the right version with the symbolic link in the /boot folder of the booting media.
These device trees contain m33 label in their name.
The below table lists dtb blob file names for VAR-SOM-MX93 (on the Symphony Board) and DART-MX93 (on DT8MCustomBoard) with support for the M33:
File Name |
Description |
---|---|
imx93-var-som-symphony-m33.dtb | VAR-SOM-MX93 (Rev 2.x+) device tree blob for Symphony-Board 1.4a and above. |
imx93-var-dart-dt8mcustomboard-m33.dtb | DART-MX93 device tree blob for DT8MCustomBoard 2.0 and above. |
These device trees disable some of the base device tree nodes in order to avoid conflicts between the Cortex-A55 processors and Cortex-M33.
For the full list of device tree blob files, refer to the "Build Results" section in the appropriate wiki page for the specific Yocto/Debian release you are using.
Default M33 pins - VAR-SOM-MX93
Default M33 pins used by the demos are:
Function | SoC balls | VAR-SOM-MX8 Pins | Symphony Pins | Notes |
---|---|---|---|---|
UART7 RX/TX | M21 / M20 | J1.175 / J1.124 | J18.5 / J18.3 | |
TPM6-CH3 - PWM Output or Input Capture | W21 | J1.69 | J18.2 | |
CAN1 RX/TX | J17 / G17 | J1.46 / J1.44 | J16.18 / J16.20, CANL / CANH levels (CAN transceiver mounted!) | If enabled, CAN devices will no longer visible from Linux |
LPSPI6 CS0/SCK/SDI/SDO | J21 / K21 / J20 / K20 | J1.39 / J1.43 / J1.41 / J1.45 | J16.4 / J16.2 / J16.6 / J16.8 | If enabled, SPI6 devices will no longer be visible from Linux |
LPI2C7 SCL/SDA | L21 / L20 | J1.174 / J1.176 | J16.10 / J16.12 | If enabled, I2C7 devices will no longer be visible from Linux |
GPIO GPIO4.28 | U4 | J1.75 | J17.6 | GPIO pin is 1.8V IO level! |
Default M33 pins - VAR-SOM-MX93/DART-MX93
Default M33 pins used by the demos are:
Function | SoC balls | DART-MX93 Pins | DT8MCB Pins | VAR-SOM-MX93 Pins | Symphony Pins | Notes |
---|---|---|---|---|---|---|
UART7 RX/TX | M21 / M20 | J2.87 / J2.89 | J12.11 / J12.13 | J1.175 / J1.124 | J18.5 / J18.3 | |
TPM6-CH3 - PWM Output or Input Capture | W21 | J2.54 | J13.17 | J1.69 | J18.2 | |
CAN1 RX/TX | J17 / G17 | J2.56 / J2.50 | J16.9 / J16.7 on DT8MCB rev 2.x, CANL/CANH levels (CAN transceiver mounted!) | J1.46 / J1.44 | J16.18 / J16.20, CANL / CANH levels (CAN transceiver mounted!) | If enabled, CAN devices will no longer visible from Linux |
LPSPI5 CS0/SCK/SDI/SDO | R18 / T21 / R17 / T20 | J2.40 / J2.44 / J2.34 / J2.36 | J13.8 / J13.18 / J13.10 / J13.12 | If enabled, SPI5 devices will no longer be visible from Linux | ||
LPSPI6 CS0/SCK/SDI/SDO | J21 / K21 / J20 / K20 | J1.39 / J1.43 / J1.41 / J1.45 | J16.4 / J16.2 / J16.6 / J16.8 | If enabled, SPI6 devices will no longer be visible from Linux | ||
LPI2C5 SCL/SDA | U20 / U18 | J3.46 / J3.42 | J12.18 / J12.20 | If enabled, I2C5 devices will no longer be visible from Linux | ||
LPI2C7 SCL/SDA | L21 / L20 | J1.174 / J1.176 | J16.10 / J16.12 | If enabled, I2C7 devices will no longer be visible from Linux | ||
GPIO GPIO4.01 | AA10 | J1.11 | J12.14 | |||
GPIO GPIO4.28 | U4 | J1.75 | J17.6 | GPIO pin is 1.8V IO level! |
Available Demos
- demo_apps/ethosu_apps_rpmsg/ethosu_apps_rpmsg
- demo_apps/hello_world/hello_world
- driver_examples/canfd/efifo_interrupt_transfer/canfd_efifo_interrupt_transfer
- driver_examples/canfd/interrupt_transfer/canfd_interrupt_transfer
- driver_examples/canfd/loopback_transfer/canfd_loopback_transfer
- driver_examples/canfd/loopback/canfd_loopback
- driver_examples/canfd/ping_pong_buffer_transfer/canfd_ping_pong_buffer_transfer
- driver_examples/edma4/channel_link/edma4_channel_link
- driver_examples/edma4/interleave_transfer/edma4_interleave_transfer
- driver_examples/edma4/memory_to_memory/edma4_memory_to_memory
- driver_examples/edma4/memory_to_memory_transfer/edma4_memory_to_memory_transfer
- driver_examples/edma4/memset/edma4_memset
- driver_examples/edma4/ping_pong_transfer/edma4_ping_pong_transfer
- driver_examples/edma4/scatter_gather/edma4_scatter_gather
- driver_examples/edma4/wrap_transfer/edma4_wrap_transfer
- driver_examples/flexcan/efifo_interrupt_transfer/flexcan_efifo_interrupt_transfer
- driver_examples/flexcan/interrupt_transfer/flexcan_interrupt_transfer
- driver_examples/flexcan/loopback_edma_transfer/flexcan_loopback_edma_transfer
- driver_examples/flexcan/loopback_transfer/flexcan_loopback_transfer
- driver_examples/flexcan/loopback/flexcan_loopback
- driver_examples/flexcan/ping_pong_buffer_transfer/flexcan_ping_pong_buffer_transfer
- driver_examples/lpi2c/interrupt_b2b_transfer/master/lpi2c_interrupt_b2b_transfer_master
- driver_examples/lpi2c/interrupt_b2b_transfer/slave/lpi2c_interrupt_b2b_transfer_slave
- driver_examples/lpi2c/polling_b2b/master/lpi2c_polling_b2b_master
- driver_examples/lpi2c/polling_b2b/slave/lpi2c_polling_b2b_slave
- driver_examples/lpit/chained_channel/lpit_chained_channel
- driver_examples/lpit/single_channel/lpit_single_channel
- driver_examples/lpspi/interrupt_b2b/master/lpspi_interrupt_b2b_master
- driver_examples/lpspi/interrupt_b2b/slave/lpspi_interrupt_b2b_slave
- driver_examples/lpspi/interrupt_b2b_transfer/master/lpspi_interrupt_b2b_transfer_master
- driver_examples/lpspi/interrupt_b2b_transfer/slave/lpspi_interrupt_b2b_transfer_slave
- driver_examples/lpspi/polling_b2b/master/lpspi_polling_b2b_master
- driver_examples/lpspi/polling_b2b_transfer/slave/lpspi_polling_b2b_transfer_slave
- driver_examples/edma/memory_to_memory/dma3_memory_to_memory
- driver_examples/edma/scatter_gather/dma3_scatter_gather
- driver_examples/flexcan/loopback_transfer/flexcan_loopback_transfer
- driver_examples/flexcan/loopback/flexcan_loopback
- driver_examples/flexcan/ping_pong_buffer_transfer/flexcan_ping_pong_buffer_transfer
- driver_examples/flexcan/efifo_interrupt_transfer/flexcan_efifo_interrupt_transfer
- driver_examples/flexcan/interrupt_transfer/flexcan_interrupt_transfer
- driver_examples/rgpio/led_output/rgpio_led_output
- driver_examples/lpi2c/polling_b2b/master/lpi2c_polling_b2b_master
- driver_examples/lpi2c/polling_b2b/slave/lpi2c_polling_b2b_slave
- driver_examples/lptmr/lptmr
- driver_examples/lpuart/interrupt_rb_transfer/lpuart_interrupt_rb_transfer
- driver_examples/lpuart/interrupt_transfer/lpuart_interrupt_transfer
- driver_examples/lpuart/interrupt/lpuart_interrupt
- driver_examples/lpuart/polling/lpuart_polling
- driver_examples/tstmr/tstmr
- multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote/rpmsg_lite_pingpong_rtos_linux_remote
- multicore_examples/rpmsg_lite_str_echo_rtos/rpmsg_lite_str_echo_rtos_imxcm33
- rtos_examples/freertos_event/freertos_event
- rtos_examples/freertos_generic/freertos_generic
- rtos_examples/freertos_hello/freertos_hello
- rtos_examples/freertos_lpi2c_b2b/master/freertos_lpi2c_b2b_master
- rtos_examples/freertos_lpi2c_b2b/slave/freertos_lpi2c_b2b_slave
- rtos_examples/freertos_lpspi_b2b/master/freertos_lpspi_b2b_master
- rtos_examples/freertos_lpspi_b2b/slave/freertos_lpspi_b2b_slave
- rtos_examples/freertos_mutex/freertos_mutex
- rtos_examples/freertos_queue/freertos_queue
- rtos_examples/freertos_sem/freertos_sem
- rtos_examples/freertos_swtimer/freertos_swtimer
Additional demos may be provided on this platform in a future release.
Building Using Yocto
In Yocto Dunfell and newer, Variscite provides a Yocto recipe for building and installing firmware into the Yocto image. Note, the examples below apply to the original release of this recipe in Dunfell and thus some of the syntax (such as the overrides) may need to be updated for newer versions.
https://github.com/varigit/meta-variscite-fslc/tree/dunfell/recipes-bsp/freertos-variscite
This recipe installs the following firmware files: |- | /boot/cm_<demo name>.bin.debug || TCM || U-Boot |- | /lib/firmware/cm_<demo name>.elf.debug || TCM || Linux Remoteproc Framework
If you have modified freertos-variscite in your own Git repository and kept the same directory structure, you can easily build your custom firmware by creating a bbappend file:
$ mkdir -p <your-layer>/recipes-bsp/freertos-variscite $ nano <your-layer>/recipes-bsp/freertos-variscite/freertos-variscite_2.13.x.bbappend
Append SRC_URI and SRCREV to use your freertos-variscite Git repository
SRC_URI:remove = "git://github.com/varigit/freertos-variscite.git;protocol=git;branch=${MCUXPRESSO_BRANCH};" SRC_URI:append = " <your Git repository>" SRCREV = "<your Git commit id>"
Append CM_DEMOS to build your firmware. For example, to build rtos_examples/freertos_hello:
CM_DEMOS:append = "rtos_examples/freertos_hello"
Rebuild fsl-image-gui:
$ bitbake -c cleansstate freertos-variscite && bitbake fsl-image-gui
The firmware binary files should now be installed to /boot/ and elf files to /lib/firmware/
Running a demo
Running a demo from U-Boot
To assist in loading M33 firmware from U-Boot prior to Linux boot, Variscite has created a dedicated set of U-Boot environment commands.
To enable Cortex-M U-Boot auto-loading:
=> setenv use_m33 yes; saveenv
To disable Cortex-M U-Boot auto-loading:
=> setenv use_m33 no; saveenv
Note that the Cortex A55s and M33 have a different memory addressing "view" that is documented in the reference manual. Additionally, the bootaux command for the M33 uses secure aliases from the M33's point of view. Thus, two variables must be set properly in order to set the loading address (defaults used in the example below):
=> setenv m33_addr 0x201E0000 => setenv m33_addr_auxview 0x1FFE0000 => saveenv
To set the name of the Cortex-M binary
=> setenv m33_bin cm_hello_world.bin; saveenv
After enabling as above, the U-Boot boot command will handle loading the Cortex-M firmware when the system begins the boot process. For testing, it is possible to invoke the Cortex-M33 boot process manually:
=> run loadm33bin && run runm33bin
After booting in Linux, the M33 will be listed as in the "attached" state by remoteproc:
# cat /sys/class/remoteproc/remoteproc0/state attached
Additional details and step by step procedure to run each of the demos is available online or in the following document:
~/var-mcuxpresso/freertos-variscite/docs/Getting Started with MCUXpresso SDK for MEK-MIMX8QM.pdf
Please refer to the Yocto Scripts section below for more information
Running a demo from Linux
The Linux remoteproc framework can be used to load the Cortex-M33 firmware from Linux userspace.
Increase kernel loglevel while debugging:
# sysctl kernel.printk=7;
If the state is 'running', stop the Cortex-M33
# echo stop > /sys/class/remoteproc/remoteproc0/state
Load new firmware
# echo cm_hello_world.elf > /sys/class/remoteproc/remoteproc0/firmware
Run the new firmware
# echo start > /sys/class/remoteproc/remoteproc0/state
Please refer to the Yocto Scripts section below for more information
Running a Demo using Yocto Scripts
In Yocto, Variscite provides scripts to simplify loading firmware via U-Boot or Linux:
Script | Description |
---|---|
/etc/remoteproc/variscite-rproc-u-boot | Configure U-Boot to load firmware on boot |
/etc/remoteproc/variscite-rproc-linux | Load and run firmware using Linux remoteproc framework |
Examples
variscite-rproc-u-boot example on imx93-var-som:
root@imx93-var-som:~# /etc/remoteproc/variscite-rproc-u-boot -f /boot/cm_hello_world.bin.release Configuring for TCM memory + fw_setenv m33_addr 0x201E0000 Cannot read environment, using default + fw_setenv fdt_file imx93-var-som-symphony-m33.dtb + fw_setenv use_m33 yes + fw_setenv m33_bin cm_hello_world.bin.release + fw_setenv kernelargs ' clk_ignore_unused' + fw_setenv m33_addr_auxview 0x1FFE0000 Finished: Please reboot, the m33 firmware will run during U-Boot
variscite-rproc-linux example on imx93-var-som:
root@imx93-var-som:~# /etc/remoteproc/variscite-rproc-linux -f /lib/firmware/cm_hello_world.elf.release Cortex-M: Loading cm_hello_world.elf.release Cortex-M: Starting [ 974.434796] remoteproc remoteproc0: powering up imx-rproc [ 974.442420] remoteproc remoteproc0: Booting fw image cm_hello_world.elf.release, size 99776 [ 974.451172] remoteproc remoteproc0: header-less resource table
NXP Memory types
The SDK currently allows linking only out of TCM.
Below is a short summary of memory areas used by Cortex-M33 as described in related linker file:
Memory Type | M33 Memory Area | A55 Memory Area | Memory Length | Linker File |
---|---|---|---|---|
TCM | 0x0FFE0000 - 0x0FFFFFFF (code) 0x20000000 – 0x2001FFFF (data) |
0x201E0000 – 0x201FFFFF (code) 0x20200000 – 0x2021FFFF (data) |
128kB (Code TCM) + 128kB (System TCM) | MIMX9352_cm33_ram.ld |
All linker files are located in the armgcc folder of each demo. Please consult the linker file for the actual memory used by each demo.
After launching the build_all.sh command the following folder will be created in the armgcc folder
- debug: containing TCM binaries compiled in debug mode (not stripped: symbols available)
- release: containing TCM binaries compiled in release mode (stripped: no symbols available)
JTAG
The JTAG interface is not exposed directly on the VAR-SOM-MX93 but the associated signals are exposed via the J1 SOM connector, which are shown in the table below:
Signal | SoC balls | VAR-SOM-MX93 Pins | Symphony Pins | Segger Adapter Pins |
---|---|---|---|---|
TCLK_SWCLK | Y1 | J1.51 | J18.8 | 9 |
TDI | W1 | J1.53 | J18.6 | 5 |
TDO_TRACESWO | Y2 | J1.52 | J18.4 | 13 |
TMS_SWDIO | W2 | J1.50 | J18.10 | 7 |
Vtref | J3.2 | 1 | ||
GND | J3.20 | 4 |
Please refer to SoM datasheet for further details.
The JTAG interface is not exposed directly on the VAR-SOM-MX93 / DART-MX93 but the associated signals are exposed via the J1 connector for the VAR-SOM-MX93 and via the J2 connector for the DART-MX93. They are shown in the table below:
Signal | SoC balls | VAR-SOM-MX93 Pins | Symphony Pins | DART-MX93 Pins | DT8MCB Pins | Segger Adapter Pins |
---|---|---|---|---|---|---|
TCLK_SWCLK | Y1 | J1.51 | J18.8 | J2.26 | J12.7 | 9 |
TDI | W1 | J1.53 | J18.6 | J2.24 | J12.5 | 5 |
TDO_TRACESWO | Y2 | J1.52 | J18.4 | J2.20 | J12.1 | 13 |
TMS_SWDIO | W2 | J1.50 | J18.10 | J2.22 | J12.3 | 7 |
Vtref | J3.2 | J13.3 | 1 | |||
GND | J3.20 | J13.4 | 4 |
Please refer to SoM datasheet for further details.
Releases
mcuxpresso-2.13.1-mx93-v1.0
mcuxpresso-2.13.1-mx93-v1.1
mcuxpresso-2.15.0-mx93-v1.0
mcuxpresso-2.15.0-mx93-v1.1
Release Notes
RN_MCUXPRESSO_2.13.1_V1.0_VAR-SOM-MX93
|-
| Release 1.0 ||
|-
| Initial release || MCUXPRESSO 2.13.1 release for the Cortex-M33 core on the VAR-SOM-MX93
|-
| Examples provided and tested on many peripherals: ||
- CAN
- EDMA
- LPUART
- TPM/PWM
- TSTMR
See developers guide for a full list of available demos.
|-
RN_MCUXPRESSO_2.13.1_V1.1_VAR-SOM-MX93
|-
| Release 1.1 ||
|-
| Several additional examples provided for many peripherals: ||
- CAN (board to board examples)
- LPSPI
- LPI2C
- GPIO
See developers guide for a full list of available demos.
|-
RN_MCUXPRESSO_2.15.0_V1.0_VAR-SOM-MX93
|-
| Release 1.0 ||
|-
| Initial release || MCUXPRESSO 2.15.0 release for the Cortex-M33 core on the VAR-SOM-MX93
|- style="vertical-align:top;"
| Examples provided and tested on many peripherals: ||
- CAN (board to board examples)
- LPSPI
- EDMA
- LPI2C
- LPUART
- GPIO
- TPM/PWM
- TSTMR
See developers guide for a full list of available demos.
Click here for a full detailed change list.
|-
RN_MCUXPRESSO_2.15.0_V1.1_VAR-SOM-MX93
|-
| Release 1.1 ||
|- style="vertical-align:top;"
| Add initial support for DART-MX93 || MCUXPRESSO 2.15.0 release for the Cortex-M33 core on the DART-MX93
- CAN (board to board examples)
- LPSPI
- EDMA
- LPI2C
- LPUART
- GPIO
- TPM/PWM
- TSTMR
See developers guide for a full list of available demos.
Click here for a full detailed change list.
|-
| Update macros and readme files for the VAR-SOM-MX93 release || See 8deddc3fc...78afa00fe
|-
| Known Issues ||
|-
| driver_examples/rgpio/led_output demo does not work properly on U-boot on the DART-MX93 || When running on U-boot, it stops working right after Linux finishes booting
|-