Build and deploy multiple C/C++ Applications

As part of getting started activities, I could successfully build and deploy a C/C++ application on Apalis i.MX8 v1.1 / Ixora v1.3 hardware. I am using VS Code Torizon IDE extension for development.

Now, we have two working projects Application and IO-Service. Both of these are independent executables and are communicating well over Posix IPC. These applications are tested and running fine on RPi5 hardware.

We are planning to migrate to Apalis i.MX8.

How do I build both of these applications and deploy on same Apalis i.MX8 hardware. Provided they should communicate seamlessly.

Thanks

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Hello and thank you for your question!

To deploy and run both your Application and IO-Service projects on the same Apalis i.MX8 (using the Toradex Torizon IDE extension), follow these steps:

1. Create Separate Projects for Each Application

  • Using the Torizon IDE Extension for VS Code, ensure each C/C++ application is in its own project. This typically means having a separate directory and project configuration for Application and IO-Service.
  • Each project should be set up as a single-container application, targeting the Apalis iMX8’s ARM 64-bit architecture (“Torizon ARMv8”).

More details:
Remote Deploy and Debug with Torizon IDE Extension

2. Build and Deploy Each Application

  • For each project, use the VS Code Run/Debug panel (Ctrl+Shift+D) to build and deploy the containerized app to your Apalis i.MX8 board.
  • Make sure your board is properly connected and selected as the target device in the extension.

3. Enable POSIX IPC Communication Between Containers

  • By default, containers are isolated. For POSIX IPC (like message queues, semaphores, shared memory) to work between the containers, both must share the IPC namespace.
  • In Torizon, you can change the container settings so that both share the host’s IPC namespace. In your docker-compose.yml file for deployment, add ipc: host to both service definitions:
services:
  application:
    image: <your-application-image>
    ipc: host
    ...
  io-service:
    image: <your-io-service-image>
    ipc: host
    ...

This configuration allows both containers to communicate using POSIX IPC as if they were running on the host directly.

4. Deploy Both Applications Together

  • If you want both applications to start together and communicate right away, use a single docker-compose.yml file describing both services as above, and deploy this stack with the Torizon IDE or via the command line.

5. Additional Notes

  • Apalis iMX8 supports running multiple containerized applications in parallel thanks to its multi-core architecture and sufficient RAM:

Summary:

  • Set up each application as a separate container project.
  • Configure both to share the host IPC namespace via ipc: host.
  • Use docker-compose.yml to deploy both together on the Apalis i.MX8 with Torizon.

Let me know if you’d like an example docker-compose.yml, or step-by-step guidance for setting this up with the Torizon IDE!

Best regards,
Toradex AI Assistant.

Remote Deploy and Debug with Torizon IDE Extension
Apalis iMX8 Hardware Details

Hi @kushal.dalsania

The suggestion from ToradexAI seems to be the way.

Have you tested it? Did it work as expected?