Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
i.MX 95 SPSDK によるセキュアブート (日本語ブログ) はじめに i.MX 95 でのセキュアブートに使用する署名付きのコンテナ・イメージを Secure Provisioning SDK (SPSDK) で作成し、起動する手順です。 i.MX 95 では、セキュアブートのデジタル署名アルゴリズムとして、クラシックなRSA暗号や楕円曲線デジタル署名暗号 (ECDSA)に加えて、耐量子暗号 (PQC)の ML-DSA もサポートされています。 ここでは、ECDSA と PQC ML-DSA 両方の署名認証を行うHybrid boot での実現例を見ていきます。 セキュアブート・プロセス(概念図) 署名付きイメージの作成 SRKH : Super Root Key Hash i.MX 95 AHAB (Advanced High Accuracy Boot) セキュアブート・フロー 本記事は、i.MX 95 向けのLinux BSP を一度ビルド済みの前提で紹介します。 ビルド方法については以下の記事をご参照ください。 ビルドするターゲットを、i.MX 95 のマシン名とする必要がありますが、同様の方法になります。  [入門] Yocto Linux BSPのビルド方法 - i.MX FRDMボード編 (日本語ブログ) [入門] Yocto Linux BSPのビルド方法 - i.MX 8M Plus編 今回動作確認に使用した環境 ハードウェア:開発ボード i.MX 95 19x19 LPDDR5 EVK ソフトウェア:Linux BSP Version L6.18.2-1.0.0 ツール:SPSDK version 3.9.0, Linux 版 eMMC/SDブートであれば、FRDM i.MX 95開発ボード(FRDM-IMX95 / LPDDR4X対応)でも同様の手順で実施することができます。 目次 1. Linux BSP での準備 2. SPSDK のインストール 3. 鍵の作成 4. YAMLファイルの準備 5. ワークスペースの準備 6. 署名付きイメージの作成  7. 署名付きイメージの導入 8. SRKH (Super Root Key Hash) eFuse のプログラム 9. ライフサイクルを OEM Closed に更新 10. ELE イベントの確認 11. ブートローダの直接署名   eMMC/SDブートとFlexSPI NORブートでは、準備手順や実行するコマンドが一部異なります。そのため、確認したいブートデバイスに応じた手順を実施してください。 1. Linux BSP での準備 1.1 ブートローダ FlexSPI NOR ブート BSP デフォルトでのブートローダは、eMMC/SD ブート用となっています。 FlexSPI NOR ブートの場合には、 / /conf/local.conf ファイルに下記を追記しておきます。 UBOOT_CONFIG = "fspi" eMMC / SD / FlexSPI NOR ブート共通 u-boot の  CONFIG_AHAB_BOOT  を有効にしてビルドしたブートローダを使用します。 $ cd $ source setup-environment $ bitbake u-boot-imx -c cleansstate $ bitbake u-boot-imx -c configure $ bitbake u-boot-imx -c devshell 別のシェルが開きますので、u-boot コンフィグレーションを変更します。 # make O=../../build/ / menuconfig O= で指定するビルド・ディレクトリのパスは、実際の環境に合わせます。 ../../build/ /.config で、 CONFIG_AHAB_BOOT=y  となっていることを確認し、元のシェルに戻ります。 # exit 元のシェルで、再ビルドを行います。 $ bitbake u-boot-imx -c compile -f $ bitbake imx-boot 1.2 Linux カーネルとデバイスツリー BSP でビルドされたバイナリをそのまま利用します。 ビルドされたバイナリは、BSP の  /tmp/deploy/images/ / に作成されています。 2. SPSDK のインストール SPSDK Installation Guide に従い、Python 仮想環境 venv を準備してインストールします。 インストール後、バージョン情報やヘルプ表示ができるかを確認します。 (venv) $ spsdk --version (venv) $ spsdk --help PQCプラグインも追加します。 (venv) $ pip install spsdk-pqc 3. 鍵の作成 ECDSA SECP384 の秘密鍵/公開鍵を、4ペア作成します。 (venv) $ mkdir -p keys/secp384r1 (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk0_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk1_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk2_secp384r1.pem (venv) $ nxpcrypto -v key generate -k secp384r1 -o keys/secp384r1/srk3_secp384r1.pem PQC ML-DSA の秘密鍵/公開鍵も、4ペア作成します。 (venv) $ mkdir keys/mldsa65 (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk0_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk1_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk2_mldsa65.pem (venv) $ nxpcrypto -v key generate -k mldsa65 -o keys/mldsa65/srk3_mldsa65.pem i.MX 95 内蔵eFuse に公開鍵のハッシュ Super Root Key Hash (SRKH) を書いたあと、イメージをビルドしなおした時は、その公開鍵とペアとなる秘密鍵で署名する必要があるので、作成したすべての鍵は保存しておきます。 秘密鍵は、第三者に開示しないようにします。 4. YAMLファイルの準備 SPSDK では、YAMLファイルに、コンテナヘッダ設定や、秘密鍵、公開鍵および、署名付きイメージを構成するバイナリファイルのパスを指定します。 あわせて、今回の動作確認で使用したYAMLファイルの例もご参照ください。 YAMLファイルでのコンテナヘッダ設定や、鍵を指定する項目は、次のようになっています。 コンテナヘッダ YAMLキー 内容 srk_set SRK Set used_srk_id SRK Selection srk_revoke_mask SRK Revoke Mask gdet_runtime_behavior GDET enablement check_all_signatures Check all signatures fastboot Fast Boot fuse_version Fuse Version sw_version SW Version コンテナヘッダの各フィールドは、i.MX 95 Reference Manual の、『Container header details』に記載されています。 鍵の指定 YAMLキー 内容 signer クラシック 秘密鍵 signer_#2 PQC 秘密鍵 srk_table クラシック 公開鍵テーブル srk_table_#2 PQC 公開鍵テーブル すべてのYAMLファイルで同じ鍵を指定します。 4.1 ブートローダ用YAML ファイル YAMLファイルのテンプレートを作成し、spl.yaml と uboot.yaml を準備します。 (venv) $ nxpimage ahab get-template -f mimx9596 -o ahab_template.yaml (venv) $ cp ahab_template.yaml spl.yaml (venv) $ cp ahab_template.yaml uboot.yaml spl.yaml i.MX 95 内蔵SRAM にロードされ、DRAM 初期化トレーニングなどを実施する部分までのファイルを指定します。 YAML キー 内容 binary_container ELE ブート・ファームウエア(マスク・レビジョン専用のバイナリ) lpddr_imem LPDDR4X or 5 初期化ファームウエア lpddr_imem_qb LPDDR4X or 5 初期化ファームウエア lpddr_dmem LPDDR4X or 5 初期化データ lpddr_dmem_qb LPDDR4X or 5 初期化データ oei_ddr OEI system_manager System Manager spl U-boot SPL cortex_m7_app (Option) M7 image image_path (Option) FCB copy image uboot.yaml U-boot SPL でDRAMにロードされる部分のファイルを指定します。 YAML キー 内容 atf ARM Trusted Firmware uboot U-boot tee (Option) OP-TEE OS (Option) 4.2 FCB の取り出し - FlexSPI NOR ブートのみ FlexSPI NOR ブート用のYAMLファイルでは、FCB (FlexSPI Configuration Block)も指定します。そのため、FlexSPI NOR ブート向けにビルドした通常の署名なしブートローダ (flash.bin) から、SPSDK コマンドにて、FCB を取り出しておきます。 i.MX 95 内蔵eFuse のFlexSPI_NOR_FCB_Offset (デフォルト 0x400) にFCB が配置されています。そのオフセットから 512 バイト分を取り出し、 fcb.bin を作成します。 (venv) $ nxpimage utils binary-image extract -b flash.bin -a 0x400 -s 0x200 -o fcb.bin 4.3 OSコンテナ用YAML ファイル YAMLファイルのテンプレートから、os_cntr.yaml を準備します。 (venv) $ cp ahab_template.yaml os_cntr.yaml os_cntr.yaml では、キー image_path で、Linux カーネルと使用するデバイスツリーのパスをセットし、その他必要なパラメータも設定します。 4.4 デジタル署名アルゴリズムの選択 i.MX 95 内蔵eFuse やコンテナヘッダのFlags で選択することになります。 eFuse コンテナヘッダの Flags フィールド コンテナヘッダの Flags フィールドにある "Bit 15: Check all signature" = 0x1 とすることで、eFuse のELE_BOOT_CRYPTO 設定によらず、コンテナ内にあるすべての署名を認証します。 コンテナヘッダの Flags フィールドの "Check all signature"は、YAML キー "check_all_signature" で指定します。 5. ワークスペースの準備 SPSDK でワークスペースを作成し、必要な鍵ファイル、YAML ファイル およびバイナリファイルを配置します。 5.1 ワークスペースの作成 (venv) $ nxpimage bootable-image get-templates -f mimx9596 -o workspace 5.2 鍵ファイル 鍵の作成で作ったkeys フォルダごと持ってきます。 5.3 YAML ファイル例 動作確認に使用したYAMLファイルを、imx95-spsdk-yaml-examples.tar.gz に添付しています。 5.4 バイナリファイル Yocto Linux BSP からバイナリファイルを持ってくる場合、 ブートローダを構成するバイナリ $ bitbake -e imx-boot | grep ^S= により表示されるパスの、 iMX95/ にあるバイナリからコピーします。 Linux カーネル / /tmp/deploy/images/ /Image-- - - .bin を コピーします。 デバイスツリー / /tmp/deploy/images/ /にあるdtb で、使用するもの1つコピーします。 YAMLファイルの例 を使用する場合、 ・Linux カーネルは、Image ・デバイスツリーは、imx95.dtb という名前で、それぞれ配置します。 5.5 eMMC / SD ブート 下記のようなファイル構成となります。 YAMLファイルの例を使用する場合、spl.yaml は、DRAMタイプにより、emmc_sd/spl-lpddr4x.yaml または spl-lpddr5.yaml から名前を変更して配置します。 上記では、ELE ブート・ファームウエア は、RevC 品 (B0マスク)用の mx95b0-ahab-container.img となっています。 5.6 FlexSPI NOR ブート 下記のようなファイル構成となります。fcb.binも必要です。 YAMLファイルの例を使用する場合、fspi_nor/から、bootable_image_fspi_nor.yaml をコピーしてきます。 また、spl_fspi_nor-lpddr5.yaml を spl.yaml に名前を変更し配置します。 上記では、ELE ブート・ファームウエア は、RevC 品 (B0マスク)用の mx95b0-ahab-container.img となっています。 6. 署名付きイメージの作成 署名付きブートローダと署名付き OS コンテナのイメージを、 SPSDK で作成します。 ワークスペースの準備 で作成されたディレクトリに移動して作業します。 (venv) $ cd workspace/imx_boot_flash_all/imx95-19x19-lpddr5-evk/ 6.1 署名付きブートローダ 鍵ファイルとバイナリファイルを指定する spl.yaml と uboot.yaml を、bootable_image.yaml から呼び出します。 署名付きブートローダ signed_flash.bin と、SRKH eFuse プログラム用のスクリプト (*.bcf) が作成されます。 eMMC / SD ブート (venv) $ nxpimage -v bootable-image export --config bootable_image.yaml -o output/signed_flash.bin 下記のような情報が、表示されます。 FlexSPI NOR ブート (venv) $ nxpimage -v bootable-image export --config bootable_image_fspi_nor.yaml -o output/signed_flash.bin 下記のような情報が、表示されます。 eMMC/SDとの違いとして、FCB が先頭についているのが分かります。 イメージの検証を行うことができます。 // eMMC / SD ブート (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/signed_flash.bin -m serial_downloader // FlexSPI NOR ブート (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/signed_flash.bin -m flexspi_nor 6.2 署名付きOSコンテナ os_cntr.yaml の内容で、署名付き OS コンテナのイメージを作成します。 (venv) $ nxpimage -v ahab export -c os_cntr.yaml 下記のような情報が、表示されます。 イメージの検証を行うことができます。 (venv) $ nxpimage -v bootable-image verify -f mimx9596 -b output/os_cntr_signed.bin -m serial_downloader 7. 署名付きイメージの導入 作成した署名付きブートローダおよび署名付きOSコンテナを導入する方法です。 7.1 署名付きブートローダ i.MX95 ボードのブートデバイスに、signed_flash.bin を書き込みます。 ボードのデバッグ・ポートとシリアル・ダウンロード・ポートを、PC に接続します。 u-boot が起動する場合には fastboot モードにします。 u-boot=> fastboot 0 もしくは、BOOT_MODE を シリアル・ダウンロード・モード として起動しておきます。 SPSDKで書き込みます。 // eMMC (venv) $ nxpuuu write -b emmc -f mimx9596 output/signed_flash.bin // SD (venv) $ nxpuuu write -b sd -f mimx9596 output/signed_flash.bin // FlexSPI NOR (venv) $ nxpuuu write -b qspi -f mimx9596 output/signed_flash.bin SPSDK の nxpuuu コマンドではなく、通常の uuu または u-boot コマンドを使用して書き込むことも可能です。 7.2 署名付きOSコンテナ あらかじめBSP イメージが書き込んであるeMMC もしくはSDカード の boot パーティションに、os_cntr_signed.bin を入れます。 u-boot コマンドで、i.MX95 の接続されたeMMC または SDカードを、USBストレージとしてみせることで、PCにマウントさせます。 シリアル・ダウンロード・ポートをPC に接続しておく必要があります。 // eMMC u-boot=> ums mmc 0 // SDカード u-boot=> ums mmc 1 PC にマウントされた boot パーティションに 、os_cntr_signed.bin をコピーしたあと、u-boot で Ctrl-C を押します。 もしくは、別の手段で os_cntr_signed.bin を、boot パーティションに入れておきます。 署名付きOSコンテナの起動時、下記のような表示が出ます。 CONFIG_AHAB_BOOT  を有効にした u-boot では、通常のLinux Image (署名なし)ではなく、 os_cntr_signed.bin (署名付き)が使用されます。 7.3 動作確認 この段階では、i.MX95 のライフサイクルの状態は、OEM Open のため、u-boot や Linux が起動しますが、KEY HASH の検証失敗が、ELE イベントで検出されます。 8. SRKH (Super Root Key Hash) eFuse のプログラム 8.1 eFuse 書き込み i.MX 95 SRKH eFuse に、公開鍵のハッシュ値を書き込みます。 一度書き込むと元に戻せません。 書き込んだデバイスで、署名付きブートローダや署名付きOS コンテナを更新するときは、書き込んだ SRKH のもととなる公開鍵のペアである秘密鍵を使い署名します。 別の鍵ペアを使う場合には、現在のSRKH をRevoke し、4組作成しておいた鍵ペアで未使用のものを使用します。 i.MX 95 ボードのシリアル・ダウンロード・ポートをPCに接続し、 u-boot はあらかじめ fastboot モードにしておきます。 u-boot=> fastboot 0 署名付きイメージの作成で作られたSRKH eFuse のプログラミング用スクリプト(*.bcf) を使い、 SPSDK で書き込みます。 SRKH eFuse のプログラミング用スクリプトには、 i.MX 95 eFuse の word index が記載されています。 // OEM_SRKH (venv) $ nxpele -f mimx9596 batch output/ahab_oem0_srk0_hash_nxpele.bcf // OEM_PQC_SRKH (venv) $ nxpele -f mimx9596 batch output/ahab_oem0_srk1_hash_nxpele.bcf 8.2 eFuse 値の確認 SPSDK の nxpele コマンドで、 eFuse のword index を指定しリードして、値を確認することができます。 // OEM_SRKH[31:0] word index = 128 (venv) $ nxpele -f mimx9596 read-common-fuse -i 128 // OEM_PQC_SRKH[511:480] word index = 463 (venv) nxpele -f mimx9596 read-common-fuse -i 463 など SPSDK の代わりに、U-boot コマンド もしくは System Manager モニタのコマンドで、eFuse にリード・ライトアクセスすることもできます。 U-boot u-boot=> fuse read u-boot=> fuse prog System-Manager >$ fuse.r >$ fuse.w 8.3 動作確認 この段階では、i.MX 95 のライフサイクルの状態は、OEM Openですが、SRKH プログラム済みのため、改ざんがなければ、ELEイベントは検出されません。 改ざんがあっても、その部分が動作に影響しなければ、OEM Openのため起動しますが、認証の失敗が ELE イベントで検出されます。 9. ライフサイクルを OEM Closed に更新 i.MX 95 出荷直後のライフサイクルは、OEM Open です。 デバッグ終了後に、i.MX 95 のライフサイクルを OEM Closed に変更します。 OEM Closed にしたあとの留意点 OEM Openには戻せません。 CONFIG_AHAB_BOOT=y とした u-boot を含んだブートローダで起動すると、署名の無いイメージや、不正な署名付きイメージは起動できなくなります。 CONFIG_AHAB_BOOT=y としていない u-boot を含んだブートローダでは、署名なし Linux Image で起動できてしまいますので、必ず署名付きOS コンテナ os_cntr_signed.bin で起動させるため、 CONFIG_AHAB_BOOT=y とした u-boot を含んだブートローダを使用します。 動作確認後、署名なしのLinux Image やデバイスツリーは、boot パーティションから削除します。 9.1 SPSDK i.MX 95 ボードのシリアル・ダウンロード・ポートはPCと接続し、u-boot は、あらかじめfastboot モードにしておきます。 u-boot=> fastboot 0 SPSDK でライフサイクルを更新します。 (venv) $ nxpele -f mimx9596 forward-lifecycle-update -l OEM_CLOSED Forward Lifecycle update ends successfully. (venv) $ 9.2 U-boot u-boot=> ahab_close OEM Closed とした後、 uuu で BSP イメージ (wic ファイル) を書き込む場合にも、署名付きブートローダを使用する必要があります。 10. ELE イベントの確認 ELE (Edgelock Secure Enclave) は、i.MX 95 の内蔵ブロックで、セキュアブート時のコンテナ・イメージの認証を行います。 SPSDK および U-boot、System Manager コマンドで、ELE の状態を確認することができます。 10.1 SPSDK シリアル・ダウンロード・ポートとPCを接続し、U-boot でfastboot モードにしてから行います。 u-boot=> fastboot 0 SPSDK でELE イベントを取得します。 (venv) $ nxpele -f mimx9596 get-events 10.2 U-boot CONFIG_AHAB_BOOT=y  としたU-boot で使用できるコマンドです。 デバイスのライフサイクルにより、OEM Open または OEM closed も表示されます。 u-boot=> ahab_status 10.3 System Manager >$ ele events 10.4 表示例 ELE イベント(SRKH 値の不一致)が検出されたとき SPSDK U-boot (OEM open時) System Manager ELE イベント検出がないとき SPSDK U-boot (OEM close後) System Manager   11. ブートローダの直接署名 既存の署名なしブートローダのバイナリに、 SPSDK で直接署名を追加することも可能です。 この場合、SPSDK がブートローダ・バイナリのコンテナから構成を解釈します。 YAML ファイルで、各イメージごとの細かい設定は指定できませんが、コンテナヘッダの設定と秘密鍵および公開鍵のパスを指定するのみで、署名付きブートローダを作成することができます。 11.1 テンプレートの作成 (venv) $ nxpimage ahab get-template -f mimx9596 -o ahab_sign.yaml --sign (venv) $ cp ahab_sign.yaml sign.yaml 11.2 YAML ファイル sign.yaml に、コンテナヘッダの設定と秘密鍵および公開鍵のパスを指定します。 YAMLファイルの例 を使用する場合、 direct_signing/sign.yaml をコピーしておきます。 11.3 署名の追加 既存のブートローダのバイナリ flash.bin に署名処理を行います。 // eMMC / SD (venv) $ nxpimage ahab sign -c sign.yaml -b flash.bin -o output/flash_directsign.bin -fs output // FlexSPI NOR (venv) $ nxpimage ahab sign -c sign.yaml -b flash.bin -o output/flash_directsign.bin -fs output -m flexspi_nor output/flash_directsign.bin と、SRKH eFuse のプログラミング用スクリプト output/*.bcf が作成されます。 おわりに SoC 起動イメージの保護を実現するため、i.MX 95 セキュアブートに使用する署名付きイメージを、SPSDK を使って作成し、起動するまでの流れを紹介しました。今回はi.MX 95 AHAB で新たに追加されたPQCを利用する手順例で示しました。 ========================= 本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。 お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。 (既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。) i.MX95 でのセキュアブートに使用する署名付きのコンテナ・イメージを Secure Provisioning SDK (SPSDK) で作成し、起動する手順をハンズオン形式で学べる内容となっています。 楕円曲線デジタル署名暗号 (ECDSA)と、耐量子暗号 (PQC) ML-DSA 両方の署名認証を行うHybrid boot での実現例を紹介します。 (作業時間:半日 *一度i.MX 95向けの Linux BSP のビルドが完了している前提) i.MX Processors Security 日本語ブログ
查看全文
EB tresos activation failed Hi Team, I was trying to download and activate a copy of EB Tresos by using EB Client License Administrator V1.5.1 with the following activation code: 6A94-974F-C73A-28C1 (valid until 03/31/2026) as reported on the NXP website. Anyway the activation fails repeatedly, with the following error messages: ERROR: flxActAppActivationSend (50040,41147,10248) The quantity specified exceeds maximum quantity allowed (0). Connection to FlexNet Operations Server failed. Could you please help me on this? Thanks & Regards, Sai Re: EB tresos activation failed Hi friend, I have same problem.  I think NXP team have not refreshed the license.  And I think the responsible team is on Lunar New Year holiday. Let’s wait and see. Log : Activating NodeLocked License 6A94-974F-C73A-28C1, Number Of Licenses: 1 Status: 4, Creating request Status: 5, Request created Status: 6, Context created Status: 7, Connected to remote server Status: 8, Request Sent Status: 9, Polling for response Status: 11, Done ERROR: flxActAppActivationSend (50040,41147,10248) The quantity specified exceeds maximum quantity allowed (0). Connection to FlexNet Operations Server failed. Re: EB tresos activation failed The code is refreshed. Let's check. I activated it successfully. Re: EB tresos activation failed Hello, It means that maximum amount of activation with this license key has been depleted. I have notified admin to update the code with one one if possible. Best regards, Peter
查看全文
Arducam B0353 Camera Integration with i.MX93 Dear Team, We need to integrate the Arducam B0353 MIPI 2-lane camera (https://www.arducam.com/arducam-full-hd-color-global-shutter-camera-for-raspberry-pi-2-3mp-ar0234-wide-angle-pivariety-camera-module-b0353.html) with the i.MX93 / i.MX9352 platform. We are new to this platform and would like to know the procedure for camera integration. If anyone has already integrated this camera (or a similar MIPI CSI-2 camera), please share: Integration steps Driver details Device tree configuration (if available) Looking forward to your support. Regards, Ajnas C Re: Arducam B0353 Camera Integration with i.MX93 I couldn't open the link, based on your link name description, the camera is ar0234? for the dts, you can refer to the imx93 dts as below which uses AP1302,  https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx93-11x11-evk.dts for the camera driver, nxp doesn't offer this, need customer ask for the vendor, you also can check if current bsp has your camera driver or not https://github.com/nxp-imx/linux-imx/tree/lf-6.12.y/drivers/media/i2c
查看全文
Creating SREC file for HAB bootable image generation I'm generating command line tools for flashing the application image to the NOR flash of the MIMXRT1170 (EVKB board). I know that the nxpimage tool helps create SREC format files from axf/elf files like this:  nxpimage utils binary-image convert -i "%AXF_FILE%" -f s19 -o "%SREC_FILE%"   But the SREC file generated is different from the SREC file that is created when using the MCUXpresso Secure Provisioning Tool in terms of the contents and addressing. When I use the MCUXpresso Secure Provisioning Tool to load an elf/axf file to create a bootable image, it adds the srec file and parsed dcd file in the source folder of the MCUXpresso Secure Provisioning Tool's workspace.  I would like to know how those srec and parsed dcd file is generated by the MCUXpresso Secure Provisioning Tool. Also checking if there is a way to extract the parsed DCD file from SREC/elf/axf file separately with any CLI tools?   I know that the MCUXpresso Secure Provisioning Tool can be invoked from CLI to automate the whole process, but we are trying to create a script that can flash the MCU with just the nxpimage and blhost tools.     Re: Creating SREC file for HAB bootable image generation Hi @tj787 , What can be seen here is the following command creates this output into specified “parsed-directory”: nxpimage.exe hab parse -f mimxrt1176 -o parsed-directory -b my-application-with-dcd.bin Hope that helps, Have a great day, Kan ------------------------------------------------------------------------------- Note: - If this post answers your question, please click the "Mark Correct" button. Thank you! - We are following threads for 7 weeks after the last post, later replies are ignored Please open a new thread and refer to the closed one, if you have a related question at a later point in time. -------------------------------------------------------------------------------
查看全文
mm9z1_638の現在の精度は1%の要件を超えています こんにちは、Nxpパートナー AN12301 キャリブレーション ガイドを実行した後、mm9z1_638 からの現在の読み取り値を記録します。精度要件の 1% を超える読み取りが 3 ~ 5 件あることがわかりました。ソフトウェアまたはハードウェアのローパス フィルターはありますか?ローパス係数をどのように決定しますか?ガイドラインを参照しますか? Re: mm9z1_638 current accuracy is out of 1% requirement こんにちは、トーマス ありがとうございます。別の電流源を変更します。失敗条件が修正されました。 しかし、6Aの精度は+/-1%を満たすことができず、ノイズは約100mAです。100mA のノイズを減らすための提案はありますか?または 100mA のノイズは許容できます。 Br、 マイク・リャン Re: mm9z1_638 current accuracy is out of 1% requirement こんにちは、Mikeさん データを見ると、定期的に低い数値が出ているようですが、これはどこから来ているのでしょうか?これはテスト機器またはソフトウェアからのものでしょうか? この定期的なイベントが問題を引き起こしているようです。 よろしくお願いいたします。 トーマス
查看全文
rw612 config The configuration tool is too annoying. I am using the RW612. In addition, the SDK is getting worse in newer versions. The configuration tool should generate the correct files in the root directory; although the .mex file exists, it is sometimes generated in a different folder. Overall, all of your tools and SDKs are horrible. Re: rw612 config Hello @gtecaskari, hope you are doing well. I'm sorry to read that you have encountered with some issues. To better analyze your issue could you please share your environment setup? Including your IDE (MCUXpresso IDE or MCUXpresso for VS Code), SDK version, RTOS, and the specific example that you are testing. Re: rw612 config Hi. thanks for your answer. I have tried all version, 25.6 -25.9 - 25.12 25.12 is getting worse . you can just compare it to stm32cubemx and can understand how awful is it. Re: rw612 config Hi @gtecaskari. Feel free to correct me if I'm wrong, but if you are using MCUXpresso for VS Code with Config Tools support, could you please confirm that you have followed the recommended workflow stated at the following page: Working with MCUXpresso Config Tools? Additionally, it would be very helpful if you share with me the steps that you are following in order to reproduce your issue.
查看全文
Kinara ARA-SDK Licensing Hi NXP team (and anyone familiar with Ara-2 / Kinara tooling), I’m trying to understand the correct licensing/access path for compiling models for the Ara-2 (Kinara) compute module, especially now that Kinara has been acquired by NXP and NXP’s public materials describe SDK integration into NXP’s software ecosystem. My setup / goal Hardware: Geniatech Ara-2 compute module SDK: Geniatech-provided Kinara Ara-2 SDK r1.3 Use case: personal, non-commercial (research/study/testing) Model target: Qwen/Qwen2.5-7B-Instruct (GPTQ Int4) What works so far I can complete the Mode 1 flow to convert the model into ONNX. I end up with: model.onnx (small graph file) model.onnx.data (large external tensor data / weights) in the same directory. What fails Mode 2 (the compilation stage to generate a deployable .dvm) fails with license checkout/validation errors from the SDK’s build tools. From what I can tell, this blocks generating a .dvm even though ONNX export succeeds. Where I’m stuck I do not have a Kinara license key. Geniatech’s documentation indicates that obtaining the SDK license key must be done via Kinara. The Kinara customer support portal appears to reject registration using common personal email domains (e.g., gmail.com), so I can’t submit a request there. Why I’m asking here (NXP/Kinara integration confusion) NXP’s public material indicates Kinara’s SDK and model tools are being integrated into NXP’s ecosystem (including eIQ), and Ara-2 is now presented as an NXP product offering with related “Ara Software Development Kit” downloads. However, in practice, it’s not clear: where a developer is supposed to obtain a license key for compilation, and whether the “Ara SDK / eIQ integration” path is the supported route now. Questions Is a license key required to compile ONNX → .dvm using the Ara-2 SDK toolchain (r1.3 / ARA-SDK), even for personal/non-commercial use? If yes, what is the official process for an individual/hobbyist user to obtain evaluation/developer access (especially without a corporate email domain)? With an existing NXP account, where exactly should Ara-2 users obtain: the “official” Ara SDK binaries/toolchain (compiler), and/or the licensing mechanism needed for compilation? If compiling requires a license key that isn’t readily obtainable, are there any precompiled .dvm model packages (e.g., for Qwen 7B/Qwen2.5 7B) that NXP/Kinara/partners provide for Ara-2 users to run? If someone from NXP/Kinara can clarify the intended path (NXP portal vs legacy Kinara portal, and how licensing is handled now), that would help a lot. Re: Kinara ARA-SDK Licensing I have the same question! I got the device, driver. But no SDK and I guess no license either (if it is needed). The device is just sitting silently in my Lenovo ThinkCentre Ultra neo computer and not doing anything. Lenovo never finished its integration to Windows 11 as an NPU. I would like to use it at least to run some models on it or learning. It is now a completely unused piece of silicon in my PC. I guess it would help the adoption of the technology if more people would start using it. Re: Kinara ARA-SDK Licensing @kratafila mine was also basically unused silicon until I managed to get hold of a Linux SDK bundle via Geniatech. To be honest it is still unused silicon since I cannot get the models to compile and run. For what it’s worth, Geniatech (vendor of my Kinara Ara-2 M.2 module) shared these SDK/runtime downloads with me. They’re Linux-focused, and I’m not sure whether they’ll apply to the Ara-2 hardware inside your ThinkCentre (or help on Windows 11, there are included Windows binaries but I had more success with the Linux software), but they might still be useful if you can test under Linux / confirm your device works: 1) Drivers/runtime + sample .dvm models (Geniatech "customer ready" bundle): hxxps://mega[.]nz/file/nJcF0K5a#W-Ote-fp59hXoq4T0GGsaQmwGTRphWz0JATowyWjQpg 2) "Model compile" folder Geniatech initially sent me (note: this alone didn’t include the compiler binary): hxxps://mega[.]nz/file/KoclFQrJ#ifNOX7w2Y1qgLM6rnm7xPnUprwZZqhuRvelFG5p0MJQ 3) Full Ara-2 SDK tarball Geniatech later provided (this is the one that should include the actual toolchain/compiler, e.g. dvrun): hxxps://file[.]geniatech[.]com/down-eng/BSP/kinara_SDK_20251120[.]tar[.]bz2 If you do try any of the above and make progress (even just getting the SDK installed and seeing the device recognized), please post back here, not just for us, but because there seems to be broader confusion across multiple communities about the "official" working path and where the SDK/licensing is actually meant to come from as well as how to compile and run additional models.
查看全文
The KW45 FlexCAN can trigger a receive interrupt and receive the messages sent by itself I am debugging the FlexCAN driver of the KW45 chip and have found that when the receive filter MASK is not configured, the FlexCAN module can trigger its own receive interrupt and receive the messages sent by itself. Is this behavior normal? If it is, what is the underlying reason? For example, modify the flexcan_interrupt_transfer code in the SDK as shown in the attachment.  uart log : ********* FLEXCAN Interrupt EXAMPLE ********* Message format: Standard (11 bit id) Message buffer 0 used for Rx. Message buffer 1 used for Tx. Interrupt Mode: Enabled Operation Mode: TX and RX --> Normal ********************************************* Please select local node as A or B: Note: Node B should start first. Node:A Press any key to trigger one-shot transmission Rx MB ID: 0x321, Rx MB data: 0x0, Time stamp: 60127 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x1, Time stamp: 3624 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x2, Time stamp: 18344 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x3, Time stamp: 56722 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x4, Time stamp: 55297 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x5, Time stamp: 53656 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x6, Time stamp: 30470 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x7, Time stamp: 22438 Press any key to trigger the next transmission! Rx MB ID: 0x321, Rx MB data: 0x8, Time stamp: 1009 Press any key to trigger the next transmission! Re: The KW45 FlexCAN can trigger a receive interrupt and receive the messages sent by itself Hello, I have resolved the issue and need to set:   flexcanConfig.disableSelfReception = TRUE;
查看全文
[RTD600 IP] S32K3X4EVB-T172 GPIOウェイクアップ このサンプル プロジェクトでは、WKPU + SIUL2 (GPIO) の基本機能を使用および構成する方法をユーザーに示します。 ------------------------------------------------------------------------------ * テストハードウェア: S32K3X4EVB-T172 (SCH-53148 REV B2) * MCU: S32K344 * IDE: S32DS v3.5 および S32DS v3.6.x * SDKリリース: RTD 6.0.0 * デバッガ: PE Micro * ターゲット: internal_FLASH ------------------------------------------------------------------------------ このサンプル ルーチンは、GPIO 割り込みウェイクアップ用に WKPU ユニットを構成します。これは最も単純な WKPU の例です。ピン PTB19 (WKPU42) はウェイクアップ用に構成されています。 ルーチンはSW5が押されるのを待機し、緑色の LED をオフにして、次の処理を実行する Wkpu_EnterStandby() 関数に入ります。 コアクロックを FIRC に切り替えます。 WKPU インスタンスを初期化します。 WKPU42 (PTB19) を設定します。 スタンバイ(または高速スタンバイ)状態になります。 SW6を押すと、MCU が起動してリセットし、 SW5が再度押されるかどうかをポーリングします。 この例は現状のまま提供されており、保証やサポートはありません。
查看全文
在线客服微【xins4698】万宝路公司现场负责人申请上下分直属游戏流程 在线客服微【xins4698】万宝路公司现场负责人申请上下分直属游戏流程 LPC Marketing LPC11xx LPC12xx lpc13xx lpc15xx LPC51Uxx LPC546xx LPC54xxx LPC55xx LPC800
查看全文
S32K388 と MC33771B SPI BMS: MBDT、コード生成、AI 展開 NXPコミュニティの皆様、こんにちは。 実際のリチウムイオン電池パックをターゲットに、SPI通信を介してS32K388-Q289とFRDM-MC33771B-SPI-EVBを使用した統合BMSを開発しています。調査を進めるうちに、S32K3 シリーズに使用できる BMS 固有のサンプル プロジェクトとリファレンス実装が比較的少ないことに気付きました。そのため、このタイプのアプリケーションに推奨されるワークフローとサポートされているツールチェーンを確認するのは困難でした。 私の目標は、以下の内容を含む完全な組み込み BMS スタックを MCU に実装することです。 セル電圧/温度モニタリング(BCC経由) セルバランス制御 SOC / SOH推定アルゴリズム(ディープラーニングベースのアプローチを含む) MCU上でのリアルタイム操作 可能な場合はモデルベース デザインのワークフロー (そうでない場合は S32DS C プロジェクト) 最初に MATLAB/Simulink Model-Based Design Toolbox (MBDT) を使用する予定ですが、セットアップで完全なサポートが利用できない場合は、S32 Design Studio (S32DS) に進みます。 以下の質問についてご指導いただければ幸いです。 1) S32K3 BMSアプリケーション用のMBDTサポートおよびトレーニング・マテリアル BMS関連の開発(SPIベースのBCC通信、サンプリング/プロセッシング、保護ロジック、リアルタイム監視など)に特化したS32K3シリーズでMBDTを使用するための公式ドキュメント、ユーザーガイド、トレーニングコース、またはアプリケーションノートはありますか? 2) MBDTモデルとディープラーニングモデルの統合とコード生成 Simulink (MBDT) で BMS ロジックを開発し、Deep Learning Toolbox を使用して構築された SOC/SOH モデルを追加すると、次のようになります。 - これらを 1 つの統合 Simulink モデルに組み合わせることはできますか? - はいの場合、Embedded Coder を使用して統合モデルを C コード (またはその他のサポートされている組み込みコード) に自動的に生成し、S32K388 に展開できますか? 3) S32K388におけるリアルタイム推論の実現可能性 (2)のコード生成が実行可能であれば: - 展開されたモデルは、MCU 上のライブ バッテリー データ (電圧/電流/温度) を使用してリアルタイム推論 (SOC/SOH 推定) を実行できますか? - S32K388 には、推奨される制約やベスト プラクティス (固定小数点と浮動小数点、サポートされるレイヤーの種類、モデル サイズの制限、推論のタイミングに関する考慮事項など) はありますか? 4) MBDTにおけるセーフティ制約/保護ロジック セーフティのために、次のような保護ロジックを実装する必要があります。 - 過電圧/低電圧しきい値 - 過熱/低温しきい値 - 障害処理と安全状態の動作 これらの制限と保護ロジックを MBDT/Simulink に直接実装し、生成された組み込みコードに含めることは可能ですか? S32K ターゲットの参考例(BMS またはセーフティロジック)があれば、共有してください。 5) S32K388とFRDM-MC33771B-SPI-EVBおよび代替品との互換性 S32K388-Q289 は、BMS アプリケーション用に SPI 経由で MC33771B と連携するために正式にサポート/推奨されていますか? この組み合わせが推奨されない場合は、S32K3 ベースの BMS 開発用に公式にサポートされている BCC + リファレンス プラットフォーム (SPI または TPL) を提案していただけますか? 6) デバイス上でのトレーニング(オンライン学習)と推論のみのワークフロー 組み込み AI の観点から: - オンデバイス トレーニング (リアルタイムのバッテリー データを使用したオンライン学習) は S32K3 MCU でサポートまたは推奨されていますか? - または、PC でのオフライン トレーニング + MCU での推論のみというアプローチが推奨されますか? オフライントレーニングが推奨される場合、推奨されるワークフローを説明する公式リファレンスはありますか? 7) S32K388におけるAI推論のパフォーマンス/メモリガイダンス S32K3 (特に S32K388) 上で AI 推論を実行するためのベンチマークやガイドラインはありますか? - フラッシュ/RAM使用量の予想 - 典型的な推論レイテンシの範囲 - 最適化アプローチ(固定小数点、量子化、軽量アーキテクチャ) 😎 MBDT + DL 統合が推奨されない場合の推奨代替ワークフロー 完全な統合と自動コード生成が推奨/サポートされていない場合、S32K3 に AI モデルを展開するための推奨ワークフローは何ですか?例えば: - モデルを軽量なC推論コードに手動で変換する - CMSIS-NNのようなアプローチを使用する(該当する場合) - NXPミドルウェア/推奨ライブラリ/サンプル(例:eIQ)の使用 サポートありがとうございます。ドキュメントのリンク、トレーニング リファレンス、SDKs の例、ベスト プラクティスの推奨事項などがあれば、非常に役立ちます。 よろしくお願いいたします。 Re: S32K388 with MC33771B SPI BMS: MBDT, code generation, and AI deployment こんにちは@SonHyunTaek 、 プロジェクトに関する詳細な質問をコミュニティ フォーラムに投稿していただきありがとうございます。以下の回答は MBDT ソフトウェアの観点から提供されていることに注意してください。ハードウェアの観点からは、コンポーネントの組み合わせに関してより良いアプローチがある可能性があります。また、BMS の目標電圧とパック電流検知が必要かどうかを知っておくことも役立ちます。SPI 経由でコネクテッドされた単一の AFE を使用する予定なので、最大 48V の BMS システムをターゲットにしているものと想定します。 ご提案いただいたデバイスの組み合わせに関してですが、ハードウェア レベルでは、S32K3 は MC33771B と完全に互換性があります。しかし、ソフトウェアの観点から見ると、状況はより複雑になります。S32K3 用の MBDT は、MCAL レイヤーの NXP リアルタイム・ドライバ (RTD) 上にコードを生成するように構築されていますが、BMS 用の MBDT は、RTD と互換性のある BMS SDK 上にコードを生成します。BMS SDK には、Simulink からアクセスできるピン、クロック、ペリフェラルの外部構成ツールと、すぐに実行できるサンプルが含まれています。 ご注意ください: - MBDT for BMS 1.2.0 は、S32K388 をサポートしていない MBDT for S32K3 1.4.0 でのみ動作します。 - BMS SDKはRTD 3.0.0とのみ互換性があります。S32K3 1.4.0 の MBDT によって使用されます。当時、S32K388 は入手できませんでした。 - BMS 用 MBDT および S32K3 用 MBDT は、バッテリー ジャンクション ボックス機能を備えたハードウェアデザインで通常使用される MC33774、MC33775、MC33664、MC33665、MC33772C などの新しい AFE 部品のみをサポートします。 これらの制限はソフトウェア パッケージ (RTD および BMS SDK) に起因します。使用する予定の MC33771B には C SDK ドライバーが含まれていますが、S32K3 と MC33771B を接続するためのすぐに実行可能な互換性のある C ドライバーがないため、カスタム コードを使用して手動で MBDT に統合する必要があります。つまり、組み込み SW: MC33771B/MC33772B 用のバッテリー・セルコントローラ ソフトウェア ドライバでは、手動の C コーディングと MBDT への統合が必要です。これを実行する方法 (S32K1 用の MBDT に基づく) を説明した記事は、こちらにあります。 以下であなたの質問に答え、最後にいくつかの解決策を提案します。 1. MBDTのサポートとトレーニング 私たちが提供する最高のリソースは、 MBDT コミュニティページで入手できます。右側には、S32K3 用の MBDT を使用して基本的なタスクを実行する方法を説明した、モデルベース デザイン ツールボックスの初心者向けガイドがあります。さらに、バッテリー・マネジメントシステムについての洞察を提供する BMS ウェビナーもあります。 MathWorks と共同で作成した BMS に関する最新のウェビナーへのリンクは次のとおりです。 NXP S32 デバイス向けバッテリー システム開発の合理化。 2. ディープラーニングモデルの統合 MathWorks とのこれまでのコラボレーションでは、ディープラーニング ベースの充電状態 (SOC) 推定アルゴリズムを Simulink から直接展開し、PIL モードでテストすることに成功しました。はい、Embedded Coder は Simulink モデルから直接ニューラル ネットワークを生成でき、MBDT と組み合わせて S32K3 に展開できます。 関連するウェビナーへのリンクは次のとおりです。 NXP S32K3マイクロコントローラへのディープラーニングベースのSOC推定アルゴリズムの導入 3. S32K388におけるリアルタイム推論の実現可能性 はい、リアルタイム推論は実現可能です。以前の研究では、セル電圧、電流、温度を入力として使用しました。これらの値は実行時に AFE によって測定され、ニューラル ネットワークに提供されます。ベストプラクティスとして、PIL モードでの集中的なテストはパフォーマンスの評価に役立ちます。最適化手法を試して、最適な構成を特定することもできます。 4. セーフティ上の制約 セーフティ要件のロジックを Simulink に実装し、対応するコードを自動的に生成できます。MathWorks は、S32K3 で使用および展開した例を提供しています。 リチウムイオンバッテリー・マネジメントアルゴリズムの設計とテスト 5. S32K388とFRDM-MC33771B-SPI-EVBの互換性および代替品 Simulink からニューラル ネットワーク アプリケーションを直接テストするには、最新バージョンの S32K3 用 MBDT を使用します。これにより、展開の実現可能性を確認し、現時点で利用可能なすべての MCU に対してベンチマーク テストを実行できます。 ハードウェアの観点からは、いくつかのオプションがあります。 a. 提案されたソリューション(S32K358 + MC33771C)を続行する MC33771B ではなく、より新しく、SPI をサポートし、電流測定機能を備えている MC33771C から始めてください。カスタム コードを使用して MC33771C ドライバを Simulink に直接統合し、BMS 1.8.0 用の MBDT を使用できます。 b. サポートされているMCUを使用してSimulinkでBMS用のMBDTを使用する たとえば、セル監視用の MC33774/MC33775 と電流測定用の MC33772C を搭載した S32K358 (すべて SPI 経由)。このセットアップは、MBDT for BMS および MBDT for S32K3 1.4.0 で動作します。ただし、最初にニューラル ネットワークが S32K358 で実行されることをテストします。 c. AFE部品を搭載したS32K3または最新のBMA7318を使用する 注意: このCASE、BMS 用の MBDT を使用して Simulink からコードを展開することは直接サポートされていません。Simulink でアプリケーション ロジックとニューラル ネットワーク C コードを生成し、S32 Design Studio を使用して AFE と手動で統合することもできます。 6. デバイス上でのトレーニングと推論のみのワークフロー これはアプリケーションの要件によって異なります。これまでのアプローチは推論のみで、MATLAB でネットワークをトレーニングし、それを MCU に展開していました。推奨リソース: ディープラーニングを使用したバッテリー状態の推定。続いて、上記のポイント 2 で説明したウェビナーが開催されます。 7. S32K388におけるAI推論のパフォーマンスとメモリに関するガイダンス パフォーマンスはアプリケーションによって異なります。ニューラル ネットワークがすでにトレーニングされている場合は、生成されたコードを S32K3 ファミリの PIL モードでテストし、実行をプロファイルして、S32K388 がニーズを満たしているかどうかを判断します。参考までに、前述の SOC アルゴリズムは、S32K344 および S32K358 で正常にテストされました。 要約すると、Embedded Coder を使用すると、ニューラル ネットワークからコードを生成し、PIL モードでパフォーマンスをテストできます。検証後、生成されたコードを S32 Design Studio にインポートし、必要に応じて S32K388 に展開します。 お役に立てば幸いです。 マリウス
查看全文
S32N55: sequence ID in gPTP bridge device when acting as a GM Hi team, I was testing the bridge device behavior in the gPTP example. I use the GrayVIP_1_0_22_0. According to the User Manual, if the bridge does not receive any Sync messages after StartupTimeoutS, it should start operating as a GM. However, I observed that in this situation, the Sequence ID in both Sync and Sync Follow-Up frames remains at 1024 and does not increase. After checking the related code, I found that when the bridge transitions to GM mode, the Sequence ID used for generating Sync messages is taken from the prSyncMachines[prDomain->u8SlaveMachineId].u16SequenceId of the slave port. If the slave port has not received any Sync messages, this value is never updated, which causes the Sequence ID in the Sync messages sent by the master port to remain unchanged. This behavior suggests that the bridge cannot function properly as a GM under this mechanism. Could you please help explain why the bridge is designed to behave this way? BR, Bridget GPTP_STACK Re: S32N55: sequence ID in gPTP bridge device when acting as a GM Hello @Bridget,  The team has picked up a case and will provide an answer as soon as possible  Best regards, Radu Re: S32N55: sequence ID in gPTP bridge device when acting as a GM Hi @Bridget, We are working to reproduce the issue and will discuss further steps in the team. I will get back to you. Thanks, Lukas Re: S32N55: sequence ID in gPTP bridge device when acting as a GM @Bridget, As it turns out, this behavior of the gPTP Bridge is intended, and in line with the 802.1as standard. The Bridge is supposed to relay Sequence ID received on master port. If the Grand Master is lost, the Sequence ID indeed stops being updated - this is one of the ways that downstream devices are able to tell when GM is lost. For a Bridge that never had a GM in the first place, the Sequence ID is random per standard. Our interpretation of random is that nothing about the Sequence ID is guaranteed, or should be assumed. A hardcoded 1024 is considered compliant to that (could be any other number). Is the Sequence ID causing issues in your application? As you have surely observed, Endpoints are perfectly capable of synchronizing to the Bridge, regardless of Sequence ID. Apologies for taking so long. Please do let me know if anything is unclear. BR, Lukas
查看全文
チップ関連のリソースとドキュメントをダウンロードする方法 例: S32K3xx_interrupt_map.xlsx Re: 如何下载芯片的相关资源的文档 こんにちは@PQF データシートとガイダンスマニュアルは公式ウェブサイトからダウンロードできます。これらの資料はガイダンスマニュアルの添付ファイルに含まれています。 https://www.nxp.com/products/S32K3
查看全文
FS32K144HAT0MMHT用セーフティ周辺ドライバ(SPD)に関するお問い合わせ – 入手状況と無料ソース こんにちは、チームの皆さん FS32K144HAT0MMHT MCU を使用して新しい ISO 26262 (ASIL-B) プロジェクトを開始しており、セーフティ ペリフェラル ドライバ (SPD) がどのように動作するかを理解したいと考えています。 SPD パッケージはどこからダウンロードできますか? また、NXP ソフトウェア ライセンス & サポート ポータルでは、SW32K1-SPD-D のような特定のパッケージ名が必要ですか? SPD は無料ですか、または標準の RTD/SDKs ダウンロードに含まれていますか、それとも別のライセンスが必要ですか? 初期開発で SPD ドライバを研究できるサンプルや無料ソースはありますか? SPD または関連リソースの検索に関するガイダンスがあれば幸いです。 ご回答をお待ちしています。 Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 S32K1 – セーフティ ペリフェラル ドライバ (SPD)には、次のドライバのみが含まれています。 S32K1用拡張MCEMドライバ、バージョン1.0.1 https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K1-SPD-D&_gl=1*ao7djc*_ga*M... 。 ドライバは、無料で入手できる S32K1xx 標準ソフトウェア パッケージに含まれています。 S32K1/S32M24x リアルタイム・ドライバ、ASR R21-11、バージョン 2.0.0 P04 と互換性があります。 ただし、このドライバの機能例は提供されていません。 よろしくお願いいたします。 ダニエル Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは、 この SPD は生産をサポートします。実稼働環境での使用に適しているかどうか確認していただけますか? Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 はい、そうです。リリースノートを参照してください。 このバージョンは RTM (製造準備完了) レベルです。 よろしくお願いいたします。 ダニエル Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは、 ご返答ありがとうございます。 最新の S32 Design Studio IDE をインストールし、リリースノートに記載されているように RTM (Ready to Manufacture) RTD SDK を使用しました。CAN サンプル プロジェクトは、提供された SDK と構成ツールを使用して直接生成されました。 ただし、この設定でも、次のビルド エラーが発生します。 致命的なエラー: Port_Ci_Port_Ip_Types.h:そのようなファイル、又はディレクトリはありません エラー発生場所: ボード/Port_Ci_Port_Ip_Cfg.c:56 #include "Port_Ci_Port_Ip_Types.h" Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 これは互換性の問題のようです。 正しい S32DS IDE バージョンでは、互換性のある RTD と、SPD リリース ノートに指定されている SPD のみをインストールする必要があります。追加の RTD バージョンは存在しない必要があります。複数の RTD バージョンが必要な場合は、個別の IDEs をインストールすることをお勧めします。 追加の質問は SPD とは関係がなくなったため、さらにサポートが必要な場合は新しいThreadを作成してください。 よろしくお願いいたします。 ダニエル
查看全文
启用密码保护后无法移除 NTAG213 上的写保护 (AUTH0/ACCESS) 您好,NXP团队, 我正在使用 PN7160 NFC 控制器和恩智浦 Linux NF CDemoApp 处理 NTAG213 标签。 我的成功经验 我修改了nfcDemoApp (main.c),通过配置在 NTAG213 上启用只写密码保护: 工务司 包装 AUTH0 访问(prot = 0) 写保护正常工作: 移动 NFC 应用程序无法再写入 只有从我的应用程序中发送 PWD_AUTH 后,才能进行写入操作 将 AUTH0 RESET 为 0xFF 清除接入 重写配置页面 我还使用恩智浦 NFC TagInfo / NFC Tools应用程序在另一个 NTAG213 上启用了写保护,结果也达到了预期效果。 我面临的问题 现在,我在这两种情况下都 无法移除写保护: 使用我自己的代码 (nfcDemoApp) 使用恩智浦 NFC 工具/TagWriter移动应用程序 即使使用正确的密码 (PWD_AUTH) 进行了身份验证,但尝试:仍失败。 我的理解是 根据 NTAG213 数据表,我明白了: PWD_AUTH 应允许在 RF 会话期间写入受保护的页面 身份验证后,应该可以修改 AUTH0 和 ACCESS NTAG213 没有用于密码保护的永久锁定位(与锁字节不同) 但在实际操作中,我无法将标签恢复到未受保护的状态。 问题 启用 NTAG213 基于密码的写保护后,官方是否支持移除或禁用该保护? 成功设置 PWD_AUTH 后,AUTH0 和 ACCESS 页面是否可以写入,还是一旦设置后就永久受保护? 是否有将 NTAG213 恢复到可写(未受保护)状态的推荐顺序? 恩智浦 NFC Tools / TagWriter 是否能移除 NTAG213 上的密码保护,还是需要自定义原始命令处理? 身份验证后是否需要完全RESET(RF 会话RESET/电源重启)才能修改配置页面? 如果恩智浦团队能提供任何指导或说明,将非常有帮助。 感谢您的支持。 致以最诚挚的问候, Niranjan Re: Unable to remove write protection on NTAG213 after enabling password protection (AUTH0/ACCESS) 我使用 RFIDDiscover。它可以更改配置页面中的设置,取消保护。
查看全文
How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Hi, I have the i.MX 8M Mini LPD4-EVK up and running, and I would like to perform power consumption measurements on specific independent power rails, such as VDD_1V8 and NVCC_DRAM_1V1. I have located the corresponding PMIC outputs (BUCK8 and BUCK7) on the schematic, but I noticed that there are no onboard shunt resistors (sense resistors) for these lines. Could you please advise on the best method to measure the current (or power) for these rails? Thanks! Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Hello, In the case of i.MX8MM we do not have a board to do the power measurement in each power rail as occurs in other boards such as i.MX 8M Plus Evaluation Kit Enabling Power Measurement. If you need to measure this you need to design a new SOM board to include these shut resistors or maybe you could try to rework the board to add a shunt resistor in a trace. You can use the schematics of the mentioned board as reference to add the resistors and do the measurement. i.MX 8M Plus Power Measurement Board Design Files Best regards. Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Okay, thanks.
查看全文
闪存中的常数 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我正在使用 IAR 工具集,设备是 MKE02Z64。我有几个常量值想放在闪存中(如果可能的话)以释放 RAM,但我找不到用 IAR 工具实现的方法。 最初,我使用的只是一个相当标准的:const uint16_t foobar; 这样一来,foobar 仍然处于数据内存中。我接下来试了试(根据我在网上找到的资料):const volatile uint16_t foobar @"FLASH"; 这没有产生任何错误或警告,但 foobar 仍在数据内存中,而不是代码内存中。 能做到吗? 谢谢! Re: const in flash memory Great explanation of how `const` works when stored in flash memory, especially for embedded systems where every byte matters. It’s interesting how efficient memory placement can tighten performance without changing logic. I recently explored similar structured info on Cass County Justice while researching data storage and organization best practices. Posts like this are helpful for bridging theory with real-world application. 很好地解释了 “const” 在闪存中存储时的工作原理,特别是对于每个字节都很重要的嵌入式系统。有趣的是,在不改变逻辑的情况下,高效的内存布局可以提高性能。最近,我在研究数据存储和组织的最佳实践时,在卡斯县司法局 探索了类似的结构化信息。这样的帖子有助于将理论与实际应用相结合。 Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 看来 Mark Butcher 是对的--我查看了链接器的输出,实际上,const 存在闪存中。让我感到不解的是,生成的映射文件显示 const 为"Data" ,而不是"Code" ,我以为它说的是内存部分,而不是实际的数据类型。 感谢您的回复! Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,戴夫、 请查看以下示例,了解如何将 Const 置于 IAR IDE 软件的 Flash 地址。 在 *.icf 文件中定义一个 [.我的参数] 部分的起始地址,并将该部分置于 ROM 内存中: 定义符号 __region_FlexNVM_start__ = 0x10000000; 置于 mem:__region_FlexNVM_start__ { 只读部分 .myparameter}; 在代码文件 (*.c) 中,将数据放入该部分: const char parameter1[16] @".myparameter"= {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF}; IAR 在专用地址中放置变量的另一种方法: #pragma location=0x3000 const int test1 = 1; const int test2 @ 0x3004 = 2; 然后,我在地图文件中找到了以下结果: test1 0x00003000 0x4 数据 GB hello_world.o[1] test2 0x00003004 0x4 数据 GB hello_world.o[1] 如果我使用以下代码 #pragma location=0x3000 const int test1 = 1; const int test2 = 2; 然后只把 test1 变量放在 0x3000,把 test2 放在另一个地方,映射结果如下: test1 0x00003000 0x4 数据 GB hello_world.o[1] test2 0x000016ec 0x4 数据 GB hello_world.o[1] 将变量放入专用地址的另一种方法: 在 .icf文件定义的内存区域,如 定义符号 __ICFEDIT_region_ROM_DATA_start__ = 0x0003F800; 定义符号 __ICFEDIT_region_ROM_DATA_end__ = 0x0003FFFF; 定义区域 ROM_DATA_region = mem:[从 __ICFEDIT_region_ROM_DATA_start__   to __ICFEDIT_region_ROM_DATA_end__]; 置于 ROM_region { 只读,代码块重定位}; 在 C 代码中,例如 #define NVM_DATA _Pragma("location=\"NVM_DATA\"" ) NVM_DATA 常量 int test1 = 1; NVM_DATA const int test2 = 2; _Pragma("location=\"NVM_DATA\"" ) 与 #pragma location="NVM_DATA 相同。" 希望能有所帮助。 祝您愉快, 、 马辉 ----------------------------------------------------------------------------------------------------------------------- 注:如果本帖回答了您的问题,请点击正确答案按钮。Thank you! ----------------------------------------------------------------------------------------------------------------------- Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,戴夫 @"FLASH" 仅用于 volatile 常量。 IAR(默认)行为是将常量(全局和静态)放入 Flash,尽管严格来说,const 关键字意味着该变量具有只读属性,而不是它位于特定的内存区域中(尽管嵌入式系统通常会像这样工作是有感知)。 例如 static const unsigned char usb_language_string[] = {4, DESCRIPTOR_TYPE_STRING, LITTLE_SHORT_WORD_BYTES(UNICODE_LANGUAGE_INDEX)}; 静态常量 unsigned char manufacturer_str[] = {10, DESCRIPTOR_TYPE_STRING, 'M',0, 'a',0, 'n',0, 'u',0}; static 常量 unsigned char product_str[] = {16, DESCRIPTOR_TYPE_STRING, 'M',0, 'y',0, ' ',0, 'P',0, 'r',0, 'o',0, 'd',0}; 静态常量 unsigned char serial_number_str[] = {10, DESCRIPTOR_TYPE_STRING, '0',0, '0',0, '0',0, '1',0}; static const unsigned char config_str[] = {10, DESCRIPTOR_TYPE_STRING, 'C',0, 'o',0, 'n',0, 'f',0}; static 常量 unsigned char interface_str[] = {8, DESCRIPTOR_TYPE_STRING, 'I',0, 'n',0, 't',0}; 静态常量无符号 char *ucStringTable[] = {usb_language_strring, manufacturer_str, product_str, serial_number_str, config_str, interface_str}; 地图显示 usb_language_string 0x00003d24 manufacturer_str 0x00003d28 product_str 0x00003d34 serial_number_str 0x00003d44 config_str 0x00003d50 interface_str 0x00003d5c ucStringTable 0x1ffff11c 请注意,除了最后一个阵列外,其他阵列都放入了闪存。我无法解释为什么规则会有一些例外,而你的特殊情况可能就是这样的例外,不管是出于什么原因。 也许最好直接联系 IAR,因为我也找不到控制最后几个剩余异常的方法。幸运的是,就我所见,它只影响到极少数这类东西。 此致 Mark Kinetis:µTasker Kinetis 支持 KE:支持 µTasker FRDM-KE02Z/支持 µTasker FRDM-KE02Z40M/支持 µTasker FRDM-KE06Z 欲获得完整的"开箱即用" Kinetis 体验并加快产品上市时间
查看全文
Problem of the CAN sampling point test value being too small for S32K3 Hi, NXP When developing with S32K311, an external crystal oscillator of 16 MHz is selected. When configuring CANFD, the CAN clock source uses the AIPS_PLAT_CLK at 60 MHz. 80% sampling point is configured for the data field, and TDC is enabled. However, the actual measured sampling point in CANOE can only reach 72%. This issue also occurs in tests on other models such as the S32K312 and S32K342. The following is one of our configurations where we set the sampling points and test data. We configured the sampling point to be 76%, but the actual test result was 67%. Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong Could you please share your project, i will take time to test it. Re: Problem of the CAN sampling point test value being too small for S32K3 Hi, @Senlent  We have modified multiple configurations. Under the condition that S32K3 is configured to 80%, the best result tested by CANoe is 72% Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong For CAN FD data phase the latest possible sample point must be set in CANoe. Then the VH6501 sends frames and lengthens the individual bits by one tick after each interval. This seems to be a configuration issue with your VH6501. You can try modifying the parameters here to 70%, 76.667%, and 80% and then testing again. Re: Problem of the CAN sampling point test value being too small for S32K3 Hi,@Senlent  We consulted several experienced engineers. They described that there are also problems with the small sampling point test in S32K1 and K3, and this problem may not be strongly related to the MCU.However, the test results vary when different testing instruments are used. When using CANoe for testing, the test results are all on the low side. They suggest that the sampling point configured for S32K3 can be appropriately increased under the actual test requirement of 80%. You can use any NXP demo to conduct a test, and this phenomenon should be reproducible. Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong This should still be a testing issue, not caused by the MCU. However, I will spend some time doing some simple tests. I will probably use an oscilloscope to test directly, which should be the most accurate measurement method. Re: Problem of the CAN sampling point test value being too small for S32K3 Hi,@Senlent  If you have more convincing results, please share them with us as well. We used some other instruments for testing, and the obtained sampling points are relatively close to what we expected in the settings. However, for customers, CANoe has a very high level of industry recognition. Best Regards, xianlong Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong It's possible that the client's tests are flawed; please trust your own testing. I will take some time to conduct a few tests, but this isn't a priority for me and may take a few days to get back to you. Re: Problem of the CAN sampling point test value being too small for S32K3 ok Re: Problem of the CAN sampling point test value being too small for S32K3 Hi@wuxianlong I'm sorry, I cannot perform this test. I do not have suitable interference equipment to conduct it, and the test results in the FLEXCAN report already prove that the test passed. I can send you the relevant proof privately. Re: Problem of the CAN sampling point test value being too small for S32K3 Thank you very much.
查看全文
mke06128vqh4のuart0 こんにちは、友人の皆さん。私は MKE06Z128VQH4 マイクロコントローラを使用して設計したボードを持っており、その中でいくつかの出力と入力を使用しています。私は KBI 入力を 1 つ、タイマーを 3 つ、カウンターを 1 つ使用しています。SO、問題はありません。すでに設定を行っており、動作しています。 現在、UART0 シリアル ポートに取り組んでおり、USB-TTL シリアル アダプターを PC に接続してデータを受信または送信しています。SDKs ライブラリを使用して情報を送受信することができませんでした。MCUXpresso を使用した私の構成は画像のとおりです。 ピン: 時計には外部水晶12MHZがあります。 FLL にエラーがあるため、FEE オプションをCANません。FBELP を使用して設定を行っています。 UART0 では、割り込み受信および送信ポーリングを使用して構成を行っています。 インストールされている SDK は次のとおりです。 サンプルの SDK があります: これらの例を使用しても、UART0 を動作させることができません。何らかのガイダンスが必要です。UART0 を動作させるために数日間試行しています。 Re: uart0 in mke06128vqh4 こんにちは@Iotelctronic デモ版は変更せずにそのままご利用ください。 私の側でテストしましたが、問題は見つかりませんでした BR アリス Re: uart0 in mke06128vqh4 こんにちは、アリス!ポーリングを使用してデモでテストしましたが、機能しません。 codigo main.c: #include "pin_mux.h" #include "board.h" #include "fsl_uart.h" /******************************************************************************* * Definitions ******************************************************************************/ /* UART instance and clock */ #define DEMO_UART UART1 #define DEMO_UART_CLK_FREQ CLOCK_GetFreq(kCLOCK_BusClk) /******************************************************************************* * Prototypes ******************************************************************************/ /******************************************************************************* * Variables ******************************************************************************/ uint8_t txbuff[] = "Uart polling example\r\nBoard will send back received characters\r\n"; uint8_t rxbuff[20] = {0}; /******************************************************************************* * Code ******************************************************************************/ /*! * @brief Main function */ int main(void) { uint8_t ch; uart_config_t config; BOARD_InitBootPins(); BOARD_InitBootClocks(); config.baudRate_Bps = 115200U; config.parityMode = kUART_ParityDisabled; config.stopBitCount = kUART_OneStopBit; //config.txFifoWatermark = 0; //config.rxFifoWatermark = 1; config.enableTx = false; config.enableRx = false; // UART_GetDefaultConfig(&config); // config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE; // config.enableTx = true; //config.enableRx = true; UART_Init(DEMO_UART, &config, DEMO_UART_CLK_FREQ); UART_WriteBlocking(DEMO_UART, txbuff, sizeof(txbuff) - 1); while (1) { UART_ReadBlocking(DEMO_UART, &ch, 1); UART_WriteBlocking(DEMO_UART, &ch, 1); } } Re: uart0 in mke06128vqh4 こんにちは@Iotelctronic 1) クロックに関しては、12 MHz 水晶が正常に機能しているかどうかを確認し、構成を確認してください。 2) KE06 は DMA をサポートしていません。 よろしくお願いします。 BR アリス Re: uart0 in mke06128vqh4 こんにちは。問題を見つけました。レジスターを使用していた SDK の例やその他のプロジェクトは機能せず、常に間違ったデータと間違った文字が送信されました。私は外部の 12 MHz 水晶を使用していますが、その水晶では正確に 115200 のボー レートを生成できません。ただし、 12 MHz 水晶をはんだ付けせずに構成を 8 MHz に変更すると、正常に動作します。私の大きな疑問は、構成を 8 MHz に変更しても 12 MHz の水晶を変更しないとなぜ機能するのかということです。私が示しているコードは.freqで行った変更です= 8000000U。これについて説明はありますか?また、MKE06Z128VQH4 マイクロコントローラには UART で使用するための DMA があるかどうかもお聞きしたいです。 /*********************************************************************************************************************** * This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file * will be overwritten if the respective MCUXpresso Config Tools is used to update this file. **********************************************************************************************************************/ /* * How to setup clock using clock driver functions: * * 1. call CLOCK_SetSimSafeDivs() to set the system clock dividers in SIM to safe value. * * 2. If external oscillator is used Call CLOCK_SetXtal0Freq() to set XTAL0 frequency based on board settings and * call CLOCK_InitOsc0() to init the OSC. * * 3. Call CLOCK_BootToXxxMode()/CLOCK_SetXxxMode() to set ICS run at the target mode. * * 4. If ICSIRCLK is needed, call CLOCK_SetInternalRefClkConfig() to enable the clock. * * 5. call CLOCK_SetSimConfig() to configure the divider in sim. */ /* clang-format off */ /* TEXT BELOW IS USED AS SETTING FOR TOOLS ************************************* !!GlobalInfo product: Clocks v7.0 processor: MKE06Z128xxx4 package_id: MKE06Z128VLK4 mcu_data: ksdk2_0 processor_version: 9.0.0 * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/ /* clang-format on */ #include "clock_config.h" /******************************************************************************* * Definitions ******************************************************************************/ /******************************************************************************* * Variables ******************************************************************************/ /* System clock frequency. */ extern uint32_t SystemCoreClock; /******************************************************************************* ************************ BOARD_InitBootClocks function ************************ ******************************************************************************/ void BOARD_InitBootClocks(void) { BOARD_BootClockRUN(); } /******************************************************************************* ********************** Configuration BOARD_BootClockRUN *********************** ******************************************************************************/ /* clang-format off */ /* TEXT BELOW IS USED AS SETTING FOR TOOLS ************************************* !!Configuration name: BOARD_BootClockRUN called_from_default_init: true outputs: - {id: Bus_clock.outFreq, value: 20 MHz} - {id: Core_clock.outFreq, value: 40 MHz} - {id: Flash_clock.outFreq, value: 20 MHz} - {id: ICSFF_clock.outFreq, value: 31.25 kHz} - {id: ICSIR_clock.outFreq, value: 37.5 kHz} - {id: LPO_clock.outFreq, value: 1 kHz} - {id: OSCER_clock.outFreq, value: 8 MHz} - {id: Plat_clock.outFreq, value: 40 MHz} - {id: System_clock.outFreq, value: 40 MHz} - {id: Timer_clock.outFreq, value: 20 MHz} settings: - {id: ICSMode, value: FEE} - {id: ICS.BDIV.scale, value: '1', locked: true} - {id: ICS.IREFS.sel, value: ICS.RDIV} - {id: ICS.RDIV.scale, value: '256'} - {id: ICS_C1_IRCLKEN_CFG, value: Enabled} - {id: OSC_CR_OSCEN_CFG, value: Enabled} - {id: OSC_CR_OSC_MODE_CFG, value: ModeOscLowPower} - {id: OSC_CR_RANGE_CFG, value: High} - {id: OSC_CR_RANGE_RDIV_CFG, value: High} - {id: SIM.DIV2.scale, value: '2'} - {id: SIM.DIV3.scale, value: '2', locked: true} sources: - {id: OSC.OSC.outFreq, value: 8 MHz, enabled: true} * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/ /* clang-format on */ /******************************************************************************* * Variables for BOARD_BootClockRUN configuration ******************************************************************************/ const ics_config_t icsConfig_BOARD_BootClockRUN = { .icsMode = kICS_ModeFEE, /* FEE - FLL Engaged External */ .irClkEnableMode = kICS_IrclkEnable, /* ICSIRCLK enabled, ICSIRCLK disabled in STOP mode */ .bDiv = 0x0U, /* Bus clock divider: divided by 1 */ .rDiv = 0x3U, /* FLL external reference clock divider: divided by 256 */ }; const sim_clock_config_t simConfig_BOARD_BootClockRUN = { .outDiv1 = 0x0U, /* DIV1 clock divider: divided by 1 */ .outDiv2 = 0x1U, /* DIV2 clock divider: divided by 2 */ .outDiv3 = 0x1U, /* DIV3 clock divider: divided by 2 */ .busClkPrescaler = 0x0U, /* bus clock optional prescaler */ }; const osc_config_t oscConfig_BOARD_BootClockRUN = { .freq = 8000000U, /* Oscillator frequency: 12000000Hz */ .workMode = kOSC_ModeOscLowPower, /* Oscillator low power */ .enableMode = kOSC_Enable, /* Enable external reference clock, disable external reference clock in STOP mode */ }; /******************************************************************************* * Code for BOARD_BootClockRUN configuration ******************************************************************************/ void BOARD_BootClockRUN(void) { /* Set the system clock dividers in SIM to safe value. */ CLOCK_SetSimSafeDivs(); /* Initializes OSC0 according to board configuration. */ CLOCK_InitOsc0(&oscConfig_BOARD_BootClockRUN); CLOCK_SetXtal0Freq(oscConfig_BOARD_BootClockRUN.freq); /* Set ICS to FEE mode. */ CLOCK_BootToFeeMode(icsConfig_BOARD_BootClockRUN.bDiv, icsConfig_BOARD_BootClockRUN.rDiv); /* Configure the Internal Reference clock (ICSIRCLK). */ CLOCK_SetInternalRefClkConfig(icsConfig_BOARD_BootClockRUN.irClkEnableMode); /* Set the clock configuration in SIM module. */ CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN); /* Set SystemCoreClock variable. */ SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK; } Re: uart0 in mke06128vqh4 ありがとう、クロックの問題は水晶のはんだが12MHZではなく8MHZであることです
查看全文
OTP mirror register map Subject: Request for PF5020 OTP Mirror Register Map Documentation Hi, We are currently working on communication between the PF5020 PMIC and an NXP controller. During our review of the PF5020 datasheet, we could not find detailed information regarding the OTP mirror register map, including register addresses and pin-level descriptions related to OTP configuration. The output voltages we need are 1.1v,1.8v and3.3v Could you please advise if this information is available in a separate document? This is essential for us to correctly interpret and configure the OTP-related settings in our system. We would appreciate your guidance or any relevant documentation you can share. Thank you in advance! Shivani  Re: OTP mirror register map Hi, Section 16.1 of the PF5020 datasheet provides a complete OTP mirror register map, including: - Register addresses  - Configuration fields such as:    OTP_VSWx for buck output voltages    OTP_VLDOx for LDO output voltages    OTP_SWx_SEQ for power-up sequencing    OTP_SWx_PDGRP for power-down grouping    OTP_SWxILIM for current limit settings    OTP_SWxUV_TH and OTP_SWxOV_TH for UV/OV thresholds The VDDOTP pin determines whether the device loads configuration from: - OTP fuses (when VDDOTP = GND) - Hardwired defaults (when VDDOTP = V1P5D) The TBBEN pin enables Try-Before-Buy (TBB) mode, allowing temporary configuration and testing of OTP settings before committing to fuse programming. Keep in mind that OTP programming is not allowed in production by the customer. Only NXP or authorized partners (lower volume) should perform this. During development you can use the KITPF502xSKTEVM. To configure the PF5020 for 1.1V, 1.8V and 3.3V, you would: - Set OTP_VSWx or OTP_VSWND1 to the appropriate values for 1.1V and 1.8V - Set OTP_VLDO1 or OTP_VSWND1 to 3.3V, depending on current requirements These values are programmable in the OTP mirror registers and can be tested in TBB mode before committing. BRs, Tomas
查看全文