こんにちは、皆さん
現在、カスタム SOM と MCUXpresso SDK (v25.06.00) を使用して、micro-ROS を i.MX93 (MIMX9352) の Cortex-M33 コアに移植しています。
UART トランスポートを確立し、 micro-ROS エージェントにコネクテッド。ノードとトピックは作成されましたが、公開されたデータは空または無効のようです。デバッグ後、ROS 2 エコシステムと同期するには、micro-ROS クライアントに高解像度のタイムスタンプ (秒とナノ秒) を提供する必要があることに気付きました。
スクリーンショット、デバッグ端末出力、コードを以下に添付します。
マイクロロスエージェント接続
Micro-ros agent connectionMicro-ros agent connectionマイクロロスエージェント接続
ROS トピック一覧 (トピックが空です (データは公開されていません)) ROS Topic listing (But topic is empty)ROS Topic listing (But topic is empty)ROS トピック一覧(ただしトピックは空です)
デバッグ端末出力:
デバッグコンソールの初期化が完了しました
過去のlpuart initとカスタム転送オープン
過去のrclcサポート、ノード、パブリッシャーの初期化
過去のrclcタイマー初期化
過去のrclcエグゼキュータinit、add_timer
whileループ内
RCSOFTCHECK 失敗: rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)) | Lin0
執行者のスピン後
whileループ内
RCSOFTCHECK 失敗: rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)) | Lin0
執行者のスピン後
whileループ内
RCSOFTCHECK 失敗: rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)) | Lin0
執行者のスピン後
問題:
rmw_publisher_publish に必要な精度を提供する、信頼性の高い「システム稼働時間」または「ティック」関数を SDKs で見つけるのに苦労しています。
lptmrドライバの例を使用しようとしましたが、LPTMR_Init()中にコードがハングします
私の質問:
i.MX93 M33 の起動以降の高解像度 (nsec) モノトニック タイムスタンプを取得するための推奨 SDK API はありますか?
i.MX9 シリーズに micro-ROS を実装した方: 専用のハードウェア タイマーを使用しましたか、それとも代わりに使用すべき標準の CMSIS/SDKs「GetTime」関数がありますか?
環境の詳細:
ハードウェア: カスタム i.MX93 SOM + EVB ベースボード
コア: Cortex-M331
SDK: 25.06.00
ツールチェーン:MCUXpresso IDE / VS Code Extension2
このプラットフォームでの 64 ビットナノ秒カウンター実装に関する洞察やコードスニペットがあれば、ぜひお知らせください。
よろしくお願いいたします。
アナンド