Hi ,
the specific hardware and software we are working on.
Verdin iMX8M Plus quad 4GB WB IT V1.1A
Verdin Development Carrier Board V1.1A
Torizon OS 5.7.0-build
I’m working on RPMsg (IPC) and am encountering a couple of issues:
Issue with Switching Examples: I followed the instructions from this link and successfully ran the hello_world example. However, when I switch to another example, the hello_world example continues to run. I only changed this line and saved the environment:
Currently, I rename the other file as hello_world.bin to get it working. Could you provide a fixed solution for this issue?
2.* Issue with rpmsg_lite_str_echo_rtos: I tried running rpmsg_lite_str_echo_rtos, but it doesn’t function correctly. While debugging, it gets stuck in the rpmsg_lite_wait_for_link_up function in main_remote.c. I haven’t changed the device tree, and running the following command shows:
Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!
Did you like my answer?
Hi, Debashis
Issue 1: Switching Examples
The issue you’re encountering with switching examples is likely due to the environment variable not being updated correctly. Here’s a step-by-step guide to ensure the correct binary is loaded:
Set the Environment Variable:
Make sure you set the environment variable correctly to point to the new binary. For example:
Verify the Environment Variable:
After setting the environment variable, verify it to ensure it has been updated:
printenv cm_image
Reboot the System:
Reboot the system to ensure the new settings take effect:
reboot
If the issue persists, you might want to manually load the binary using U-Boot commands to ensure the correct binary is being executed.
Issue 2: rpmsg_lite_str_echo_rtos Stuck in rpmsg_lite_wait_for_link_up
The issue with rpmsg_lite_str_echo_rtos getting stuck in rpmsg_lite_wait_for_link_up is likely due to the RPMsg channel not being correctly established. Here are some steps to troubleshoot and resolve this issue:
Device Tree Modifications:
Ensure that the device tree is correctly modified to allocate the necessary RAM buffers for RPMsg. This is crucial for the RPMsg communication to work properly.
Check Kernel Module:
Ensure that the RPMsg kernel module is loaded correctly. You can do this by checking the dmesg logs:
dmesg | grep -i rpmsg
Load the Kernel Module Manually:
If the module is not loaded, you can load it manually:
modprobe imx_rpmsg_tty
Verify RPMsg Configuration:
Ensure that the RPMsg configuration is correct on both the Linux and Cortex-M sides. The dmesg logs should show that the RPMsg driver is registered and the channel is created.
Debugging:
If the issue persists, you might want to add additional debug prints in the main_remote.c file to understand where it is getting stuck.
By following these steps, you should be able to resolve the issues
I have tried the same thing in torizon core 6 + version this is the details
Software summary
------------------------------------------------------------
Bootloader: U-Boot
Kernel version: 5.15.148-rt74-6.8.0-devel+git.284966e8d6ee #1-TorizonCore SMP PREEMPT_RT Tue Aug 9 12:56:10 UTC 2022
Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.1/torizon/c8988380e872e0f58ac7f5d645d3f598152857a3da68b0fbb9565b321121d604/0
Distro name: NAME="TorizonCore with PREEMPT_RT"
Distro version: VERSION_ID=6.8.0-devel-202408-build.25
Distro variant: VARIANT="Docker"
Hostname: verdin-imx8mp-15141339
------------------------------------------------------------
Hardware info
------------------------------------------------------------
HW model: Toradex Verdin iMX8M Plus WB on Verdin Development Board
Toradex version: 0058 V1.1A
Serial number: 15141339
Processor arch: aarch64
------------------------------------------------------------
When attempting to run the same steps that worked in TorizonCore 5.x, I encounter a boot loop when using TorizonCore 6+. I have provided a comparison of the boot logs in this link. The left side of the comparison shows the booting loop issue (with M7 and A53 core)
I’ve resolved the issues I previously mentioned (i refer to some other threads and solve it)
add the overlay for verdin-imx8mp_hmp_overlay.dtbo default its not added .
add custom device tree for giving ownership for M7 core
Am I correct ?
Now, I’d like to ask for your guidance on implementing continuous send and receive the data(custom data) with any cpp code with some IPC(Inter-Process Communication) library if its available can you guide me with that ?
Hi @Debashis200,
Nice to hear that you were able to solve the issues.
Unfortunately,there are no demos available from Toradex for M7, whetever demos are there, those are from the NXP only which are provided in the SDK
I received a link to the RPMsg guide from you: . when I go through this link I saw a git repo which may be about the IPC Library for linux. Could you provide more details about this GitHub repository:?
I’m working on accessing the GPIO pins on the M7 core. Currently, I’m using example code to blink an LED, which works fine for 1 second, but stops once the A53 core boots up. I understand this issue is related to ownership.
I’ve attempted to resolve this by modifying the custom device tree(given in Rpmsg to disable ownership for uart4) for RPMsg used for UART4. Specifically, I disabled the GPIO ownership and added the following entry:
&gpio5 {
status = "disabled";
};
However, this hasn’t resolved the issue. I have uploaded the steps I followed for compiling and modifying the device tree. I’m trying to access SODIMM_200, which corresponds to GPIO5 pin 7.
Could you provide guidance on how to achieve this?
I want to know that in future if we want to change any pin for any functionality we have to check that that pin is allocated to any other peripheral or not then we have to change accordingly.
Can you give some basic understanding about this or any link to understand this.
And 1 more thing how can i give a single gpio pin access to M7 .