Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
i.MX 6/7シリーズDDRツールリリース 重要:ご質問がある場合やDDRツールまたはサポート・ドキュメントについて問題を報告したい場合は、i.MXコミュニティでサポートチケットを作成してください。プライベート・メッセージやダイレクト・メールは常時チェックされず、返信されないことにご留意ください。 i.MX 6/7シリーズファミリー DDRツール概要 このページには、i.MX 6/7 シリーズ DDR ツールの最新リリースが含まれています。このページで説明されているツールは、以下の i.MX 6/7 シリーズ SoC を対象としています。 i.MX 6DQP (Dual/Quad Plus) i.MX 6DQ (Dual/Quad) i.MX 6DL/S(デュアル・ライト/ソロ) i.MX 6SoloX i.MX 6SL i.MX 6SLL i.MX 6UL i.MX 6ULL/ULZ i.MX 7D/S i.MX 7ULP i.MX 6/7シリーズのDDRツールを使用すると、デバイス構成(密度、チップ/セレクトの数など)やボードのレイアウト(データ・バス・ビットのスウィズリングなど)に基づいて、カスタムのDRAM初期値の生成やテストが実行できるようになります。このプロセスの次は、ブートローダとOSの起動に進むことができます。OSが起動したら、OSベースのメモリ・テスト(Linux memtesterなど)を実行して、DDRメモリ・インターフェースをさらに検証・テストすることをお勧めします。 i.MX 6/7シリーズDDRツールの構成要素は以下のとおりです。 DDRレジスタプログラミングエイド(RPA) DDRストレス・テスト_________________________________________________________ i.MX 6/7シリーズDDRストレステスト i.MX 6/7シリーズのDDRストレス・テスト・ツールは、u-bootおよびOS起動で使用する前にDDR初期化が正常に動作することを検証するためのWindowsベースのソフトウェア・ツールです。DDRストレス・テスト・ツールはこちらからご利用いただけます。 i.MX 6/7 DDRストレステストツール DDRストレステストツールは、上記のすべてのi.MX SoCをサポートしていますが、ツールで指定されているサポート対象のi.MX SoCの一部は、次のように複数のi.MX SoCをサポートしています。 MX6DQ – 選択すると、i.MX 6DQおよびi.MX 6DQP(Plus)の両方をサポートします。 MX6DL – 選択すると、i.MX 6DLとi.MX 6S(i.MX 6DLS製品ファミリ)の両方がサポートされます MX6ULL – 選択すると、i.MX 6ULLおよびi.MX6 ULZの両方をサポートします。 MX7D – 選択すると、i.MX 7Dおよびi.MX 7Sの両方がサポートされます _____________________________________________________________________________ i.MX 6/7シリーズのDDRレジスタ・プログラミング支援(RPA) i.MX 6/7シリーズのDDR RPA(または単にRPA)は、ユーザーの特定DDR構成(DDRデバイス・タイプ、密度など)に合わせてDDRの初期化を開発するためのExcelスプレッドシート・ツールです。RPAはDDRストレス・テスト・ツールで使用するためのDDR初期化スクリプトを生成します。RPAの以前のバージョン履歴については、各RPAのリビジョン履歴タブを参照してください。 最新のRPAを入手するには、以下のリンクをご覧ください。 i.MX 6DQP i.MX6DQPレジスタプログラミング支援 i.MX 6DQ i.MX6DQレジスタプログラミング支援 i.MX 6DL/S i.MX6DLレジスタプログラミング支援 i.MX 6SoloX i.MX6SXレジスタプログラミング支援 i.MX 6SL i.MX6SLレジスタ・プログラミング支援ツール i.MX6SLL i.MX6SLLレジスタプログラミング支援 i.MX 6UL/ULL/ULZ i.MX6UL/ULL/ULZ DRAMレジスタ・プログラミング支援 i.MX7D i.MX7D DRAMレジスタプログラミング支援 i.MX 7ULP i.MX7ULP DRAMレジスタ・プログラミング支援 _____________________________________________________________________________ DRAM レジスタプログラミング支援 FAQ i.MX6 全て i.MX6DL i.MX6Dual i.MX6DualPlus | 6QuadPlus i.MX6Quad i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7Dual i.MX7Solo i.MX7ULP Re: i.MX 6/7シリーズDDRツールリリース ストレスtoi.MX 6/7 DDRストレス・テスト・ツールのリンク
查看全文
SPIワードの送信に失敗しました この理由は何ですか???私は12vpowerを取得し、PCでボードを接続しました。どうぞ手を貸して下さい。 ソレノイドコントローラー Re: Failed to send SPI word 問題は解決しました。Windowsは署名のないSPIGENドライバを読み込めないためです。私のダウンロードに問題があるのかもしれません。Windowsドライバの強制署名を無効にした後、ドライバを更新することでSPIGENは正常に動作するようになりました。ありがとうございます! Re:SPIワードの送信に失敗しました Hi Lex (@LexLiu), この質問に協力していただけますか? ありがとう&BRs、トーマス
查看全文
陀螺仪:FXAS2100x 分线板 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi, FXAS2100x是一款小型、低功耗、偏航、俯仰和滚动角速率陀螺仪,具有 16 位 ADC 分辨率。满量程范围可调,从±250°/s 至±2000°/s。它具有 I2C 和 SPI 接口。 以下是从 OSH Park 下载的 FXAS2100x 分线板的渲染图: 该板的布局设计: 在附件部分,您可以找到原理图源文件 (SCH)、原理图 PDF 文件、布局源文件 (BRD)、Gerber 文件 (GTL、GBL、GTS、GBS、GTO、GBO、GKO、XLN) 和 BOM 文件。 如果您对其他传感器的更多类似分线板的设计感兴趣,请前往飞思卡尔传感器分线板设计 - 主页 陀螺仪
查看全文
i.MX 6/7 DDRストレステストツール 重要:DDRツールまたはサポート・ドキュメントに関してご質問または報告したい問題がある場合は、 i.MXコミュニティでサポート・チケットを作成してください。プライベート・メッセージやダイレクト・メールは常時チェックされず、返信されないことにご留意ください。 i.MX 6/7ファミリーDDRストレステスト i.MX6/7 DDRストレス・テスト・ツールは、DDRパラメータに合わせて微調整されたPCベースのソフトウェアで、OSを使用しない単一タスク環境でDDR性能の検証に使用される軽量ツールです。書き込みレベリング、DQSゲーティング、読み取り/書き込み遅延キャリブレーション機能を実行します。 このページで説明されているツールは、以下のi.MX 6/7シリーズのSoCを対象としています。 i.MX 6DQP (Dual/Quad Plus) i.MX 6DQ (Dual/Quad) i.MX 6DL/S(デュアル・ライト/ソロ) i.MX 6SoloX i.MX 6SL i.MX 6SLL i.MX 6UL i.MX 6ULL/ULZ i.MX 7D/S i.MX 7ULP DDRストレステストツールは、上記のすべてのi.MX SoCをサポートしていますが、ツールで指定されているサポート対象のi.MX SoCの一部は、次のように複数のi.MX SoCをサポートしています。 MX6DQ – 選択すると、i.MX 6DQおよびi.MX 6DQP(Plus)の両方をサポートします。 MX6DL – 選択すると、i.MX 6DLとi.MX 6S(i.MX 6DLS製品ファミリ)の両方がサポートされます MX6ULL – 選択すると、i.MX 6ULLおよびi.MX6 ULZの両方をサポートします。 MX7D – 選択すると、i.MX 7Dおよびi.MX 7Sの両方がサポートされます i.MX 6/7シリーズのDDRツールを使用すると、デバイス構成(密度、チップ/セレクトの数など)やボードのレイアウト(データ・バス・ビットのスウィズリングなど)に基づいて、カスタムのDRAM初期値の生成やテストが実行できるようになります。このプロセスの次は、ブートローダとOSの起動に進むことができます。OSが起動したら、OSベースのメモリ・テスト(Linux memtesterなど)を実行して、DDRメモリ・インターフェースをさらに検証・テストすることをお勧めします。 i.MX 6/7シリーズDDRツールの構成要素は以下のとおりです。 DDRレジスタ・プログラミング支援(RPA):i.MX 6/7シリーズDDRツール・リリース DDRストレス・テスト:詳細は後述 DDRストレス・テストの実行方法は3通りあり、それぞれ、添付のZIPファイルで取りあげられています。以下では、各方法の概要と関連ZIPファイルの命名規則について説明しています。 オプション 1 GUIベース: GUI実行ファイルを実行し、USB経由でホストPCにボードを接続します。 Archive file: ddr_stress_tester_vX.xx.zip ツールはまず、指定されたi.MX SoC用のDDR初期化スクリプトを実行する必要があります(「Load Init Script in the GUI tool(GUIツールで初期化スクリプトをロード)」を参照)。NXPの開発ボードに基づく初期化スクリプトの例は、上記ZIPファイルのスクリプト・フォルダにあります。注:カスタム・ボードとメモリに合わせてスクリプトの変更が必要な場合があります。   オプション2 DDRストレステスター:JTAGインターフェース JTAGインターフェース経由でボードに接続されたハードウェア・デバッガを使用して、ELFファイルをi.MX SoCのOCRAM(内部RAM)にダウンロードし、実行を開始します。結果はUARTシリアル・ポート(115200-8-n-1)に表示されます。 アーカイブファイル: ddr_stress_tester_jtag_vX.xx.zip JTAG/デバッガを使用する方法では、GUIツールと同様に、まず、指定されたi.MX SoC向けにDDR初期化スクリプトを実行する必要があります。サンプル・スクリプトの場所(ddr_stress_tester_vX.xx.zipファイル内)の場所については、GUIツールに関する上記の説明を参照してください。 スクリプトを使用できるのは、RealView ICE形式(.incファイル)またはDS-5 DSTERAM形式(.ds)のいずれかであることにご注意ください。他のデバッガの場合、その特定のデバッガに合わせてスクリプトのコマンド構文を変更する必要があります。RealView Ice(.inc)形式からDS-5 DSTREAM(.ds)形式への変換、または逆方向への変換にも同様のことが言えます。 DDRストレス・テスタ実行可能ファイル(V2.20以降)には、自動UART検出機能があります。シリアル・コンソールに選択するUARTポートが、NXP開発ツール(EVK、SABRE)で使用されているものと異なる場合は、そのUART向けの構成を可能にするDDR初期化スクリプトをコマンドに追加したうえで、ELF実行可能ファイルをロードして実行できます。手順については、このコミュニティ投稿の「FAQセクション」とJTAGアーカイブ・ファイルにある「txtファイル」を参照してください。   オプション 3 U-Boot: ブートローダのU-Bootを起動し、U-Boot内のコマンドを使用してbinファイルをSoC OCRAMにダウンロードし、実行を開始します。結果はUARTシリアルポート(115200-8-n-1)に表示されます。 Archive file: ddr_stress_tester_uboot_vX.xx.zip U-Bootを使ってDDRストレス・テスト・ツールをダウンロードする場合は、ddr-test-uboot-jtag-mxxxx.binをSDカードにコピーし、'fatload' U-Bootコマンドを使用してIRAMにロードします(新しいバージョンのU-Bootを使用する場合は以下の注意事項をご覧ください)。i.MX6の場合は0x00907000に、i.MX7Dの場合は0x00910000にバイナリをロードします。DDRストレス・テストではキャッシュとMMUページ・テーブルが再構成および再有効かされるため、まず、U-Bootでi-cacheとd-cacheを必ず無効にしておきます(下記を参照)。 この方法によるとU-BootからDDRストレス・テストをロードして実行できますが、NXPではシステム・テストとデバッグにはGUIベースのバージョンを実行することを強くお勧めしています。U-Bootを使用する方法は、USBもJTAG接続もない生産中のシステム向けの「最後の手段」と考えられ、その根拠として以下が挙げられます。 GUIベースの方法では、システムは「クリーン」な初期化されていない状態で起動するのに対し、U-Bootを使った方法では、DDRストレス・テストで想定されていない多数のSoC機能が初期化され、ストレス・テスト動作との競合が発生することがあります。 U-Bootオプションを実行すると、テストによりDDR内にあるU-Bootの内容が上書きされます。つまり、DDR内のあらゆるデータがテストによって上書きされます。ストレス・テストがロード、実行されると、U-Boot自体にアクセスできなくなり、U-Bootの機能に戻るには、システムを再起動する必要があります。 U-Bootの新しいバージョンでは、SDカード(ブート・メディア)からSoC内部のOCRAM(別名IRAM)にDDRストレス・テスト・コードを直接ロードできません。そのため手順は、まずDDRストレス・テスト・コードをDDRにロードしてから、OCRAMにコピーする(下記手順を参照)という形に変更されます。 u-boot> dcache off;icache off;fatload mmc 2:1 0x12000000 ddr-test-uboot-jtag-mx6dq.bin;cp.b 0x12000000 0x00907000 0x20000;go 0x00907000 U-BootはDDRストレス・テストの動作と競合する可能性のある多くのペリフェラルを初期化するため、テストの実行前にこれらのペリフェラルをクロック・ゲーティングする必要があります。そのため、上記の手順を次のように拡張することを強くお勧めします。 u-boot> dcache off;icache off;fatload mmc 2:1 0x12000000 ddr-test-uboot-jtag-mx6dq.bin;cp.b 0x12000000 0x00907000 0x20000; u-boot> mw 0x020c4068 0x00C0000F; u-boot> mw 0x020c406c 0x00000000; u-boot> mw 0x020c4074 0x3F300000; u-boot> mw 0x020c4078 0x0000F300; u-boot> mw 0x020c407c 0x0F000003; u-boot> mw 0x020c4080 0x000003FC; u-boot> go 0x00907000 上記の手順では、各クロック・ゲート・レジスタに別々のコマンドで書き込むことをお勧めします(「mw」で始まるコマンドを参照)。SoCでは各クロックのゲーティングに特定の時間を必要とするため、新しいコマンド・ライン書き込みでこのシーケンスを実行すると、SoCが目的のクロックをゲーティングする時間を確保できます。   ストレス・テストのリビジョン 特長 コメント 3.00 GUIバージョンにi.MX 7ULPのサポートを追加 既知の問題:USBハブまたは一部のPC環境下でUSB接続が不安定になります。 2.92 発生していないのにエラーが報告されるという特殊なケースを回避するために、ライト・レベリング・キャリブレーション・コードのエラーチェックに軽微な修正を加えました。   2.91 コード内の競合状態により、キャリブレーションルーチンが遅延値を見つけられなくなる可能性がある書き込みレベリングキャリブレーションコードの問題を解決しました。 DDR3をサポートするMX6シリーズのSoCにのみ適用されます。 2.90 書き込みキャリブレーションを行う際には、DDRスクリプトが行うように、書き込み遅延ラインレジスタ(MMDC_MPWRDLCTL)の設定を予約してください。以前のリリースでは、MMDC_MPWRDLCTLはデフォルトで0x40404040に変更されていました。     *詳細については、リリース・ノートを参照してください  _________________________________________________________________________________________________________________________________________    FAQ   Q:「ERROR: DCD addr is out of valid range(エラー:DCD addrは有効な範囲外です)」というエラー・メッセージが表示されます。このエラーはなぜ発生し、どうすれば解決できるでしょうか? A:Register Programming Aidの使用時に、DCD範囲でサポートされていないレジスタ書き込みが発生することがあります。次の項目を探して、DDR初期化スクリプトからコメント・アウトしてください。 wait = on setmem /16 0x020bc000 = 0x30 // disable watchdog (note the address for this may be different between i.MX6x devices) Q:「DDR Density(密度)」プルダウン・メニューにはどのような目的があり、どのように選択すればよいですか? A. DDR密度のプルダウンメニューでは、ユーザーがボードに実際に搭載されている密度よりも小さいDDR密度をテストするオプションを選択できます。これを行う利点は、テスト時間を短縮し、ユーザーがシステムの「クイックテスト」を実行できるようにすることです。重要:ユーザーは、この値をボードでサポートされている密度よりも高く設定しないことが必須です。そうすると、ストレステストが失敗したり、ロックアップしたりします。 DDR密度の意味は、テストされるメモリ・タイプ(DDR3またはLPDDR2)によって異なります。 DDR3の場合、これはチップ・セレクトあたりの密度を表します。つまり、ボードに2つのチップ・セレクトがあり、各チップ・セレクトに512MBがある場合は、単純に512MB以下を選択します。デフォルト設定では、検出された密度がチップ・セレクトごとに設定されます。 LPDDR2の場合は、チャネルあたりの密度を指します。これは、2チャネルLPDDR2メモリ(MX6DQ、MX6DL)をサポートするMX6デバイスにのみ関連します。1つのLPDDR2チャネルのみをサポートする他のMX6デバイスの場合は、そのチャネルの合計密度(最大設定)を指します。LPDDR2の場合、(チャネルごとの)チップ・セレクト数はテストの密度の選択には影響しないという点に注意する必要があります。ストレス・テストでは両方のチップ・セレクトがチャネルごとに1つの密度に結合されるためです。たとえば、2GBのLPDDR2デバイスに2つのチャネルがあり、各チャネルに2つのチップ・セレクトがあるとしましょう。チップ・セレクトあたりの容量はチャネルごとに512MBとなります。各チャネルで両方のチップ・セレクトを組み合わせると、チャネルごとの容量は1GBになると言うこともできます。この場合は、DDR密度ドロップダウン・メニューで(最大設定の)1GBを選択します。これはデフォルト設定でもありますが、1チャネルにつき1GBが実際にテストされているという確信を持つために1GBを選択してもまったく問題ありません。 ここで、チャネル(LPDDR2)とチップ・セレクトが1つずつしかなく、密度が128MBであると仮定します。この場合、選択できる最大DDR密度は128MBです。 チャネルが1つ、チップ・セレクトが2つあり、各チップ・セレクトの密度が128MBであると仮定する場合は、選択できる最大DDR密度は256MB(両方のチップ・セレクトの合計)です。   MX7Dについては、実際の密度を入力する必要がありますのでご注意ください。MX6xシリーズでは、このフィールドをデフォルトのままにしておくと、DDRストレス・テストによりDDR初期化スクリプトでサポートされている密度が確認されます。MX7D DDRコントローラの設計は異なり、この機能はサポートされていないため、ユーザーは実際の密度を入力する必要があります(MX7Dの密度の使用とチップ選択の数の詳細については、DDR CS設定に関する次のFAQを参照してください)。   Q. 「DDR CS」プルダウンオプションの目的は何ですか? A. 答えは、どのプロセッサをテストしているかによって異なります。   i.MX 6xシリーズの場合: このプルダウン・メニューには、1つのチップ・セレクト(CS0)、または(*2チップ・セレクト構成の場合*)すべてのチップ・セレクト(両方)をテストするオプションがあります。2チップ・セレクト構成がある場合にテスト時間を短縮したい場合は、1つのチップ・セレクトのみをテストできます。それ以外の場合は、両方のチップ・セレクトをテストすることができます。1チップ・セレクト構成で「ALL(すべて)」を選択すると、ストレス・テストでエラーが返されることにご注意ください。   i.MX 7Dの場合: MX7D DDRコントローラの設計は異なり、DDRストレス・テストでは、ユーザーはボード上でサポートされているすべての密度を入力する必要があります。当然1つのチップ・セレクトがテストされてから、次に進むため、チップ・セレクト・フィールドはそのまま(0)にします。たとえば、チップ・セレクトを2つ使用していて、各チップ・セレクトが512MBであると仮定する場合は、DDR密度フィールドに1GBを入力して、両方のチップ・セレクトがテストされるようにします。(テスト時間短縮のために)ボードに表示されている密度よりも低い密度を入力できますが、両方のチップ・セレクトがテストされない可能性があることに留意してください。   Q:DDRキャリブレーションを実行するのにDDRストレス・テスト・ツールを使用して結果を取得しています。取得されるパラメータはU-Bootのflash_header.Sに自動的に書き込まれますか、それとも手動で書き込みますか? A:DDRストレス・テスト・ツールから取得したキャリブレーション値は、flash_header.Sファイルまたは他のDDR初期化スクリプトで手動で更新される必要があります。   Q:MX7DでDDRストレス・テストを実行してキャリブレーションを試みると、キャリブレーションがサポートされていないというエラーが表示されますが、これは予想される動作ですか? A:はい、MX7ではキャリブレーションはサポートされておらず、必要もありません。MX7はMX6シリーズとは異なるメモリ・コントローラを使用しているためです。MX6シリーズのメモリ・コントローラには、MX7メモリ・コントローラにはないキャリブレーションのサポートが組み込まれています。   Q:MX7でDDRストレス・テストのGUIバージョンを実行し、DDR密度をデフォルトのままにしておくと、密度の指定が必要というエラーがツールに表示されます。なぜでしょうか? A:これは、MX7がMX6 シリーズとは異なるメモリ・コントローラを使用しているためです。MX6シリーズでは、メモリ・コントローラのレジスタ設定からメモリ密度を計算することが可能でした。MX7メモリ・コントローラの設計は異なっており、レジスタ設定に基づいてサポートされる密度を簡単に計算することはできません。代わりに、ユーザーがボード上の密度を確認し、DDR密度のプルダウン・メニューでこの値を選択する必要があります。   Q。書き込みレベリングキャリブレーションを実行すると、書き込みレベリングのキャリブレーション値が1/8クロックサイクルを超える場合、WALATを1に設定する必要があるという注意が表示されることがあります。これはどういう意味ですか? A. 特定の i.MX 6 デバイスのリファレンス・マニュアルの MMDC 章では、MDMISC レジスタで WALAT を設定する必要性が次のように説明されています。 「WALATの目的は、バースト・ライト操作の最後に時間遅延を加え、Write Post Amble Delay(tWPST)のJEDEC時間仕様への準拠を徹底することにあります(DQSストローブは、バースト・ライトの終了時のリリース前にクロック・サイクルの30%以上の間、低レベルで維持されます)。WL_DL_ABS_OFFSETn レジスタ・フィールドのいずれかの値が「1F」より大きい場合、WALATを「1」(サイクル追加遅延)に設定する必要があります。WL_CYC_DELnレジスタ・フィールドによって追加されるフルサイクル遅延では、WALATをさらに引き上げる必要があります」 したがって、ライト・レベリング・キャリブレーション・ルーチンで0x1Fより大きい遅延値が検出された場合、WALATの設定が必要なことをユーザーに通知し、DDR3初期化スクリプトを更新してWALATが確実に設定されるようにします。ライト・レベリングの遅延値が実行ごとに変動しているとユーザーが気付くことが時々ありますが、これはごく普通のことです。この遅延が「ボーダーライン」である、つまり0x1Fより大きいこともあれば、それよりやや小さいこともある場合は、WALATを初期化スクリプトに永続的に設定しても問題はなく、JEDECのtWPST内にとどまることが保証されます。   Q:ライト・レベリング・キャリブレーションの実行後に、報告される遅延値がゼロ(0x00)になることもあれば、ゼロ以外の値が報告されることがあるのは、なぜでしょうか。 A:ライト・レベリング・キャリブレーションを実行するたびに遅延値がやや変動するのはごく普通のことです。このキャリブレーション・ルーチンでは、ユーザーの大半が自分のボードを設計する際にDDR3メモリをi.MX 6 SoCの近くに配置すると前提しています。NXPのDDRストレス・テストのライト・レベリング・キャリブレーション・コードには、返されたライト・レベリング値をチェックするメカニズムが組み込まれています。ライト・レベリング・キャリブレーション・ルーチンで、返された遅延値がクロック・サイクルの3/4を超えることが検出されると、遅延値は「ゼロ」に設定されます。こうした大きな遅延結果が生じる原因は、DQS信号がSDCLKに対して既に遅延していることにあると想定されるためです。DQSをSDCLKに一致させるには、キャリブレーション・ルーチンでDQSをさらに遅延させて次のSDCLKエッジと一致させる必要がありますが、これは理論的には避けたいことです。JEDEC仕様では、DQSエッジはSDCLKエッジに対してSDCLKサイクルの25%以内に収まる必要があるため、DQSが最初にSDCLKからわずかに遅れていても実際には問題ありません。返された値がクロック・サイクルの3/4を超えると、キャリブレーション・ルーチンで遅延値が「ゼロ」に設定されるのはこうした理由からです。このような場合、DQSエッジとSDCLKエッジは非常に近いため、キャリブレーションの実行によっては、DQSエッジがSDCLKよりわずかに先行(ライト・レベリング遅延値が非常に小さくなる)することもあれば、SDCLKに対してわずかに遅れることもあります(ライト・レベリング遅延値が結果として非常に大きくなった場合、DQSを次のSDCLKエッジと一致させるためにゼロにする必要があります)。   Q:DDRストレス・テストのJTAGバージョンを使用する場合、シリアル・ポートに別のUARTポートを選択するにはどうすればよいですか? A:フォルダ「ddr_stress_tester_jtag_v2.52」内に、DDR初期化スクリプトに追加コマンドをいくつか加えることで異なるUARTポートの追加方法を説明するテキスト・ファイルがあります。  以下に、これらのコマンドの概要を示します。 1. UARTモジュールのクロックのゲートを解除します(ほとんどのNXPスクリプトでは、スクリプトの冒頭ですべてのペリフェラル・クロックのゲートが解除されるため、この部分はすでに完了しています)。 2. UARTで使用するピンでIOMUXオプションを設定します(通常、UART_TXとUART_RXにはIOMUXオプションを、UART_RX入力にはデイジー・チェーン・オプションを設定します)。 3. レジスタUCR1のビットUART_ENを介して目的のUARTモジュールを有効にします。 4. 他のUARTモジュールを無効にする(UCR1[UART_EN]=0)。通常は UART1 を無効にするだけで十分ですが、ストレステストの目的で、他の未使用の UART オプションをすべて無効にしても問題ありません。   次のセットアップでの.dsファイル用語の例を以下に示します:MX6DQ、KEY_COL0およびKEY_ROW0上にUART4(すべてのペリフェラルに対してクロックのゲーティングが解除されていると仮定) mem set 0x020E01F8 32 0x00000004   #// config_pad_mode(KEY_COL0, ALT4) mem set 0x020E01FC 32 0x00000004   #// config_pad_mode(KEY_ROW0, ALT4); mem set 0x020E0938 32 0x00000001   #// Pad KEY_ROW0 is involved in Daisy Chain. mem set 0x02020080 32 0x00000000   #//disable UART1 in UART1_UCR1(注:他のUARTモジュールも無効にできます) mem set 0x021F0080 32 0x00000001   #//enable UART4 in UART4_UCR1   次のセットアップでの.incファイル用語の別の例を以下に示します:MX6SX、SD4_DATA4およびSD4_DATA5上のUART5(すべてのペリフェラルに対してクロックのゲーティングが解除されていると仮定)。 setmem /32 0x020E0294 = 0x2 //IOMUXC_SW_MUX_CTL_PAD_SD4_DATA5, ALT2; UART5_TX_DATA setmem /32 0x020E0290 = 0x2 //IOMUXC_SW_MUX_CTL_PAD_SD4_DATA4, ALT2; UART5_RX_DATA setmem /32 0x020E0850 = 0x00000000 // IOMUXC_UART5_IPP_UART_RXD_MUX_SELECT_INPUT, daisy chain for UART5_RX input to use SD4_DATA4 setmem /32 0x021F4080 = 0x00000001 // Enable UART_EN in UCR1 of UART5 // Disable UART_EN in UCR1 of UART1, UART2, UART3, and UART4 setmem /32 0x02020080 = 0x00000000 // UART1 setmem /32 0x021F0080 = 0x00000000 // UART2 setmem /32 0x021EC080 = 0x00000000 // UART3 setmem /32 0x021E8080 = 0x00000000 // UART4   関連リソースのリンク: i.MX 8M Miniレジスタ・プログラミング支援DRAM PLL設定  i.MX 8/8XシリーズDDRツールのリリース  i.MX 8M ファミリー DDR ツールリリース  i.MX6DL i.MX6Dual i.MX6Quad i.MX6S i.MX6SL i.MX6SoloX i.MX6UL i.MX7Dual i.MX7Solo i.MX7ULP
查看全文
LS1046A PCI-E MSI割り込みをいくつサポートできますか? Hi NXP, LS1046A PCI-E MSI割り込みをいくつサポートできますか?LS1046Aリファレンスマニュアルを読みました。私は決定的な答えを見つけることができませんでした。どんなポインタでも大歓迎です。 ありがとうございました。 LS1046A  Re:LS1046A PCI-E MSI割り込みをいくつサポートできますか? AEチームに確認しました。 LS1046A は 128 の MSI 割り込みをサポートします。「各SCFG_GnMSIRレジスタは最大32個の割り込みをサポートできる」という理解は正しいです。32 x 4 = 128フィート。 Re:LS1046A PCI-E MSI割り込みをいくつサポートできますか? 各PCI-Eコントローラーに256のMSI割り込みがある部分を理解するのを手伝ってもらえますか? 図25-1によると、3つのSCFG_GnMSIIRレジスタがあります。コントローラーごとに 1 つのSCFG_GnMSIIRレジスタがあると仮定します。各レジスタには、4 つの SCFG_GnMSIR レジスタが関連付けられています。 各SCFG_GnMSIRレジスタは、最大32の割り込みをサポートできます。32 x 4 = 128です。 おそらく、いくつかの情報を見逃していたと思います。手伝ってもらえますか? ありがとうございます Re:LS1046A PCI-E MSI割り込みをいくつサポートできますか? 各 PCIe コントローラーには 256 MSI 割り込みがあります。各MSIコントローラーは、GICに対して4つのSPI割り込みを生成できます。 ドライバーは、PCIe コントローラーごとに最大 12 個の SPI 割り込みを割り当てることができます。
查看全文
操作指南:将 S32K1xx SDK 项目从 SDK v4.0.1 迁移至 v4.0.2 在 SDK v4.0.1 和 v4.0.2 之间迁移 S32K1xx 器件的 SDK 项目,并非简单地附加和分离 SDK 即可。其复杂性在于,SDK v4.0.1 仅支持 S32DS v3.3,而 SDK v4.0.2 仅支持 S32DS v3.4。这意味着在一个 S32DS 版本中,不会同时存在这两个 SDK。此外,SDK v4.0.1 和 v4.0.2 之间附加 SDK 的方法也有所不同。在 v4.0.1 中,SDK 是通过链接添加到 S32DS 项目中的;而在 v4.0.2 中,SDK 文件是通过将实际文件复制到项目中添加到 S32DS 项目的。 为解决这一问题,需要执行一些手动操作。本文档详细介绍了所需的步骤,以及适配包含 S32 配置工具设置的 .mex 文件的必要步骤。 由于基于创建方法的不同,项目存在差异,这里涵盖了 3 种最常见的场景: 该项目是通过“从示例创建新项目”向导创建的,并选择了一个SDK示例项目。 通过 “New Application Project” 向导创建项目,并在向导中选择了要附加的 SDK。 项目已存在,且通过 SDK 管理工具附加了 SDK。 由于后两种项目之间有足够多的相似之处,将它们合并为一个场景,在 “New Application Project” 标题下介绍。第一种场景在 “New Project from Example” 标题下介绍。 前提条件 安装 S32 Design Studio IDE 3.4 安装 S32K1xx 开发包和 S32SDK S32K1XX RTM 4.0.2 包 步骤 从示例新建项目 为了这次演示,将使用 S32K1xx SDK v4.0.1 示例项目“flexio_i2s_master_s32k144”。 在 S32DS 3.3 中打开或创建项目。 在项目资源管理器中展开项目目录,查找 .mex 文件 如果没有 .mex 文件,右键单击项目名称,然后选择 “'S32 Configuration Tool -> Open Pins”(可以选择 S32 配置工具中的任何工具)。尽管 .mex 文件包含 S32 配置工具的设置,但相同的设置也保存在 YAML 代码中,这些代码位于 S32 配置工具生成的每个 .c 文件的头部,这些文件位于项目的 “board” 文件夹中。打开 S32 配置工具后,它会检测到没有 .mex 文件,并扫描生成的文件以查找 YAML 代码。如果找到 YAML 代码,会生成一个新的 .mex 文件并将其放置在项目中。 视角会切换到引脚工具,无需其他操作,.mex 文件已从 YAML 代码创建完成。如果未找到 YAML 代码,会向用户显示一个菜单,用于选择目标器件和 SDK。切换回 C/C++ 视角进行确认。 打开 S32DS 3.4 并导入项目。需要注意的是,S32DS 3.3 和 S32DS 3.4 应使用不同的工作区。项目应导入到 S32DS 3.4 工作区,因此应勾选 “Copy projects into workspace” 复选框。 右键单击 Project -> Properties -> C/C++ Build -> Settings -> Standard S32DS C Compiler -> Includes,然后删除所有包含 “S32_SDK_PATH” 的路径 对 Standard S32DS Assembler -> General 执行相同操作 点击应用并关闭。 SDK 文件夹中的文件是以链接的形式包含在项目中的,而非实际文件,且由于 SDK 4.0.1 未安装到 S32DS 3.4 中,这些链接指向不存在的文件。这意味着 SDK 管理器中的附加功能无法用 SDK 4.0.2 中的相应文件替换它们,因为它不知道如何替换不存在的文件。在项目资源管理器中,从项目中删除 “SDK” 文件夹。 现在,项目已准备好使用 SDK 管理器分离旧 SDK 并附加新 SDK。在项目资源管理器中,右键单击 Project -> SDKs。 启动 SDK 管理器后,它会扫描项目以查找任何附加的 SDK。在本示例中,检测到附加了一个 SDK,但由于它与任何已安装的 SDK 都不匹配,会出现一条消息,询问是否分离 SDK 4.0.1。由于这是预期操作,点击 “OK”。 成功分离 SDK 4.0.1 后,选择 SDK 4.0.2,点击 “Attach/Detach...” 点击“Select All”以将 SDK 附加到所有构建配置。这会为每个构建配置设置 SDK 的包含路径和链接器路径。如果需要,也可以单独选择构建配置。点击 “OK” 完成选择。 要应用更改并退出 SDK 管理器,点击 “Apply and Close”。 SDK 管理器会检测到新 SDK 中的一些文件正在替换项目中的现有文件。默认情况下,所有冲突文件都设置为替换现有文件。如果需要,可以取消选择个别文件。请注意,勾选 “Backup project files” 复选框后,所有被替换的文件都会保存在备份文件夹中,以便将来恢复、比较等。通常,允许替换文件并在之后与备份文件夹中的自定义内容合并可能是明智的。在本示例中,未做任何修改,因此保留默认设置。点击 “OK” 完成该过程。 新的 SDK 已附加,并且可以识别新的 SDK 文件夹。 .mex 文件包含 S32 配置工具的设置,但它仍针对 SDK 4.0.1 进行设置。必须手动更新它,以便 S32 配置工具可用于为 “board” 文件夹生成新代码。右键单击 .mex 文件,然后选择 “Open With -> Text Editor”。 只需修改包含 SDK 名称的 mcu_data 部分:将 “s32sdk_s32k1xx_rtm_401” 改为 “s32sdk_s32k1xx_rtm_402” 保存更改。 接下来,必须从 S32 配置工具重新生成 “board” 文件夹中的文件,以反映新的 SDK。右键单击 .mex 文件,然后选择 “Open With -> S32 Configuration Tools”。 会出现一条警告消息,表明检测到 mex 文件是在旧版本的工具中创建的,一旦在当前工具中保存 mex 文件,它可能无法在旧版本的工具中打开。这是正常现象。点击 “OK”。 注意到错误符号。鼠标悬停查看详细信息。这是与 “Peripherals tool” 相关的错误。选择 “Peripherals tool”。 问题出在 edma_config_1 上,因为它被标为红色。点击它查看界面。从之前的版本到现在,界面发生了变化,以前只支持一种配置,现在允许多种配置。要解决此错误,必须向列表中添加一个新配置。如所示,点击 “+” 添加新配置。此特定错误仅会在包含 EDMA 模块的项目中出现。 问题指示器现在为绿色,这意味着没有警告或错误。现在可以生成代码了,点击 “Update Code” 会出现一个菜单,显示新的和/或更新的文件。如果需要,在一行上选择 “change” 将打开一个比较工具,显示相关文件的现有版本和新版本之间的差异。点击 “OK” 继续。 切换到 C/C++ 视图 项目上的错误现在已消失。如果项目在转换前成功构建,再次构建以确认所有内容都已正确转换。 新应用项目 本演示中,将在 S32DS 3.3 中使用 “New Application Project ” 向导创建一个新项目,并在项目创建过程中选择 S32K1xx SDK 4.0.1。 将项目导入 S32DS 3.4 使用 SDK 管理器分离旧 SDK,然后附加新 SDK。在项目资源管理器中,右键单击 “Project -> SDKs”。 启动 SDK 管理器后,它会扫描项目以查找任何附加的 SDK。在本示例中,检测到附加了一个 SDK,但由于它与任何已安装的 SDK 都不匹配,会出现一条消息,询问是否分离 SDK 4.0.1。由于这是预期操作,点击 “OK”。 成功分离 SDK 4.0.1 后,选择 SDK 4.0.2,点击 “Attach/Detach...” 点击“Select All”以将 SDK 附加到所有构建配置。这会为每个构建配置设置 SDK 的包含路径和链接器路径。如果需要,也可以单独选择构建配置。点击 “OK” 完成选择。 要应用更改并退出 SDK 管理器,点击 “Apply and Close”。 SDK 管理器会检测到新 SDK 中的一些文件正在替换项目中的现有文件。默认情况下,所有冲突文件都设置为替换现有文件。如果需要,可以取消选择个别文件。请注意,勾选 “Backup project files” 复选框后,所有被替换的文件都会保存在备份文件夹中,以便将来恢复、比较等。通常,允许替换文件并在之后与备份文件夹中的自定义内容合并可能是明智的。在本示例中,未做任何修改,因此保留默认设置。点击 “OK” 完成该过程。 .mex 文件包含 S32 配置工具的设置,但它仍针对 SDK 4.0.1 进行设置。必须手动更新它,以便 S32 配置工具可用于为 “board” 文件夹生成新代码。右键单击 .mex 文件,然后选择 “Open With -> Text Editor”。 只需修改包含 SDK 名称的 mcu_data 部分:将 “s32sdk_s32k1xx_rtm_401” 改为 “s32sdk_s32k1xx_rtm_402” 保存更改。 接下来,必须从 S32 配置工具重新生成 “board” 文件夹中的文件,以反映新的 SDK。右键单击 .mex 文件,然后选择 “Open With -> S32 Configuration Tools”。 会出现一条警告消息,表明检测到 mex 文件是在旧版本的工具中创建的,一旦在当前工具中保存 mex 文件,它可能无法在旧版本的工具中打开。这是正常现象。点击 “OK”。 通过查找感叹号图标检查是否有任何错误或警告。它会根据情况改变颜色:绿色表示无问题,黄色表示警告,红色表示错误。将鼠标悬停在图标上,可获取有关错误位置的更多信息。除了解决警告和错误外,由于保留了原始项目的设置,无需进行其他更改。在本示例中,没有警告或错误,因此可以继续更新生成的文件。点击 “Update Code”。 会出现一个菜单,显示新的和/或更新的文件。如果需要,在一行上选择 “change” 将打开一个比较工具,显示相关文件的现有版本和新版本之间的差异。点击 “OK” 继续。 切换回 C/C++ 视图。项目上的错误现在已消失。如果项目在转换前成功构建,再次构建以确认所有内容都已正确转换。 新建项目向导 - 项目管理和设置 SDK
查看全文
gpio-hogデモの使用方法 i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano i.MX6 全て i.MX6SL i.MX7Dual i.MX7Solo i.MX7ULP Linux SCM-i.MX6DQ
查看全文
IPv6+AES.docx <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これは、QorIQ T1040RDB and T2080RDB SDK1.7 IPv6 +AESテスト・ガイドです。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これは、QorIQ T1040RDB and T2080RDB SDK1.7 IPv6 +AESテスト・ガイドです。
查看全文
bossac_windows.zip <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 适用于 UDOO 的 Arduino IDE 补丁 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 适用于 UDOO 的 Arduino IDE 补丁 研讨会文件
查看全文
Freescale's commonly used offline programming tools <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1. CycloneMAX, Support Kinetis, ColdFire V2/V3/V4, Power MPC5xx/8xx, Qorivva MPC5xxx, DSC, MAC7xxx PE Micro, http://www.pemicro.com/ 2. Flasher ARM Supports the full range of ARM cores, including the traditional ARM7, ARM9 and ARM11, as well as the new Cortex-A, Cortex-M and Cortex-R series, and can power the target board.    Segger, SEGGER - The Embedded Experts - Flasher ARM 3. Flasher Portable Supports the full range of ARM cores, including the traditional ARM7, ARM9 and ARM11, as well as the new Cortex-A, Cortex-M and Cortex-R series, battery-powered, portable programmer.    Segger, SEGGER - The Embedded Experts-Flaser Portable 4. SmartPRO Supports Kinetis, S12, S12X, ColdFireV2. Zhou Ligong, http://www.zlgmcu.com/ 5. MCP-104    支持飞思卡尔ARM based Microcontroller Kinetis.    祥佑科技(Micetek), http://www.micetek.com 6.Xeltek programmer, http://www.xeltek.com 7. Hilo programmer, http://www.hilosystems.com.tw Kinetis Hardware Support
查看全文
新しいWebライセンスシステム - 2014年12月8日 & Freescaleアカウントの問題。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 月曜日からWebライセンスシステムを変更しました。 フリースケール・アカウントでログインし、「ソフトウェア・ライセンスとサポート」をクリック     すべての登録を一覧表示するには:   詳細については、FAQ を参照してください。   問題: 登録に関連付けられたフリースケール・アカウントのみが、新しいWebライセンスにインポートされています。 フリースケール・アカウントが登録 (スイート) にリンクされていなかった場合、フリースケール・アカウントは新しいWebライセンス・システムで作成されていません。 この場合、[ ソフトウェア ライセンスとサポート ] をクリックすると、次の情報が表示されます。   これは、新しいフリースケール・アカウントを作成する場合にも当てはまります。   WebライセンスシステムでFreescaleアカウントをインポートするにはどうすればよいですか? 登録を購入した場合は、このダイアログから登録できます。 それ以外の場合は、Freescaleアカウントから開発ツールの評価版をダウンロードするだけです。 私のテストでは、HC12 v5.1のEvalをダウンロードしました。   結果 ソフトウェアライセンスとサポートをクリックすると、次の情報が表示されます。   これで、アカウントが新しいWebライセンスにインポートされました。 全般
查看全文
[I.MX93] eMMC 设计:上拉和下拉电阻 尊敬的恩智浦社区: 我目前正在为 I.MX93 进行 eMMC PCBA 设计,并注意到 NXP EVK 设计与我们最初的设计之间存在一些差异。我想就此事寻求澄清。 根据我查看的 eMMC 设计指南,CMD 和 DAT0-DAT7 通常需要上拉电阻,而 DS 需要下拉电阻。 但是,在SPF-94611_B1.pdf中引用您的设计后,我注意到这些额外的外部电阻器并不存在于 eMMC 电路中。 您能否确认这些外部电阻的缺失是否是因为 I.MX93 内部存在 DAT0-DAT7 和 CMD 的内部上拉或下拉电阻? 如果这种理解是正确的,您能否建议在软件中适当配置内部上拉或下拉设置是否足以满足设计要求? 谢谢您的支持,期待您的指导! 此致, 霍华德 回复:[I.MX93] eMMC 设计:上拉和下拉电阻 你好@Chou ! 感谢您联系 NXP 支持! 在 iMX93-EVK 板中,我们在这些引脚中配置内部上拉电阻。但我建议放置外部上拉电阻来保证逻辑状态。 这是一个参考示意图 上拉电阻在u-boot 设备树中配置,并维护Linux 设备树上的配置 此致! Chavira
查看全文
How do S32G-VNP-RDB3 A and M7 cores work together Dear NXP, We refer to the PDF document of S32G-VNP-RDB3 Software Enablement Guide to complete the verification of M7 LED routines and enable Linux BSP35.0 on the Cortex-A53 core. There is a question at present, that is, how can the A core and the M7 core run at the same time? Is the communication method between the A core and the M7 core shared memory or other methods? Does NXP have any relevant guidance documents for the above issues? Thank you! Re: How do S32G-VNP-RDB3 A and M7 cores work together Hi @chenyin_h , I see, the problem is solved, thank you very much! Re: How do S32G-VNP-RDB3 A and M7 cores work together Hello, thanks for your reply The zip and exe files you mentioned are the names of the corresponding software packages. As I replied to your other post, you can find the corresponding software in your account, and then click to enter the next page to locate the version you mentioned. BR Chenyin Re: How do S32G-VNP-RDB3 A and M7 cores work together Hi @chenyin_h  Where can I download the zip file and exe file described in this document? The files are as follows: •SW32G_RTD_4.4_3.0.2_HF01_DS_updatesite_D2204.zip • SW32G_IPCF_4.6.0_D2205_updatesite.zip • SW32_FreeRTOS_10_4_6_UOS_3_0_2_DS_updatesite_D2204.zip • S32G_SDHC_RTM_1_0_1_HF1_D2207_updatesite.zip • SW32G_RTD_4.4_3.0.2_HF01_D2204.exe • Platform_Software_Integration_S32G2_2022_06.exe I searched for a long time on the NXP official website but couldn't find it. Re: How do S32G-VNP-RDB3 A and M7 cores work together Hello For the patch file associated with AN13750, you can refer to the following figure to download: It is recommended that you read the contents of AN13750 carefully to reproduce and compile. It is recommended to use the BSP version consistent with the document for experiment. If you are familiar with it, you can also use other BSP versions, but you may encounter problems not mentioned in the document. BR Chenyin Re: How do S32G-VNP-RDB3 A and M7 cores work together Hi @chenyin_h , Thanks for the guide! I found AN13750.pdf Documentation, and find the corresponding source code in GitHub . I just use bsp35.0, bootloader I am planning to try to generate it with Yocto. Where can I get some of the patches described in the document? I also couldn't find the patches on the NXP official website, or bsp35.0 Does the version require these patches? Thanks! Re: How do S32G-VNP-RDB3 A and M7 cores work together Hello, thank you for your valuable question We provide a Bootloader example that can boot the M&A cores simultaneously, and they can communicate through shared memory. Regarding your question, we recommend that you download and read the document AN13750 from the Documents column on the product interface for detailed information. The content in the document may be able to directly answer your question. Hope this helps. BR Chenyin
查看全文
如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  本文参考了《i.MX Linux® 用户指南》(修订版 L4.1.15_2.1.0-ga,2017 年 5 月) 作为示例(可在附件中找到),请参阅第 4.5.12 节(如何构建: U-Boot 和 Kernel 在独立环境中)。 首先,生成一个开发 SDK,其中包括用于编译的工具、工具链和小型 rootfs。 放置到主机上。   • 使用以下命令从 Yocto Project 构建环境生成 SDK。如要设置 Yocto Project 构建 环境,请按照 i.MX Yocto Project 用户指南(IMXLXYOCTOUG)中的步骤进行操作。在以下命令中, 将 设置为您正在构建的机器。   可能是以下之一:   • imx6qpsabreauto • imx6qpsabresd • imx6ulevk • imx6ull14x14evk • imx6ull9x9evk • imx6dlsabreauto • imx6dlsabresd • imx6qsabreauto • imx6qsabresd • imx6slevk • imx6sllevk • imx6solosabreauto • imx6solosabresd • imx6sxsabresd • imx6sxsabreauto • imx7dsabresd “populate_sdk”会生成一个脚本文件,用于在没有 Yocto Project 的情况下设置环境。此 SDK 应在每次发布时更新 从当前版本中获取最新的头文件、工具链和工具。   $ DISTRO=fsl-imx-fb MACHINE= source fsl-setup-release.sh -b build-fb   $ DISTRO=fsl-imx-fb MACHINE= bitbake core-image-minimal -c populate_sdk   或   $ bitbake meta-toolchain     从运行 bitbake 的构建目录中,将 tmp/deploy/sdk 目录下的 sh 文件复制到用于构建的主机上,并执行该脚本安装 SDK。 默认安装位置为 /opt,但也可以放置在主机上的任意位置。     注意:每次在新的 shell 会话中使用 SDK 前,都需要运行 source 命令加载环境设置脚本,例如:   $。/opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi   或   $ source /opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi   来自 Yocto Project Mega-Manual 注 默认情况下,此工具链不会构建静态二进制文件。如果您希望使用该工具链构建此类库,请确保您的镜像已包含相应的静态开发库。使用 IMAGE_INSTALL 变量在您的 local.conf 文件中安装相应的库包。以下是使用 glibc 静态开发库的示例: IMAGE_INSTALL_append = “glibc-staticdev”   在主机上,以下是构建 U-Boot 和内核的步骤: • 在主机上,构建之前请使用以下命令设置环境。   $ export CROSS_COMPILE=/opt/fsl-imx-fb/4.1.15/environment-setup-cortexa9hf-vfp-neon-pokylinux-gnueabi   $ export ARCH=arm • 如要构建 U-Boot,请查找目标启动的配置。在以下示例中,i.MX 6ULL 是目标。   通过克隆下载源代码   $ git clone http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git -b imx_v2016.03_4.1.15_2.0.0_ga   $ cd uboot-imx $ make clean $ make mx6ull_14x14_evk_defconfig $ make u-boot.imx   • 如要构建内核,请执行以下命令:   通过克隆下载源代码   $ git clone http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git -b imx_4.1.15_2.0.0_ga   $ cd linux-imx $ make defconfig $ make   • 将应用程序 (Hello World) 构建为 test.c:   $ source /opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi $ cd ~/test/ $ arm-poky-linux-gnueabi-gcc --sysroot=/opt/fsl-imx-fb/4.1.15-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi -mfloat-abi=hard test.c 检查编译后的代码 (a.out) 是否为 ARM 可执行文件   $ file ./a.out   ./a.out: ELF 32 位 LSB 可执行文件,ARM 架构,EABI5 版本 1(SYSV),动态链接,解释器 /lib/ld-linux-armhf.so.3,适用于 GNU/Linux 2.6.32。BuildID[sha1]=0e5c22dcf021748ead2c0bd51a4553cb7d38f6f2,未剥离   将文件 a.out 复制到目标 Linux 文件系统,并在运行之前再次检查:   root@imx6ul7d:/unit_tests/1# file a.out   a.out: ELF 32位LSB可执行文件,ARM,EABI5版本1(SYSV),动态链接,解释器/lib/ld-linux-armhf.so.3,适用于GNU/Linux 2.6.32,BuildID[sha1]=0e5c22dcf021748ead2c0bd51a4553cb7d38f6f2,未剥离   要确定运行我们的应用程序所需的 Linux 库:   root@imx6ul7d:/unit_tests/1# ldd a.out     linux-vdso.so.1 (0x7ee93000)   libc.so.6 => /lib/libc.so.6 (0x76e64000) /lib/ld-linux-armhf.so.3 (0x76f9d000)   如果某些库文件未位于文件系统中,您可能会看到以下信息:   -sh: root@imx6ul7d:/unit_tests/1#./a.out: 没有这样的文件或目录   最后,运行 a.out:   root@imx6ul7d:/unit_tests/1# ./a.out 你好,世界 root@imx6ul7d:/unit_tests/1# i.MX6_全部 i.MX7 双核 i.MX7 单核 Linux Yocto Project 回复:如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello,   注意: 每次您想在新的 shell 会话中使用 SDK 时,都需要 source 环境设置脚本,例如   $。/opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi   或   $ source /opt/fsl-imx-fb/4.1.15-2.0.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi 此致, 尤里。 回复:如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我遇到一个问题,您能帮忙查看并指导我如何解决吗? goko@PC:~/fsl-release-bsp/uboot-imx$ make cleanmake: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:命令未找到/bin/sh: 1: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:未找到dirname:缺少操作数尝试 'dirname --help' 以获取更多信息。goko@PC:~/fsl-release-bsp/uboot-imx$ make mx6ull_14x14_evk_defconfig   HOSTCC  scripts/basic/fixdep   HOSTCC  scripts/kconfig/conf.o   HOSTCC  scripts/kconfig/zconf.tab.o   HOSTLD  scripts/kconfig/conf # # 配置已写入 .config #goko@PC:~/fsl-release-bsp/uboot-imx$ make u-boot.imxmake: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:命令未找到/bin/sh: 1: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:未找到dirname:缺少操作数尝试 'dirname --help' 以获取更多信息。scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h UPD include/config.h GEN include/autoconf.mk/bin/sh: 1: /opt/fsl-imx-fb/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabigcc:未找到make[1]: *** [include/autoconf.mk]错误 1make: *** 没有规则来生成目标 `include/config/auto.conf',该目标被 `include/config/uboot.release' 所需。停止。 回复:如何在没有 Yocto 的情况下构建 U-Boot、内核和 Linux 应用程序 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> CurtisWald  您好,Yuri,我在阅读帖子 DOC-334814 时想提到,一旦从元工具链环境脚本中设置了环境,变量 CC 可以用于“构建应用程序(Hello World)作为 test.c”部分;以下是 CC 的定义示例,该定义将根据所使用的 MACHINE 而唯一:   CC=arm-poky-linux-gnueabi-gcc  -march=armv7ve -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.30-7ULP_alpha/sysroots/cortexa7hf-neon-poky-linux-gnueabi 此示例提供如下: $ arm-poky-linux-gnueabi-gcc --sysroot=/opt/fsl-imx-fb/4.1.15-2.0.0/sysroots/cortexa9hf-neon-poky-linux-gnueabi -mfloat-abi=hard test.c但是可以使用以下命令:$ $CC test.c -o test使用 $CC 会添加一些额外的定义,如上所示。谢谢,-Curtis
查看全文
imx93-EVK-PWM_LED このドキュメントは、iMX93 PWMとPWMLEDのイネーブル化についてです HW: Mix93 11x11 EVK SW: lf-6.6.3-1.0.0です PWM: TPM3 CH0, CH2 TPM4 CH2 注:i.MX PWMと PWMLEDはすでに lf-6.6.3-1.0.0で有効になっています Linux
查看全文
i.MX 8M+:使用 yocto 生成的工具链构建内核工具时出错 当我尝试使用通过 Yocto 为 i.MX 8M+ 评估套件创建的工具链编译内核工具时遇到了构建错误。我能够构建设备树、内核和模块;只是工具出现故障。具体来说就是spidev_test。该工具链是根据 i.MX Yocto 文档通过“bitbake -c populate_sdk”生成的,并且一直运行良好。 以下是我所看到的: $ source /opt/fsl-imx-xwayland/6.6-scarthgap/environment-setup-armv8a-poky-linux $ make tools/spi DESCEND spi CC /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test.o In file included from spidev_test.c:11: /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/lib/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/include/stdint.h:9:16: fatal error: stdint.h: No such file or directory 9 | # include_next | ^~~~~~~~~~ compilation terminated. 我可以通过将“ -I/opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include”添加到 CFLAGS 来绕过这个问题,但后来我遇到了这个问题: DESCEND spi CC /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test.o In file included from /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/features.h:527, from /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/bits/libc-header-start.h:33, from /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/stdint.h:26, from spidev_test.c:11: /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory 7 | # include | ^~~~~~~~~~~~~~~~ compilation terminated. 我看到工具链(不正确?)链接到 stubs-32 并破解链接到 stubs-64 (arm64 目标)。当我再次尝试时,我得到了这个: $ make tools/spi DESCEND spi CC /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test.o In file included from spidev_test.c:11: /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/stdint.h:98: warning: "__INT64_C" redefined 98 | # define __INT64_C(c) c ## LL | : note: this is the location of the previous definition /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/include/stdint.h:99: warning: "__UINT64_C" redefined 99 | # define __UINT64_C(c) c ## ULL | : note: this is the location of the previous definition LD /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test-in.o LINK /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find Scrt1.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crti.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crtbeginS.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc_s: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lc: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find -lgcc_s: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crtendS.o: No such file or directory /opt/fsl-imx-xwayland/6.6-scarthgap/sysroots/x86_64-pokysdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/13.3.0/ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status make[3]: *** [Makefile:42: /home/ian/build/imx-yocto-bsp/linux-imx/tools/spi/spidev_test] Error 1 make[2]: *** [Makefile:73: spi] Error 2 make[1]: *** [/home/ian/build/imx-yocto-bsp/linux-imx/Makefile:1362: tools/spi] Error 2 make: *** [Makefile:234: __sub-make] Error 2 看起来工具链中有些东西没有正确设置。或者,我的系统环境中缺少了什么?有什么线索可以说明这里发生了什么吗? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Yocto Project 回复:i.MX 8M+:使用 yocto 生成的工具链构建内核工具时出错 啊,检查一下!我的自定义图像是“imx-image-multimedia”的变体;我还没有构建“full-image”。谢谢! 回复:i.MX 8M+:使用 yocto 生成的工具链构建内核工具时出错 Hello, 看起来您必须构建完整图像才能编译它,因为出于某种原因我收到了 stubs-32 位和完整图像 stubs64。 此致
查看全文
_libc_init_array()はどこで定義されていますか? Hello,  私はS32K344マイクロコントローラに取り組んでおり、C ++コードを実行する必要があります。C ++がSDKプロジェクトで公式にサポートされていないことがわかった後、nxpコミュニティページで説明されている回避策のいくつかを実装しようとしました。 要するに、SDKを使用してCプロジェクトを作成し、C ++の性質を追加し、main.cの名前をmain.cppに変更し、標準リンカファイルをプロジェクト設定のプロジェクトで作成されたリンカファイルに変更します(画像を参照)。 この手順の後、私はmain.cppでプロジェクトを構築することができます。ただし、main の外部で宣言されたオブジェクトは実行または初期化されません。 この問題に対して私が見つけた解決策の1つは、main()の先頭に__libc_init_array()を含めることです。ここでの問題は、この機能が見つからないことです。この依存関係を解決するためにライブラリを追加するにはどうすればよいですか?C ++でmainの外部オブジェクトを初期化する他の解決策はありますか?コンソール出力: ビルドファイル: ../RTD/src/Clock_Ip_ExtOsc.c 起動:標準S32DS Cコンパイラ arm-none-eabi-gcc "@RTD/src/Adc_Sar_Ip.args" -MMD -MP -MF "RTD/src/Clock_Ip_ExtOsc.d"-MT「RTD/src/Clock_Ip_ExtOsc.o」-o "RTD/src/Clock_Ip_ExtOsc.o""../RTD/src/Clock_Ip_ExtOsc.c" ../src/main.cpp:関数 'int main()'では、次のようになります。 ../src/main.cpp:59:2: エラー: '__libc_init_array' はこのスコープで宣言されていませんでした 59 |__libc_init_array(); |^~~~~~~~~~~~~~~~~ make: *** [src/subdir.mk:20:src/main.o]エラー 1 make: *** 未完成の仕事を待っています...。 Re:_libc_init_array()はどこで定義されていますか? Hi,  _libc_init_array STD C ライブラリの一部です (例: libc_nano.a)。C++ を使用している場合は、リンク、STD、C ライブラリ、および呼び出し_libc_init_arrayは必要ありません。
查看全文
VS Code によって使用される Python 仮想環境 MCUXpressoインストーラではv1.3以降およびVS Code用MCUXpresso拡張機能で、Pythonに仮想環境(VE)を使用しています。このVEをCLIから手動で使用するには、新しいモジュールをインストールするか既存モジュールをアップグレードして、VEを有効にする必要があります。 上記VEを有効にするために、スクリプト(Windowsではactivate.batファイル)を実行します。MCUXpressoインストーラのログにこのスクリプトへのパスが表示されます。Windowsでは、通常このスクリプトは C:\Users\ \.mcuxpressotools\.venv\Scripts\activate.bat にインストールされます。コマンド・ウィンドウからこのスクリプトを実行すると、VEが有効になります。以下のスクリーンショットで、スクリプトの実行後に、(.venv)というVE名がプロンプトに表示されていることにご注目ください。 これで、このVE内でPythonコマンドを実行できるようになりました。システムに複数のPythonバージョンがインストールされている場合にVE Pythonを使用するには、VE Python実行可能ファイルへのフル・パスを使用します。たとえば、WindowsでこのVEにpipをインストールするには、次のコマンドを実行します。 C:\Users\ \.mcuxpressotools\.venv\Scripts\python.exe -m ensurepip --upgrade
查看全文
基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 MBDT 模块) 本文内容与 AN13902:《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 MBDT 模块)》完全一致 1. 简介 基于模型的设计工具箱 (Model-Based Design Toolbox,MBDT) 支持通过 MATLAB® 和 Simulink® 环境实现面向 NXP 处理器的基于模型的设计流程。 该工具箱旨在助力开发日益复杂的应用,它是一组工具和库的集合,可帮助客户在 MCU 和处理器上进行原型设计并加速算法开发。 MBDT 整合了 NXP 工具(实时驱动程序、配置工具、汽车数学和电机控制库 (AMMCLib)、编译器和工具链),提供完整的开发解决方案,具有以下优势: 代码/算法的可重用性 易于理解/易于遵循的图表 自动代码生成 S32K3 是基于 Arm ® Cortex ® -M7 的微控制器系列,提供单核、双核和锁步核配置,支持高达 ASIL(汽车安全完整性等级)D 功能安全的汽车和工业应用,运行频率高达 240MHz,配备浮点单元 (FPU)。S32K3 适用于电机控制、电池管理系统(BMS)或车身控制模块 (BCM) 等应用。 2. 电机控制 PMSM 示例 适用于 S32K3 的 MBDT 插件包含一个电机控制示例 (s32k3xx_mc_pmsm.mdl),支持以下功能: 三相 PMSM 速度矢量控制 (FOC) 采用两个分流电阻的电流检测 通过无传感器算法或编码器位置传感器估算轴位置和速度 使用 FreeMASTER 调试工具的应用控制用户界面 如需安装适用于 S32K3 的 MBDT 插件,请查看 NXP MBDT 页面下的《S32K3xx 基于模型的设计工具箱 - 快速入门指南》。 s32k3xx_mc_pmsm.mdl 示例展示了如何使用 MCSPTE1AK344 无刷直流电机 (BLDC) 和永磁同步电机 (PMSM) 电机控制开发套件,通过两个分流电流传感器实现永磁同步电机 (PMSM) 的磁场定向控制 (FOC) 矢量控制。此 Simulink® 模型配置为与 Sunrise 42BLY3A78-24110 电机配合使用,但用户可加载 “s32k3xx_mc_pmsm_data_linix.m” 脚本以使用 Linix 45ZWN24-40 电机。 应用程序部署到目标设备后,RGBLED0_GREEN 应保持常亮。通过提供的项目选择所需的电机速度,然后在 FreeMASTER 中按下 “On/Off” 按钮。或者,可按下 USER_SW0 按钮(板上的 SW6)以顺时针(CW)模式启动电机,或按下 USER_SW1 按钮(板上的 SW5)以逆时针(CCW)模式启动电机。同时按下两个按钮或复位按钮将停止电机。同时按下两个按钮或复位按钮可停止电机。 若无误,电机应开始旋转,且 RGBLED0_GREEN 将开始闪烁。若出现任何错误,电机将不运行,且 RGBLED0 将从绿色变为红色常亮。 2.1 必需软件 S32 Design Studio for S32 Platform 3.4 EB tresos Studio 27.1 FreeMASTER 3.2 带 “ARM Cortex-M 处理器嵌入式编码器” 和 “NXP_Support_Package_S32K3xx” 的 MATLAB R2021a NXPModel-Based Design Toolbox for S32K3xx 版本 1.3.0 2.2 必要硬件 个人电脑或笔记本电脑 MCSPTE1AK344 BLDC 和 PMSM 电机控制开发套件,包含: DEVKIT-MOTORGD 板 S32K3X4EVB-Q172板 Sunrise 42BLY3A78-24110 电机 12V 电源 Micro-USB 线缆 2.3 准备演示 MCSPTE1AK344 与原始 S32K3X4EVB-Q172 板相比有一些修改。如需了解具体变化,请查看 NXP 网站上的《MCSPTE1AK344 电机控制套件的 S32K3X4EVB-Q172 板修改 schematic 附录》。 检查 DEVKIT-MOTORGD 上的板载跳线 J9、J10 和 J11 是否处于下图中的 2-3 位置,以通过分流电阻启用相电流测量: 将 micro-USB 电缆连接在主机 PC 和 OpenSDA USB 端口(J40)之间,并将 SW1 切换到 S32K3X4EVB-Q172 板上的位置 2。 将 12V 电源连接到DEVKIT-MOTORGD板,并将 S32K3X4EVB-Q172 板上的SW1从2位置切换到1位置。 SW1 旁边的四个 LED 应亮起并呈橙色常亮,若它们闪烁,将开关从位置 1 移至 2 再移回 1,以启动无活动看门狗的 SBC。 在 MATLAB® 中打开 s32k3xx_mc_pmsm.mdl。用户可在 Sunrise 42BLY3A78-24110 电机(MCSPTE1AK344 套件)或 MCSPTE1AK144 开发套件中的 Linix 45ZWN24-40 电机之间选择。如需从默认的 Sunrise 电机更换,点击 “电机选择” 模块中的 “Linix 电机参数”。 构建程序并下载到目标板,RGBLED0_GREEN 亮起。 从 “FreeMASTER_control” 文件夹打开 “S32K_PMSM_Sensorless.pmp”FreeMASTER 项目,点击 “Tools” 菜单,然后点击 “Connection Wizard”,接着点击两次 “Next”,选择分配给 S32K3X4EVB-Q172 板的 COM 端口和 115200 波特率。 2.4 运行演示 在 “S32K_PMSM_Sensorless” 项目中,点击 “App Control” 选项卡,使用速度仪表选择所需速度,然后点击 “On/Off” 按钮。 或者,按下 USER_SW0 按钮以顺时针(CW)模式启动电机,按下 USER_SW1 按钮以逆时针(CCW)模式启动电机。 同时按下两个按钮或复位按钮将停止电机。 若出现任何故障,电机将停止,故障将在 FreeMASTER 项目中显示,且 RGBLED0_RED 将亮起。如需再次运行电机,点击 “Fault” 按钮清除故障,然后重新启动电机。 电机旋转时,RGBLED0_GREEN 将每秒闪烁一次。 3. Model Overview 下图展示了包含所有模块的模型概览: 主要模块如下: Initialize 模块包含 S32K344 MCU 和 GD3000 预驱动器的函数 Hardware_interrupt_handler 调用测量模块并驱动电机控制算法 测量读取ADC FIFO缓冲区并调用以下模块 Board buttons 控制电机的启动(顺时针或逆时针)和停止 State machine 子系统包含电机控制应用程序的主要 “StateFlow”,以及在每个状态中执行的 S 函数 Motor selection 模块包含 Sunrise 或 Linix 电机的参数 RGBLED0 toggle 模块控制绿色 LED 的闪烁 Update PWM 模块调用外设模块以更新新的占空比数值 Var. Init. 模块包含模型和 FreeMASTER 中使用的大多数变量 FreeMASTER Recorder 模块将数据从模型传输到 PC 3.1 初始化函数 生成代码中运行的第一个模块用于配置: 通过 FreeMASTER 进行通信 模数转换器 (ADC) - ADC0 和 ADC1 实例 GD3000 逆变器板驱动器 六个PWM通道 触发“MBD_e_init”事件 3.2 ADC 中断和测量 硬件中断处理程序由 ADC(模数转换器)激活,并以 100μs 的周期循环调用以采样 FOC 状态变量,它是该电机控制应用程序的主要驱动程序。 DEVKIT-MOTORGD 上的分流电阻用于测量电机定子相电流。电流流过逆变器的每个桥臂 (R56、R57 和 R58),产生的电压降输入运算放大器进行增益调整和信号滤波,然后由 ADC 外设读取。R60 用作直流母线电流的低侧分流电阻。 尽管 S32K344 包含三个 ADC,且板上有三个分流电阻(R56、R57 和 R58),但本应用中同时仅监控两个电流,以展示 ADC 单触发模式和 BCTU 控制模式的并行使用。第三个定子电流通过以下公式获得: 有关电流测量的特定硬件的更多详细信息,请参见《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 RTD 底层 API)》应用笔记 AN13767 的第 3.3 章 “相电流测量”。 硬件中断处理程序调用测量块子系统: Measurement 模块读取 ADC FIFO(先进先出)缓冲区,并使用多路复用器 (MUX) 创建一个包含 3 个信号的总线,每个信号包含相应 ADC 通道的值: 此子系统还为其他子系统生成函数调用: 板载按钮 (Board Buttons) 状态机 (State Machine) 3.3 板载按钮 该模块提供启动电机顺时针(CW)或逆时针(CCW)方向并停止电机的功能: 当按下 USER_SW0 按钮时,电机沿顺时针方向启动,而当按下 USER_SW1 按钮时,电机沿逆时针方向启动。 同时按下两个按钮将停止电机并重新准备系统以便再次启动。 FreeMASTER 工具可读取两个全局变量(btSpeedUp 和 btSpeedDown),以顺时针或逆时针方向启动或停止电机。 通过连续按下同一按钮来逐步增加/减小速度,这会触发下面的 If Action 子系统: 如果 “cntSpeedUp” 值大于 “MBD_SPEED_UP_CNT”,计数器值将重置为 0;否则,它将随着子系统的每次运行而增加。 4. 状态机 这是MATLAB模型中的主电机控制模块,也是最复杂的一个: 主状态机模块控制电机控制应用程序的流程: 应用程序状态机由以下六个状态组成: INIT – local_MBD_init FAULT – local_MBD_fault READY – local_MBD_ready CALIB – 本地_MBD_校准 ALIGN – local_MBD_align RUN – local_MBD_run INIT状态是第一个执行的状态,在此状态下,PWM输出被禁用,变量被重置为零。 初始化后,RGBLED0_GREEN 设置为 “点亮”,并在设备进入 “READY” 状态之前设置 “MBD_ready”。 系统进入CALIB状态后,测量 A 相和 B 相电流的偏移量。 接着是电机的 ALIGN 阶段,启动斜坡启动,电机进入 RUN 状态,在此状态下电机从开环切换到闭环。 每个状态都会调用模型子系统,接下来我们将详细研究这些构建元素。 4.1 计算事件 该模块基于原始 ADC 读数计算所有定子电流,并计算事件和直流母线电压: 查看 “ Compute Events and ADCs” 模块内部: 仅当电机在 OnOffState 设置为 OFF 且 OnOffSwitch 设置为 TRUE 时启动,或者电机在 OnOffState 设置为开启 ON 且 OnOffSwitch 设置为 FALSE 时停止,才会生成事件。 该子系统检查 OnOffState 是否等于 1,如果为真,它将设置事件的输出为 MBD_e_app_on;否则,输出为关闭。 Calc_iABC获取ADC的原始值并将其转换为实际电流: 它还使用以下公式确定第三个定子电流: UDC_filt 模块获取原始 ADC 值并计算原始和滤波后的直流母线电压: 原始 ADC 值经过偏移和乘以 MATLAB 脚本 “s32k3xx_mc_pmsm_data.m” 中的常数 MBD_U_DCB_MAX。 AMMCLib 函数 GDFLIB_FilterMA 实现指数移动平均滤波器。滤波器将根据预设值初始化内部状态。 此预设的目的是避免过大的瞬态。在这种情况下,使用常数12是因为额定直流电压为12伏。 UDC_filt 模块的输出更新两个全局变量: Udcb_Filt Udcb_Raw 这些变量特别重要,因为它们在故障状态下的电流环路中用于检查过压、在对齐状态中以及用于消除直流母线纹波。 4.2 初始化状态 此代码块将所有变量重置为其默认初始状态,并调用一个函数来禁用PWM: InitLeds 模块将 RGBLED0 设置为零,同时将 OnOffState、OnOffSwitch 和 SwitchFaultClear 也设置为零: 在所有变量设置完成后,MBD_e_init_done 被发送到全局变量 Event。 4.3 故障状态 该模块检查 MBD_State 是否为故障状态,然后检查可能出现的各种错误,例如过流、过压和欠压: 还会检查 A、B 或 C 各相的过流,以及直流母线过压和直流母线过流。 如果达到任何限制,将触发禁用 PWM 输出的函数调用。 4.4 对齐状态 该子系统通过为 D 和 Q 参考设置恒定值来对齐电机轴: SetStates子系统设置变量并重置对齐过程所需的计数器: 逆帕克变换由Calc_uAIBReq用于计算Ud和Uq电压: Wait_to_align 模块使用计数器等待电机轴机械对齐: 对齐子系统使用计时器等待,直到计数器为负,然后重置所有以下变量:DutyCycleValues (:)、uDQReq1、uDQReq2、iDQReq1、iDQReq2、Rst_FastLoop、Rst_SlowLoop、trackingToSensorless、speedLoopCntr、openLoop_wRotEl、pospeControl_wRotEl、sensorless_wRotEl、sensorless_thRotEl、openLoop_thRotEl: 在所有值设置完成后,MBD_e_align_done将被发送到 Event 全局变量。 最后一个子系统用于消除直流母线纹波并计算 PWM 占空比: 它使用了两个 AMMCLib 函数“GMCLIB_ElimDcBusRip”和“GMCLIB_SvmStd_FLT”。 “GMCLIB_ElimDcBusRip” 函数提供了一种计算方法,用于重新计算所需定子电压矢量的直轴 Uα 和交轴 Uβ 分量,以补偿功率级直流母线上的电压纹波。 “GMCLIB_SvmStd_FLT”函数将两相(α-β)正交坐标系中的值转换为由两组星形连接的三相定子绕组(f32A-f32B-f32C)和(f32D-f32E-f32F)组成的六相系统,使用空间矢量调制(SVM)算法。 为了说明从定子参考电压(α 和 β)到改进型空间矢量调制 (SVM) 的转换,我们可以仔细观察下面的波形: 我们采用改进型空间矢量调制,通过持续上下偏移三相电压系统,实现直流母线电压的充分利用。 这种偏移称为 “三次谐波注入”,能够使基波振幅提高 15.5%,与标准正弦 PWM 调制相比,可使电机达到更高的速度范围或输出更大的扭矩。 4.5 就绪状态 此状态包含 2 个块 GreenLedOn 和 ReadyStateSetStates,如下图所示: GreenLedOn 模块将 RGBLED0 设置为纯绿色常亮,并关闭另外两个颜色的 LED。 “ReadyStateSetStates” 将值“MBD_e_ready”发送到 Event,并将常量“MBD_ready”发送到“MBD_State”全局变量。 就绪状态子系统还会生成一个函数调用来禁用 PWM 输出。 4.6 校准状态 该模块计算 A 相和 B 相电流的偏移量,并使用计数器等待,直至可以重置变量: “Calculate_I_ABCoffsets”使用 MATLAB 脚本中的“IphaseAB_raw”值和常数“MBD_I_MAX”作为 AMMCLib 模块的输入。 “GDFLIB_FilterMA_FLT” 函数模块实现了一个指数移动平均滤波器,用于计算原始相电流与脚本 “s32k3xx_mc_pmsm_data.m” 文件中设置为常数的最大电流 “MBD_I_MAX” 之间的偏移量。 该函数返回一个单精度浮点值,表示步骤 (k) 中输入信号的滤波值。 计数器的实现很简单,每一步都使用递减并进行比较: 如果 “CalibCnt” 计数器值大于 “CalibTimer” 值,它将触发 “ResetVariables” 子系统: 这将设置所有上述变量,并将值“MBD_e_calib_done”发送到事件全局状态。 4.7 运行状态 这是主要的应用模块,包含重置函数和电机控制环路: “Rst_FastLoop”变量用于在用户希望停止并重新启动电机时重置电机控制算法。 电机控制算法如下图所示,从电流采集、Clark+Park 变换、反电动势和角度跟踪观测器、电流环路、反 Park 变换加直流母线纹波补偿到 PWM 输出: 上述示意图与应用笔记 AN13767《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 RTD 底层 API)》中的电机控制应用类似:   4.8 电机控制算法概述 为了简化控制系统,我们可以从模块集的角度 “线性” 审视这种电机控制算法: 第一步是获取电机定子相电流。 分流电阻上的电压降被送入运算放大器进行放大和信号滤波,然后输入到模数转换器(ADC)。 随后,ADC 用于检测两相电流,然后电机控制算法根据基尔霍夫定律计算第三相电流,该定律指出流入节点的电流之和为零: 然后使用正向 Clark 变换将三相系统转换为两相正交系统 (α,β)。 然后使用 Park 变换将静止系统转换为旋转 d-q 参考系,之后将其输入到反电动势和角度跟踪观察器中,以计算下一个 PWM 换向的指令电压。 使用反 Park 变换将 d-q 坐标转换回 α 和 β 静止坐标系。 空间矢量调制 (SVM) 模块使用反 Clark 变换生成电机绕组的三相电压,完成从电流采集到生成电压指令的电机控制环路。 有关方程、静止和旋转参考系的更多信息,请参阅应用笔记 AN13767 的第 3.2 章 “正交相同步参考系中的 PMSM 模型”。 5. 电流环路 (Fast Loop) 在称为磁场定向控制 (FOC) 的变频驱动控制方法中,电流控制至关重要。将定子相电流转换为正交旋转两相系统后,会得到两个独立的电流分量。 直轴(d 轴)电流分量称为磁通产生分量,与磁通量正交的交轴(q 轴)分量称为转矩产生分量。 电流控制环路用于以高精度、高动态性和高带宽控制三相电机的转矩和磁通量。 回顾 MATLAB 模型,让我们按照从 ADC 信号采集到 PWM 输出电压指令的相同逻辑进行介绍。 首先,我们将 ADC 原始值输入到 “Calc_iABC” 模块中,该模块计算三相电流,然后使用 “CurrentSenseProcessing” 模块将其转换为单精度浮点数。 其次,是正向 Clark 变换子系统: 这使用“GMCLIB_Clark_FLT”单精度浮点函数,用于将三相(A-B-C)坐标系中的值转换为两相(α-β)正交坐标系,遵循以下方程: 接下来是Park变换,使用“GMCLIB_Park_FLT”函数: 这根据以下方程将两相(α-β)静止正交坐标系中的值转换为两相(d-q)旋转正交坐标系中的值: 其中,(theta_e) 表示转子磁通的电气位置。 电流环路模块接收 d-q 电流坐标作为输入,如下所示: “AMCLIB_CurrentLoop” 函数实现电流控制环路,它是 FOC 的组成部分,代表电机控制结构中最内层的环路。 电流控制环路包含两个递归形式的 PI 控制器,其参数可在 AMMCLib 模块内配置: 这些参数可在模型文件夹的脚本 “s32k3xx_mc_pmsm_data.m” 中修改。 电流环路的输出是所需的 Ud 和 Uq 指令电压,它们被送入反 Park 模块: “GMCLIB_ParkInv”函数计算逆帕克变换,将两相(d-q)旋转正交坐标系中的量转换为两相(α-β)静止正交坐标系,使用以下方程: 接下来,两个信号馈送到 DC 总线 Ripple Compensation 模块: 接下来,这两个信号送入直流母线纹波补偿模块: DutyCycleValues值用于更新生成 PWM 信号的 MCU 定时器,这些信号被输入到 GD3000 MOSFET 驱动器中。 “sin-cos” 模块计算转子位置 (theta_e) 的正弦值和余弦值:😞 这些信号是角度估计所必需的,并被送入 Park 和反 Park 模块。 反电动势和角度跟踪观察器模块的顶部包含以下内容: “AMCLIB_BemfObsrvDQ”函数返回实际旋转参考系与估计旋转参考系之间的相位误差: 反电动势和角度跟踪观察器模块的底部包含“AMCLIB_TrackObsrv_FLT”函数: 位置跟踪观测器具有一个 PI 控制器,用于计算工作点 Θestim = Θe 附近的线性近似。 该块的参数是: 观察者将“Omega_e”输入到速度回路中,该回路在此模型中被称为慢速回路。 以上所有模块都是电机控制算法“Fast Loop”的一部分,对于当前控制逻辑至关重要。 该函数接收由 “AMCLIB_BemfObsrvDQ” 计算的相位误差 (Θerr),并使用它来估计转子的角速度和位置。 估计的转子位置是通过在锁相环(PLL)中将γ-δ参考框架的相位误差(Θerr)驱动至零来获得的。 PLL 结构如下图所示: 此外,我们将介绍其他所需的模块或子系统。 6. Speed Loop(Slow Loop) Speed Loop 子系统的运行速度远低于 Current Loop: 当计数器 “speedLoopCntr” 等于变量 “MBD_SPEED_LOOP_CNTR” 时,慢速环路子系统运行,其执行速度是快速环路的 1/10: 首先,进入该子系统后,计数器 “speedLoopCntr” 重置为零,然后进行检查: 如果 “PosMode” 等于 2,意味着电机处于无传感器模式,它将设置速度: “PosMode1” 内部有一个小型状态机,用作速度限制器: 这将速度输出限制在两个限值之间:“-HighLimSpeed” 和 “+HighLimSpeed”。 速度环路模块实现 “AMCLIB_FWSpeedLoop” 函数: “AMCLIB_FWSpeedLoop” 函数在 FOC 外环控制中实现速度 PI 控制器,并为永磁同步电机实现弱磁算法: 上述 diagram 所示的外环中,“AMCLIB FWSpeedLoop” 函数实现了速度 PI 控制器和弱磁控制器。 7. 开环 该模块使用AMMCLib库中的几个函数计算开环“theta_e”: 为了计算 theta,我们知道角速度 (ω) 等于角位置 θ 随时间的变化率: 此外,我们可以根据以下公式对 omega 进行积分: 现在让我们看看 MATLAB 中的实现: 这将 “FwSpeedLoop_pRamp_fltState” 变量值除以常数 “MBD_WEL_MAX”,并将其转换为 32 位分数数据类型。 Open Loop 的第二部分由以下组成: “GFLIB_IntegratorTR” 函数使用梯形(双线性)变换实现离散积分器。 结果被转换为 32 位分数数据类型,并乘以常数 “pi”。 系统中有四种运行模式: 根据具体场景,每种模式会修改不同的参数。 force mode 施加开环 omega,其他变量为零: tracking mode 将控制 omega 设置为零,theta 设置为开环值: 当电机在闭环(无传感器)模式下运行时,位置模式为第二种情况。 这将变量 “sensorless_thRotEl” 中的 “theta_e” 除以常数 “pi”,并将其转换为 32 位分数数据类型。 默认模式是: 自动模式由一个状态机组成,该状态机根据开环速度切换“PosMode”: 函数“MLIB_Abs_FLT”返回开环电气欧米茄的绝对值。 “PosMode” 状态机有以下状态: 根据 Open Loop Speed 有 3 种状态: 强制模式 = 0 跟踪模式 = 1 Sensorless模式 = 2 这确保电机控制算法根据速度自动切换运行模式。 8. RGBLED0 切换 该模块实现一个定时器,用于切换 RGBLED0_GREEN 的状态。 该子系统的第二个功能是关闭另外两个 LED,为 RGBLED0_BLUE 和 RGBLED0_RED 的 NXP 函数模块 Dio_WriteChannel 赋予值 0。 定时器使用变量 “LEDCounter”,该变量在快速环路的每个周期递增,并与值 2500 进行比较。 如果大于 2500,它将把计数器值重新初始化为 0,并触发 If Action 子系统: 在此子系统中,将 LEDState 与逻辑 “1” 进行比较,并进行按位异或屏蔽,将结果值赋予 RGBLED0_GREEN 的变量和函数 Dio_WriteChannel。 9. Update PWMs 该模块根据硬件缩放和每个通道的预先计算值生成相应的PWM占空比值。 占空比以数组形式存储在一个数据变量中,对应三个通道。 它们与常数 “32768” 相乘以实现占空比偏移,然后被输入到每个 PWM 通道。 此外,“DutyCycleValues” 会根据相同 PWM 模块的相位偏移输入进行调整,Sync Update 输入为常数 “1”,这意味着每个通道都是同步的。 该子系统使用 NXP PWM 模块和 “PWM_SetDutyPhaseShift” 函数来对齐三个通道:PWM0、PWM1 和 PWM2。 10. FreeMASTER 配置 GUI 打开 “S32K_PMSM_Sensorless” 项目,点击 “App Control” 页面,使用速度仪表选择所需速度,然后点击 “On/Off” 按钮: 此外,用户可以查看各种参数,例如下面的 IDQ currents: 我们还可以仔细查看三相电机电流: 三相电流以 RGB 颜色表示,根据电机负载不同,其峰值为 1.4 [A]。 11. 结论 MCSPTE1AK344 开发套件提供了一整套硬件功能,与上述的 s32k3xx_mc_pmsm.mdl 示例配合使用,为使用恩智浦(NXP)适用于 NXP Model-Based Design Toolbox for S32K3 进行电机控制算法建模创造了完整的开箱即用体验。 MBDT 在 Simulink® 环境中集成了 NXP 的各类工具,如汽车数学与电机控制库 (AMMCLib)、编译器、配置工具、实时驱动程序 (RTD) 和工具链。它与 Embedded Coder® 一起,为微控制器生成优化代码,确保最先进的软件循环能够在恩智浦微控制器上以最高性能运行。 要了解更多关于适用于 S32K3 的基于模型的设计工具箱的功能,请访问 MBDT 社区页面。你可以在此处发起话题,与创建 MBDT 工具箱的工程师直接交流。除了专注于电池管理系统、AUTOSAR 或电机控制应用的典型应用演示外,你还可以参加 NXP MBDT 培训和课程,如初学者指南系列。 你也可以访问 NXP.com,获取有关 NXP 所提供的开发生态系统的更多信息。 12. 参考文献 MCSPTE1AK344:适用于 BLDC 和 PMSM 电机控制的 S32K344 开发套件 NXP 社区的 “使用 NXP 基于模型的设计工具箱的三相 PMSM 控制研讨会” NXP 社区的模块 4:空间矢量调制 适用于 S32K14x 器件的汽车数学与电机控制库 (AMMCLib) 套装 应用笔记:AN13767:使用 RTD 底层 API 的带 S32K344 的三相无传感器 PMSM 电机控制套件 应用笔记:AN13884:使用 RTD AUTOSAR API 的带 S32K344 的三相无传感器 PMSM 电机控制套件 应用笔记:AN13902:使用 MBDT 模块的带 S32K344 的三相无传感器 PMSM 电机控制套件   目录 1. 引言  2. 电机控制 PMSM 示例 3. Model Overview  4. 状态机 5. 电流环(快速环) 6. 速度环(慢速环) 7.开环 8. RGBLED0 切换 9. Update PWMs  10. FreeMASTER 配置 GUI 11. 结论 12. 参考文献 本文内容与 AN13902:《基于 S32K344 的三相无传感器 PMSM 电机控制套件(使用 MBDT 模块)》完全一致 示例模型
查看全文
RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ブート時間のテスト – ブータブル・イメージの作成 ブータブル・イメージの構造: ブータブル・イメージは以下で構成されています。 FlexSPI 設定ブロック(FCB) イメージ・ベクトル・テーブル (IVT) ブートデータ デバイス設定データ(DCD) プログラム・イメージ CSF、証明書、署名(これらはオプションで、ハイ・アシュアランス・ブートでのみ必要です) 以下、それぞれについて簡単に説明します。 FlexSPI 設定ブロック(FCB) FCBはFlexSPIの通信の設定を構成します。使用するポートの数、FlexSPIコントローラの動作クロック速度などを設定します。最初に行われるのはこの設定です。それ以外のものはすべてフラッシュ・メモリに保存されているためです。他のものを読み取るために、まずフラッシュを設定する必要があります。 イメージ・ベクトル・テーブル(IVT) IVTは、すべてのものが格納されているアドレスをメモリに伝えるテーブルです。 ブートデータ ブートデータには、メモリの開始アドレスへのポインタが含まれています。 デバイス設定データ(DCD) DCDには、ペリフェラルを設定するための設定データが含まれています。 プログラム・イメージ プログラム・イメージには、アプリケーションに組み込むように記述したコードが含まれています。 CSF、証明書、署名 これらはオプションです。ハイ・アシュアランス・ブートのシーケンスで必要となります。この記事では説明しません。 ブート・イメージの各部分を大まかに示した概略図は次のとおりです。 ブータブルイメージ生成ソフトウェア/ツール: MCUXpresso – MCUXpresso IDEをダウンロードしてください フラッシュローダ – RT1050のページ > ソフトウェアとツール > フラッシュローダからダウンロードします。 このフォルダには、MFGTool、elftosbツール、その他のドキュメントが含まれています。 DCD.binファイル:私が使用したファイルはこちらのドキュメントにあります。 https://community.nxp.com/docs/DOC-340655 ブータブル・イメージ作成の概要 MCUXpressoは、HyperflashおよびQSPI XiP用のブータブル・イメージを作成できますが、SDRAMまたは内部SRAMの場所から、あるいは独自のメモリ・モジュールからブートして実行する場合は、ブータブル・イメージを作成する必要があります。それには、MCUXpressoでSレコードまたはELFイメージを生成し、次にフラッシュローダ・ツール・スイート(elftosbおよびmfgtool)を使用してブータブル・イメージを作成したうえで、ボードにアップロードするブータブル・プログラムを作成します。 以下、一般的なプロセスの全体の流れを説明します。その後のセクションでは、Hyperflash XiP、SDRAM、SRAMのそれぞれについて、より詳細なステップ・バイ・ステップ・ガイドを示します。 MCUXpressoの設定と出力 まずは、MCUXpressoでアプリケーション・コードを準備します。MCUXpressoの [MCU Settings(MCU設定)] 部分のメモリ構成エディタで、起動元に合わせてメモリ割り当てを変更します。必要に応じて、ブート・イメージでdcdを有効にするかどうかをプリプロセッサ設定で指定します。 バイナリ・ユーティリティを使用して、MCUXpressoからSレコード(.s19)ファイルを生成します。 Elftosbツール – .binファイル生成 このツールはフラッシュローダに含まれています。imxコマンドを呼び出すときに、プログラム・イメージを含むSレコード・ファイル、dcd.binファイル(Sレコードに含まれている場合もある)、FCB?、およびbd_file(メモリ構成に応じて提供される)を入力として渡します。elftosbツールは出力として.binファイルを生成します。 Elftosbツール – ブータブル・イメージの生成 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。   この後、ブータブル・イメージがボードにアップロードされ、準備は完了です。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 さて、次のセクションでは、起動したい特定のメモリ位置に応じて、何をすべきかの具体例を詳しく説明いたします。 ブータブル・イメージの生成 – XiP Hyperflash これはMCUXpressoでも実行可能ですが、このプロジェクトの場合は、独自のdcdファイルを使用するために、従来のフラッシュローダ・ツールを使用しました。 MCUXpressoの設定と出力 まず、メモリ構成エディタでメモリ割り当てを変更するために、[Edit project settings(プロジェクト設定の編集)] >> [C/C++ Build(C/C++ビルド)] >> [MCU settings(MCU設定)] >> [Edit(編集)] を開きます。次のように表示されます。 次に、[C/C++ Build(C/C++ビルド)] >> [Settings(設定)] > [MCU C compiler(MCU Cコンパイラ)] > [Preprocessor(プリプロセッサ)] に移動します。使用するdcd.binファイルがある場合は、XIP_boot_header_enableとXIP_boot_header_DCD_enableの両方を0に設定します。ない場合は、これらのフィールドを1に設定します。 [Apply and Close(適用して閉じる)] をクリックします。 デバッグ部分に移動し、[Binary Utilities(バイナリ・ユーティリティ)] をクリックして、MCUXpressoからSレコード(.s19)ファイルを生成します。 [Build(ビルド)] をクリックして、プロジェクトを再ビルドします。 この.s19ファイルをコピーします。 Elftosbツール – .binファイル生成 フラッシュローダ・ツールで、[Tools(ツール)] > [elftosb] > [Win] に移動し、.s19ファイルとdcd.binファイルをこのフォルダにドロップします。 管理者モードでコマンド・プロンプトを起動し、「cd [elftosbディレクトリ]」コマンドを使用して、このフォルダに移動します。 .binファイルを生成するには、次のコマンドを呼び出します。 elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-flexspinor-normal-unsigned-dcd.bd -o ivt_flexspi_nor_led_blinky.bin HYPERFLASH_led_blinky.s19 このコマンドは基本的に、imx-flexspinor bdリンカ・ファイルを使用して、内部にdcd.binヘッダを含む.binファイルを生成しています。HYPERFLASH_led_blinky.s19は、MCUXpressoから取得した実際のファイル名に変更する必要があります。 Elftosbツール – ブータブル・イメージの生成 次に、boot_image.sbを生成する必要があります。 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 コマンドは次のとおりです。 elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -o boot_image.sb ivt_flexspi_nor_led_blinky_nopadding.bin 注:最初に実行したimxコマンドの出力が、このコマンドの入力(ivt_flexspi_nor_led_blinky_nopadding.bin)と一致する必要があります。また、出力はboot_image.sbという名前のままにする必要があります。別の名前ではうまくいきません。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。   最後の手順で作成した boot_image.sb ファイルをコピーしてください。それを Tools > mfgtools-rel > Profiles > MXRT105X > OS Firmware ディレクトリに移動し、ここにドロップしてください。 次に、ボード上のSW7をOFF-ON-OFF-ONに設定し、下部のジャンパを切り替えて、ボードに電源を供給します。次に、USBケーブルをJ9に接続します。これにより、ボードをプログラムできます。 mfgtools-relフォルダに戻り、MFGToolを開きます。[HID-compliant vendor-defined device(HID準拠のベンダ定義デバイス)] と表示されているはずです。表示されない場合は、SW7と右下の電源ピンを再確認します。   [Start(開始)] をクリックします。成功すると次のように表示されます。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 [Stop(停止)] を押して終了します。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 ブータブルイメージ生成 – SDRAM このガイドは、https://community.nxp.com/docs/DOC-340655の内容に基づいています。そちらにあるファイルをダウンロードし、解凍します。問題はほとんどありませんが、PDFドキュメントの最初のステップだけは少し不明瞭です。 MCUXpressoの設定と出力 まず、MCUXpressoの [MCU Settings(MCU設定)] 部分のメモリ構成エディタで、メモリ割り当てを変更します。次のようになります。 次に、[Settings(設定)] > [MCU C compiler(MCU Cコンパイラ)] > [Preprocessor(プリプロセッサ)] に移動し、XIP_boot_header_enableとXIP_boot_header_DCD_enableの両方を0に設定します。 [Apply and Close(適用して閉じる)] をクリックします。 [C/C++ Build(C/C++ビルド)] >> [Settings(設定)] >> [MCU Linker(MCUリンカ)] >> [Manage linker script(リンカ・スクリプトの管理)] に移動し、[Link application to RAM(アプリケーションをRAMにリンク)] チェックボックスをオンにします。 デバッグ部分に移動し、[Binary Utilities(バイナリ・ユーティリティ)] をクリックして、MCUXpressoからSレコード(.s19)ファイルを生成します。 [Build(ビルド)] をクリックして、プロジェクトを再ビルドします。 コンソールで、メモリの割り当てが正しいかどうかを確認できます。 この.s19ファイルをコピーします。 Elftosbツール – .binファイル生成 フラッシュローダ・ツールで、[Tools(ツール)] > [elftosb] > [Win] に移動し、.s19ファイルとdcd.binファイルをこのフォルダにドロップします。 SDRAMからの起動には別の手順があります。imx-sdram-normal-unsigned-dcd.bdファイル(前述のリンク先にあり)を、[Tools(ツール)] > [bd_file] > [imx10xx] にドラッグします。 管理者モードでコマンド・プロンプトを起動し、「cd [elftosbディレクトリ]」コマンドを使用して、このフォルダに移動します。 .binファイルを生成するには、次のコマンドを呼び出します。 elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-sdram-normal-unsigned-dcd.bd -o evkbimxrt1050_led_blinky.bin SDRAM1_led_blinky.s19 このコマンドは基本的に、imx-flexspinor bdリンカ・ファイルを使用して、内部にdcd.binヘッダを含む.binファイルを生成しています。HYPERFLASH_led_blinky.s19は、MCUXpressoから取得した実際のファイル名に変更する必要があります。 Elftosbツール – ブータブル・イメージの生成 次に、boot_image.sbを生成する必要があります。 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 コマンドは次のとおりです。 elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -o boot_image.sb evkbimxrt1050_led_blinky_nopadding.bin 最初に実行したimxコマンドの出力が、このコマンドの入力と一致する必要があります。また、出力はboot_image.sbという名前のままにする必要があります。別の名前ではうまくいきません。なお、コマンドの中でflexspinor_image_hyperflashと指定していますが、これは間違いではありません。技術的に、まずはHyperflashから起動する必要があることに変わりはなく、その後ですべてをSDRAMにコピーすることになるからです。 boot_image.sbファイルをコピーします。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。   最後の手順で作成した boot_image.sb ファイルをコピーしてください。それを Tools > mfgtools-rel > Profiles > MXRT105X > OS Firmware ディレクトリに移動し、ここにドロップしてください。 次に、ボード上のSW7をOFF-ON-OFF-ONに設定し、下部のジャンパを切り替えて、ボードに電源を供給します。次に、USBケーブルをJ9に接続します。これにより、ボードをプログラムできます。 mfgtools-relフォルダに戻り、MFGToolを開きます。[HID-compliant vendor-defined device(HID準拠のベンダ定義デバイス)] と表示されているはずです。表示されない場合は、SW7と右下の電源ピンを再確認します。 [Start(開始)] をクリックします。成功すると次のように表示されます。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 [Stop(停止)] を押して終了します。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 ブータブルイメージ生成 – SRAM こちらはアプリケーションノートがなかったため少し厄介でしたが、さほど難しくはありませんでした。 MCUXpressoの設定と出力 まず、MCUXpressoの [MCU Settings(MCU設定)] 部分のメモリ構成エディタで、メモリ割り当てを変更します。次のようになります。すべてをDTC RAMにコピーするようにリンクしています。 次に、[Settings(設定)] > [MCU C compiler(MCU Cコンパイラ)] > [Preprocessor(プリプロセッサ)] に移動し、XIP_boot_header_enableとXIP_boot_header_DCD_enableの両方を0に設定します。 [Apply and Close(適用して閉じる)] をクリックします。 [C/C++ Build(C/C++ビルド)] >> [Settings(設定)] >> [MCU Linker(MCUリンカ)] >> [Manage linker script(リンカ・スクリプトの管理)] に移動し、[Link application to RAM(アプリケーションをRAMにリンク)] チェックボックスをオンにします。   デバッグ部分に移動し、[Binary Utilities(バイナリ・ユーティリティ)] をクリックして、MCUXpressoからSレコード(.s19)ファイルを生成します。 [Build(ビルド)] をクリックして、プロジェクトを再ビルドします。 アプリケーションがSRAMにリンクされていることを、コンソールで次のように確認できます。 この.s19ファイルをコピーします。 Elftosbツール – .binファイル生成 フラッシュローダ・ツールで、[Tools(ツール)] > [elftosb] > [Win] に移動し、.s19ファイルとdcd.binファイルをこのフォルダにドロップします。 管理者モードでコマンド・プロンプトを起動し、「cd [elftosbディレクトリ]」コマンドを使用して、このフォルダに移動します。 DTCM RTAMに固有の手順として、[Tools(ツール)] >> [bd_file] >> [imx10xx] に移動し、imx-dtcm-unsigned-dcd.bdファイルを開いて、ivtOffsetアドレスを0x1000に変更します。SDカード起動のデフォルトは0x400です。 念のために示すと、bdファイルは次のようになります。 .binファイルを生成するには、次のコマンドを呼び出します。 elftosb.exe -f imx -V -c ../../bd_file/imx10xx/imx-dtcm-unsigned-dcd.bd -o evkbimxrt1050_led_blinky.bin SRAM1_led_blinky.s19 このコマンドは基本的に、imx-flexspinor bdリンカ・ファイルを使用して、内部にdcd.binヘッダを含む.binファイルを生成しています。SRAM_led_blinky.s19は、MCUXpressoから取得した実際のファイル名に変更する必要があります。 Elftosbツール – ブータブル・イメージの生成 次に、boot_image.sbを生成する必要があります。 続いて、kinetisコマンドを指定してelftosbツールを再度呼び出します。これにより、.binファイルがboot_image.sbファイルに変換されます。 コマンドは次のとおりです。 elftosb.exe -f kinetis -V -c ../../bd_file/imx10xx/program_flexspinor_image_hyperflash.bd -o boot_image.sb evkbimxrt1050_led_blinky_nopadding.bin 最初に実行したimxコマンドの出力が、このコマンドの入力と一致する必要があります。また、出力はboot_image.sbという名前のままにする必要があります。別の名前ではうまくいきません。なお、コマンドの中でflexspinor_image_hyperflashと指定していますが、これは間違いではありません。技術的に、まずはHyperflashから起動する必要があることに変わりはなく、その後ですべてをSDRAMにコピーすることになるからです。 MFGツール 次に、MFGToolを使用してボードのプログラム・イメージを生成し、アップロードします。 そのためには、ボードのSW7をOFF-ON-OFF-ONに設定し、ジャンパをJ1(5-6)からJ1(3-4)に切り替える必要があります。USBケーブルをJ9に接続して、ボードに電力を供給します。次に、ボードをコンピュータに接続し、MFGToolを実行します。[Start(開始)] をクリックすると、イメージがアップロードされます。 最後の手順で作成した boot_image.sb ファイルをコピーしてください。それを Tools > mfgtools-rel > Profiles > MXRT105X > OS Firmware ディレクトリに移動し、ここにドロップしてください。 次に、ボード上のSW7をOFF-ON-OFF-ONに設定し、下部のジャンパを切り替えて、ボードに電源を供給します。次に、USBケーブルをJ9に接続します。これにより、ボードをプログラムできます。 mfgtools-relフォルダに戻り、MFGToolを開きます。[HID-compliant vendor-defined device(HID準拠のベンダ定義デバイス)] と表示されているはずです。表示されない場合は、SW7と右下の電源ピンを再確認します。 [Start(開始)] をクリックします。成功すると次のように表示されます。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 [Stop(停止)] を押して終了します。 ボードが正常に起動できるように、ピン・ヘッダを必ず元に戻してください。Hyperflashから起動するには、J1(5-6)とSW7をOFF-ON-ON-OFFに設定します。 ここで言う成功とは、ブータブル・イメージをボードにアップロードできたというだけの意味です。通常はこれで正常に動作します。しかし、後でボードが想定どおりに動作しなかった場合は、プロセッサの他のステップに問題がある可能性があります。正しいリンカ・ファイルを使用していることと、MCUXpressoの設定が正しいことを確認してください。 この後、ブータブル・イメージがボードにアップロードされ、準備は完了です。 i.MXRT 105倍 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> この3日間、いろいろ試しましたがうまくいきません。RT1050-EVKBを使用しています。MCUXpressoからのイメージのダウンロードは問題なく成功しました。イメージの作成と、フラッシュへの書き込みもできましたし、DTC RAMやITC RAMにもコピーされます。私はNXP-MCUBootutilityかMCUXpressoセキュア・プロビジョニング・ツールを使用しており、どちらの使用も問題ありません。次に必要なのは、XIPでSDRAMから実行されるイメージを作成することです。見つけた情報をすべて試しましたが、うまくいきません。プロビジョニング・ツールのサンプル・イメージについては、evkbimxrt1050_iled_blinky_ext_FLASHとevkbimxrt1050_iled_blinky_SDRAMを取得して書き込み、実行させることができています。つまりツールセットの問題ではありません。明らかに、私が何かのやり方を間違っているか、何かを抜かしているかです。私のSDKはバージョン2.3です。実にシンプルなガイドに思えるのですが、私が個々の手順で何か見落としているのだと思います。ヒントをいただけますか?手始めに知りたいのは、MCUXpressoを使ってXIPイメージをビルドしダウンロードする手順です。どのコンパイラ定義を設定する必要があるでしょうか。イメージを0x60002000から実行させることと、フラッシュを最上位にする必要があることはわかっています。他に何があるでしょうか。 よろしくお願いいたします。 Larry 編集: 驚きの結末です。他に何があったのか、答えが判明しました。MCUXPresso IDEが最新バージョンになっておらず、そのことを当のIDEが認識していなかったのです!!私は別のプロジェクトでV10.3をこれまで1年使用してきました。私は繰り返しアップデートを確認していましたが、利用可能なアップデートはないという表示が出ていました。このIDEは、バージョン11.1が出ていることを把握していなかったのです。RT1050 SDK v2.7はこのバージョンと連携し、フラッシュ書き込み機能もすべて自動で対応しています!!すごいです!RT1050 SDK2.3は対応していません。 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Adrian、 私の Flashloader ダウンロードには、あなたが使用した「-dcd」bd ファイルが見当たりません。 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> なぜ.s19ファイルが必要なのですか。 Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このツールをお試しいただくこともできます。このツールを使用すると、ベアイメージをさまざまなブートデバイスに簡単にフラッシュでき、ヘッダー(ivt、boot data...)を気にする必要はありません。 GitHub - JayHeng/nxp-sec-boot-ui: NXP MCU (Kinetis、i.MXRT、LPC) ROM ブートローダーを操作するためのワンストップGUIツールで、これは… Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 結局、私のフラッシュローダに問題があることがわかりました。 今日イメージの作成に成功し、それをフラッシュに書き込んで、SDRAMで実行できました。 その後、フラッシュローダなしで、MCUXpressoでバイナリ・イメージを作成することもできました。Segger Ozoneで正しい場所にロードする必要がありますが、すべて正常に動作します。 Manuelさん、もしフィレンツェにいらっしゃったら、ビールを1杯おごりますよ 😉 Giuseppe Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、マヌエルさん。この興味深い文書をありがとうございます。 残念ながら、バイナリを作成しようとするとelftosbがクラッシュします。S19ファイルのアドレスは正しいのですが、「セクション0x0」を探し続けます。これはSDRAMと内部RAMバージョンの両方で発生します。 ありがとうございます Giuseppe Re: RT1050のブータブル・イメージの作成 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは。非常に興味深いドキュメントです。 SDやQSPIからブートした場合に、SDRAMからソフトウェアを実行することも可能ですか? この手順はRT1020でも使えますか?それともRT1050専用ですか?
查看全文