Inquiry on Zephyr Development for i.MX8ULP EVK (Core M33)

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Inquiry on Zephyr Development for i.MX8ULP EVK (Core M33)

636 次查看
sujitp
Contributor I

Hello NXP Team,

I am currently working on a project where I need to run Zephyr RTOS on the Core M33 of the i.MX8ULP EVK. I wanted to check if there is any existing development or reference available for running Zephyr on the i.MX8ULP’s M33 core.

Specifically, I am looking for:

  1. Official Zephyr support: Is Zephyr officially supported on the M33 core of i.MX8ULP? If so, are there any existing board configurations or development resources available?

  2. Existing work or community contributions: Are there any ongoing development efforts or community contributions that might help in running Zephyr on this platform?

  3. Reference projects: Any reference projects, example applications, or documentation that could assist in porting Zephyr to this platform.

  4. Known limitations: Are there any known limitations or challenges when using Zephyr on the i.MX8ULP M33 core?

Any guidance or pointers towards relevant resources or documentation would be greatly appreciated.

Thank you in advance for your help!

0 项奖励
回复
6 回复数

80 次查看
Iulia_Prodan
NXP Employee
NXP Employee

Official Zephyr support: No, we don't have M33 support for i.MX8ULP.
For the i.MX8ULP we have support for HiFi4 DSP core (ADSP) - https://github.com/zephyrproject-rtos/zephyr/tree/main/soc/nxp/imx/imx8ulp

Existing work or community contributions: Example on how to run Zephyr on DSP (see https://www.nxp.com/docs/en/application-note/AN13970.pdf) can be a starting point.
On how to add the M33 support in Zephyr one can look on other examples like M7 support for i.MX95 (https://github.com/zephyrproject-rtos/zephyr/pull/74920/commits - only a few of these patches are needed -focus on M7 support only) or M33 support on i.MX943 (see https://github.com/zephyrproject-rtos/zephyr/pull/91107/commits).

Reference projects: The above mentioned PRs, reference manual or other docs from here , i.MX Linux User Guide, Application Note AN5317

Known limitations: N/A

0 项奖励
回复

44 次查看
sujitp
Contributor I
I wanted to share that I’ve successfully compiled and booted my custom board configuration for the i.MX8ULP using Zephyr. The board is now recognized and building cleanly
However, I’ve run into a blocking issue during early initialization:

The UPOWER_CheckReqWithArgs() function currently depends on an interrupt-driven callback (uPower_IRQHandler) to set a flag (callbackStatus). Since the Zephyr kernel isn’t initialized at this stage, interrupts are disabled, and the call gets stuck in a while loop waiting for that flag.

Complication:
If I enable interrupts early to allow the IRQ to fire, I encounter UsageFaults and stack corruption, likely due to premature access or context mismatch.

Goal:
I’d like to remove the interrupt dependency and handle uPower requests in polling mode only during early boot. Ideally, I want to replicate what the IRQ does—checking the status manually and setting the flag—without relying on interrupt context.

Is there any existing driver for upower without interrupt?
0 项奖励
回复

45 次查看
sujitp
Contributor I
Hi all,
Thanks for the earlier guidance. I wanted to share that I’ve successfully compiled and booted my custom board configuration for the i.MX8ULP using Zephyr. The board is now recognized and building cleanly, which is a big step forward.
However, I’ve run into a blocking issue during early initialization:
🧩 Problem:
The UPOWER_CheckReqWithArgs() function currently depends on an interrupt-driven callback (uPower_IRQHandler) to set a flag (callbackStatus). Since the Zephyr kernel isn’t initialized at this stage, interrupts are disabled, and the call gets stuck in a while loop waiting for that flag.
Complication:
If I enable interrupts early to allow the IRQ to fire, I encounter UsageFaults and stack corruption, likely due to premature access or context mismatch.
Goal:
I’d like to remove the interrupt dependency and handle uPower requests in polling mode only during early boot. Ideally, I want to replicate what the IRQ does—checking the status manually and setting the flag—without relying on interrupt context.
🧠 What I Need:
- Guidance on how to safely poll for uPower request completion.
- Reference to any internal status flags or registers that indicate request completion.
- Any known caveats or best practices for using uPower in polling mode on i.MX8ULP during early Zephyr boot.
Appreciate any insights or suggestions from those who’ve worked with uPower or early-stage Zephyr bring-up on NXP platforms.
Thanks again!
0 项奖励
回复

614 次查看
danielchen
NXP TechSupport
NXP TechSupport

Hi Sujitp:

 

According to https://docs.zephyrproject.org/latest/boards/nxp/index.html

The supported NXP i.MX MPU boards includes:

...

danielchen_0-1751008257226.png

...

unfortunately i.MX 8ULP is not listed here.

I would suggest you refer to AN13970, it described running Zephyr on Arm Cortes-A or Cortex-M core, and how to implement it. 

 

Regards

Daniel

0 项奖励
回复

605 次查看
sujitp
Contributor I

AN13970 is all about HiFi4-DSP it does not have anything related to im8ulp core m33

0 项奖励
回复

538 次查看
danielchen
NXP TechSupport
NXP TechSupport

Hi @sujitp :

 

i.MX 8ULP is not in our current plans.  Our focus has been on enabling Zephyr on Cortex-A core.

Sorry there is no existing documents for that.   Maybe we will consider 8ULP in future, but need to know more about the requirements to make that assessment.

 

Regards

Daniel

0 项奖励
回复