Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
MCUXPRESSOでc11を選択しても機能しません。 MCUXPRESSO c11にチェックを入れても、FRDM MCXA156ではstatic_assertが動作しません。プロジェクト全体は添付ファイルにあります。       MCXA Re: MCUXPRESSO钩选c11不起作用 プロジェクトはこちらです Re: MCUXPRESSO钩选c11不起作用 こんにちは、 @bigz static_assert を変更してみてください。 _Static_assert。     BR アリス Re: MCUXPRESSO钩选c11不起作用 Keilプラットフォームに移行しました。
記事全体を表示
CLRC663 と CLRC663 plus AUX1 および AUX2 ピン構成の違い。 CLRC663およびCLRC663plusのAUX1およびAUX2のデフォルト状態に関する質問 アプリケーション ノートでは、AUX1 ピンと AUX2 ピンのデフォルトの予想される状態は次のように記載されています。 CLRC663 のGND 。 CLRC663plus 用にオープン。 具体的な質問: CLRC663 では AUX1 と AUX2 のデフォルト状態が GNDなのに、CLRC663plus ではオープンになっているのはなぜですか? CLRC663+ で AUX1 と AUX2 をオープンのままにせずにGNDに接続すると、何が起こるでしょうか、またはどのような影響があるでしょうか? CLRC663plus でこれらのピンを接地すると、LPCD の誤起動の原因になったり、デバイスの動作に他の影響が生じたりしますか? Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. こんにちは@rahultt999 あなたの調子が良いといいのですが。 CLRC663 の非プラス バージョンは新しいデザインには推奨されないことにご注意ください。 これらのテスト信号は通常の動作モードでは使用できません。これらのピンをデバッグ目的で設定する場合は、必ずCLRC663 アンテナデザインのセクション 4.4.2 の指示に従ってください。そうしないと、デバイスが損傷する可能性があります。NFC アンテナ設計トレーニング シリーズ、講義 4 (約 24 分 30 秒) もご覧ください。 これらのピンを使用していない場合は、AUX1 ピンと AUX2 ピンの対応するアプリケーション ノートの推奨接続に従ってください。 - AN11145はCLRC663にGNDを推奨しています - AN11783はCLRC663プラスでオープンにしておくことを推奨しています よろしくお願いいたします エドゥアルド。 Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. こんにちは、 必要に応じて、これらのピンを (適切な構成後に) アナログ デバッグに使用できるように、テスト ポイントに接続することをお勧めします。AN11145 および AN11783 の推奨事項は、低電力デザインを目的としています。 よろしくお願いいたします エドゥアルド。 Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. こんにちは、エドゥアルドさん。 早速のご返信ありがとうございます。 現在の製品設計では、 CLRC663 plusチップを使用しており、これらの特定のピンは現在接地されています。ただし、「プラス」バージョンのアプリケーション ノートでは、これらのピンをオープンのままにしておくことを推奨していることに気付きました。 これらのピンをオープンのままにせずにグランドに接続したままにしておくと、製品のパフォーマンスに既知の影響やリスクはありますか? Re: CLRC663 and CLRC663 plus AUX1 and AUX2 pin configuration difference. ありがとう、エドゥアルド。これらのピンをオープンにしない場合、消費電力に具体的な影響があるかどうかご存知ですか?これらのピンの内部回路の詳細がなければ、決定的な結論を導き出すことができないため、質問しています。
記事全体を表示
S32K344 ハングアップ問題 MCU: S32K344 OS: FreeRTOS S32 Design Studio: 3.4.3 問題: I2C 書き込みブロッキングによる MCU のハング (タイムアウトなし) こんにちは、チーム S32K344 MCU をベースにしたカスタム ボードを使用しています。特定の I2C エラー条件下では実行時に MCU がハングするという問題が発生しています。 I2C インターフェースを介して接続された IMU スレーブ デバイスがあります。時々、次のようなとき: IMUに電源が入っていない、または I2C書き込み操作が失敗する(例:ACKなし/バススタック) I2C 書き込み API はタイムアウト状態を返さないか、タイムアウト状態になりません。その結果、 I2C トランザクションを実行する FreeRTOS タスクが無期限に停止し、最終的にアプリケーションがハングすることになります。 観察: この問題は、スレーブが応答しないか、バスが低く保持されている場合に発生します。 I2C ドライバは転送の完了を待機してブロックしているように見えます。 RTOS またはドライバ レベルではタイムアウトまたは回復メカニズムはトリガーされません。 サポートのリクエスト: S32K344 上の I2C トランザクションにタイムアウトを追加または強制するにはどうすればよいですか? スタックした I2C バス (SDA/SCL が低く保持される) を回復するための推奨される方法はありますか? S32K3 デバイス上のFreeRTOS で I2C を安全に使用するベスト プラクティスは何ですか? このシナリオを堅牢に処理する NXP のドライバ構成または例はありますか? あらゆるガイダンスや参考資料をいただければ幸いです。 ありがとう、よろしく。 ヴィナイ Re: S32K344 Hanging issue こんにちは@vinaykl 、 非常に古い RTD をお持ちです。 何か理由があるのでしょうか? RTD 2.0.0 と現在の RTD 7.0.0 の間では多くのバグが修正されています。 I2C ドライバのブロッキング API を使用すると想定しています。 代わりに、GetStatus() とタイムアウトとともに非同期転送 API を使用してください。 スレーブデバイスが SDA を低く保持し続ける場合は回復できます。I2C ユーザーマニュアルを参照してください。 セクション3.1.16バスはクリア https://www.nxp.com/docs/en/ユーザーガイド/UM10204.pdf   RTD ドライバには回復用の API がありません。 例としてはAN4803があります I2C復元関数の定義 https://www.nxp.com/docs/en/application-note/AN4803.pdf よろしくお願いいたします。 ダニエル
記事全体を表示
MC33772B 的 EPAD MC33772B 底部有一块 5.4 毫米 × 5.4 毫米的裸露金属区域。 然而,PCB 设计指南建议阻焊层的开口度仅为 3.7-3.8毫米,这表明 EPAD 的尺寸约为 3.7 毫米。 在实际检查中,集成电路底部裸露的金属面积为 5.4 毫米,大于建议的 PCB 开口。 根据数据表,从 3.7 毫米(最小)到 5.4 毫米(最大)的区域被指定为 PCB 布线保留区域。 如果 3.7 毫米是建议的 EPAD 尺寸,而 3.7-5.4 毫米是建议的 EPAD 尺寸。mm 区域被定义为 PCB 布线禁止区域,为什么将整个区域设计为封装底部的裸露金属? Re: MC33772B's EPAD 您可以从下面链接文件的第 12 页阅读更多裸露焊盘的 PCB 设计。 AN4388: 四侧扁平封装 (QFP) — 应用笔记 5.2 焊锡钢网和焊锡膏 Re: MC33772B's EPAD 我已经知道了你的答案,但我真正想知道的是,为什么 MC33772 底部的金属开口面积是 5.4 毫米。 根据应用笔记,焊接开口面积为 3.7 mm,但设备的底部金属面积为 5.4 mm。为什么会有区别? 根据数据表,3.7 毫米至 5.4 毫米区域被指定为布线禁区。 有鉴于此,我想了解为什么同样是 3.7-5.4mm 区域以开放金属的形式暴露在设备底部。
記事全体を表示
LPC54018 崩溃问题 我的客户在使用 LPC54018J2M 时遇到了一个问题。 情况描述如下 客户通过I2C将新版本编程到以太备份代码块来更新固件后,重启后,启动代码首先检查以太备份代码中是否有更新的固件。如果有,它就会覆盖以太 CODE,然后执行它。 闪存布置 |-------------------------------------| 0x10000000 - 0x1000FFFF | 启动 CODE(64k) 10000| |-------------------------------------| 0x10010000 - 0x100fffff | Ether CODE(960k) f0000| |-------------------------------------| 0x10100000 - 0x101effff | Ether Back Up CODE(960k) f0000| |-------------------------------------| 0x101f0000 - 0x10200000 | 已保留 (64k) 10000| |-------------------------------------| 对于少数设备,固件更新完成后,软件会正常运行一段时间。然而,一段时间后,代码突然卡住了。在这种情况下,即使尝试重新编程或擦除也无法恢复系统,必须更换集成电路。 对于异常集成电路,我们使用 JTAG 进行了进一步测试。最初,示例代码程序无法正常运行,IC 在闪烁后会立即卡住。 对于客户软件,启动代码会检查闪存,然后在 SPIFI 初始化期间卡住。 但是,通过 JTAG 对 SDK_2.x_LPC54018J2M(版本 24.12)中的示例代码进行编程后,集成电路可以正常工作,后续编程也能按预期进行。 对于异常集成电路,直接重新编程客户代码并不能恢复正常运行。有必要先对示例代码进行编程,以便从异常状态中恢复。 客户代码目前是基于 SDK 2.11 开发的。 恢复正常运行的示例代码来自 SDK 24.12。 我还建议客户尽可能升级到新版本,但这可能需要一些时间。 因此,我想在这里讨论可能导致这个问题的原因——它是否与SDK版本有关,或者是否需要调整内存配置。 尽管我们目前可以通过JTAG恢复设备,但我们希望找到一种方法来完全防止此问题发生。 LPC54xxx Re: LPC54018 Crash Issue 你好@ZRay 谢谢您的帖子! 它可能与 LPC54XX 设备上的勘误表有关,勘误 表 lpc540xx_lpc54s0xx 中的功能问题描述 3.8 RO M.1:启动时外围设备引脚保持配置或驱动状态 另外,我建议您查看 MCUXpresso SDK发行说明,另一项建议将始终使用可用的最新版本的SDK。 您提到的示例代码是否执行了引脚配置?
記事全体を表示
Import and start developping Using Visual Studio Code (VSC) on KW47 As the support for MCUXpresso IDE as GUI and toolchain will be stopped and will be replaced by MCUXpresso for Visual Studio Code, I am sharing here some essential steps to start development on Visual Studio Code and MCUXpresso plugin. Preparation: - MCUXpresso for VS Code is installed as an extension inside Microsoft VS Code - see https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-for-visual-studio-code:MCUXPRESSO-VSC - The rest of the toolchain including ARMGCC, west and other tools which work with MCUX for VS Code installation is available via MCUXpresso SDK option of the MCUXpresso Installer: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-installer:MCUXPRESSO-INSTALLER - See also generic Getting Started Guide for MCUX SDK with MCUX for VS Code at: https://mcuxpresso.nxp.com/mcuxsdk/latest/html/gsd/run_a_demo_using_mcuxvsc.html Here I will provide the procedure to import the loc_reader example from the repository. Import the repository: The recommended approach is to import REMOTE ARCHIVE which has a similar environment as the legacy MCUXpresso IDE. Here I will provide the procedure to import the loc_reader example from the repository From the MCUXpresso plugin, select "Import Repository", then in the "REMOTE ARCHIVE" tab, select the board, the SDK version and the location: Wait for the repository to be imported, this procedure can take several minutes. Once the import is succeed, it will appear here: Import demo projects and run: Once the repository is successfully imported, you can then import demo examples from the repo by selecting "Import Example from Repository": then select the demo example from "Template". "AppType" should be "Freestanding application" if you want a standalone project. "Location" is where the project will be located.  "Toolchain" should be the Arm GNU one that you installed in preparation steps Build and run the imported project:
記事全体を表示
RW612 MCUBoot + TF-M が起動しない こんにちは、 TF-M + MCUBoot の例を使用して、FRDM-RW612 に非常によく似たカスタム ボード セットアップをフラッシュする際に問題が発生しています。 nxp-zephyr リポジトリの最新バージョン (v4.3.0) では、チュートリアルの一部のファイルが変更されているようです。できる限り従おうとしましたが、ボードがまだ正しく起動しません。 MCUBoot ブートローダーだけをフラッシュすると、予想どおりの出力エラー「起動可能なイメージが見つかりません」が表示されます。ガイドの指示に従って PSA 暗号サンプルをフラッシュすると、ターミナルに何も出力されず、MCUBoot テキストも表示されなくなります。端末の問題だけの場合に備えて、点滅サンプルでもテストしましたが、そのCASEはボードの LED も点滅しません。 これらのサンプルは両方とも、MCUBoot なしで TF-M だけをフラッシュすると起動して実行されます ( west build -b frdm_rw612//ns samples/basic/blinky --pristine && west flash )。 このCASE、私は奇妙な癖にも気づきました。ペリフェラルとしてflexcomm3を使用する必要があるため、Zephyrコンソールを別の出力に切り替えたいと考えました。デバイス ツリーを編集すると、さまざまな問題が発生します。   1. zephyrコンソールをFlexcomm3からFlexcomm2に切り替える boards/nxp/frdm_rw612/frdm_rw612_common.dtsi に次の編集を加えました。 i2c-0エイリアスを削除しました ambient-temp0 エイリアスを削除しました chose/zephyr,console を &flexcomm2 に置き換えました flexcomm2 ノードを追加しました: &flexcomm2 { compatible = "nxp,lpc-usart"; status = "okay"; current-speed = <115200>; pinctrl-0 = <&pinmux_flexcomm2_usart>; pinctrl-names = "default"; wakeup-source; }; nxp_pmod_touch_panel_i2c、arduino_i2c、mikrobus_i2cノードを削除しました そして、 boards/nxp/frdm_rw612/frdm_rw612-pinctrl.dtsi に flexcomm2 pinctrl を追加しました: &pinctrl { pinmux_flexcomm2_usart: pinmux_flexcomm2_usart { group0 { pinmux = ; slew-rate = "normal"; bias-pull-up; }; }; }; そしてその後、FC3 をコンソールとして使用したときに動作したのとまったく同じ点滅コードをフラッシュすると、FC3 でブートローダーの出力が表示されます (下記)。ただし、FC2 では何も出力されず、LED も点滅しません。 [INF] Starting bootloader [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [INF] PSA Crypto init done, sig_type: EC-P256, using builtin keys [INF] Image index: 1, Swap type: none [INF] Image index: 0, Swap type: none [INF] Bootloader chainload address offset: 0x20000 [INF] Image version: v0.0.0 [INF] Jumping to the first image slot Booting TF-M v2.2.0+g3b3595f16 [WRN] This device was provisioned with dummy keys. This device is NOT SECURE [Sec Thread] Secure image initializing! [INF][PS] Encryption alg: 0x5500100 [INF][Crypto] Provision entropy seed... [INF][Crypto] Provision entropy seed... complete. 2. ZephyrコンソールをFlexcomm3からFlexcomm14に切り替える chose/zephyr,console を &flexcomm14 に置き換えました flexcomm14 ノードを追加しました:   &flexcomm14 { compatible = "nxp,lpc-usart"; status = "disabled"; current-speed = <115200>; pinctrl-0 = <&pinmux_flexcomm14_usart>; pinctrl-names = "default"; wakeup-source; }; そして、 boards/nxp/frdm_rw612/frdm_rw612-pinctrl.dtsiにflexcomm14 pinctrlを追加しました: &pinctrl { pinmux_flexcomm14_usart: pinmux_flexcomm14_usart { group0 { pinmux = ; slew-rate = "normal"; }; }; }; これらの編集により、FC3 または FC14 に出力が表示されなくなり、LED もまったく点滅しなくなりました。 TF-M + MCUBoot で発生している問題が TF-M のみのコンソール出力の問題に関連しているかどうかはわかりませんが、念のためそれを含めておこうと思いました。私の最終目標は、起動後にファームウェアのアップデートを実行できるように MCUBoot と TF-M を用意することです。また、ペリフェラルとして Flexcomm3 を使用する必要があるため、FRDM-RW612 が使用するものとは異なるコンソール出力が必要です。 また、TF-M も MCUBoot も使用していない場合でも、ボードをフラッシュして FC14 でコンソールに印刷できることにも注意してください。これらのサブシステムを有効にした後でのみ、フラッシュ/ブートに関する問題が発生しました。 どのようなご助力も大歓迎です、ありがとうございます! Re: RW612 MCUBoot + TF-M Not Booting proj.conf をいろいろ試してみたところ、問題はフラッシュ サブシステムに関連するものであることがわかりました。 現在、TF-M なしで MCUBoot をテストしていますが、実行されるアプリと行Iで停止するアプリの違いは、最初のイメージ スロットにジャンプすることが、次の KConfig オプションの 1 つ以上であることです。   CONFIG_FLASH_FILL_BUFFER_SIZE=32 CONFIG_FLASH=y CONFIG_FLASH_MCUX_FLEXSPI_XIP_MEM="RAM" CONFIG_FLASH_INIT_PRIORITY=50 CONFIG_FLASH_HAS_DRIVER_ENABLED=y CONFIG_FLASH_HAS_EXPLICIT_ERASE=y CONFIG_FLASH_HAS_PAGE_LAYOUT=y CONFIG_FLASH_JESD216=y CONFIG_FLASH_MCUX_FLEXSPI_NOR=y CONFIG_MEMC_MCUX_FLEXSPI=y MCUBoot と NXP のフラッシュ ファイルを調べてきましたが、正しい方向に進んでいるかどうかわかりません。次の行のようになります: (( void ( * )( void )) vt ->リセット)(); MCUBoot の Zephyr main.c の do_boot() 関数は、GDB でデバッグできる最後の場所です。そのリセット「関数」が呼び出された後、PC は 0x20005840 にあり、続行/ステップ実行では何も行われず、プログラムはハングするだけです。   繰り返しになりますが、この問題をデバッグするにはどこを参照すればよいかという助言やヒントがあれば、ぜひ教えてください。ありがとうございます! Re: RW612 MCUBoot + TF-M Not Booting こんにちは、リカルドさん。元の投稿が散漫になっていたらごめんなさい。 TF-M + MCUBoot ガイドを最初から完全に開始して、問題点をリストアップすることができました。通常の開発では VSCode 用の MCUXpresso を使用しますが、ガイドでは west コマンドライン ツールを使用しているため、ここでもそれを使用しました。 TF-M + MCUBoot ガイドの問題 (nxp_zephyr タグ nxp-v4.3.0) - 「セキュア イメージの変更」の手順 6 の「ダウンストリームから TF-M をビルドしてフラッシュする」では、M_BOOT_FLASH_CONF_START は BOOT_FLASH_ACT_APP と同じである必要があると記載されています。リポジトリ内のどこにも BOOT_FLASH_ACT_APP が見つかりませんでした。何に設定されているか確認する方法がわかりません。#define M_BOOT_FLASH_CONF_START (0x18020000)を使用しました - 「セキュア イメージの変更」の手順 8 では、ガイドでは hardware_init.c の SystemInitHook に VTOR 構成を追加するように指示されていますが、そのコードはすでに存在しているようです。そのままにしておいた。 - 「非セキュア イメージの変更」セクションでは、 nxp_zephyr\Zephyr\build\tfm\api_ns\platform\partitionフォルダー内のファイルを編集するようにガイドで指示されていますが、 nxp_zephyr\Zephyr\build はデフォルトでは存在しません。この時点では、ガイドでは何も構築するように指示されていません。後でアプリをビルドした後、手順 2 ~ 6 のファイルはすでに正しい値に変更されていました。 - 「非セキュア イメージの変更」の手順 7 に、 nxp_zephyr/zsdk/boardsディレクトリがありません。これはnxp_zephyr/Zephyr/boardsであると想定しているので、そのパスで手順 8 に従いました。 - ガイドに従ってnxp_zephyr/zephyr/boards/nxp/frdm_rw612/frdm_rw612_rw612_ns.dtsを編集した後、次のビルド エラーが発生します:必要なノードラベルが見つかりません: slot0_partition 。その編集を行う代わりに、デフォルトのデバイス ツリー ファイルを使用してビルドすると、サンプルはほぼ完全にビルドされますが、最後のステップでエラーが発生します。 トレースバック(最新の呼び出しが最後): ... intelhex.AddressOverlapError: アドレス 0x18020000 でデータが重複しています 上記の例外の処理中に、別の例外が発生しました: ... intelhex.AddressOverlapError: /nxp_zephyr/zephyr/build/zephyr/tfm_s_signed.hex にマージの問題があります 私はこのエラーを無視してガイドを続行しました。 - 最後に発生した問題は、手順 3 の「バイナリのマージ」セクションで、 「エラー: このようなコマンド 'merge' はありません」というエラーが発生したことです。私にとっては同様の機能があるように見えたので、merge の代わりに「export」コマンドを使用しました。 これらの調整を行い、ガイドの指示に従ってフラッシュした後でも、次のターミナル出力が得られます。 *** Booting MCUboot v2.2.0-192-g96576b341ee1 *** *** Using Zephyr OS build nxp-v4.3.0 *** I: Starting bootloader I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm I: Primary image: magic=bad, swap_type=0x0, copy_done=0x2, image_ok=0x2 I: Secondary image: magic=good, swap_type=0x1, copy_done=0x3, image_ok=0x1 I: Boot source: none I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm I: Image index: 0, Swap type: perm E: Image in the primary slot is not valid! E: Unable to find bootable image ガイドの指示に対して行った調整のいずれかが問題の原因なのか、更新された Zephyr リポジトリのその他の違いなのかはわかりません。ご返信ありがとうございます。 Re: RW612 MCUBoot + TF-M Not Booting こんにちは、 あなたの調子が良いといいのですが。セットアップの詳細を教えていただけますか? VSCode で MCUXpresso を使用していますか? flexcomms に関連するすべての変更を実装する前に、投稿をフォローできるかどうかを明確にしていただけますか?(それぞれのバージョンの変更あり) よろしくお願いいたします。 リカルド Re: RW612 MCUBoot + TF-M Not Booting こんにちは@jm-streametric さん、お元気ですか。 あなたが参照しているガイド ( RW612 を使用した Zephyr MCUboot + TFM デモ) は、4.2.0 より前のバージョンの Zephyr にのみ適用されます。この場合、Zephyr v4.3.0 (NXP のダウンストリーム リポジトリ) の例をビルドしてフラッシュする手順は、FRDM-RW612 の方が簡単です。psa_crypto の例をビルドしてフラッシュするには、以下の手順を参照してください。 リポジトリから例をインポートをクリックします。 NXP のダウンストリーム リポジトリ V4.3.0 を選択します。FRDM-RW612 の TF-M サポートがメインの Zephyr リポジトリに完全には追加されていないため、これは重要です。次に、FRDM-RW612 の非セキュア バージョンを選択します。 psa_crypto の例を選択し、[インポート] ボタンをクリックします。 最後に、サンプルをビルドしてボードにフラッシュします (必要に応じてデバッグ セッションを開くこともできます)。すべてが正しく実行された場合、シリアル端末のログは次の画像のようになります。 現時点では、この手順はFRDM-RW612 ボードにのみ適用されます。RW612をカスタム ボードで使用しているため、ボードに TF-M サポートを追加するには、必要な変更を確認して行う必要があります。考慮すべき主なポイントは、使用しているフラッシュ デバイスです。したがって、この点に違いがある場合は、より大きなポートを動作させる必要がある場合があります。 Zephyr コンソールに使用される Flexcomm インスタンスの変更で発生した問題に関しては、 boards/nxp/frdm_rw612/frdm_rw612_common.dtsiファイルで直接変更しないでください。この変更はビルド時にデフォルトに書き換えられるため、代わりにfrdm_rw612.overlayファイルを使用して変更を追加してみてください。このオーバーレイは Zephyr のデフォルトのデバイス ツリー ファイルに優先され、変更が維持されます。 情報が役に立つかどうかお知らせください。 Re: RW612 MCUBoot + TF-M Not Booting こんにちは、ローマン。 ご返信ありがとうございます!あなたの指示に従って、ボード上で作業を行うことができました :)。私のカスタム ボード上のフラッシュ レイアウトは FRDM-RW612 と同じなので、幸いなことにそこで変更する必要はありません。 オーバーレイを追加するのは良い点ですが、以前はそれを試してみようとは思いませんでした。 続いて、TF-M secure + BL2 システムの FlexComm 出力を変更することは可能ですか?ペリフェラルが搭載されているため、デフォルトの Flexcomm3 インターフェイスを使用できません。現在、デバッグ出力を無音にしていますが、BL2 + S ビルドを変更して、たとえば FC3 ではなく FC14 USART に出力できる場所はありますか? ありがとう! Re: RW612 MCUBoot + TF-M Not Booting こんにちは@jm-streametric 。 Flexcomm に関するご質問について: 現在の実装では、TF-M はUSART3 を使用するように「ハードコード」されています。別の USART インスタンスに切り替える必要がある場合は、次の場所にある TF-M プラットフォーム ファイルを確認して変更します。 /modules/tee/tf-m/trusted-firmware-m/platform/ext/target/nxp/frdmrw612 まず、 platform_base_address.hを確認することをお勧めします。ファイルの場所: frdmrw612/Device/Include このファイルは、TF-M で使用される USART インスタンスを含む、プラットフォーム レベルのベース アドレスを定義します。 さらに、同じ TF-M ターゲット ディレクトリ内の project_template フォルダーには、USART の初期構成コードがあります。これらの初期化により、USART3が現在どのように設定されているか、また、別のUSARTインスタンスに切り替えるためにどこに変更を適用するかが明確になります。 この情報がお役に立てれば幸いです! Re: RW612 MCUBoot + TF-M Not Booting こんにちは@jm-streametric さん、お元気ですか。 デバイス ツリーで、Flexcomm14 を参照するノードが正しく構成され、アクティブ化されているかどうかを確認してください。次の例のように、ステータス プロパティが「okay」に設定されていることを確認します。 flexcomm14: flexcomm@126000 { status = "okay"; }; これが役に立つことを願います! Re: RW612 MCUBoot + TF-M Not Booting こんにちは、ローマン。 TF-M システムで使用される USART を切り替えようとしました。すべての定義をtarget/nxp/frdmrw612/project_template/* board.hに切り替えるとおよび pin_mux.cFC3/USART3 -> FC2/USART2 への変更は機能します。 ただし、同じ手順を実行しても、FC14/USART14 に変更すると、BL2 プログラムがハングします。bl2.elf を使って addr2line でハングしているアドレスを実行したところ、プログラムは target/nxp/frdmrw612/Native_Driver/drivers/fsl_reset.c でループしたままになっているようです。51行目。FC14 ペリフェラルのリセットは 67 行目のスイッチ CASE を使用する必要があると思うので、これは正しくないように思えますが、addr2line に問題がある可能性があります。 いずれにしても、TF-M システムを USART14 に印刷するように切り替えた場合、BL2 プログラムがハングし、Zephyr アプリが起動しなくなります。これまでにこの問題を見たことがありますか? また、なぜこの問題が発生するのかの手がかりはありますか? Re: RW612 MCUBoot + TF-M Not Booting こんにちは、ローマン。 はい、flexcomm14 ノードを「正常」ステータスに設定しました。私の質問は BL2/Secure Environment のログ記録に関するものです。これら 2 つのバイナリは別々にビルドされるため、zephyr デバイスツリーは適用されないと思いますか?
記事全体を表示
カスタムボードの Yocto BSP の DDR バイナリを置き換えるにはどうすればよいでしょうか? こんにちは、 カスタム ボードの Yocto BSP 内の DDR バイナリを置き換えようとしています。 新しいマシンが作成され、必要なファイルを含むレシピ ddr-firmware のディレクトリもカスタム メタ レイヤーに作成されます。しかし、SRC_URI に新しい値を割り当て、レシピ追加で元の値を削除しても、Bitbake が評価ボードの元のパスを検索するのを止めることはできません。レシピ追加を使用しない場合も、この検索については何も変わりません。 唯一機能する方法は、元のレシピをマスクし、カスタム レイヤーに新しいレシピを作成することです。 しかし、それは好ましい方法ではないと思います。これは、カスタム マシン用に作成された DDR バイナリを使用するのに簡単に実行できるはずです。ここで何が見逃される可能性があるでしょうか? よろしくお願いします! クレーン Re: How to replace DDR binaries in Yocto BSP for the custom board? はい、うまくいきました。NXP_FIRMWARE_LOCAL_DIR に設定されているフォルダーと正確に一致しないようです。しかし、いずれにせよ、それは機能します。 もう 1 つ質問があります。カスタム レイヤーの .bbappend で NXP-EULA ライセンスを閉じるにはどうすればよいでしょうか? よろしくお願いいたします。 クレーン Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、鶴 ご返信よろしくお願いします。 お客様の DDR にも DDR ファームウェアが含まれている必要があります。Yocto で BSP をビルドするときに、S32G3_LinuxBSP_44.0_User_Manual.pdf を参照して DDR ファームウェアを追加していただけますか。 BR ジョーイ Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、ジョーイ。 ご返信よろしくお願いします。 S32G3で、BSPは「bsp44.0」です。 よろしくお願いいたします。 クレーン Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、クレーン お問い合わせいただきありがとうございます。 使用している BSP のバージョンはどれですか? S32G3 または S32G2 チップを使用していますか? BR ジョーイ Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、クレーン フォルダ(fsl-車載-Yocto-bsp/build_s32g274ardb2/conf)内のlocal.confファイルを変更してみてください。 ACCEPT_FSL_EULA = "1" BR ジョーイ Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、ジョーイ。 .bbappend を追加しようとしましたが機能しませんでしたカスタムボード用。 ERROR: /home/crane/work/yocto/sources/meta-alb/meta-alb-bsp/recipes-bsp/ddr-firmware/ddr-firmware.bb: Unable to get checksum for ddr-firmware SRC_URI entry NXP-EULA: file could not be found The following paths were searched: .bbappendを試してみたLICENSE = "CLOSED"、LIC_FILES_CHKSUM = "" で、SUMMARYのみ、.bbappendも試しませんでした。すべて同じエラーメッセージが表示されます。 元のレシピに基づいてレシピを追加するのではなく、NXP からの元のレシピをマスクしてカスタム レシピを作成するのが、カスタム DDR バイナリを処理する唯一の方法ですか? よろしくお願いいたします。 クレーン Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、クレーン フォルダーに NXP-EULA ファイルを追加しましたか? BR ジョーイ Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、ジョーイ。 このファイルを元のレシピまたはカスタムレシピにコピーしようとしましたが、どちらも機能しません。ファイルは両方の方法で見つかりますが、どちらも以下のエラー メッセージを生成します。 ERROR: No recipes in default available for: /home/crane/work/yocto/sources/meta-crane/recipes-bsp/ddr-firmware/ddr-firmware_%.bbappend 私は NXP の DDR バイナリを使用していないので、NXP によって生成された NXP-EULA を使用するのは意味がないと思います。NXP-EULA のチェックを無効にするのが合理的ですよね? よろしくお願いいたします。 クレーン Re: How to replace DDR binaries in Yocto BSP for the custom board? こんにちは、クレーン ご返信よろしくお願いします。 この問題の根本原因を見つける必要があります。NXPのDDRファームウェアとNXP-EULAファイルを使用するには、YoctoでBSP44をビルドしてみてください。BSP44を正常にビルドできた場合は、DDRファームウェアを交換してから再度ビルドしてみてください。 BR ジョーイ
記事全体を表示
TagXplorer - 没有可用的阅读器 我花了几个小时尝试将 TagXplorer 与 Identiv uTrust 3700 阅读器连接起来,但无法成功。我尝试用 OpenJDK 和 Oracle Java 8 运行 TagXplorer。无论我怎么尝试,用户界面(和日志)总是显示"没有可用的阅读器" 。 我已经安装了 Identiv 驱动程序。我使用的是 macOS 11.1,我已经在“安全与隐私”中启用了 java 的启用输入。 有人遇到过这样的问题吗? Re: TagXplorer - No reader available 我在使用 TagXplorer 时也遇到了同样的问题,为了找到可靠的解决方案,我一直很苦恼。我偶然发现了一个有助于简化收入计算的工具,在计划过程中使用加州净工资资源,就更容易准确地估算出实得金额。希望这能帮助其他同样受困于没有阅读器的人。 Re: TagXplorer - No reader available 我曾在 Mac 上试用过一段时间,但在遇到一个又一个问题后,最终改用了 Windows。 Re: TagXplorer - No reader available 你好 我在Mac上遇到了同样的问题,MAC OS Sonoma,也是使用Identiv uTrust 3700读卡器。我直接从Identiv网站上安装了驱动程序 我的 Java 版本是 1.8.0_421,虽然可以通过其他应用程序(如 NFC 工具)访问阅读器,但 "no reader available" 。 有谁在 MAC 上取得了成功? 非常感谢! Re: TagXplorer - No reader available 更新: 我第三次重新安装了驱动程序,现在可以连接标签了。但在我尝试运行的每个操作中(例如"读取 NDEF") 我现在得到的信息是"没有可用的支持阅读器" 。 Re: TagXplorer - No reader available 我用 sudo 命令运行该命令,在 TagXplorer 中找到了阅读器。 但是标签不会出现,当在阅读器上放置 NFC 标签时,LED 会发出一些信号,但是在 TagXplorer 中点击 " Connect Tag " 之后我会收到消息 " 税收不可用 "。 Re: TagXplorer - No reader available 有人解决了这个问题吗? 我这里也有同样的问题 Re: TagXplorer - No reader available 有人在 Mac 上解决了这个问题吗? 在 Windows 10 上,我把 Open FX Directories 放在了与 TagXplorer 相同的目录下,这一切都很完美,但在我的两台 Mac 上,TagXplorer 却无法看到阅读器。 我试着把驱动程序的 symobilc 链接放到与 TagXplorer 相同的目录下,但没有成功。 我可以看到读卡器已插入 USB 上的设备。 似乎与上述问题相同--在 64 Intel 上运行 12.5。 附上 Mac 目录运行时的屏幕截图。 我把 OPen FX 代码放在应用程序的一个文件夹中,然后在终端运行以下命令,成功地在 TagXplorer 目录中运行 TagXplorer: java --module-path /Applications/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml -jar TagXplorer-v1.2.jar   欢迎就如何让 TagXplorer 看到阅读器提出任何想法 🙂   Re: TagXplorer - No reader available 我也遇到了和你完全一样的问题。 Re: TagXplorer - No reader available 您能否更具体地说明您是如何将其与 JavaFX 结合使用的?(安装 + 启动 TagXplorer) Re: TagXplorer - No reader available 更新: 在卡塔琳娜上,在我的一台老式 2013 Macbook Pro 上,阅读器没有通过 USB Adam Elements 6 端口 USB-C HUB 插入,而是直接插入 USB 2.0 端口,并且安装了 Oracle Java 9,阅读器立即就能读取。运行 jar 的输出显示与上述相同。 那么,卡塔利娜与大苏尔的对比可能是?pcsctest 确实检测到了阅读器。     Re: TagXplorer - No reader available @aaronqli @piotr_arteia 我现在已经在 Ubuntu 20.04 上试过了,结果大致相同。我采取的步骤是 在 Virtualbox 上安装 Ubuntu 按照设置指南安装 uTrust 3700 F 的驱动程序 安装 Oracle Java 9,因为其中包括 JavaFx - 检查版本 启动机器-使用 pcsc_scan 检查读卡器是否已连接(参见屏幕截图) 运行 TagXplorer - 结果与 MacOS 上一样,没有连接阅读器         本主题中是否有人对此有其他想法。如果有任何建议,我将不胜感激。我还附上了运行 jar 时的输出结果。 Re: TagXplorer - No reader available @aaronqli非常感谢你的更新。 🙂 我尝试使用 Oracle Java 11,但仍然没有显示。您使用什么命令运行 jar?你引用了 javafx 吗?如果是,是哪个版本?最后是 .jarTagXplorer 1.2?我真的很感谢您的帮助,这让我有点抓狂。 Re: TagXplorer - No reader available 给你们的快速更新:在我安装了 Oracle Java 11 的笔记本电脑(Big Sur,Macbook Pro late 2017)上运行正常。也许罪魁祸首是 OpenJDK / JavaFX Re: TagXplorer - No reader available 最后,我成功地在 Windows 10 电脑上实现了这一功能。 我在上一篇文章中说得不够准确。Windows 机器上的问题是 TagXplorer 无法启动。我成功地使用了这里给出的解决方案 https://community.nxp.com/t5/NFC/TagXplorer-v1-2-jar-cannot-start/m-p/918596#M5608,在第二次尝试启动应用程序时,它确认了设备。 我还是没有办法在 Mac 上做到这一点。 感谢您的回放! Re: TagXplorer - No reader available @piotr_arteia不幸的是,我这边没有。我有点困惑。 Re: TagXplorer - No reader available 这里也有同样的问题。 在 MacOS Catalina、BigSur 和 Windows Home 上检查了最新的 JDK 和驱动程序。 计算机能看到读取器,但 TagXplorer 却看不到。 @aaronqli,@WillHill,@Jonmixnblend你弄明白了吗? @Kan_Li,@IvanRuiz请提供帮助! Re: TagXplorer - No reader available 我的情况与@WillHill完全相同,但安装了 Big Sur 11.2.3、uTrust 3700F、uTrust 驱动程序。 使用: openjdk 15.0.2 2021-01-19 OpenJDK 运行时环境(版本 15.0.2 +7) OpenJDK 64 位服务器虚拟机(版本 15.0.2+7,混合模式、共享) ,我不得不下载并解除对 JafaFX 16 的隔离,才能让 TagXplorer 应用程序正常工作。 我知道 uTrust 已安装并正常运行,因为 pcstest 已成功完成,而且我可以在https://github.com/martinpaljak/GlobalPlatformPro中使用它。 很好。 Re: TagXplorer - No reader available 我遇到了同样的问题, 我使用的是 macOS BigSur 11.1 版 Java 8 更新版 281 我通过 USB 插入了 uTrust 3700 F(指示灯亮起,说明有电) 我从这里安装了驱动程序https://files.identiv.com/products/smart-card-readers/common-drivers/uTrust_MAC_Driver.zip 我已经重新启动了机器。 我正在运行 TagXplorer v1.2,当我按下连接阅读器时,得到的信息是"No Supported reader available" ,而下拉菜单中没有列出阅读器。 Re: TagXplorer - No reader available 在试图访问重要信息时遇到 "没有可用的阅读器 "信息,这听起来令人沮丧。我以前也遇到过类似的问题,仔细检查文件兼容性或尝试在不同的浏览器中打开文件通常会有帮助。当我需要可靠地获取当地房产详细信息时,我通常会参考杰克逊房产查询,因为它将记录整理得井井有条,而且易于浏览。希望访问问题能尽快得到解决,这样每个人都能不受干扰地浏览内容。 Re: TagXplorer - No reader available 感谢您分享这一最新消息!对于想要快速获取详细记录的人来说,您可能会发现布雷沃德县的文件非常有用,因为它以易于访问的格式提供了全面的信息。您可以查看更多详细信息,随时了解最近的申报和官方记录。这是一个方便的资源,可以有效地跟踪当地的房地产事务。     Re: TagXplorer - No reader available 我最近在试图访问一些记录时也遇到了同样的问题,这让我非常沮丧。我发现,使用马萨诸塞州遗嘱认证案例等资源对于浏览不同文件和了解相关流程非常有帮助。它使查找特定信息变得更加容易,尤其是在标准阅读器无法加载的情况下。绝对值得遇到类似情况的人一看。
記事全体を表示
S32K3xx、FLSアレイ整合性チェック こんにちは、チームの皆さん 3.0.0などの古いRTDバージョンのFLSドライバでArrayIntegrityCheckを使用する例や検証テストプロジェクトはありますか?お客様と共有できるものはありますか? 新しいRTDリリース(例:6.0.0)のユーザーマニュアルには、そのような例が含まれていますが、古い FLS バージョンでは同様のものは見つかりませんでした。 ありがとうございました。 BR、ダニエル RTD Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@danielmartynek 、 RTD 3.0.0に基づくC40_Ip_ArrayIntegrityCheckの例を添付しました。P07バージョン。 よろしくお願いいたします。 ダン Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@DanNguyenDuy 、 例をありがとうございます。 現在、外出中なので、まだテストできていません。 ただし、お客様は命令バス障害例外が発生したと報告しています。 明確に言うと、私の理解では、テスト中はフラッシュ アレイが使用できなくなるため、アレイ整合性チェックに関係する C40_Ip API は SRAM から実行する必要があるということです。 これは正しいですか? ドライバのテスト/検証中に、どの特定のドライバ API が SRAM から実行されたかを確認できますか? ありがとうございました。 BR、ダニエル Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@danielmartynek 、 1. これは正しいですか? => はい、その通りです。 2. ドライバのテスト/検証中に、どの特定のドライバ API が SRAM から実行されたかを確認できますか? => 今のところ、SRAM 上で C40_Ip_ArrayIntegrityCheck を実行することをサポートする特定のドライバはありません。 よろしくお願いいたします。 ダン Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@DanNguyenDuy 、 ご返信ありがとうございます。 C40_Ip_ArrayIntegrityCheck()とC40_Ip_CheckUserTestStatus() をSRAM に配置する必要があることは理解しています。 SRAM に配置する必要がある追加の機能はありますか? C40_Ip ドライバの機能はテスト済みであるはずですよね? SO、テストのセットアップについて詳細を教えていただけますか?ドライバ所有者が検証の実行方法についてコメントしていただければ助かります。 BR、ダニエル Re: S32K3xx, FLS ArrayIntegrityCheck こんにちは@danielmartynek 、 RTD チームは、linker_flash の代わりに linker_ram を使用してこの機能をテストしました。 この例では、ユーザーはmakefile内の変数を変更できます: LOAD_TO=ram はlinker_ramを使用します。 よろしくお願いいたします。 ダン
記事全体を表示
LS1046A RDB: LinuxのGPIO割り込み処理パフォーマンスをテストするためのGPIO こんにちは、 私は LS1046ARDB を使用しており、割り込みレイテンシを測定したいと考えています。私の目標は、外部信号発生器 (入力 GPIO) を介して割り込みをトリガーし、それに応じて別のピン (出力 GPIO) を切り替えて、オシロスコープで遅延を測定することです。 GPIO として多重化できるボード ヘッダー上のアクセス可能なピンを探しています。 私のアイデアは、IEEE-1588 ヘッダー (J11) を使用することですが、これが機能するかどうか、また何をしなければならないかはわかりません。 リファレンス・マニュアルには、EC2 ピンは RCW (EC2 = 1) を介して GPIO3 として設定できると記載されています。 RCW で EC2=1 を設定すると、これらの信号は J11 にルーティングされますか? LS1046A RDB には、これに使用できる他の簡単にアクセスできるピンはありますか? ご協力いただきありがとうございます QorIQ LS1デバイス Re: LS1046A RDB: GPIOs for testing gpio interrupt handling performance of linux ご協力いただきありがとうございます!これで動作するはずです。GPIO_2[1]、GPIO_2[2]、GPIO_2[3]はTP14、TP13、TP11に対応していることがわかりました。 Re: LS1046A RDB: GPIOs for testing gpio interrupt handling performance of linux SPI 信号と多重化されたGPIOを使用できます。 GPIO_2[1]、GPIO_2[2]、GPIO_2[3] SPIインターフェースはRDBでは使用されず、テストポイントに終端されます。 「表3-8」を参照してください。詳細については、LS1046ARM の「SPI 信号構成」を参照してください。
記事全体を表示
S32K358 基于 AUTOSAR 驱动程序的 HSE 随机数生成器 亲爱的支持者 客户 Aptiv 与 S32K358 合作 RTD 版本:Crypto_43_HSE_TS_T40D34M60I0R0 HSE FW 版本:HSE_FW_S32K358_9_2_72_0 在尝试在微控制器上集成加密RTD并刷新HSE固件后生成随机数时,我们观察到一个问题,即固件似乎停留在HSE_IP_ServiceRequest () 函数上,特别是在等待 mu_IP_isResponseReady () 时。请查看随附的调用堆栈屏幕截图以参考。 请您帮助我们理解: 固件卡在这一点上的可能原因是什么? 解决此问题的建议方案或调试步骤? PS: 我已在 BSWM 配置中配置了 CSM_Init、CriIf_Init 和 Crypto_Init 在 Vector Davinci 中配置的 CSM、CryIf,从 BSWM_Init 调用中调用的 CSM、CryIF、Crypto 的初始函数。使用 Demo APP 安装了 HSE,并通过读取版本号和 MU 状态寄存器进行了验证,如下图所示: 客户要求提供基于 AUTOSAR xdm 配置 CSM、CriIf 和 Crypto 驱动程序的 AUTOSAR 示例(而不是 DEMOAPP 的代码)。附上他们的 Crypto xdm 文件。 (到目前为止,恩智浦方面的 Sunny X 和 Dhan Raj 参与了一次调试呼叫,但我们尚未找到最终的根本原因......)。 顺祝商祺! 维克托 板:S32K358 优先权:紧急 SW 变体:标准 Re: S32K358 HSE Random Number Generation based on AUTOSAR drivers 你好 Cuong、 我们得到了帮助和aakash.gaur@nxp.com创建了一个例子。 让我们把这张票保留到下周客户试用时。 我会允许你访问 Sharepoint 上的示例。 顺祝商祺! 维克托   Re: S32K358 HSE Random Number Generation based on AUTOSAR drivers 你好@viktorfellinger ,我正在为你创建一个示例。 同时,您能否告诉我: 1.您多久会遇到这个问题?是经常发生还是偶尔发生 2.pRequest 的值 pRequest 和 pHseSrvDesc 的 值。 Hse_Ip_ServiceRequest() 时的 pRequest 和 pHseSrvDesc 值。 您能否尝试增加 pRequest中的超时值 ,看看能否解决这个问题? Re: S32K358 HSE Random Number Generation based on AUTOSAR drivers 您好@viktorfellinger ,您收到反馈了吗? 如果没有更新,我想关闭这个话题。 客户稍后可以提出另一个问题,然后您可以再次提及此主题
記事全体を表示
Imx95 verdin EVK、Aquantia10gbpsインターフェースはudpで1.2gbpsに制限されています こんにちは、 私は、Aquantia 10 Gbps インターフェースを介して、2 つの Imx95 verdin EVK A1 シリコン バージョン ボード間の通信を確立しようとしています。両方のボードは、nxp インストーラー (aquantia-firmware-utility/aq_api_2_9_7 at master · nxp-qoriq/aquantia-firmware-utility · GitHub) を使用して適切にインストールされた aquantia10 G ファームウェア (AQR-G4_v5.6.D-AQR_Marvell_NoSwap_XFI_ID44834_VER2068.cld) とともに Debian 12 (Linux カーネル 6.12.3 ) を実行しています。これらは Cat6a イーサネット ケーブルを使用して物理的にコネクテッドされます。 iperf3 を使用してパフォーマンス テストを実行すると、ターゲット帯域幅を 7 Gbps に指定した場合でも、TCP で約 5 Gbps、UDP で約 1.2 Gbps が得られ、損失は 0% になります。 # TCPテスト 最初のボードで iperf3 -s # iperf3 -c -t 30 # 2番目のボード # UDPテスト iperf3 -s iperf3 -c -u -b 7G -t 30 ip link set dev enp1s0 mtu 9000 でジャンボ フレームを有効にしようとすると、制限を超えたというエラーが発生します (10Gbps インターフェースがジャンボ フレームを受け入れないのは奇妙です) また、UDPバッファサイズを増やそうとしましたが、同じビットフレームが発生します 両側でiperf3を実行してもCPU負荷は40%を超えません 最大スループット (10 Gbps 近く) を達成するために、適用する特定の n 構成やインストールする追加ツールはありますか? Aquantia FW バージョンは適切ですか? Linux カーネルのバージョンは適切ですか? FW インストーラーのバージョンは適切ですか? 誰かがすでにこのターゲットで 10Gbps インターフェースを使用しようとしましたか? よろしくお願いいたします。 アブデルモナエム Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 1. 両方のシステムで次の設定を構成してみます。 cpufreq-set -g パフォーマンス sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.wmem_max=26214400 sysctl -w net.core.netdev_max_backlog=250000 sysctl -w net.ipv4.tcp_rmem='409687380 16777216' sysctl -w net.ipv4.tcp_wmem='409665536 16777216' 2. 可能であれば、iperfサーバーとは異なる参照システムを使用します(例:インテル Xeon 3. iperf3 自体はテスト ストリームごとにシングル Thread なので、-P オプションを使用してみてください。 例えばiperf3 -c -u -b 10G -t 30 -P 6 (6つのストリーム) 4. 順方向と逆方向の両方のストリームをチェックする(-R) iperf3 -c 192.168.1.1 -t 10 -b 10G -u -R Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp こんにちは、 ご意見ありがとうございます。 設定を適用します: cpufreq-set -g パフォーマンス sysctl -w net.core.rmem_max=26214400 sysctl -w net.core.wmem_max=26214400 sysctl -w net.core.netdev_max_backlog=250000 sysctl -w net.ipv4.tcp_rmem='409687380 16777216' sysctl -w net.ipv4.tcp_wmem='409665536 16777216' 現在、送信側のみで10Gbps、時には8、8または9、8Gbpsを達成でき、iperfのみでiperf3は使用していません。レシーバ側では、フレーム損失が36%で5.59Gbpsしか達成できません。この問題を解決するのを手伝っていただけますか? Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 6.12.49へのマイナーバージョンアップグレードとなります ところで、スループットを向上させるために、DPDK または AF_XDP も検討してみてはいかがでしょうか? Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp => TCPとUDPの送信パフォーマンス iperf3 を使用して TCP パケットを送信する場合、各 TCP パケットは 128 KB であり、パケットは ENETC ハードウェアの LSO 機能によって断片化されます。SO、TCP 転送パフォーマンスが向上します。 iperf3 は、UDP ソケットを作成するときに UDP_SEGMENT を有効にしません。したがって: - 各 UDP パケットのサイズは、およそ MTU サイズ (≈1500 バイト) です。 - 同じデータ サイズの場合、UDP は TCP よりも多くのパケットを送信する必要があります。 パケット数の増加 → カーネルプロセッシングの増加 → LSO を使用した TCP と比較してパフォーマンスの低下。 => TCP の場合、受信が送信に比べて大幅に低いのはなぜですか? - Linux カーネルでは TX パスと RX パスが対称ではないため、カーネル内の各 RX パケットと各 TX パケットのプロセッシング時間は異なります。また、TCP は送信時に LSO オフロードを使用しています。 - RSC はカーネル内でデフォルトで有効になっていません。ENETC の RSC が適切に動作するように、TCP タイムスタンプを無効にする必要があります。現在、i.MX95 の RSC はデフォルトで無効になっています。 a) i.MX95(レシーバ)のRSCを有効にする: ethtool -K eth1 大容量受信オフロードオン b) TCPタイムスタンプを無効にする(送信側): sysctl -w net.ipv4.tcp_timestamps=0 sysctl -p /etc/sysctl.conf RSC を有効にすると、レシーバの TCP パフォーマンスが向上します。 さらに、より高いスループットを得るためにジャンボ フレームを使用することもできます。(最新リリースを実行していることを願います)。 # 両側のMTUを9000に変更します IPリンク設定 dev eth1 mtu 9000 # イーサネット ドライバの RX バッファの長さを変更します。 ethtool -G eth1 受信バッファ長 16384 マルチストリーム モードでは、8 ~ 10 Gbps の UDP RX/TX が確認できます。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp こんにちは、 私は今のところUDPだけに興味があり、TCPには興味がありません。そして、オフロードは メカニズムはUDPには適用されません MTU を 9000 に設定してジャンボ フレームを有効にしようとしましたが、制限の 1500 を超えたというエラーが表示されます (カーネル バージョン 6.12.3 を使用しています) よろしくお願いいたします。 アブデルモナエム Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp RSC 設定により UDP パフォーマンスも向上します。 ENETC のジャンボ フレームの変更/修正は、2 週間以内にリリースされる LF-Q4 で利用可能になる予定です。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp わかりました、これを試してみます、そして結果がどうなったかお伝えします、 LF-Q4 の Linux カーネル バージョンを詳しく教えていただけますか?先ほど言ったように、私は 6.12.3 を使っていますが、シリコン リビジョンが A1 なので上位バージョンに移行できません。B0 リビジョンにアップグレードする必要があるかどうかを知る必要があります。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 問題はありません。iperf で 1 つのフローだけで 5Gbps の並列フローで 9、8Bps で 10Gbps まで行くことができますが、大きな問題は UDP です。モノフローでは 2Gbps でフレーム損失はなく問題ありませんが、並列フローでは 5、5Gbps で 42% の損失があります。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp AF_XDP や DPDK が 46% の損失を 0% に減らすのに役立つとは思えません。また、IRQ の親和性も検証したところ、10G インターフェースには 6 つの IRQ があり、それぞれが CPU に影響を与えていることがわかりました。テスト中に CPU 負荷の問題は発生しませんでした。1 つの CPU の最大 CPU 負荷は 40% です。フレームが失われ続ける理由がまだわかりません。使用しているカーネル バージョンがジャンボ フレームをサポートしていないことが原因かもしれません。 あなたの側(NXP)で10Gインターフェースのパフォーマンステストは実施しましたか?あなたの側でテストして、私と同じ問題があるかどうかを確認する必要があると思います。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp AF_XDP または DPDK はカーネル ネットワーク スタックを使用しません。 DPDK には特別なドライバがあり、ユーザー空間でのみ動作します。ネットワークとパケットプロセッシングに高度に最適化されています。すべての IP パケットに対して非常に高速なパフォーマンスをCANで提供できます。以下のサイトで確認することができます。 第10章: https://www.nxp.com/docs/en/reference-manual/RM00293.pdf Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp このテストは、シリコン リビジョン A1 または B0 で実行されます。 このテストに使用されたカーネル バージョン 6.12.49 が B0 にのみ適用可能か、それとも A1 にも適用可能かを確認しますか? このカーネル バージョンは BSP 配信には表示されません。最新のものは 6.12.34 ですhttps://www.nxp.com/pages/alpha-beta-bsps-for-microprocessors:IMXPRERELEASES Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 新しいカーネル ツリーと変更は次の場所で入手できます。 https://github.com/nxp-imx/linux-imx/commits/lf-6.12.49-2.2.0 新しい LF リリースでは A1 サポートが削除されました。 次のオプションがあります。 1. カーネルを個別にビルドし、ビルド内のカーネルのみを置き換えます。(うまくいくかもしれない) 2. マーケティングお問い合わせにボードを B0 に交換してもらい、LF-Q4'2025 リリースを実行できるように SO CAN します。 Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp これらの行からは理解できません: 単一 UDP ストリーム送信 (1500 MTU): 2 Gbps (単一ストリームで MTU 1500 の送信では 2 Gbps になるようです) マルチ UDP ストリーム送信 (1500 MTU): 10 Gbps (これは、マルチ ストリームで MTU 1500 の送信では 10 Gbps になるようです) 単一 UDP ストリーム送信 (9000 MTU): 8.2 Gbps (単一ストリームで MTU 900 の送信では 8.2 Gbps になるようです) 単一 UDP ストリーム受信 (9000 MTU): 3.9 Gbps (単一ストリームで MTU 9000 の Rx では 3.9 Gbps になるようです) マルチ UDP ストリーム受信 (9000 MTU): 10Gbps (マルチストリームの MTU 9000 の Rx では 2Gbps になるようです) 私には見えません: 単一UDPストリーム受信(1500 MTU) マルチUDPストリーム受信(1500 MTU) Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp わかりました。念のため、受信側で MTU = 1500 でテストを行ってください。この新しいバージョンで私と同じ結果が得られるか知りたいです。また、テストでは送信を 1500、受信を 9000 に設定していますが、これでは何も変わりません。両側で 1500 になっているようなものです。ジャンボ フレームをテストする必要がある場合は、両側で 9000 にする必要があります。次の構成でテストをやり直してください。 1- モノおよびマルチストリームで両側に MTU = 1500 の RX/TX 2- モノおよびマルチストリームで両側に MTU = 9000 の RX/TX よろしくお願いします Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp はい、このようにして結果がテストされました。 MTU はすべてのCASEで両側で同じでした (両方とも 1500 または両方とも 9000) Re: Imx95 verdin EVK, Aquantia10gbps interface limited on 1.2gbps on udp 添付資料参照 また、A1 SOCでも実行していることにも注意してください。 UBOOT ログ: - U-Boot 2025.04-g8c1de2e1deca(2025年5月9日 - 15:29:26 +0000) CPU: i.MX95 rev1.1(1800MHz) CPU: オートモーティブ温度グレード (-40℃~125℃)、30℃ LM ブート理由: sw、オリジン: 2、エラー: 1 LM シャットダウン理由: sw、発生元: 2、エラー: 1 モデル: NXP i.MX95 19X19 ボード DRAM: 15.8ギブ --- SMログ >$ 情報 SM バージョン = ビルド 633、コミット c37b26da SM 構成 = mx95evk、mSel=0 ボード = i.MX95 EVK、属性 = 0x00000000 シリコン = i.MX95 A1 ブートモード = 通常 ブートデバイス = MMC1 ブートステージ = プライマリ ブートセット = 1 ECID = 0x6E5F04BA0000000500041D0899123F81 PMIC 0 (0x08) = 0x20、0x09、0x10、0x00、0x01 PMIC 1 (0x2A) = 0x54, 0x22, 0x00, 0x0B PMIC 2 (0x29) = 0x55, 0x22, 0x00, 0x0A コンパイラ = gcc 14.2.1 20241119
記事全体を表示
I²C Hardware Debugging I²C is used as a serial interface between chips. It is so commonplace that it is used in so many systems that no problems arise. However, sometimes even small things can get you hooked. Here we will introduce some common I²C problems and some easy debugging methods. 0. Table of Contents table of contents Anyway it doesn't work! (--; The target doesn't respond (꒪⌓꒪) Repeat start was necessary/unavailable Controllers that do not support clock stretching Multi-Controller The clock frequency is lowered Long distance routing. Noise and crosstalk can cause communication problems. Measuring Bus Capacitance SDA Line Stuck and Bus Clear Who is giving the signal? Reference materials 1. It just doesn't work! (--;   I forgot to put on the pull-up orz This is a common problem when using an I²C device for the first time. When you obtain a sample chip and try it out on a breadboard or universal board, you connect it to a microcontroller while checking the I²C signal names. At this point, it's easy to forget to attach a pull-up resistor . I²C signals have an output called " open drain ." A high-level voltage cannot be obtained unless an external pull-up resistor is attached. When trying to easily check operation using a breadboard, it is easy to forget about this resistor. Don't forget to use pull-up resistors on the SDA and SCL signals! How do you determine the pull-up resistor value? How is the value of a pull-up resistor determined? Generally, values such as 2.2 kΩ or 4.7 kΩ are used. I think many people use these values without much consideration. But what happens if a smaller or larger value is used ? A pull-up with a small resistance value can cause the problem of "not being able to pull the signal low enough." When a device outputs a low signal, current flows through the pull-up resistor. If the resistance is small, the current flowing here will be large, and this current will flow into the device that is outputting a low signal. The transistor that pulls the signal low inside the device has a resistance component, and this resistance and current create a voltage. For this reason, if the current becomes large, a higher-than-expected voltage will be generated, and a sufficiently low low-level voltage will not be obtained. Conversely, pull-up resistors with large resistance values can cause problems such as insufficient communication speeds. When a signal transitions from LOW to HIGH, the capacitance of the signal line is charged via the pull-up resistor, causing the voltage to rise. If a large resistance value is used for the pull-up, the current at this time becomes smaller, and it takes longer for the signal to rise (voltage to rise). There is a method for calculating the value of the pull-up resistor. Details are provided in Section 7 of the I²C Specification [English version (rev7)] [Japanese version (rev5)] . Generally, when using I²C fast mode (400kHz) with a pull-up voltage of 3.3V, a pull-up resistance of around 1kΩ to 8kΩ can be used without any problems [Figure 1]. Figure 1: Pull-up resistor values for I²C signal lines 2. The target doesn't respond (꒪⌓꒪)   No ACK returned!😭 I connected the microcontroller to the target, added a pull-up resistor, and checked the signal's HIGH level with an oscilloscope, but the target still did not respond . "Target not responding" means that no ACK is returned after the target address is sent. This is common in the early stages of evaluation. Many targets allow you to change the target address depending on their settings (for example, by connecting the address setting pin to power or GND), so you need to double-check which address is set. Also, even if you think you've set the address correctly, you need to check whether the address written in hexadecimal on the datasheet is a 7-bit representation (right-justified) or an 8-bit representation (left-justified). Furthermore, the microcontroller development tool (SDK) you're using may specify hexadecimal addresses in 7-bit representation (such as MicroPython) or 8-bit representation (such as Arm Mbed).💦 The I²C specification does not use either representation, and addresses are standardized to binary representation, so there is no such misunderstanding, but you should be careful when specifying them in hexadecimal.   How to check How can you specify the target address? Check this in the device specifications and development tools. Then double-check that the device address is set as intended. When checking on an actual device, for example in MicroPython the I2C class has a scan() method which displays a list of devices connected to the bus that are returning ACKs. One technique is to use this kind of function to quickly see what the settings are [Figure 2]. If the SDK you are using does not have a function like I2C::scan(), try sending addresses in order and checking for ACK/NACK. Figure 2: Testing I2C.scan() 3. Repeat starts were necessary/unavailable   Even if I communicate according to the target device specifications, I can't read the data? The I²C specification defines the signal levels and protocols in detail. Writes and reads can be performed in a defined manner on any target device. However , the method for accessing the registers and data buffers within that target is determined by the specifications of each device. For target devices with multiple internal registers, it is generally possible to specify and read/write registers using communications such as those shown in Figure 3. However, even if communications are performed in this manner, there are cases where the expected data is not read.   Repeat Start Condition When executing a write transaction to specify a register address and a read transaction to read the register consecutively, a repeated start condition is often used to start the second transaction. The repeated start condition is used to avoid the bus-free state that occurs after a stop condition before generating the next start condition. From the target device's perspective, using a repeated start condition is usually equivalent to using a stop and start condition. However, there are devices that do not do this, and for such devices you must use one of the two methods to read the registers. Some microcontroller SDKs provide an API for reading registers on I²C targets, which automatically handles access with a repeated start condition, but some microcontrollers do not support inserting a stop condition. In such cases, the API cannot be used as is, and it becomes necessary to handle the protocol at a lower level. It is important to be careful as devices and microcontroller SDKs can have "specification pitfalls" like this that you only notice later. Figure 3: Typical register access 4. Controllers that do not support clock stretching   The behavior is strange! I²C has an optional function called " clock stretching ." Even nowadays, there are rare devices that have this function. The general I²C controllers installed in many microcontrollers support this clock stretching function, so you don't have to worry about it too much, but if you are implementing your own controller, you need to be aware of this optional function.   What is clock stretching? I²C transmits and receives data according to the timing of the clock output by the controller. However, clock stretching is an option that allows the target side to make the controller wait [Figure 4]. The controller also outputs the clock via open drain. The controller monitors its own clock output and checks whether the signal is HIGH when it outputs HIGH. If the target side wants to make the controller wait, it holds this clock signal LOW. The controller knows it is being made to wait when the clock, which should be HIGH, turns LOW. If the controller ignores this target behavior, it may cause communication problems such as fewer clocks being output. Figure 4: Clock stretching 5. Multi-Controller   Also for debugging a running target device Multi-controller is also an optional feature of I²C. Multiple controllers can control communication on the same bus without affecting each other's communication.   There aren't many applications that use it There are not many cases where multiple controllers are used, except for a few applications. However, the I²C controllers built into many microcontrollers have this function. Using this function, for example, if there is a problem with a running system, you can connect another microcontroller to the I²C bus and read or overwrite the contents of each target's register settings to verify them [Figure 5]. Normal debugging involves checking the code you have written, so you probably won't have an opportunity to do this, but it may be useful when verifying an unknown system for which the source code is unavailable. Figure 5: Multi-master debugging 6. Clock frequency is lower   I thought I had set it to a 100kHz clock. There aren't many cases where the I²C bandwidth is used to its full potential. However, what if you find that communication is occurring at a clock frequency that is significantly different from the speed you intended? Clock stretching, which was introduced in the previous section, is related to frequency reduction . Below is an example at 100kHz, but the higher the frequency used, the greater this effect (rate of frequency reduction).   Check the waveform and adjust the frequency Clock stretching is a function that makes the controller wait. However, it does not only affect the target. As the signal line length increases and the number of connected devices increases, the capacitance of the bus increases. In this case, if a large resistor is used for pull-up, the rise of the signal will be slowed down. A slow signal rise time increases the time it takes for the clock to go high. After the clock goes high, the controller operates to ensure the set high hold time, resulting in a longer low-to-high transition time, which extends the low period. This causes a drop in the clock frequency [Figure 6]. Depending on the controller, you may be able to set the clock frequency in detail, or the LOW and HIGH periods of the clock. If you are concerned about the frequency, check the waveform and adjust the clock settings. 7. Long-distance routing. Noise and crosstalk can cause communication problems.   Data errors caused by waveform distortion I²C is an easy-to-use two-wire serial bus. Because it is a slow signal, it will operate stably even if the signal line is extended to a distance of a few tens of centimeters (although this depends on the environment). However, if you are not careful and consider the characteristics of I²C, you may experience unexpected behavior. High impedance, two wires Because I²C is an open-drain signal, when a HIGH level is output, the impedance of the signal line is high. With a push-pull signal, if the device outputting the signal is LOW it is close to short-circuiting to GND, and if it is HIGH it is close to short-circuiting to the power supply, but with I²C it is connected to the power supply via a pull-up resistor. If noise is picked up on the signal line here, the noise current will escape to the power supply via the resistor. In addition, the currents of each I²C signal line also affect each other, which causes crosstalk. To reduce noise and crosstalk, careful wiring is required. For example, GND or power supply wiring should be placed between the data and clock signals [Figure 7]. Alternatively, using a bus buffer is effective when transmitting over long distances via cable. However, because I²C is a bidirectional open-drain signal, standard logic buffers cannot be used as is. Various buffers are available for I²C, including those with signal voltage conversion functions and those that convert single-ended I²C to differential signals. By combining these, it is possible to create a stable and reliable system even when signal lines are run long distances. Figure 7: Crosstalk and noise 8. Measuring Bus Capacitance   Bus capacity limit... But how do you measure it? Up to 400kHz, I²C can communicate with a bus capacitance of up to 400pF. For 1MHz, I²C can communicate with a bus capacitance of up to 550pF. But how can we know this bus capacitance?   Calculate backward from the signal waveform This blog post introduces several topics related to bus capacitance, all of which point out that the rise time of signals increases. Bus capacitance can be determined from this rise time. [Figure 8] shows an example waveform. For an I²C signal pulled up to a 5V power supply with 2.2kΩ, the rise time (T) from the LOW reference voltage V OL = 1.5V to the HIGH reference voltage V OH = 3.5V is 154ns. The formula in section 7.1 of the I²C specification [English version (rev7)] [Japanese version (rev5)] is "T = 0.8473 x RC," so if we apply "C = T / (0.8473 x R)," we get approximately 82pF. Subtracting the capacitance of the probe used for measurement (15pF), we get approximately 67pF. Figure 8: Calculating bus capacitance 9. SDA Line Stuck and Bus Clear   SDA stuck at LOW and stopped working The controller and target communicate with each other based on a clock. If the number of clocks becomes inconsistent due to noise or other reasons, not only will the communication be bit-shifted, but the situation will become known as "bus stuck." Figure 9-a shows an example in which the controller thinks it has sent nine clock pulses and finished communication, but the target is still returning an ACK as the last bit.   Getting out of a stuck bus situation There are two ways to get out of this state. One is to reset the target. The other is to clear the bus. Bus clearing is described in the I²C specification [English version (rev7)] [Japanese version (rev5)] (Section 3.1.16). If SDA is stuck LOW, you can return the target state to normal by generating nine clock pulses. [Figure 9-b] shows an example where an ACK was issued at the end of a read transfer due to a programming error on the microcontroller side. The MSB of the next data to be read happened to be 0, so SDA was fixed LOW. To get out of this situation, we issue a clock nine times and clear the bus, after which we can see that the target has returned to normal. In addition, the System Management Bus (SMBus), which uses I²C as its specification, has a timeout function on top of the normal I²C specification, and is specified to automatically return to normal operation after a maximum of 35 ms has elapsed on the target device. The I²C specification does not have such a timeout provision, so once a stuck state occurs, it cannot be recovered from without resetting or clearing the bus. Figure 9-a: Example of a bus stuck Figure 9-b: Bus Clear   10. Who is sending the signal? Series resistor   Who is keeping the signal low? When looking at the bus status of the bus stack mentioned above or a multi-controller system, you may want to know which device is sending the signal. The voltage when a LOW signal is output varies depending on the drive capacity of each device, and this can tell you which device is sending the signal.   Add a series resistor and check the voltage [Figure 10] is an example of a multi-controller waveform. This waveform shows two controllers attempting to start communication at the same time, with clock synchronization and arbitration taking place. One controller (microcontroller 1) is attempting to start communication at 400 kHz, and the other controller (microcontroller 0) is attempting to start communication at 100 kHz, each driving the SCL signal. Looking at the clock waveform, we can see that the terminal of the 100kHz controller is connected to the bus via a 100Ω resistor, so when microcontroller 0 outputs a LOW, this series resistor limits its ability to draw current, causing the LOW voltage to rise slightly. By using this mechanism, we can determine which device output a LOW. Figure 10: Who is signaling?   11. Reference materials I2C Bus Specification and User Manual (Rev5.0 Japanese version) I2C Bus Specification and User Manual (Rev7.0 English version) Interface March 2024 issue (CQ Publishing) : Special feature "Serial communication from scratch [UART/I2C/SPI with Pico]" Transistor Technology Special No.161 "Measure, Measure, Measure Circuit & Technique Collection" Appendix: "Detailed Explanation of 2-wire Serial Interface I²C" - The above magazine article is an excerpt from this article. NXP Community Blog: An Overview of the I²C Bus [Originally published in Interface, March 2024 issue (CQ Publishing), " UART, I²C, SPI, CAN... Problems that can occur with various standards " pp. 101-115. The I²C-related section has been excerpted and revised for this blog post .] Change history: 2025-02-04: First Edition 2025-08-14: Corrected a typographical error in the section "3. Repeat Start was necessary/unavailable." Added a line break to the text of the section "7. Long-distance routing. Communication becomes erratic due to noise and crosstalk." 2026-01-02: Added an introductory section before the table of contents / Added a YouTube video link to the section about MicroPython. 2026-04-14: Fixed broken links. Improved readability.     ========================= We are currently unable to respond to comments in the "Comment" section of this post. We apologize for the inconvenience, but when making inquiries, please refer to `` Technical Questions to NXP - How to Contact Us( Japanese Blog) ''. (If you are already an NXP distributor or have a relationship with NXP, you may ask the person in charge directly.) I²C is used as a serial interface between chips. It is so commonplace that it is used in so many systems that no problems arise. However, sometimes even small things can get you hooked. Here we will introduce some common I²C problems and some easy debugging methods. Interface Japanese blog
記事全体を表示
汇编程序在 CodeWarrior 中不合法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好   在使用 mwasmeppc.exe 编译汇编文件时,我遇到了一个问题、这是错误信息:   * 编译 s -> o * ### mwasmeppc.exe Assembler: # File: .\output\obj\cstartup.s # --------------------------------- # 88: e_and2i. # Error: ^^^^^^^^ # 当前目标处理器的指令不合法 ### mwasmeppc.exe 汇编器: # 99: sub r4,r3 # 错误: ^^^^^ # 简化助记符子的参数不足 ### mwasmeppc.exe 汇编器: # 114: e_or2i r31,0x4002 # Error: ^^^^^^ # 对于当前目标处理器,指令不合法   某些命令( e_and2i.sub e_or2i)无法识别,但该文件 cstartup.s 可与其他编译器(Greenhills、Windriver 等)配合使用。   CodeWarrior 版本: 适用于 MPC55xxMPC56xx v2.10。 MCU: XPC560XB CPU 类型为 -proc Zen   我不知道是我错过了一些编译器选项,还是我需要包含一些编译器文件?   顺祝商祺! 思佳 概述 Re: Assembler not legal in CodeWarrior 这是一个有趣的问题!这可能与 CodeWarrior 处理旧版汇编指令或项目设置的方式有关。您可以尝试查看编译器配置,检查是否正确设置了所有汇编路径。要更清楚地了解此类程序或法律文件细节,您可以访问迈阿密戴德在线案例,获取有关结构化流程和案件处理的参考式见解。有时,重温文档标准有助于有效确定缺失的配置。 Re: Assembler not legal in CodeWarrior 如果 CodeWarrior 不支持某些工具或功能(如汇编器),就会很麻烦。要获得有关相关规则和合规性的更多指导或验证,刑事法庭数据等资源有时可以提供有用的参考点。探索替代方法或支持模块可确保开发工作更加顺利。随时了解制约因素有助于防止意外错误并简化编码项目。 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 我已将"答案" 贴到您的另一个主题上。请检查。 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 非常感谢。 我还有一个关于汇编代码的问题https://community.nxp.com/thread/434043你能看看吗? 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 请查看附件,我向您发送的是使用 CW 2.10 生成的一些项目的默认链接器文件。您可以将其作为链接文件的指南。 关于调试信息,这里有部分文档介绍了如何在 .elf 中添加调试信息锉刀希望能对您有所帮助。如果没有,请告诉我,我会尝试不同的解决方案。 ------------------------------------------------------------------------------- 调试控制选项 ------------------------------------------------------------------------------- -g[dwarf] # 全局;套用;生成 DWARF 1.x 调试 # 信息;与"-sym dwarf-1,full "相同 -gdwarf-2 # 全局;套用;生成 DWARF 2.x 调试 # 信息;与"-sym dwarf-2,full" 相同 -sym 关键字[,...] # 全局;指定调试选项 off # 不生成调试信息; # 默认值 on|dwarf-1 # 打开 DWARF 1.x 调试信息 dwarf-2 # 打开 DWARF 2.x 调试信息 ----------------------------------------------------------------------------------------------------- 此致, 马丁 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 我修改了 lcf 文件,现在项目可以生成地图和精灵了。 现在 lcf 文件仍然有一些错误,当我使用 Trace32 调试代码时,它找不到启动代码,我怎样才能将启动代码(__entry)定义为 0x0 地址? 另一个问题是,我只能在 Trace32 中看到汇编程序,您知道如何才能在 Trace32 中看到 c 文件吗? 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 MAP 文件看起来不完整。在连接项目时是否有任何错误?您是否能获得 .elf文件?您只共享了一个对象文件,因此我无法尝试链接。 因此,能否请您给我回信,最后能否请您分享您想链接到一起的所有对象文件? 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 这些是 .o文件和地图文件。 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 能否请您分享一下生成的地图文件?为什么您认为地图文件不正确? 能否共享您试图链接的对象文件? 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,马丁、 我使用的是 mwldeppc。 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 您是使用 CodeWarrior IDE 还是 mwldeppc 命令行工具进行链接? 参考资料 Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 这些是我使用的链接选项: LINK_OPT += -proc=Zen #mcu 类型;通用 LINK_OPT += -char=unsigned #设置 "char "的符号;必须与编译器匹配。 LINK_OPT += -srec #生成扩展名为 .mot 的 S 记录文件 LINK_OPT += -map #生成地图文件 LINK_OPT += -code_merging=all,aggressive #代码合并优化 LINK_OPT += -far_near_addressing #启用远近寻址优化 LINK_OPT += -vle_enhance_merging #启用 VLE 增强代码合并优化功能 LINK_OPT += -vle_bl_opt LINK_OPT += -abi eabi LINK_OPT += -gdwarf-2 LINK_OPT += -nostdlib LINK_OPT += -m __entry 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 好的,但现在我无法生成正确的 .Map 文件,是否需要添加一些链接选项?或 .o文件不好吗? 这是生成的地图文件的一部分: __入口的链接地图 代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\Platforms_ConTest_RamNoInit.o 代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\main.o 代码折叠在文件中:C:\HaoSijia\Projects\498_XPC560XD_XB\test_base\Conformance\IN\Platforms_ConTest_RamNoInit\output\obj\板.o … 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 是的,你完全可以使用自己的启动程序,而不是 CodeWarrior 启动文件。 此致, Martin Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 感谢您的解决方案,现在我又遇到了一个关于启动代码的问题: CodeWarrior 有自己的启动文件__start.c and __ppc_eabi_init.c、 我能用自己的启动代码代替这两个文件吗? CodeWarrior 版本:适用于 MPC55xxMPC56xx v2.10。 MCU: XPC560XB 顺祝商祺! 思佳 Re: Assembler not legal in CodeWarrior <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,思佳、 我看到了一些不一致的地方,可能是你要编译的代码中存在的问题: 1) 指令e_and2i和e_or2i是 VLE,而sub是 BookE。在使用mwasmeppc.exe 时,不可能在一个文件中编译两种指令。 2) 指令子程序必须有三个参数。 有几种解决方案: 1) 最好的办法是用 se_sub 代替 sub 指令,se_sub 是 VLE 指令,需要 2 个参数。不要忘记使用 -vle 选项编译文件。 2) 可以用 BookE 指令替换 VLE 指令,并在子指令中添加第三个参数。 看看附件,我给你发了 bookE 和 VLE 参考手册,其中详细描述了所有说明。 如果您有任何其他问题,请随时给我回信。 此致, Martin Re: Assembler not legal in CodeWarrior 当 CodeWarrior 抛出汇编程序错误时,尤其是当语法中的所有内容似乎都正确时,会令人沮丧。有时,问题会归结为配置或指令丢失,因此仔细检查项目设置会有所帮助。最近,我在研究文档准确性时遇到了里士满法律服务公司,它提醒我,可靠的参考资料在故障排除中是多么重要。希望分享这样的经验能帮助其他人更快地摆脱困境。 Re: Assembler not legal in CodeWarrior 我在尝试使用 CodeWarrior 中的汇编程序时也遇到了同样的问题,这让我非常沮丧。对于任何需要可靠法院信息的人来说,威尔公共记录都是查询备案和案件详细信息的有用资源。它使某些法律问题的解决变得更加容易,而无需依赖零散的资料来源。如果您想快速查阅官方记录,绝对值得一试。
記事全体を表示
S32K144:在 lin_master_s32k144 (S32DS.ARM2.2) 中集成 FlexCAN 早上好: 目前使用 S32K144EVB 板准备系统演示,其中我们必须管理 1 个经典的 CAN-HS 网络 (500k) 和 3 个 LIN。(19200,每个 LIN 有多个从属设备) k144EVB 板将充当 3 个 LIN 的 LIN 主控器,这就是为什么我选择 lin_master_s32K144 示例作为起点。LINStACK 运行正常,现在我开始检查 CAN 通信与项目的集成情况。通过查看 S32K144 文档和示例,我发现 K144 有 2 种不同的 CAN 通信管理方法......要么通过 FIFO,要么通过 MBs......不清楚其中一种方法的优势。对于必须接收 4-5 条 CAN 报文、处理部分内容数据并定期发送 1 或 2 条 CAN 报文的系统而言,不清楚其中一种方式的优势: 1) 考虑到我的 LIN 主站将满负荷运行,哪种配置更容易使用? 2) 恩智浦 linstack 与 FlexCAN 集成之间是否会出现寄存器/时钟/中断冲突? 3) 是否有这样的集成示例(LIN-MASTER + CAN-HS)? Re: S32K144: Integration of FlexCAN inside lin_master_s32k144 (S32DS.ARM2.2) 你好@rricart LIN 和 CAN 之间没有任何关系,它们是两个独立的外设模块。 对于 S32K1 FlexCAN,CAN FIFO 不支持 CAN FD,因此需要考虑是否需要支持 CAN FD。 如果您的项目不需要 CAN FD 功能,那么 MB 或 FIFO 都可以。 您可以参考此链接中提供的演示,其中对使用 FlexCan 的不同方式进行了分类,并提供了一个简单的测试演示。 https://community.nxp.com/t5/S32K-Knowledge-Base/S32K1xx-FlexCAN-Mask-Setting-Demo/ta-p/1519753
記事全体を表示
requset activation code for S32DS V2.2 The license of S32 Design Studio for ARM v2.2 was expired.  Please give me a valid code. Re: requset activation code for S32DS V2.2 Hi,  your S32DS license has been extended. 
記事全体を表示
配置自定义 SCP03 密钥的指南 嗨,@Kan_Li、 我正在使用 ESP32 主机和 SE050C1。环境详情: Plug& Trust: v3.0.6 (Mini) SE050 小程序版本:03 01 01 6F FF 01 0B 我可以使用默认密钥打开安全通道,在 SE 上生成 EC 密钥对,并成功创建 CSR。 现在我想配置一次自己的 SCP03 密钥集(ENC/MAC/DEK、AES-256),将其存储在新密钥版本下的 SE050 上,然后始终使用该版本打开 SCP03 会话。 我需要你做什么 v3.0.6 中 PUT KEY 的应用程序接口/示例(迷你版) 在我的 Mini drop 中,我看到了 INS_GP_PUT_KEY 的定义,但我没有找到类似 Se05x_API_PutKeys()、nxScp03_ChangeKeys() 或 ex_scp03_change_keys 示例这样的高级辅助函数。 能否确认 Mini v3.0.6 是否包含 SCP03 键盘旋转助手? 如果回答为 "是":我应该调用哪些源文件和函数,以及包含哪些头文件? 如果否:请分享使用迷你 APDU 传输(例如,Se05x_API_Transceive/Se05x_API_SendAPDU)通过已打开的 SCP03 会话发送GlobalPlatform PUT KEY(CLA=0x80,INS=0xD8)的推荐方法(和最小代码示例),包括 ENC/MAC/DEK 和KCV计算的预期TLV 格式。 v3.0.6 中的 AES (SCP03) 验证上下文结构 我的启动环境是 gex_ss_boot_ctx.ex_se05x_auth。   ex_se05x_auth.param.scp03.ex_static. Enc/Mac/Dek ex_se05x_auth.param.scp03.keyVer 我通过 argv(--auth aes)选择 AES,并将密钥载入 ex_static.{Enc,Mac,Dek}。和版本号输入 keyVer。 请确认 v3.0.6 Mini 的正确字段名称,这样我就不用靠反复试验来确定了。 参考实现/路径 如果在完整的 Plug& Trust(非迷你版)中有演示 SCP03 密钥更新的示例,能否告诉我确切的路径和函数名称,以便我在迷你版中照搬该逻辑?我寻找的典型名字 examples/sss/ex_scp03_change_keys.* hostlib/hostLib/libCommon/scp/nxScp03.* hostlib/hostLib/libSE05X/src/*scp03* 或任何 INS_GP_PUT_KEY 的用法。 版本& 密钥长度 我计划使用 AES-256(32 字节密钥)和新的密钥版本(例如 0x11)。在小程序03 01 01 6F FF 01 0B 的密钥版本选择或最小密钥长度方面,有什么限制或最佳实践建议吗? 工具替代品 如果推荐的方法是使用一次配置,然后将我的固件切换为始终使用新密钥打开,那么您能否分享工具名称/命令(以及从何处获取)。 我的直接障碍是 Mini 中缺少 PUT KE Y 的可调用助手;如果你能在此小程序版本中共享 SE050 所期望的确切 APDU 构建和发送顺序,我很乐意实现原始 APDU。 非常感谢你的指导! 致以最崇高的敬意, Reddy A71CH SE050 Re: Guidance to provision custom SCP03 keys 你好@Rutwik0409、 到目前为止,我们只在MW的完整版和纳米版中提供了PlatformSCP密钥轮换演示,但是我认为您只需要在每个设备生命周期中运行一次此类应用程序,因此您可以尝试将纳米代码包移植到您的平台上作为快速解决方案。请参阅https://github.com/NXPPlugNTrust/nano-package/tree/master/examples/se05x_rotate_scp03_keys了解详情。 希望对你有所帮助、 祝您愉快, Kan ------------------------------------------------------------------------------- 注: - 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢! - 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略 如果您以后有相关问题,请另开新主题,并参考已关闭的主题。 -------------------------------------------------------------------------------
記事全体を表示
The Android Booting process Some questions arise when we think about the Android boot sequence. What is the Zygote, init.rc, what is the difference between the linux kernel and the android linux kernel?. This document is intended to explain how the booting process runs. Consider the following graph: Step 1: Power On and System Startup When we press the power button, the Boot ROM code starts executing from a pre-defined location which is hardwired in ROM. It loads the Bootloader into RAM and starts executing. Step 2: Bootloader The bootloader is a small program which runs before Android does. This is NOT part of the Android operating system. The bootloader is the place where manufacturer puts their locks and restrictions. The bootloader executes in two stages. In the first stage it detects external RAM and loads a program which helps in the second stage. In the second stage, the bootloader setups the network, memory, etc, which requires to run kernel. The bootloader is able to provide configuration parameters or inputs to the kernel for specific purposes. The bootloader can be found at: /bootable/bootloader/legacy/usbloader This legacy loader contains 2 important files: 1- Init.s :: Initializes stacks, zeros the BSS segments and  call_main() in main.c 2- Main.c :: Initializes hardware (clocks, board, keyboard, console) and creates linux tags. Step 3: Kernel The Android kernel starts in a similar way as the linux kernel.  As the kernel launches, is starts to setup cache, protected memory, scheduling and loads drivers. When the kernel finishes the system setup, it looks for “init” in the system files. What is the difference between the linux and android kernels?, here's a list of changes/addons that the Android Project made to the Linux kernel: Binder: It is an Android specific interprocess communication mechanism and remote method invocation system. ashmem:  "Android Shared Memory". It is a new shared memory allocator, similar to POSIX SHM but with a different behavior and sporting a simpler file-based API. pmem: "Process memory allocator": It is used to manage large (1-16+ MB) physically contigous regions of memory shared between userspace and kernel drivers. logger:  This is the kernel support for the logcat command. wakelocks: It is used for power management files. It holds the machine awake on a per-event basis until wakelock is released. oom handling: It kills processes as available memory becomes low. alarm manager: It lets user space tell the kernel when it would like to wake up. RAM_CONSOLE: Allows to save kernel printk messages to a buffer in RAM, so that after a kernel panic they can be viewed in the next kernel invocation. USB gadget driver for ADB yaffs2 flash filesystem Step 4: init process Init is the very first process, we can say it is a root process, or the grandfather of all processes. The init process has two responsibilities.      1- Mounts directories like /sys , /dev    or /proc      2- Runs init.rc script - The init process can be found at /init :: /system/core/init - Init.rc file can be found at :: /system/core/rootdir/ Android has specific format and rules for init.rc files. More information about this rules can be found in: What is inside the init.rc and what is it used for. At  this stage, you can finally see the Android logo in your screen. Step 5: Zygote and Dalvik In Java, we know that a separate Virtual Machine instance will popup in memory for separate per app, but in the case of Android, the VM should run as quick as possible for an app. But what happens if you have several apps thus launching several instances of the Dalvik (VM)?, it would consume an immense amount of memory. To overcome this problem, the Android OS has a system called “Zygote”.  The Zygote enables code sharing across the Dalvik VM, achieving a lower memory footprint and minimal startup time.  Zygote is a virtual machine process that starts at system boot. The Zygote preloads and initializes core library classes. The Zygote loading process: Load Zygote Init class: /frameworks/base/core/java/com/android/internal/os/ZygoteInit.java registerZygoteSocket() :: It registers a server socket for zygote command connections. preloadClasses() :: Is a simple text file that contains a list of classes that need to be preloaded, you can find the file at /framework/base preloadResources()  :: Everything that is included in the android.R file will be loaded with this method (themes and layouts). At this time, you can see the boot animation. Step 6: System service After the above steps are completed,  Zygote launches the system services.  The Zygote forks a new process to launch the system services. Core services: Starting power manager Creating the Activity Manager Starting telephony registry Starting package manager Set activity manager service as system process Starting context manager Starting system contact providers Starting battery service Starting alarm manager Starting sensor service Starting window manager Starting Bluetooth service Starting mount service Other services: Starting status bar service Starting hardware service Starting NetStat service Starting connectivity service Starting Notification Manager Starting DeviceStorageMonitor service Starting Location Manager Starting Search Service Starting Clipboard Service Starting checkin service Starting Wallpaper service Starting Audio Service Starting HeadsetObserver Starting AdbSettingsObserver Now we have finally completed the booting process (system service are up and running in memory). Need to analyze the Android Bootup? The logcat ::  Use adb to get the booting process events from the logcat. ‘adb logcat –d –b events | grep “boot” ‘adb logcat –d | grep preload’ More information about ADB can be found here: Using ADB with your Sabre Board Re: The Android Booting process Good Document, I get answers for some of my questions. Really appreciate for the simplicity and the way you expressed.SergioSolis Re: The Android Booting process Important to understand is the fact that "Android" alone is not entirely an Operating System, it is rather the User Space of Linux Kernel. Android is based on the Linux Operating System, the GNU Linux kernel. Boot Process is Architecture dependent i.e. X86 and ARM (e.g A8 Cortex) have differences, ARM requires a signed first stage loader so there is a two stage boot process as the article says but does not clearly say its for ARM, Android now runs on x86 as well. If you are interested reading upon the x86 boot process see my white paper: "https://sites.google.com/site/weqaar/Home/files/bootSector_code.pdf?attredirects=0&d=1" On ARM the boot process looks like: 1) X Loader (ARM specific) 2) Boot strapper (i.e. uBoot) - jumps to kernel entry point (head.s) 3) Kernel loads init (i.e. /sbin/init) 4) /sbin/init then reads /etc/inittab, then "si::sysinit:/etc/init.d/rcS" (systemV init) 5) rcS creates device files (i.e. using mtab, mounts important fs i.e. /sys), forks daemons or demons whatever 6) getty is then attached to virt terminals, bash is then executed on user login by getty Dalvik is a Register VM, a user space process for most of the part, JAVA eh. I forked an embedded Linux distro, that is not based on any other distro i.e. Debian, its a good starting point for anybody wanting to learn boot stuff (for ARM specially), runs in QEMU, here is the doc: "https://sites.google.com/site/weqaar/Home/files/DaaS-Embedded-Linux-v1.03.pdf?attredirects=0&d=1" I can make the sources with toolchain available if anybody wants, good stuff it is I can tell you that. Books I wold recommend: ISBN 10: 0-8493-4058-6 ISBN 10: 0-137-01783-9 The diagram shows daemons coming off the Kernel which is not entirely true, Kernel processes or Kernel Daemons e.g. kswapd are forked by the Kernel whereas Init forks user-space processes or daemons e.g. ssh Re: The Android Booting process This is really good document. Thanks for posting.
記事全体を表示
示例 MPC5777M MCAN 简单 TX/RX GHS614 ******************************************************************************** * 详细说明: * * 配置 MCAN 来传输和接收 CAN 消息。 * * 在此配置中,MCAN_1 传输一条消息。MCAN_2接收消息。 * * MCAN_1 每 1 秒发送一次消息。该间隔由 PIT 生成。 * 单个 TX 缓冲区用于发送 n 个字节。每次 * 传播。发送两个标准 ID 和 2 个扩展 ID。 * * MCAN_2 配置为接收消息,使用 SW 轮询。 * 定义了2个标准和2个扩展ID过滤表。经典过滤器 * 配置已设置,表示过滤器 ID 和掩码。 * 具有匹配标准 ID 的消息被接收到 RXFIFO_0 中,具有匹配 * 扩展ID然后存储在RXFIFO_1中。 * * EVB连接: * * J37 和 J38 至位置 1-2,将 MCAN1 TX/RX 连接至收发器 * * P15-1 上的 CAN0-CANH 至 P14-1 上的 CAN1-CANH * P15-2 上的 CAN0-CANL 至 P14-2 上的 CAN1-CANL * * ---------------------------------------------------------------------------------------------- * 测试硬件:MPC5777M,MPC57xx主板+MPC5777M_512DS迷你模块 * 掩码组:0N78H * 目标:internal_FLASH * Fsys: 600 MHz PLL1,带 40 MHz 晶振参考, * core2 以 200MHz 的频率由 PPL1 生成 * 终端:无 ******************************************************************************** 修订历史: 1.0 2017年1月5日 PetrS MCAN示例的初始版本 ********************************************************************************************/
記事全体を表示