I am working with an i.MX8MP on a Dahlia carrier board and currently facing a challenge: I need to keep the A53 cores powered off while accessing current measurements from the INA219, and then store or display this data. I am exploring possible approaches to achieve this.
Hi, I’m the Toradex AI Assistant.
I might make mistakes or occasionally get you wrong. Our support team will step in if needed.
I’d be glad to help! To provide the most accurate guidance for accessing INA219 data through the M7 microcontroller on your iMX8MP setup, could you let me know which OS and version you are using?
For example, are you running:
- Hardware: Verdin iMX8M Plus on Dahlia Carrier Board
- OS: Torizon OS 6, BSP 7, Yocto 7.2.0, or another version?
- Implementation approach: Are you planning to use FreeRTOS, Zephyr, or another RTOS on the M7 core?
You can use the tdx-info command to get detailed information about your current setup. More details are available at: Getting Device Information with Tdx-Info | Toradex Developer Center
Common platforms to consider:
- Hardware: Verdin i.MX8M Plus, Dahlia Carrier Board, Ivy Carrier Board
- OS: Torizon OS 6.8.2, BSP 7, Yocto 7.2.0
- Implementation: Device tree overlays, RemoteProc, RPMsg communication
- Integration: I2C access, power management, heterogeneous multicore processing
This information will help me provide specific guidance for your INA219 power measurement setup with the M7 core handling the data while keeping the A53 cores powered down.
Best regards, Toradex AI Assistant.
If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.
My current setup is as follows:
Hardware: Verdin i.MX8M Plus on Dahlia Carrier Board
OS: Yocto / Toradex BSP 7.2.0
Target use case: I want to access the INA219 current measurements from the M7 core while keeping the A53/Linux side powered off or inactive as much as possible.
For the M7 side, I am currently considering a bare-metal or Zephyr-based approach, depending on what is most suitable for direct I2C access and low-power operation.
My main objective is to understand:
-
Whether the INA219 can be accessed directly from the M7 core on this platform
-
Whether I need to unbind or completely disable the Linux I2C driver/device tree ownership for the bus before handing control to M7
-
What the recommended method is to read and store/display the current measurement while the A53 cores remain off
-
Whether this is feasible using RemoteProc / RPMsg, or whether it requires a different setup since my intention is to keep Linux inactive
In short, I am trying to build a low-power measurement setup where the M7 handles INA219 readings independently of Linux.
Thank you for the detailed setup information! Your goal of using the M7 core for independent INA219 current measurements while keeping the A53/Linux side powered down is achievable on the Verdin iMX8M Plus. Let me address your questions based on the available information:
I2C Access from M7 Core
The Verdin iMX8M Plus features multiple I2C buses, and you can access I2C devices directly from the M7 core(1). According to the I2C documentation, the I2C4 bus is designed for general use and features the I2C_1_SDA and I2C_1_SCL signals(2).
For the Verdin module family, you can identify the available I2C buses using:
# ls -l /dev/verdin-i2c*
This will show the pin-compatible I2C interfaces and their corresponding device nodes(1).
Device Tree Configuration Considerations
When working with heterogeneous multicore processing where the M7 handles peripherals independently, you’ll need to consider device tree modifications(2). The standard approach involves:
- Creating device tree overlays to configure pin multiplexing for your specific I2C bus
- Managing peripheral ownership between the A53 (Linux) and M7 cores
For device tree overlay creation, you can follow the structure documented in the overlay writing guide(3):
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include "k3-pinctrl.h"
/ {
compatible = "toradex,verdin-imx8mp";
};
Low-Power Independent Operation
Your approach of using the M7 core for independent operation while keeping the A53 cores powered down is a valid heterogeneous multicore processing scenario(2). The M7 core can handle real-time tasks like sensor monitoring while the main processor remains inactive.
RemoteProc/RPMsg Considerations
Based on the community discussion, there are some considerations for RPMsg communication on Torizon OS 7.x with the Verdin iMX8M Plus(4). However, since your goal is to keep Linux inactive, RemoteProc/RPMsg may not be the ideal approach for your use case. Instead, consider:
- Bare-metal or Zephyr-based M7 implementation for direct I2C access
- Independent data storage on the M7 side (e.g., using external memory or logging mechanisms)
- Periodic wake-up of the A53 cores only when data transfer is needed
Recommended Approach
For your low-power measurement setup:
- Configure the I2C bus through device tree overlays to ensure proper pin multiplexing
- Disable Linux I2C driver ownership for the specific bus you’ll use with M7
- Implement bare-metal or Zephyr-based I2C drivers on the M7 core
- Use independent storage/display mechanisms that don’t require Linux interaction
The exact device tree modifications and M7 firmware implementation will depend on which I2C bus you choose for the INA219 connection and your specific power management requirements.
Best regards, Toradex AI Assistant.
If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.
All of this is for linux, I want to access it through M7 running zephyr
Sure, you can access it through the M7, but you will need to disable verdin_i2c_1 (which corresponds to SoC I2C4) in the device tree. Otherwise, Linux will crash if the M7 holds access to the same I2C bus.
Please note that with this configuration, other I2C-connected devices on the Dahlia board—such as the audio codec, EEPROM, temperature sensor, etc.—will not be accessible from Linux either.