Skip to content

Add ProAI 8650 QNX 7.1 support on top of piotrkorkus_aarch64#12

Open
Xinq wants to merge 2 commits into
piotrkorkus_aarch64from
proAI_test_qnx71
Open

Add ProAI 8650 QNX 7.1 support on top of piotrkorkus_aarch64#12
Xinq wants to merge 2 commits into
piotrkorkus_aarch64from
proAI_test_qnx71

Conversation

@Xinq
Copy link
Copy Markdown

@Xinq Xinq commented May 13, 2026

Summary

This PR adds the effective changes required to build and validate reference_integration on the ProAI 8650 QNX 7.1 target, based on piotrkorkus_aarch64.

Main updates in this PR:

  • switch the active AArch64 QNX target setup from QNX 8.0 to QNX 7.1
  • integrate the required QNX 7.1 Bazel toolchain and module configuration
  • keep the durable score_crates crate-universe fix
  • add the QNX communication discovery path fix
  • add a sender-side wrapper for communication startup on QNX
  • keep the validated runtime/config updates for CLI, Kyron, orchestration persistency, and simple lifecycle

Background

The main runtime issue on the ProAI 8650 QNX 7.1 target was in the communication showcase.

The final confirmed root cause was not only related to /tmp, but also that the LoLa discovery subtree under /var/data/tmp_discovery/mw_com_lola/... could enter a bad state where inotify_add_watch() returned EPERM.

The effective mitigation in this PR is:

  • move discovery-related runtime paths to /var/data/tmp_discovery
  • recreate the LoLa discovery subtree on the sender side before launching ipc_bridge_cpp

Target validation also showed that fsevmgr must be running for the expected QNX fsnotify/inotify behavior.

Runtime Alignment For ProAI 8650

This PR also keeps the runtime adjustments needed for the ProAI 8650 QNX 7.1 environment:

  • deploy and run showcases from /mnt/showcases
  • store persistency data under /mnt/score_kvs
  • avoid relying on /tmp for the affected runtime flows

Validation

Validated successfully on the ProAI 8650 QNX 7.1 target:

  • Communication Sender Receiver example
  • Kyron basic example
  • Kyron select example
  • Kyron safety task example
  • Orchestration persistency example
  • Simple lifecycle example

Build validation:

  • bazel --output_base=build/qnx-aarch64-finalclean build --config=qnx-aarch64 //showcases/standalone:comm

Cleanup

Only effective changes are kept in this branch.

Removed from the final solution:

  • ineffective baselibs inotify read-buffer patch
  • debug-only probe tools

Notes

This PR is intended to bring the cleaned and validated ProAI 8650 QNX 7.1 support into piotrkorkus_aarch64.


bazel_dep(name = "score_crates")
single_version_override(
local_path_override(
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no local overrides, please push to repo and use git_override with hash

build_file = "//third_party/qnx710:qnx710_sdp.BUILD",
sha256 = "12cc587864aaf3a98e4f274b6f8aa1e82099d4d7d08a78289045a0f58eeb8411",
strip_prefix = "qnx710_sdp",
url = "file:///home/quan/proAI/reference_integration/third_party/qnx710/qnx710_sdp.tar",
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need to store it online

Comment thread .bazelrc
Comment on lines +54 to +55
build:qnx-aarch64 --platforms=@score_bazel_platforms//:aarch64-qnx-sdp_7.1.0-posix
build:qnx-aarch64 --extra_toolchains=@score_qcc_aarch64_toolchain//:aarch64-qnx-sdp_7.1.0
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put as separate config? So we can distinguish which version we are building

Comment thread .bazelrc
build:qnx-aarch64 --config=_qnx_common
build:qnx-aarch64 --platforms=@score_bazel_platforms//:aarch64-qnx-sdp_8.0.0-posix
build:qnx-aarch64 --extra_toolchains=@score_qcc_aarch64_toolchain//:aarch64-qnx-sdp_8.0.0
build:qnx-aarch64 --action_env=QNXLM_LICENSE_FILE
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is that?

Comment thread MODULE.bazel
compatibility_level = 0,
)

local_path_override(
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here, please dont use local overrides

as great as that of any standard type not using alignment
specifiers. */
typedef struct {
long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
specifiers. */
typedef struct {
long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants