The project structure

Regardless of your native OS (Windows or Linux), you should end up with the following project structure:

.
├── README
├── boot
├── doc
├── docker
├── samples
├── scripts
├── src
└── west.yml

where:

  1. boot: contains all of the file/binaries required for booting the board (application binary excluded).

  2. doc: contains the documentation-related files

  3. docker: contains the Docker-related configuration files

  4. samples: contains the source code for the sample applications

  5. scripts: contains the utility scripts used for setting up the development environment

  6. src: starting point for your application.

  7. west.yml: west manifest file

The manifest file

This west.yml file is used to tell west where to clone the required repositories (i.e. Zephyr and the NXP HAL) and has the following content:

manifest:
  version: "0.13"

  remotes:
    - name: zephyrproject
      url-base: https://github.com/nxp-upstream

  projects:
    - name: zephyr
      remote: zephyrproject
      revision: nxpcup-2026
      import:
        name-whitelist:
          - hal_nxp

Based on its content, we can see that the Zephyr repository is cloned from https://github.com/nxp-upstream/zephyr and uses the nxpcup-2026 branch. This is a fork of the main branch from the official Zephyr repository with some additional patches applied on it for temporary fixes/workarounds that need to be upstreamed.

You should always run west update each time you start developing to make sure that you’re using the latest version of the Zephyr repository since additional fixes may be added to the nxpcup-2026 branch.

If you encounter an issue that’s related to Zephyr, please make sure to create a GitHub issue under the FRDM-IMX93 for NXP CUP project repository first as described in Issues and contributions.

The samples directory

This directory is made up of several sub-directories as shown below:

samples
├── hbridge
├── hello_world
├── pixy2
└── servo

Each of these sub-directories corresponds to a sample application. The purpose of such an application is to demonstrate certain functionalities and help in checking if the hardware setup is sane.

See Supported samples for the list of supported samples.

The src directory

See Writing your own application for more information on the src directory.