Multi Source Translation Content

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multi Source Translation Content

Discussions

Sort by:
LS1046Aカスタムボード:eMMC、SDカード、QSPIからのコールドブートが失敗。CodeWarrior RCW適用によりU-Bootが有効化される。 こんにちは、 LS1046ARDBデザインに基づくカスタムLS1046Aボードを導入します。自律コールドブートは失敗していますが、CodeWarriorやQCVSの介入によりプロセッサはBL2、BL31、U-Bootコンソールに到達できます。eMMC、SDカード、QSPI NORでコールドブートの失敗を観察しているので、共通のリセット/クロック/PBL経路の分離方法についてのアドバイスをいただけるとありがたいです。 プラットフォームとLS1046ARDBとの違い 項目 カスタムボード構成 プロセッサ LS1046AE Rev. 1.0; U-BootはSVRを報告します 0x87070010 電源/リセット制御 CPLDなし。STM32 BMC、PCA9539 I/Oエキスパンダ、レベルトランスレータ、およびディスクリートリセット回路が、シーケンス処理とSD/eMMCの選択を実装します。 DDR 4 GiB、シングルランク、64ビット非ECC DDR4、初期化済み 1600 MT/秒。これは、RDB比較で使用した8GiB ECC構成とは異なります。アシストブート後、DDRの初期化は成功しました。ただし、完全なメモリマージン認定はまだ保留中です。 クロック 100MHzのプライマリ基準。動作支援構成では、シングルエンドSYSCLK選択を使用します。DDRは差動参照パスを使用する。U-BootはCPUが1800 MHz、プラットフォームが600 MHz、FManが700 MHzと報告しています。 EMMC マクロニックス MX52LM08A11XVIは、RDBデバイスとは異なります。U-Bootは製造元、名称 0xc2 M08A11、MMC 5.1、約7.3 GiBのユーザー容量 識別します。 SD/eMMCインターフェース BMC制御による選択とEVDD:eMMCの場合は1.8V、SDの場合は3.3V。 QSPI NOR S25FS512S、デバイスあたり64MiB。この基板ではNOR検出に成功しました。 他のプリフェラル カスタムイーサネット/PHYルーティングおよびSerDes構成;PCIeデバイスは使用されません。 ソフトウェア A1固有のボード/デバイスツリーの変更、TF-A v2.12.0に基づく lf-6.12.49-2.2.0、U-Boot 2025.04。U-Bootのウォッチドッグは起動時には無効になっています。 リセットネットワークもこの調査中に再構築され、競合するプロセッサ-PORドライバブランチが分離され、BMCからTRSTへの直接ドライブが切断され、ハードウェアPOR/TRST結合パスが取り付けられました。BMCによるHRETセンサーは接続されたままです。 最新のネイティブコールドブーツ観察結果 BMCシーケンスにおいて、意図せず早期にSoCリセットが発生していたことを発見し、修正しました。続いて、CodeWarriorやQCVSの操作を一切行わずに完全に電源をオフにした状態から取得したスコープキャプチャは以下のとおりです。 - BMCがプロセッサリセットを解除するとPORESET_Bが上昇します。 - eMMCのCLKおよびCMDアクティビティは、そのエッジの後に開始されます。 - 通常のBL2/U-Bootコンソール出力は表示されません。以前の試みでは、無効なUART文字しか得られなかった。 - HRESET_Bとラベル付けされたトレースはHIGH(約1.8 V)のままです。キャプチャされたeMMC活動の前後にLOWの主張は観測されません。BMC HRESET入力も繰り返しHIGHを読み取る。 CodeWarrior/QCVSの動作 コールドブートストール中、CodeWarrior InspectはJTAGチェーンに「CortexA72#0」が見つからないことを報告し、RCWの確認やRCWオーバーライドの有効化を推奨します。 しかし、RCW適用を有効にしてデバッグをクリックするか、QCVS経由でRCWを適用すると、ブートが進行します。UARTがU-Bootに到達しているにもかかわらず、Debugが「コアがデバッグモードではありません」と報告することがあります。他の試行では、ターゲットが停止し、「continue」によってブートが完了する。 初期化スクリプトを以下のように簡略化しました。 from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13:0x00004504}) target.rcw.apply() 物理ストラップはSD/eMMCソース「0x40」に設定されました。入力されたワード13は、eMMCに既に保存されている値と同一です。この簡略化されたスクリプトにより、アシストブートも可能になった。同じ単語を使用して「set_source(0x9E)」を個別にテストしたところ、こちらも成功しました。 この簡略化されたスクリプトには、DDR初期化、BRR、PC、SCTLR、または再開操作は明示的に含まれていません。「rcw.apply()」とデバッガ起動フレームワークは内部リセットや実行制御操作を依然として実行できることを認識しています。これは受動的なアタッチではありません。 支援を受けて、16語すべてのRCWSR語が意図されたメディアRCWと一致しました。BL2はOCRAM内に存在し、計測されたブートチェーンはDDR初期化、eMMC/FIPロード、BL31およびU-Bootを完了した。介入後の「RSTRQPBLSR」の読み取り数はゼロでしたが、これらは元の低温障害状態を捉えたものとは考えていません。 既に実施されたテスト テスト観察 eMMCからのネイティブブート 自律的なコンソール起動は行われず、デバッガ支援によるリカバリによってU-Bootに到達する。 SDカードからのネイティブブート BMCがSDを検出/選択したにもかかわらず、同様のコールドブート失敗が発生した。アシストブートは可能だった。 QSPI NORからのネイティブブート 最新のテストでは、コールドブートの不具合も確認された。三つのメディアが同じ内部段階で止まることはまだ確立されていません。 スタンドアロンのハードコードされたソースストラップ 0x9E そして 0x9F その後のテストでは、期待されていたスタンドアロンリセットの進行状況は得られなかった。ハードコードされたRCWだけでは完全なU-Bootイメージにはならないことは理解しています。 安全なRCWを有効にした標準RDB初期化 回復は可能でしたが、DDRやCPUの状態、ペリフェラルも変更するため、これは単発のテストではありませんでした。 上記の最小限の適用専用スクリプト ソースリクエストを使用すれば、ワード13が保存値と等しい場合でも復旧可能です。 0x9E そして 0x40。 QCVS RCWテスト/リードバック テストは合格し、介入後の読み出し結果は意図した構成と一致した。ネイティブフェッチは未検証です。 3つのPCIe PBIアクセスを削除しました ネイティブコールドブートに改善は見られなかった。 SerDes2を無効にした後、両方のSerDesブロックを無効にします。 改善は見られない。アシストされたU-Bootログにより、変更されたRCWワードが確認された。 DDR診断 SPDの読み取りと4GiBの初期化は、支援を受けた後、1600MT/sで成功しました。ただし、完全なマージンテストではありません。 BL2/BL31/U-Bootのマイルストーンログ機能を追加しました。 補助付きブートはすべての段階を完了します。ネイティブ障害は最初のBL2マイルストーンを示さず、これらのログはハードウェアPBL自体を追跡できません。 eMMC RCWとイメージ配置 SerDesを両方有効にしたeMMCのベースラインは以下のとおりです。 0c100012 0e000000 00000000 00000000 13335a06 40400012 60040000 c1000000 00000000 00000000 00000000 0001c83e 00004504 24001002 00000096 00000001 SerDesを両方とも無効にした実験では、以下の単語のみが変更されました。 RCW05 = 00000000 RCW06 = 00f00012 eMMCユーザーエリアでは、512バイトセクタを使った: コンポーネント開始LBAバイトオフセット RCW + PBI + BL2コンテナ (bl2_emmc.pbl) 0x8 0x1000 BL31とU-Bootを含むFIP 0x800 0x100000 FManマイクロコード 0x4800 0x900000 書き込まれたPBL/BL2領域とFIP領域を読み戻したところ、それらのSHA-256値は、これらのテストのために転送されたファイルと一致した。PBIストリームはデコードされ、CRCチェックが行われた。OCRAMのブート場所を設定し、継承されたNXPインターコネクト/USB準備およびPBL同期操作を実行し、BL2をOCRAMにコピーします。PCIeレジスタアクセスを削除してもストールは解決しませんでした。DDRの初期化は、後ほどBL2によって実行されます。 また、eMMCの`EXT_CSD[162] = 0x00`および`EXT_CSD[179] = 0x00`を読み取りましたが、これらの設定に不可逆的な変更は加えていません。 指導を要請 1. HRESETのタイミング:LS1046Aは、PORESET_B、有効なリファレンスクロック、および初期eMMCトランザクションに対して、正確にどの時点でHRESET_BをLOWにすべきでしょうか?プロセッサ側のプローブでLOWアサートが確認できない場合、リセット、クロック、パワードメイン、ストラップ、テストモードのどれを最初に確認すべきでしょうか? 2. 介入前のキャプチャ:A72コアが発見される前に、停止したPBL/DCFG/eSDHCの状態をリセットやRCWオーバーライドなしで読み取るための、サポートされているCodeWarrior/CCSシステムアクセスポート手順はありますか?必要なアクセスコンテキスト、コマンド、そして最も有用なステータス/エラーレジスタを提供してください。 3. RCWの適用セマンティクス:`rcw.apply()`は具体的に何を行うのかソース `0x40` または `0x9E` を使用し、指定されたワードが 1 つだけの場合、どうしますか?どのリセット/デバッグ制御が実行され、未指定のRCWワードはどのように取得されるのか?入力された単語によって結果として得られるRCWが変更されない場合に、回復を可能にするアクションを特定したいと考えています。 4. RCW/PBI のレビュー: 上記の eMMC RCW と配置に何か問題はありますか?このカスタム構成に関して、追加の必須PBI操作や関連するシリコンエラータはありますか? 5. 次の決定的な測定: eMMC、SD、QSPI 全体にわたる症状を考慮すると、リセット/クロック/ストラップの問題をブートメディアの初期化、RCW の取得、または後続の PBI の実行から最も適切に分離できる測定または非侵襲的なレジスタキャプチャは何ですか? Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H 波形にHRESET_Bがアサートされていないが、これは想定外である。 AN12081のセクション5.1(SDカードを使用した起動プロセス)を参照してください。この文書ではSPL/U-Bootの起動フローについて説明していますが、現在のBL2/BL31の起動フローも非常によく似たハードウェア起動シーケンスに従っています。波形を図3と比較してください。 現在の観察結果に基づくと、リセット関連部品のハードウェアに問題がある可能性が高い。また、リセット設計をCPLDを使わないFRWY-LS1046Aと比較するのも有益かもしれません。 さらに、ASLEEP信号は起動プロセスにおいて重要な信号ですので、必ず確認してください。 ありがとうございます。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo テスト中のシーケンスキャプチャ   Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo ASLEEPは常に高く、コネクテッドLEDは常に点灯しています。 ハードウェアの再作業なしで2枚目のボードを使い、同じRCWでSDカードから起動しようとしましたが、電圧選択が変わったところ、HRESET_Bが低くなっているのが観察され、PORESET_Bを低から高に解放しました。 HRESET_B の急上昇は、PMIC PG と SoC が HRESET_B をローに駆動し始めた後の 1.8V プルアップによるものと予想されます。 現在、eMMC/SDのCMD、DATA、CLKを調べて、何らかのトランザクションが発生しているかどうかを確認しています。SoCがHRESET_Bをリリースするために満たすべき条件を教えていただけますか? 好奇心から、同じSDカードをls1046a_rdbボードに挿入して電源を入れてみたところ、ubootコンソールまで到達しました。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H 参照マニュアル LS1046A 4.4.1 電源オンリセットシーケンス ステップ5とステップ15の間に問題がある可能性があります。 HRESET_Bの出発点が明確に特定できないため、ステップ1から4までも確認する必要があります。 よろしくお願いします。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo こんにちは、 LS1046A リファレンス・マニュアルのセクション4.4.1を教えていただきありがとうございます。ステップ1~4とステップ5~15を確認し、測定値をAN12081のセクション5.1/図3~4と比較しています。 以下は、9月29日に実施したテストの最新情報と、QCVSで生成されたSD候補に関する9月30日のフォローアップです。確認のため、PORESET_B、HRESET_B、SD CMD、およびRESET_REQ_Bのオシロスコープ波形を添付いたします。   HRESET観測結果の更新 2台目のA1カスタム基板では、初期の基板のリセットなしにテストされ、PORESET_Bがリリースされる前にHRESET_Bが低くなるのが観察できます。これは、HRESET_Bが継続的にHIGHであった以前のキャプチャとは異なります。私たちは、その以前の波形をこの基板の代表的な波形として扱っていません。 現在の差動クロックSDテストの場合: スタンドアロンのコールドスタートアップ中、HRESET_BはPORESET_Bが上昇する前にLOWになり、その後もLOWのままです。BL2のコンソール出力は表示されません。 CodeWarriorのDebug/RCW適用後、HRESET_BがHIGHになります。 デバッガーは最初にPC=0で停止します。「続行」をクリックすると、BL2 → BL31 → U-Boot が実行されます。 添付のキャプチャデータ(SD CMDおよびRESET_REQ_Bアクティビティを含む)を、想定されるシーケンスと照らし合わせて解釈するお手伝いをお願いします。 下の写真ではSDカードを挿入しておらず、リセットリクエストが低くなっているのが確認できました。 (注:一部の画像では、誤ってsdコマンドではなくemmcコマンドと記載されています。) SDカード挿入でキャプチャ - スイッチはemmc/sdカードモードにストラップされています。 Captured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedSDカードを挿入した状態で、poreset_b、hreset_b、reset_request、vcc1v8を使用してキャプチャしました。 Captured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmdporeset_b、hreset_b、reset_request、sd_cmdを使用してキャプチャしました Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)poreset_b、hreset_b、sd_cmd、trst_b(JTAGリセット)を使用してキャプチャしました Captured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stallコールドスタートで停止した後、デバッグモードに入った後にキャプチャされた 新しいSD RCWテスト 外部SD/MMCブートを選択した状態(cfg_rcw_src=0x40)で、両方のSerDesブロックを無効にした新しいSDイメージを生成しました。100 MHz 差動プライマリ基準を選択し、ハードコードされたアクティブクロック比を採用しました。 0x9F 例えば、A1ピンマルチプレクサとSDブート/PBI構成を維持したまま。 これは ハードコードされたブートではない:完全なRCWとPBIはSDから取得する必要がある。メディア取得やPLLロックを回避するわけではありません。 設定値 一次資料 DIFF_SYSCLK/B、公称100MHz。 cfg_eng_use0=0 A1スイッチの位置 SW5 pole2 ON(差動クロック選択);SW8 poles1–8 0010 0000 (1=ON)(ブートソーススイッチストラップ) SYS_PLL_RAT 4→プラットフォーム 400 MHz CGA_PLL1_RAT 13 → CPU 1300 MHz CGA_PLL2_RAT 10 → PLL2 1000 MHz、FMan 500 MHz MEM_PLL_RAT 16 → DDR 1600 MT/s DDR_REFCLK_SEL / DDR_FDBK_MULT 1/2; 差動DDRリファレンス SRDS_PRTCL_S1 / SRDS_PRTCL_S2 0 / 0 SRDS_PLL_PD_S1 / SRDS_PLL_PD_S2 3/3; 各SerDesブロックで両方のPLLがダウン PBI_SRC / ブートホー 6 / 0 EVDD_VSEL 2. SD 3.3V構成 DIMM 4 GiB、単一ランク、64ビット非ECC DDR4;トレーニングシードはマージン適格ではありません   このテスト済みイメージで使用されている完全なRCWは、デバッガーによる介入後にも確認されており、以下のとおりです。 RCW01–04: 0810000d 0a000000 00000000 00000000 RCW05–08: 00000000 00f00012 60040000 c1000000 RCW09–12: 00000000 00000000 00000000 0001c83e RCW13–16: 00004504 24001102 00000096 00000001 結果: 地元の防寒ブーツ販売店はそのまま残っていた。デバッガ支援の後、U-BootはCPUが1300 MHz、プラットフォームが400 MHz、DDR 1600 MT/s、FManが500 MHzと報告し、意図された比率と一致しました。SDの初期化とFIPのロードに成功しました。  デバッガーの正確な介入と結果として生じる状態 初期化コールバックは、以下のRCW API操作のみを呼び出します。 from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13: 0x00004504}) target.rcw.apply() ワード13は、SDカードに既に保存されている値と同一です。このスクリプトには、明示的なDDR初期化、BRR/PC書き込み、またはContinueコマンドは含まれていません。 apply() デバッガ起動が内部的にリセット/デバッグ状態を変えることは認識しています。 デバッグ後、続行前に、以下を読みます。 PC = 00000000 PORSR1 @ 01ee0000 = 205b7fff RSTRQPBLSR @ 01ee00b4 = 00000000 RSTRQMR1 @ 01ee00c0 = 00004000 RSTRQSR1 @ 01ee00c8 = 00000000 BRR @ 01ee00e4 = 00000000 SCFG_SCRATCHRW0/1 = 00000000 / 10000000 DDR SDRAM_CFG = 07000000 (MEM_EN clear) 16個のRCWSR単語すべてが、テスト対象のSD画像と一致した。OCRAMの最初の64バイト 0x10000000 BL2のエントリーコードと一致しました。したがって、PC=0 で UART 出力がないことは、ハードウェア PBL が進行していないことを意味するものではありません。BL2/BL31/U-Bootを実行するには、Continueのみで十分でした。この実行では、BRRへの手動書き込みは使用していません。 これらは 介入後の測定値であり、元の停滞状態は維持されていない。我々は、それらのゼロエラー値を用いて、最初のコールド試行にPBL/クロック/リセットエラーがなかったと結論付けるつもりはない。 画像配置と正確なPBI設定 当社のSDパッケージとeMMCパッケージの両方で512バイトセクタを使用しています: RCW/PBI/BL2 .pbl: LBA 0x8、バイトオフセット 0x1000。 fip_uboot.bin BL31とU-Bootを含む:LBA 0x800、バイトオフセット 0x100000。 eMMCの場合、これらはユーザーエリアのオフセットであり、boot0/boot1ではありません。SDカードの全ディスクイメージは、これらのオフセット位置でバイト単位でチェックされています。また、以前のeMMCへの書き込みも、読み出し時のSHA-256検証に合格しています。 テスト対象のSD PBLにおける正確なセットアップストリームは以下のとおりです。各行は シリアル化された PBI コマンド ワードとそのデータ ワードがストリーム順で続きます。これらはデバッガのメモリ書き込みコマンドではありません。 09570600 00000000 09570604 10000000 09570178 0000e010 09180000 00000008 09570418 0000009e 0957041c 0000009e 09570420 0000009e 09570158 00001000 09610000 00000000 096100c0 000fffff 09570604 10000000 09570158 00001000 096100c0 000fffff これには、スクラッチブートポインタ、継承された相互接続/USB設定、フラッシュおよび同期操作が含まれます。繰り返し行われる操作は保持されます。PCIeセットアップ書き込みはありません。その後、ストリームにはOCRAMへの844回のACS64転送が含まれます。これは、53,953バイトのBL2と63バイトのゼロパディングで構成されます。テストされたPBLは、 08610040 6d8bdebf (END/CRC)であり、合計サイズは57,576バイトです。 また、本日、QCVSを使用して独自にPBLを生成しました。解析とCRC検証の結果、そのPBI操作とBL2ペイロードはテスト対象のイメージと同一であることが判明した。私たちは意図的にRCW12を変更しました 0001c83e に 0001a8fe (睡眠=0、 RTC=1、 IRQ_BASE=63); そのワードとCRCだけが異なります。そのSHA-256ハッシュ値は以下のとおりです。 2d3389fce4ead088957caf6251022b5526be8565e812a8aab8fce21bd8923277 9月30日更新: 新たに生成されたQCVSのSD候補をテストしたところ、再びネイティブコールドブートの停止が発生しました。したがって、PBLを実際のQCVSエクスポートに置き換えても、症状は解消されませんでした。PBIおよびBL2のペイロードは前の画像と同一のままであるため、共有設定の問題を否定したり、原因がハードウェアにあることを否定するものではありません。 上記の詳細なHRESET/レジスタ読み取り値と確認済みのアシスト成功シーケンスは、以前のRCW12=0001c83eを参照しています。 走る。最新のRCW12=0001a8feのデバッガリカバリ結果と詳細な波形 このアップデートには、まだ実行機能が追加されていません。 指導を要請 PORリリース前にHRESET_Bアサートされ、その後はLOWのままの場合、RCWフェッチ/検証の失敗とPLLロック、またはステップ11〜14でのプラットフォームクロック切り替えを区別する最良の測定値は何でしょうか?ステップ1~4では、電源、時計、ストラップの初期状態についても引き続き確認していきます。 ステップ15はSoCのHREETドライブを解放し、ステップ17はPBIを実行するため、外部HREETドライバーや短いリリース・再アサーションを除外した場合、初期段階を優先するのは合理的でしょうか?上記のRCWおよびPBIも、未構成や誤った設定がないか確認してください。 CCS/SAPは、RHETが低のままの状態で、RCW適用や再度リセットせずにネイティブリセット/PBLステータスや文書化されたPLL-ロック状態にアクセスできるのでしょうか?アクセスの正確なコンテキスト、コマンド、レジスタ/ビットの定義を教えてください。Ordinary Inspectはこれまで、この状態のCortexA72#0を検出できませんでした。 具体的に何が set_source(0x40) さらに、対応する単語13のオーバーライドと 適用する() リセット、TRST、デバッグコントロールを実行するにはどうすればいいですか?最終的なRCWの内容を変更せずに起動を可能にする動作を特定したいと考えています。 生成されたPBL、完全なUART/デバッガーログ、追加のスコープキャプチャも提供可能です。自動冷却起動ではブリングアップがブロックされているので、次の識別テストについてのアドバイスをいただけると大変ありがたいです。 また、自己テストとして、SD カードや空の eMMC がない状態で 0x9e または 0x9f をストラップすると、POREST_B が 0 から 1 に解放されたときに HRESET_B が低から高に変化することが確認できると教えられました。RDBボードでこれをキャプチャしようと試み、これを観察することができました。では、カスタムボード上で同じことをしても同じ挙動が観察されるということですか? よろしくお願いします。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo こんにちは、 @Hiran_E_H さん。 1.現在の情報からはRCWの負荷問題とPLLロックの問題を明確に区別するのは難しいです。しかし、CCSがデバイスに正常にアクセスでき、PLL関連の波形が正常に見える場合、PLLの問題の可能性は低くなる可能性があります。 スタンドアロンのコールドブートとCCS支援ブートのSDコマンド波形を比較することをお勧めします。特に、波形の長さと順序を比較して、RCWロード中に異常がないか判断してください。 また、SDカードのクロックが起動プロセス中の予想される周波数遷移を反映しているかを確認するために、リファレンス・マニュアル表4-8の「RCW状態タイミング」を参照することもできます。これらの遷移は、RCWの読み込みが成功し、適切なPLLロックが行われていることに依存します。 2.はい、あなたのやり方に賛成です。入手可能な情報に基づくと、まずはステップ1から15、特に初期の電源、クロック、リセット、ブートソース関連の段階に焦点を当てるのが妥当でしょう。 3. 以下のCCSコマンドを試して、デバイスがこの状態のままではLS1046Aにアクセスできるか確認できます。例えば、RCWSRレジスタの読み取りを試みることができます: (bin) 1%すべて削除 (bin) 2 % config cc cwtap (バイナリ)3%表示cc (bin) 4 % ccs::config_chain {ls1043a dap sap2} (bin) 5% 表示 ::ccs::get_config_chain (bin) 6 % ccs::display_mem 32 0x01ee0000 4 0 100 もっと行を表示 4. リファレンス・マニュアルの表4-8「RCW状態タイミング」を参照し、SDカードのクロックがRCWプロセッシング中の予想される周波数変化を反映しているかどうかを確認できます。 起動シーケンス中に、関連する波形を確認することをお勧めします。 実際には、初期デバッグ段階では通常、ハードコードモードを使用します。さらに、ボードをハードコーディングされたRCWで設定し、観測波形が図4-1「電源オンリセットシーケンス」に記載されている順序に従っているかを検証することもできます。波形が期待される挙動に合致していれば、リセット関連のハードウェア設計は一般的に正しく動作している可能性が高いです。 私は1週間以上OoOのままでいるので、この期間中は私の方からの更新はありません。 もしこの問題が緊急の場合は、別のチームメンバーがサポートできるように新しいスレッドを作成してください。 よろしくお願いします。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo こんにちは、 ccsコンソールから読み取ろうとしましたが、コールドブート中に以下の応答が返ってきました。 (bin) 7 % ccs::display_mem 2 0x01ee0000 4 0 1 スキャンタイムアウト ASLEEP信号に関してキャプチャを試みたところ、以下の観測結果が得られました。 SD CLKが約200kHzから約20kHzに低下する(フォールバックの可能性あり) SD DATA0は200kHzの間は常にハイレベルであり、クロックが20kHzに低下する直前にいくつかのトランザクションが発生します。
View full article
i.MXRT1052に基づくPXP画面回転の問題 rt1052PXPを使って横向き表示を縦向き表示に回転させているのですが、ページを更新すると全体の表示が下方向にずれてしまいます。なぜこのようなことが起こるのでしょうか?   static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) ヤージュ lv_area_t dest_area = ヤージュ .x1= 0、 .x2= 480 - 1、 .y1= 0、 .y2= 800 - 1、 }; lv_gpu_nxp_pxp_blit(((lv_color_t *)s_inactiveFrameBuffer), area, 800, color_p, area,480, LV_OPA_COVER, LV_DISP_ROT_270); DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE); ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)s_inactiveFrameBuffer); s_framePending = true;if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE) ヤージュ /* 重要!!! * グラフィックライブラリに、フラッシュの準備ができたことを通知します */ lv_disp_flush_ready(disp_drv); } それ以外 ヤージュ PRINTF("ディスプレイのフラッシュに失敗しました\r\n"); assert(0); } }   i.MXRT 105x 回复: 基于i.MXRT1052的pxp屏幕旋转问题 こんにちは、 @dsd さん。 このLV_USE_GPU_NXP_PXP_AUTO_INITにより、LVGLはPXPユーザーを内部ウィジェットレンダリングに活用できますが、アプリケーションがこのPXPを並列で全画面回転に使う場合、問題を引き起こす可能性があります。しかし、それが問題の原因である可能性は低い。 初期のコードを見ると、dest_areaを使っていないか、PXPブリットのソースと宛先の両方にエリアを使っているように見えます。つまり、部分的な汚れた領域だけが意図された絶対位置ではなく、異なる絶対位置に配置されている可能性があります。 回复: 基于i.MXRT1052的pxp屏幕旋转问题 PXPで描画する際にオフセットの問題が発生することに気づきました。これは、guiguiderによって生成されるデフォルトの初期化設定`#define LV_USE_GPU_NXP_PXP_AUTO_INIT 1`が直接使用できないためでしょうか? void lv_disp_drv_init(lv_disp_drv_t * driver) ヤージュ lv_memset_00(driver, sizeof(lv_disp_drv_t)); driver->hor_res = 320; driver->ver_res = 240; driver->physical_hor_res = -1; driver->physical_ver_res = -1; driver->offset_x = 0; driver->offset_y = 0; driver->antialiasing = LV_COLOR_DEPTH > 8 ? 1 : 0; driver->screen_transp = 0; driver->dpi = LV_DPI_DEF; driver->color_chroma_key = LV_COLOR_CHROMA_KEY; #if LV_USE_GPU_NXP_PXP // driver->draw_ctx_init = lv_draw_pxp_ctx_init; // driver->draw_ctx_deinit = lv_draw_pxp_ctx_deinit; // driver->draw_ctx_size = sizeof(lv_draw_pxp_ctx_t); driver->draw_ctx_init = lv_draw_sw_init_ctx; driver->draw_ctx_deinit = lv_draw_sw_init_ctx; driver->draw_ctx_size = sizeof(lv_draw_sw_ctx_t); #それ以外 driver->draw_ctx_init = lv_draw_sw_init_ctx; driver->draw_ctx_deinit = lv_draw_sw_init_ctx; driver->draw_ctx_size = sizeof(lv_draw_sw_ctx_t); #endif } 回复: 基于i.MXRT1052的pxp屏幕旋转问题 pxp回転を使わなくても、guiguiderで生成されたコードを使ってテストしてみました。 static void DEMO_FlushDisplay(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) ヤージュ DCACHE_CleanInvalidateByRange((uint32_t)color_p, DEMO_FB_SIZE); ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)color_p); s_framePending = true; if (xSemaphoreTake(s_frameSema, portMAX_DELAY) == pdTRUE) ヤージュ /* 重要!!! * グラフィックライブラリに、フラッシュの準備ができたことを通知します */ lv_disp_flush_ready(disp_drv); } それ以外 ヤージュ PRINTF("ディスプレイのフラッシュに失敗しました\r\n"); assert(0); } } マクロ /*NXPのPXP GPU iMX RTxxxプラットフォームを使用する*/ を修正するだけです。 #define LV_USE_GPU_NXP_PXP 1 #if LV_USE_GPU_NXP_PXP /*1: PXP 用のデフォルトのベアメタルおよび FreeRTOS 割り込み処理ルーチンを追加します (lv_gpu_nxp_pxp_osa.c) * lv_init() の実行中に lv_gpu_nxp_pxp_init() を自動的に呼び出します。シンボルSDK_OS_FREE_RTOSに注意してください。 * FreeRTOS OSAを使用するには、これを定義する必要があります。定義しない場合は、ベアメタル実装が選択されます。 *0: lv_gpu_nxp_pxp_init() は lv_init() の前に手動で呼び出す必要があります / #define LV_USE_GPU_NXP_PXP_AUTO_INIT 1 #endif /* LV_USE_GPU_NXP_PXP */ 同じ問題が発生し、オフセットの方向は回転後と同じになります。 回复: 基于i.MXRT1052的pxp屏幕旋转问题 さらに奇妙なことに、設定は同じはずなのに、同じプロジェクト内で2つの異なる結果が出てしまったのです。 表示オフセットは発生しませんでした 表示オフセットが発生します    
View full article
MCXN547 SC Timer0 SDK driver Issue I am using MCXN547VKL MCU and SDK version 26.06.00.  Context: I am using SCT timer0  to generate two different PWM waveform using the COUNTER in split mode, CONFIG[UNIFY] = 0; i.e COUNT_L for one PWM generator and COUNT_H for another PWM generator. The issue: When I load the COUNTER_H with the driver API "SCTIMER_SetCOUNTValue(SCT0,kSCTIMER_Counter_H,0U);" , Bus Fault occurs.  I traced the issue to SDK driver code. The driver code uses 32 bit write to write both COUNT_H and COUNT_L instead of 16 bit write to COUNT_H alone. While the COUNT_H is being written COUNT_L was running and this caused bus fault. I modified the SDK driver code to use 16 bit write and the bus fault did not occur. I have attached the driver code and marked with colours, the code line which was causing the problem and the fix. If this is really the problem, the SDK driver can be updated. - Thanks /*! * @brief Set the value of counter. * * The function is to set the value of Count register, Writing to the COUNT_L, COUNT_H, or unified register * is only allowed when the corresponding counter is halted (HALT bits are set to 1 in the CTRL register). * * @param base SCTimer peripheral base address * @param whichCounter SCTimer counter to use. In 16-bit mode, we can select Counter_L and Counter_H, * In 32-bit mode, we can select Counter_U. * @param value the counter value update to the COUNT register. */ static inline void SCTIMER_SetCOUNTValue(SCT_Type *base, sctimer_counter_t whichCounter, uint32_t value) { SCTIMER_StopTimer(base, (uint32_t)whichCounter); switch (whichCounter) { case kSCTIMER_Counter_L: assert(value <= 0xFFFFU); assert(0U == (base->CONFIG & SCT_CONFIG_UNIFY_MASK)); /* Use Counter_L bits when user wants to setup the Low counter */ base->COUNT_ACCESS16BIT.COUNTL = (uint16_t)value; break; case kSCTIMER_Counter_H: assert(value <= 0xFFFFU); assert(0U == (base->CONFIG & SCT_CONFIG_UNIFY_MASK)); /* Use Counter_H bits when user wants to setup the High counter */ // base->COUNT = (uint32_t)base->COUNT_ACCESS16BIT.COUNTL | SCT_COUNT_CTR_H(value); base->COUNT_ACCESS16BIT.COUNTH = (uint16_t)value; //the fix break; case kSCTIMER_Counter_U: assert(1U == (base->CONFIG & SCT_CONFIG_UNIFY_MASK)); /* Use both Counter_L/Counter_H bits when counter is operating in 32-bit mode (unify counter). */ base->COUNT = value; break; default: /* Fix the MISRA C-2012 issue rule 16.4. */ break; } SCTIMER_StartTimer(base, (uint32_t)whichCounter); } Clock|Timers Re: MCXN547 SC Timer0 SDK driver Issue Hi @JawaharA  Thank you for your feedback. Your analysis of the cause of the Bus Fault is correct: updating COUNT_H uses a 32-bit write to the COUNT register, but the current function halts only the H counter. If the L counter is still running, this write access triggers an SCT bus error. However, changing the access to a 16-bit write to COUNTH is not compliant with the SCT hardware access requirements, because COUNT_H must be written as a word together with COUNT_L . The correct software solution is to halt both the L and H counters before performing the 32-bit write to COUNT , and then restore their previous running states afterward. We recommend reviewing and updating the SDK accordingly rather than using a separate 16-bit write to COUNT_H . BR Harry Re: MCXN547 SC Timer0 SDK driver Issue Hi Harry, Thanks for your quick response. As per the manual page you referenced in your response, if CONFIG[UNIFY] = 0, then both COUNT_L and COUNT_H registers can be read or written individually while the respective counters are not running. The SDK does use 16 bit write for COUNT_L register. COUNT_H register should be written using 32bit write irrespective of CONFIG[UNIFY] - is this an undocumented condition? Thanks - Jawahar
View full article
MPXV7002DP compatibility with LPG and Propane Hello, i am a student in my final year. i am currently working on a project where i have to measure the pressure difference in household LPG line. the normal pressure in the line is around 2.30 kPa to 3.60 kPa . i checked the data sheet of it but there is nothing clear about LPG compatibility. So if anyone tried this in past or any technical official can tell me about it . thanks . Re: MPXV7002DP compatibility with LPG and Propane Hello, As of February 2, 2026, the NXP MEMS Sensor products have been transferred to STMicroelectronics. Please reach out to STMicroelectronics for further information and support.
View full article
LS1046A 定制板:从 eMMC、SD 和 QSPI 冷启动失败;CodeWarrior RCW 应用启用 U-Boot 你好, 我们正在开发一款基于 LS1046ARDB 设计的定制 LS1046A 板。自主冷启动失败,但 CodeWarrior/QCVS 干预允许处理器到达 BL2、BL31 和 U-Boot 控制台。我们发现 eMMC、SD 卡和 QSPI 或非 存在冷启动失败的情况,因此我们希望得到有关隔离常见 RESET/时钟/PBL 路径的指导。 平台及与LS1046ARDB的区别 项目自定义板配置 处理器 LS1046AE Rev. 1.0;U-Boot 报告 SVR 0x87070010 电源/RESET 控制 无CPLD。STM32 BMC、PCA9539 I/O 扩展器、电平转换器和分立 RESET 电路实现了时序控制和 SD/eMMC 选择。 DDR 4 GiB,单列,64 位非 ECC DDR4,已初始化 1600吨/秒。这与我们 RDB 对比中使用的 8 GiB ECC 配置不同。DDR 初始化在辅助启动后成功;完整的内存裕度鉴定仍在进行中。 时钟 100 MHz 主参考;工作辅助配置采用单端 SYSCLK 选择。DDR 使用差分参考路径。U-Boot 报告 CPU 频率为 1800 MHz,平台频率为 600 MHz,FMan 频率为 700 MHz。 eMMC 宏碁 MX52LM08A11XVI,与 RDB 设备不同。U-Boot 识别制造商 0xc2,名称 M08A11,MMC 5.1,用户容量约为 7.3 GiB。 SD/eMMC接口 BMC 控制选择和 EVDD:eMMC 为 1.8 V,SD 为 3.3 V。 QSPI 或非 S25FS512S,每个设备 64 MiB。该电路板上的 或非 检测成功。 其他外围设备 自定义以太网/PHY路由和SerDes配置;未使用PCIe设备。 软件 基于 TF-A v2.12.0 的 A1 特定板/设备树更改 lf-6.12.49-2.2.0,U-Boot 2025.04。U-Boot 启动时禁用监视程序。 在本次调查中,复位网络也进行了重新设计:隔离了竞争的处理器-POR 驱动程序分支,断开了直接的 BMC 到 TRST 驱动程序,并安装了硬件 POR/TRST 耦合路径。BMC 的 HRESET 传感功能保持连接。 最新的原生冷启动观察 我们发现并纠正了 BMC 序列中一个意外的早期 SoC RESET。在随后的示波器捕获中,我们从一个完全关机、没有任何 CodeWarrior 或 QCVS 操作的启动状态开始: - 当 BMC 释放处理器复位时,PORESET_B 上升。 - eMMC CLK 和 CMD 活动在该边沿之后开始。 - 没有正常的 BL2/U-Boot 控制台输出。早期的一些尝试只产生了乱码 UART 字符。 - 标记为 HRESET_B 的轨迹保持高电平,大约 1.8 V;在捕获的 eMMC 活动之前或期间,我们没有观察到低电平断言。BMC HRESET 输入端也反复读取高电平。 CodeWarrior/QCVS行为 在冷启动停滞期间,CodeWarrior Inspect 可以报告在 JTAG 链上找不到“CortexA72#0”,并建议检查 RCW 或启用 RCW 覆盖。 但是,启用 RCW 应用后点击调试,或者通过 QCVS 应用 RCW,就可以启动。有时 UART 连接到 U-Boot 时,Debug 会报告“核心未处于调试模式”。在其他尝试中,目标程序会停止运行,而 `continue` 命令允许启动完成。 我们将初始化脚本简化为: from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13:0x00004504}) target.rcw.apply() 物理绑带设置为 SD/eMMC 源“0x40”。提供的字 13 与 eMMC 中已存储的值相同。这个简化的脚本还启用了辅助启动功能。使用相同的单词“set_source(0x9E)”进行的单独测试也成功了。 在这个精简的脚本中,没有显式的 DDR 初始化、BRR、PC、SCTLR 或恢复操作。我们认识到“rcw.apply()”和调试器启动框架仍然可以执行内部重置/运行控制操作;这不是被动附加。 经过协助,所有 16 个 RCWSR 单词都与预期的媒体 RCW 相符。BL2 存在于 OCRAM 中,并且检测启动链完成了 DDR 初始化、eMMC/FIP 加载、BL31 和 U-Boot。干预后“RSTRQPBLSR”读数为零,但我们并不认为这些读数捕获了原始的冷失效状态。 已进行的测试 测试观察 从 eMMC 启动 无法自主启动控制台;需要通过调试器辅助恢复才能到达 U-Boot。 从 SD 卡启动本机模式 尽管 BMC 检测到/选择了 SD 卡,但仍然出现类似的冷启动失败;可以进行辅助启动。 从 QSPI NOR 接口启动 最新测试也显示冷启动失败。我们尚未确定这三种媒体都止步于同一内部阶段。 独立组网 (SA) 硬编码源带 0x9E 和 0x9F 后续测试未能获得预期的独立组网 (SA) RESET 进程。我们明白,仅靠硬编码的 RCW 并不能构成完整的 U-Boot 启动映像。 启用安全 RCW 的库存 RDB 初始化 允许恢复,但也会修改 DDR、CPU 状态和外围设备,因此这不是一个孤立的测试。 以上是最简应用脚本 即使第 13 个字等于存储的值,也可以使用源请求进行恢复。 0x9E 和 0x40。 QCVS RCW 测试/回读 测试通过,干预后读取结果与预期配置相符。原生获取功能仍未经验证。 移除了三个继承的 PCIe PBI 访问 原生冷启动性能没有改进。 禁用 SerDes2 后,两个 SerDes 模块都会被阻塞。 没有改善。辅助 U-Boot 日志证实了修改后的 RCW 字样。 DDR诊断 在协助下,SPD 读取和 4 GiB 初始化以 1600 MT/s 的速度成功;这不是完整的裕量测试。 新增 BL2/BL31/U-Boot 里程碑日志记录 辅助启动完成所有阶段。原生故障不会给出第一个 BL2 里程碑;这些日志无法追踪硬件 PBL 本身。 eMMC RCW 和图像放置 启用 SerDes 的 eMMC 基线为: 0c100012 0e000000 00000000 00000000 13335a06 40400012 60040000 c1000000 00000000 00000000 00000000 0001c83e 00004504 24001002 00000096 00000001 在同时禁用SerDes的实验中,只有以下几个词发生了变化: RCW05 = 00000000 RCW06 = 00f00012 在 eMMC 用户区,扇区大小为 512 字节: 组件起始 LBA 字节偏移量 RCW + PBI + BL2 容器 (bl2_emmc.pbl) 0x8 0x1000 包含 BL31 和 U-Boot 的 FIP 0x800 0x100000 FMan 微码 0x4800 0x900000 读取写入的 PBL/BL2 和 FIP 区域,发现它们的 安全散列算法(SHA)-256 值与这些测试中传输的文件相匹配。PBI 流已解码并进行了 CRC 校验。它设置 OCRAM 启动位置,执行继承的 NXP 互连/USB 准备和 PBL 同步操作,并将 BL2 复制到 OCRAM 中。移除 PCIe 寄存器访问并没有解决卡顿问题。DDR 初始化稍后由 BL2 执行。 我们还读取了 eMMC `EXT_CSD[162] = 0x00` 和 `EXT_CSD[179] = 0x00`;我们没有对这些设置进行不可逆转的更改。 请求指导 1. HRESET 时序:相对于 PORESET_B、有效参考时钟和初始 eMMC 事务,LS1046A 应该在哪个点将 HRESET_B 置低?如果处理器端探测确认没有低电平有效,我们应该首先检查哪个 RESET、时钟、电源域、跳线或测试模式条件? 2. 捕获前干预:是否有受支持的 CodeWarrior/CCS 系统访问端口程序,可以在 A72 内核被发现之前读取停滞的 PBL/DCFG/eSDHC 状态,而无需 RESET 或 RCW 覆盖?请提供所需的访问上下文、命令和最有用的状态/错误寄存器。 3. RCW 应用语义:`rcw.apply()` 究竟执行什么操作?如何处理源“0x40”或“0x9E”以及仅提供一个单词的情况?执行哪些 RESET/调试控制?如何获得未指定的 RCW 字?我们想要确定当提供的单词不会改变生成的 RCW 时,允许恢复的操作。 4. RCW/PBI 审查:上述 eMMC RCW 和位置是否揭示了任何问题?对于这种自定义配置,是否存在额外的强制性 PBI 操作或相关的芯片勘误? 5. 下一个决定性测量:鉴于 eMMC、SD 和 QSPI 的症状,哪种测量或非侵入式寄存器捕获能够最好地区分 RESET/时钟/跳线问题与启动介质初始化、RCW 获取或后续 PBI 执行? Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H 波形中未钳位 HRESET_B,这不符合预期。 请参阅AN12081中的第 5.1 节(使用 SD 卡启动过程)。虽然该文档描述了 SPL/U-Boot 流程,但当前的 BL2/BL31 流程遵循非常相似的硬件启动顺序。请将您的波形与图 3 进行比较。 根据目前的观察结果,怀疑是与 RESET 相关部件有关的硬件问题。将您的 RESET 设计与 FRWY-LS1046A 进行比较也可能有所帮助,因为 FRWY-LS1046A 不使用 CPLD。 此外,请检查 ASLEEP 信号,因为它是启动过程中的一个重要信号。 谢谢。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo 测试期间的序列捕获   Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H 请参阅LS1046A 参考手册,4.4.1 节“上电复位顺序” 步骤 5 和步骤 15 之间可能存在问题。 由于无法明确识别 HRESET_B 的起始点,因此还应检查步骤 1 至 4。 谢谢! Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo ASLEEP 始终处于高电平,因为连接的 LED 始终处于开启状态。 我们取了第二块板,没有进行任何硬件改造,尝试从 SD 卡启动,RCW 相同,只是电压选择有所改变,结果发现 HRESET_B 在 PORESET_B 从低电平变为高电平之前就已经变为低电平。 我们预期的 HRESET_B 尖峰是由于 PMIC PG 和 SoC 开始将 HRESET_B 拉低后,1.8v 上拉所致。 目前我们正在探测 emmc/SD CMD、DATA 和 CLK,以查看是否有任何事务正在发生。请问SoC释放HRESET_B需要满足哪些条件? 出于好奇,我们将同一张 SD 卡插入 ls1046a_rdb 板,并尝试开机,结果成功进入了 uboot 控制台。 Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo 你好, 感谢您指出 LS1046A 参考手册第 4.4.1 节。我们正在检查步骤 1-4 以及步骤 5-15,并将我们的测量结果与 AN12081 第 5.1 节/图 3-4 进行比较。 以下是我们 9 月 29 日测试的最新结果,以及 9 月 30 日对 QCVS 生成的 SD 候选方案的后续跟进。我们将附上 PORESET_B、HRESET_B、SD CMD 和 RESET_REQ_B 的示波器捕获以供查看。   更新的HRESET观测 在第二块 A1 定制板上,最初测试时没有对之前的板进行 RESET 修改,我们可以观察到 HRESET_B 在 PORESET_B 释放之前变为低电平。这与之前的捕获结果不同,之前的捕获结果中 HRESET_B 一直处于高电平状态。我们不认为之前的波形能够代表这块电路板的波形。 针对当前的差分时钟 SD 测试: 在独立组网 \(SA\) 冷启动期间,HRESET_B 在 PORESET_B 上升之前为低电平,之后保持低电平。BL2控制台未显示任何输出。 应用 CodeWarrior Debug/RCW 后,HRESET_B 变为高电平。 调试器最初在 PC=0 处停止。点击“继续”后,BL2 → BL31 → U-Boot 将开始运行。 请帮助我们根据预期序列解读附件中的捕获结果,包括 SD CMD 和 RESET_REQ_B 活动。 下图所示——我们没有插入 SD 卡——因此我们可以看到 RESET 请求变为低电平。 (注:部分图片中误将 emmc 命令写成了 SD 命令) 插入 SD 卡后捕获 - 切换至 eMMC/SD 卡模式。 Captured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card inserted使用 poreset_b、hreset_b、reset_request 和 vcc1v8 捕获,并插入 SD 卡。 Captured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmd使用 poreset_b、hreset_b、reset_request、sd_cmd 捕获 Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)使用 poreset_b、hreset_b、sd_cmd、trst_b(jtag 重置)捕获 Captured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stall冷启动停滞后进入调试模式时捕获 新的 SD RCW 测试 我们保持外部 SD/MMC 启动选项 (cfg_rcw_src=0x40),并生成了一个新的 SD 映像,其中两个 SerDes 块均已禁用。我们选择了 100 MHz 差分主参考频率,并采用了硬编码中的有效时钟比率。 0x9F 例如,同时保留 A1 引脚复用和 SD 启动/PBI 配置。 这是 非硬编码启动:仍需从 SD 卡获取完整的 RCW 和 PBI。我们并没有绕过媒体采集或PLL锁定。 设置值 主要参考 DIFF_SYSCLK/B,标称 100 MHz; cfg_eng_use0=0 A1 开关位置 SW5 极点 2 开启(差分时钟选择);SW8 极点 1–8 0010 0000 (1=开启)(启动源开关带) SYS_PLL_RAT 4 → 平台 400 MHz CGA_PLL1_RAT 13 → CPU 1300 MHz CGA_PLL2_RAT 10 → PLL2 1000 MHz;FMan 500 MHz MEM_PLL_RAT 16 → DDR 1600 MT/s DDR_REFCLK_SEL / DDR_FDBK_MULT 1/2;差分DDR参考 SRDS_PRTCL_S1 / SRDS_PRTCL_S2 0 / 0 SRDS_PLL_PD_S1 / SRDS_PLL_PD_S2 3/3;每个SerDes模块中的两个PLL均已关闭 PBI_SRC / BOOT_HO 6/0 EVDD_VSEL 2、SD 3.3V 配置 DIMM 4 GiB,单列,64 位非 ECC DDR4;训练种子未经过裕量限定   经调试器干预后,此测试镜像中使用的完整 RCW 为: RCW01–04: 0810000d 0a000000 00000000 00000000 RCW05–08: 00000000 00f00012 60040000 c1000000 RCW09–12: 00000000 00000000 00000000 0001c83e RCW13–16: 00004504 24001102 00000096 00000001 结果: 本地冷启动停滞仍然存在。在调试器的帮助下,U-Boot 报告 CPU 频率为 1300 MHz,平台频率为 400 MHz,DDR 内存频率为 1600 MT/s,FMan 内存频率为 500 MHz,与预期比例相符。SD初始化和FIP加载成功。  精确的调试器干预和结果状态 初始化回调函数仅调用以下 RCW API 操作: from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13: 0x00004504}) target.rcw.apply() 第 13 个单词与 SD 卡上已存储的值相同。该脚本没有显式的 DDR 初始化、BRR/PC 写入或 Continue 命令。我们认识到 申请() 调试器启动时可能会在内部改变复位/调试状态。 在“调试”之后,“继续”之前,我们读到: PC = 00000000 PORSR1 @ 01ee0000 = 205b7fff RSTRQPBLSR @ 01ee00b4 = 00000000 RSTRQMR1 @ 01ee00c0 = 00004000 RSTRQSR1 @ 01ee00c8 = 00000000 BRR @ 01ee00e4 = 00000000 SCFG_SCRATCHRW0/1 = 00000000 / 10000000 DDR SDRAM_CFG = 07000000 (MEM_EN clear) 所有 16 个 RCWSR 字都与测试的 SD 图像匹配。OCRAM 的前 64 个字节 0x10000000 与其 BL2 入口代码匹配。因此,PC=0 时 UART 输出的缺失并不意味着硬件 PBL 没有取得进展。仅使用 Continue 就足以运行 BL2/BL31/U-Boot;本次运行未使用手动 BRR 写入。 这些都是 干预后读数,未保留原生停滞状态。我们并没有使用它们的零误差值来得出结论,即最初的冷启动尝试没有 PBL/时钟/RESET 错误。 图像放置和精确的 PBI 设置 我们的 SD 和 eMMC 存储卡都使用 512 字节扇区: RCW/PBI/BL2 .pbl:LBA 0x8,字节偏移量 0x1000。 fip_uboot.bin 包含 BL31 和 U-Boot:LBA 0x800,字节偏移量 0x100000。 对于 eMMC 而言,这些是用户区域的偏移量,而不是 boot0/boot1 的偏移量。已在这些偏移量处逐字节检查了 SD 整个磁盘映像;早期的 eMMC 写入也通过了回读 安全散列算法 (SHA)-256 验证。 下面就是测试的 SD PBL 中的确切设置流程。每一行都是 按流顺序序列化的 PBI 命令字及其数据字;这些不是调试器内存写入命令: 09570600 00000000 09570604 10000000 09570178 0000e010 09180000 00000008 09570418 0000009e 0957041c 0000009e 09570420 0000009e 09570158 00001000 09610000 00000000 096100c0 000fffff 09570604 10000000 09570158 00001000 096100c0 000fffff 这包括暂存启动指针、继承互连/USB 设置、刷新和同步操作。重复操作将被保留。没有 PCIe 设置写入操作。然后,该流包含 844 次 ACS64 传输到 OCRAM:53,953 字节的 BL2 加上 63 个零填充字节。测试的PBL以……结束 08610040 6d8bdebf (END/CRC),其总大小为 57,576 字节。 今天我们也独立地使用QCVS生成了PBL。解析和 CRC 验证发现其 PBI 操作和 BL2 有效载荷与被测图像相同。我们特意将 RCW12 从 0001c83e 到 0001a8fe (睡眠=0, RTC=1, IRQ_BASE=63);只有该字和 CRC 不同。其 SHA-256 值为: 2d3389fce4ead088957caf6251022b5526be8565e812a8aab8fce21bd8923277 9月30日更新: 我们测试了较新的 QCVS 生成的 SD 候选版本,再次遇到了原生冷启动停滞的问题。因此,用实际的 QCVS 导出文件替换 PBL 文件并没有解决该问题。其 PBI 和 BL2 有效载荷与前一个映像相同,因此这并不能排除共享配置问题,也不能证明原因是硬件问题。 上述详细的 HRESET/寄存器读数和已确认的辅助成功序列指的是之前的 RCW12=0001c83e 跑步。最新RCW12=0001a8fe的调试器恢复结果和详细波形 本次更新尚未添加运行功能。 请求指导 在 POR 释放之前 HRESET_B 置位,但之后保持低电平的情况下,哪些测量方法能够最好地区分步骤 11-14 中的 RCW 取指/验证失败与 PLL 锁定或平台时钟切换?我们还将继续在步骤 1-4 中检查早期电源/时钟/表带状况。 由于步骤 15 会释放 SoC 的 HRESET 驱动程序,而步骤 17 会执行 PBI,那么在排除外部 HRESET 驱动程序或短暂的释放/重新断言操作的情况下,优先执行前面的步骤是否合理?另请检查上述 RCW 和 PBI,查看是否存在任何缺失或错误的配置。 当 HRESET 保持 LOW 状态,而没有应用 RCW 或进行其他 RESET 时,CCS/SAP 能否访问本地 RESET/PBL 状态或已记录的 PLL 锁定状态?请提供确切的访问上下文、命令和寄存器/位定义。普通检查之前未能在此状态下找到 CortexA72#0。 究竟是什么? 设置源(0x40) 加上匹配的 word-13 覆盖和 申请() 如何重置、TRST 和调试控件?我们希望找到允许启动而不改变最终 RCW 内容的操作。 我们可以提供生成的 PBL、完整的 UART/调试器日志和额外的示波器捕获数据。自主冷启动时无法启动,因此非常感谢您能提供关于下一个鉴别测试的指导。 另外,有人告诉我,作为自测,如果我们不插入 SD 卡或空白 eMMC 就给 0x9e 或 0x9f 上施加电压,当 POREST_B 从 0 释放到 1 时,我们将能够看到 HRESET_B 从低变为高。我们尝试在 RDB 板上捕获此信息,并观察到了这一点。那么,如果我们在自定义电路板上进行同样的操作,是否也会观察到相同的行为? 谢谢! Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo 嗨@Hiran_E_H 1.根据目前的信息,很难明确区分RCW加载问题和PLL锁定问题。但是,如果CCS能够成功访问设备,并且PLL相关的波形看起来正常,则PLL问题的可能性较低。 我建议比较独立冷启动和 CCS 辅助启动时的 SD 命令波形。尤其要比较波形的持续时间和顺序,以确定 RCW 加载过程中是否存在任何异常。 您还可以参考参考手册中的表 4-8“RCW 状态时序”,以检查 SD 卡时钟在启动过程中是否反映了预期的频率转换。请注意,这些转换取决于 RCW 是否成功加载以及 PLL 是否正确锁定。 2.是的,我同意你的做法。根据现有信息,首先集中精力处理步骤 1 到 15 是合理的,特别是早期与电源、时钟、RESET 和启动源相关的阶段。 3.您可以尝试以下 CCS 命令来验证 LS1046A 在此状态下是否可以访问。例如,您可以尝试读取 RCWSR 寄存器: (bin)1% 全部删除 (bin)2% 配置 cc cwtap (bin)3% 显示 cc (bin)4% ccs::config_chain {ls1043a dap sap2} (bin)5% 显示 ::ccs::get_config_chain (二进制)6% ccs::display_mem 32 0x01ee0000 4 0 100 显示更多行 4.您还可以参考参考手册表 4-8“RCW 状态时序”,并观察 SD 卡时钟是否反映了 RCW 处理期间预期的频率变化。 我建议在启动过程中验证相关的波形。 实际上,我在初始调试期间通常使用硬编码模式。作为额外的检查,您可以将电路板配置为使用硬编码的 RCW,并验证观察到的波形是否遵循图 4-1“上电复位序列”中描述的顺序。如果波形符合预期行为,则与 RESET 相关的硬件设计通常可能正常工作。 我将外出超过一周,因此在此期间我不会发布任何更新。 如果问题紧急,请另开新帖,以便其他团队成员可以为您提供帮助。 谢谢! Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo 你好, 我尝试从 ccs cconsole 读取数据,但在冷启动过程中出现以下响应 (二进制)7% ccs::display_mem 2 0x01ee0000 4 0 1 扫描超时 我们尝试捕获 ASLEEP 信号,并发现了以下现象: SD时钟频率从约200kHz降至约20kHz(怀疑是回退机制) 在 200kHz 期间以及时钟频率降至 20kHz 之前的一些事务中,SD DATA0 始终为高电平。
View full article
LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Boot Hello, We are bringing up a custom LS1046A board based on the LS1046ARDB design. Autonomous cold boot is failing, but CodeWarrior/QCVS intervention allows the processor to reach BL2, BL31 and the U-Boot console. We have observed the cold-boot failure with eMMC, SD card and QSPI NOR, so we would appreciate guidance on isolating the common reset/clock/PBL path. Platform and differences from LS1046ARDB Item Custom-board configuration Processor LS1046AE Rev. 1.0; U-Boot reports SVR 0x87070010 Power/reset control No CPLD. An STM32 BMC, PCA9539 I/O expander, level translators and discrete reset circuitry implement sequencing and SD/eMMC selection. DDR 4 GiB, single-rank, 64-bit non-ECC DDR4, initialized at 1600 MT/s. This differs from the 8 GiB ECC configuration used in our RDB comparison. DDR initialization succeeds after assisted boot; full memory-margin qualification is still pending. Clocks 100 MHz primary reference; the working assisted configuration uses the single-ended SYSCLK selection. DDR uses the differential reference path. U-Boot reports CPU 1800 MHz, platform 600 MHz and FMan 700 MHz. eMMC Macronix MX52LM08A11XVI, different from the RDB device. U-Boot identifies manufacturer 0xc2, name M08A11, MMC 5.1 and approximately 7.3 GiB user capacity. SD/eMMC interface BMC-controlled selection and EVDD: 1.8 V for eMMC and 3.3 V for SD. QSPI NOR S25FS512S, 64 MiB per device. NOR detection has succeeded on this board. Other peripherals Custom Ethernet/PHY routing and SerDes configuration; no PCIe devices are used. Software A1-specific board/device-tree changes, TF-A v2.12.0 based on lf-6.12.49-2.2.0, U-Boot 2025.04. U-Boot watchdog is disabled for bring-up. The reset network has also been reworked during this investigation: a competing processor-POR driver branch was isolated, the direct BMC-to-TRST drive was disconnected, and a hardware POR/TRST coupling path was fitted. HRESET sensing by the BMC remains connected. Latest native cold-boot observation We found and corrected an unintended earlier SoC reset in the BMC sequence. In the subsequent scope capture, taken from a fully powered-off start without any CodeWarrior or QCVS action: - PORESET_B rises when the BMC releases processor reset. - eMMC CLK and CMD activity starts after that edge. - No normal BL2/U-Boot console output follows. Some earlier attempts produced only a junk UART character. - The trace labelled HRESET_B stays HIGH, approximately 1.8 V; we do not observe a LOW assertion before or during the captured eMMC activity. The BMC HRESET input also repeatedly reads HIGH. CodeWarrior/QCVS behavior During the cold-boot stall, CodeWarrior Inspect can report that 'CortexA72#0' is not found on the JTAG chain and suggest checking the RCW or enabling RCW override. However, clicking Debug with RCW apply enabled, or applying the RCW through QCVS, allows boot to progress. Sometimes Debug reports “core not in debug mode” while the UART reaches U-Boot. In other attempts the target is halted and `continue` allows boot to finish. We reduced the initialization script to: from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13: 0x00004504}) target.rcw.apply() The physical straps were set for SD/eMMC source '0x40'. The supplied word 13 is identical to the value already stored in eMMC. This reduced script also enabled assisted boot. Separate tests using 'set_source(0x9E)' with the same word succeeded as well. There are no explicit DDR initialization, BRR, PC, SCTLR or resume operations in this reduced script. We recognize that 'rcw.apply()' and the debugger launch framework can still perform internal reset/run-control operations; this is not a passive attach. After assistance, all 16 RCWSR words matched the intended media RCW. BL2 was present in OCRAM and the instrumented boot chain completed DDR initialization, eMMC/FIP loading, BL31 and U-Boot. Post-intervention 'RSTRQPBLSR' reads were zero, but we do not regard those as a capture of the original cold-failure state. Tests already performed Test Observation Native boot from eMMC No autonomous console boot; debugger-assisted recovery reaches U-Boot. Native boot from SD Similar cold-boot failure despite BMC detecting/selecting SD; assisted boot was possible. Native boot from QSPI NOR Latest testing also shows the cold-boot failure. We have not established that all three media stop at the same internal stage. Standalone hard-coded source straps 0x9E and 0x9F Later tests did not obtain the expected standalone reset progression. We understand that a hard-coded RCW alone is not a complete U-Boot image. Stock RDB initialization with safe RCW enabled Allowed recovery, but also modifies DDR, CPU state and peripherals, so this was not an isolated test. Minimal apply-only script above Recovery possible even with word 13 equal to the stored value, using source requests 0x9E and 0x40. QCVS RCW test/readback Test passed and readback matched the intended configuration after intervention. Native fetch remains unverified. Removed three inherited PCIe PBI accesses No improvement in native cold boot. Disabled SerDes2, then both SerDes blocks No improvement. Assisted U-Boot logs confirmed the modified RCW words. DDR diagnostic SPD read and 4 GiB initialization at 1600 MT/s succeeded after assistance; not a full margin test. Added BL2/BL31/U-Boot milestone logging Assisted boot completes all stages. Native failure gives no first BL2 milestone; these logs cannot trace the hardware PBL itself. eMMC RCW and image placement The eMMC baseline with both SerDes enabled is: 0c100012 0e000000 00000000 00000000 13335a06 40400012 60040000 c1000000 00000000 00000000 00000000 0001c83e 00004504 24001002 00000096 00000001 For the both-SerDes-disabled experiment, only these words changed: RCW05 = 00000000 RCW06 = 00f00012 In the eMMC user area, with 512-byte sectors: Component Start LBA Byte offset RCW + PBI + BL2 container (bl2_emmc.pbl) 0x8 0x1000 FIP containing BL31 and U-Boot 0x800 0x100000 FMan microcode 0x4800 0x900000 The written PBL/BL2 and FIP regions were read back and their SHA-256 values matched the files transferred for those tests. The PBI stream was decoded and its CRC checked. It sets the OCRAM boot location, performs inherited NXP interconnect/USB preparation and PBL synchronization operations, and copies BL2 into OCRAM. Removing the PCIe-register accesses did not resolve the stall. DDR initialization is performed later by BL2. We also read eMMC `EXT_CSD[162] = 0x00` and `EXT_CSD[179] = 0x00`; we have not made irreversible changes to those settings. Guidance requested 1. HRESET timing: At exactly which point should LS1046A assert HRESET_B LOW relative to PORESET_B, valid reference clocks and initial eMMC transactions? If processor-side probing confirms no LOW assertion, which reset, clock, power-domain, strap or test-mode conditions should we check first? 2. Capture before intervention: Is there a supported CodeWarrior/CCS System Access Port procedure to read the stalled PBL/DCFG/eSDHC state before the A72 core is discoverable, without reset or RCW override? Please provide the required access context, commands and most useful status/error registers. 3. RCW apply semantics: What precisely does `rcw.apply()` do with source `0x40` or `0x9E` and only one supplied word? Which reset/debug controls are exercised, and how are unspecified RCW words obtained? We want to identify the action that permits recovery when the supplied word does not change the resulting RCW. 4. RCW/PBI review: Do the eMMC RCW and placement above reveal any issue? Are there additional mandatory PBI operations or relevant silicon errata for this custom configuration? 5. Next decisive measurement: Given the symptom across eMMC, SD and QSPI, what measurement or non-invasive register capture would best separate a reset/clock/strap problem from boot-medium initialization, RCW acquisition or later PBI execution? Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H  HRESET_B is not being asserted in the waveform, which is not expected. Please refer to Section 5.1 (Bring-up Process Using SD Card) in AN12081. Although the document describes the SPL/U-Boot flow, the current BL2/BL31 flow follows a very similar hardware boot sequence. Please compare your waveform with Figure 3. Based on the current observations, suspect a hardware issue related to reset related part. It may also be helpful to compare your reset design against the FRWY-LS1046A, which does not use a CPLD. In addition, please verify the ASLEEP signal, as it is an important signal during the boot process. Thanks. Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo sequence capture during testing   Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo Hello, Thank you for pointing us to LS1046A Reference Manual section 4.4.1. We are checking steps 1–4 as well as steps 5–15, and comparing our measurements with AN12081 section 5.1 / Figures 3–4. Below is an update from our 29 September tests, with a 30 September follow-up on the QCVS-generated SD candidate. We will attach oscilloscope captures of PORESET_B, HRESET_B, SD CMD and RESET_REQ_B for review.   Updated HRESET observation On a second A1 custom board, initially tested without the earlier board's reset reworks, we can observe HRESET_B going LOW before PORESET_B is released. This differs from the earlier capture where HRESET_B appeared continuously HIGH. We are not treating that earlier waveform as representative of this board. For the current differential-clock SD test: During standalone cold startup, HRESET_B is LOW before PORESET_B rises and remains LOW afterward. No BL2 console output appears. After CodeWarrior Debug/RCW apply, HRESET_B goes HIGH. The debugger initially stops at PC=0. Clicking Continue then allows BL2 → BL31 → U-Boot to run. Please help us interpret the attached captures, including SD CMD and RESET_REQ_B activity, against the expected sequence. In below picture - we did not insert SD card - so we were able to see reset request going low. (Note in some pictures emmc cmd is mentioned by mistake instead of sd cmd) Captured with SD inserted - switch strapped to emmc/sd card mode. Captured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card insertedCaptured with with poreset_b, hreset_b, reset_request, vcc1v8 with SD card inserted Captured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmdCaptured with with poreset_b, hreset_b, reset_request, sd_cmd Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset)Captured with with poreset_b, hreset_b, sd_cmd, trst_b(jtag reset) Captured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stallCaptured after entering debug mode after cold start stall New SD RCW test We kept external SD/MMC boot selected (cfg_rcw_src=0x40) and generated a new SD image with both SerDes blocks disabled. We selected the 100 MHz differential primary reference and adopted the active clock ratios from the hard-coded 0x9F example, while retaining the A1 pinmux and SD boot/PBI configuration. This is not hard-coded boot: the full RCW and PBI must still be fetched from SD. We are not bypassing media acquisition or PLL locking. Setting Value Primary reference DIFF_SYSCLK/B, nominal 100 MHz; cfg_eng_use0=0 A1 switch positions SW5 pole2 ON(differential clock selection ); SW8 poles1–8 0010 0000 (1=ON)(boot source switch strap) SYS_PLL_RAT 4 → platform 400 MHz CGA_PLL1_RAT 13 → CPU 1300 MHz CGA_PLL2_RAT 10 → PLL2 1000 MHz; FMan 500 MHz MEM_PLL_RAT 16 → DDR 1600 MT/s DDR_REFCLK_SEL / DDR_FDBK_MULT 1 / 2; differential DDR reference SRDS_PRTCL_S1 / SRDS_PRTCL_S2 0 / 0 SRDS_PLL_PD_S1 / SRDS_PLL_PD_S2 3 / 3; both PLLs down in each SerDes block PBI_SRC / BOOT_HO 6 / 0 EVDD_VSEL 2, SD 3.3 V configuration DIMM 4 GiB, single-rank, 64-bit non-ECC DDR4; training seed not margin-qualified   The full RCW used in this tested image, also confirmed after debugger intervention, is: RCW01–04: 0810000d 0a000000 00000000 00000000 RCW05–08: 00000000 00f00012 60040000 c1000000 RCW09–12: 00000000 00000000 00000000 0001c83e RCW13–16: 00004504 24001102 00000096 00000001 Result: the native cold-boot stall remained. After debugger assistance, U-Boot reported CPU 1300 MHz, platform 400 MHz, DDR 1600 MT/s and FMan 500 MHz, matching the intended ratios. SD initialization and FIP loading succeeded.  Exact debugger intervention and resulting state The initialization callback only calls the following RCW API operations: from cw.dbg import ta def run_init_file(): target = ta.create() target.rcw.set_source(0x40) target.rcw.set_data({13: 0x00004504}) target.rcw.apply() Word 13 is identical to the value already stored on SD. The script has no explicit DDR initialization, BRR/PC writes or Continue command. We recognize that apply() and debugger startup can internally change reset/debug state. After Debug, before Continue, we read: PC = 00000000 PORSR1 @ 01ee0000 = 205b7fff RSTRQPBLSR @ 01ee00b4 = 00000000 RSTRQMR1 @ 01ee00c0 = 00004000 RSTRQSR1 @ 01ee00c8 = 00000000 BRR @ 01ee00e4 = 00000000 SCFG_SCRATCHRW0/1 = 00000000 / 10000000 DDR SDRAM_CFG = 07000000 (MEM_EN clear) All 16 RCWSR words matched the tested SD image. The first 64 bytes at OCRAM 0x10000000 matched its BL2 entry code. Thus the lack of UART output at PC=0 did not mean that hardware PBL had not progressed. Continue alone was enough to run BL2/BL31/U-Boot; no manual BRR write was used in this run. These are post-intervention readings, not preserved native-stall status. We are not using their zero error values to conclude that the original cold attempt had no PBL/clock/reset error. Image placement and exact PBI setup Both our SD and eMMC packages use 512-byte sectors: RCW/PBI/BL2 .pbl: LBA 0x8, byte offset 0x1000. fip_uboot.bin containing BL31 and U-Boot: LBA 0x800, byte offset 0x100000. For eMMC these are offsets in the user area, not boot0/boot1. The SD whole-disk image has been checked byte-for-byte at these offsets; the earlier eMMC writes also passed readback SHA-256 verification. The exact setup stream in the tested SD PBL is below. Each row is the serialized PBI command word followed by its data word, in stream order; these are not debugger memory-write commands: 09570600 00000000 09570604 10000000 09570178 0000e010 09180000 00000008 09570418 0000009e 0957041c 0000009e 09570420 0000009e 09570158 00001000 09610000 00000000 096100c0 000fffff 09570604 10000000 09570158 00001000 096100c0 000fffff This includes the scratch boot pointer, inherited interconnect/USB setup, flush and synchronization operations. Repeated operations are preserved. There are no PCIe setup writes. The stream then contains 844 ACS64 transfers to OCRAM: the 53,953-byte BL2 plus 63 zero-padding bytes. The tested PBL ends with 08610040 6d8bdebf (END/CRC), and its total size is 57,576 bytes. We also independently generated a PBL using QCVS today. Parsing and CRC verification found its PBI operations and BL2 payload identical to the tested image. We deliberately changed RCW12 from 0001c83e to 0001a8fe (ASLEEP=0, RTC=1, IRQ_BASE=63); only that word and the CRC differ. Its SHA-256 is: 2d3389fce4ead088957caf6251022b5526be8565e812a8aab8fce21bd8923277 30 September update: we tested the newer QCVS-generated SD candidate and again encountered a native cold-boot stall. Replacing the PBL with the actual QCVS export therefore did not resolve the symptom. Its PBI and BL2 payload remain identical to the previous image, so this does not exclude a shared configuration issue or prove that the cause is hardware. The detailed HRESET/register readings and confirmed assisted-success sequence above refer to the earlier RCW12=0001c83e run. The debugger-recovery result and detailed waveforms for this latest RCW12=0001a8fe run have not yet been added to this update. Guidance requested With HRESET_B asserted before POR release but remaining LOW afterward, which measurements best separate an RCW-fetch/validation failure from PLL locking or the platform-clock switchover in steps 11–14? We will also continue checking the early power/clock/strap conditions in steps 1–4. Since step 15 releases the SoC's HRESET drive and step 17 executes PBI, is it reasonable to prioritize the earlier stages, provided we exclude an external HRESET driver or a brief release/reassertion? Please also review the RCW and PBI above for any missing or incorrect configuration. Can CCS/SAP access native reset/PBL status or documented PLL-lock status while HRESET remains LOW, without RCW apply or another reset? Please provide the exact access context, commands and register/bit definitions. Ordinary Inspect has previously failed to find CortexA72#0 in this state. What precisely does set_source(0x40) plus a matching word-13 override and apply() do to reset, TRST and debug controls? We would like to isolate the action that allows boot without changing the final RCW contents. We can provide the generated PBL, complete UART/debugger logs and additional scope captures. Bring-up is blocked on autonomous cold boot, so guidance on the next discriminating test would be greatly appreciated. Also I was told as  a self-test , if we strap 0x9e or 0x9f without SD card or blank emmc - we will be able to see HRESET_B going low to high when POREST_B is released from 0 to 1. We tried capturing this in RDB board and was able to observe this . So on our custom board if we do the same - same behaviour is to be observed? Thank you. Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo @Hiran_E_H  Please refer to LS1046A Reference Manual, 4.4.1 Power-on reset sequence There may be an issue between steps 5 and 15. Since the starting point of HRESET_B cannot be clearly identified, steps 1 to 4 should also be checked. Thanks Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo ASLEEP is always high as LED connected is always ON. We took a second board without any hardware rework and tried to boot from SD card with same RCW except change in voltage selection and is observing HRESET_B is being low before PORESET_B is released from low to high.  The spike in HRESET_B - we are expecting is due to 1.8v pull up after PMIC PG and SoC starts driving the HRESET_B low. Currenltly we are probing to see emmc/SD CMD, DATA and CLK to see if there is any transaction is occuring. May I know what conditions to be obeyed for SoC to release HRESET_B.   Out of Curiosity we put the same SD card in the a ls1046a_rdb board and tried powering ON which reached upto uboot console.  Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo Hi @Hiran_E_H  1.It is difficult to clearly distinguish between an RCW loading issue and a PLL lock issue based on the current information. However, if CCS can successfully access the device and the PLL-related waveforms appear normal, the likelihood of a PLL issue may be lower. I would recommend comparing the SD command waveforms between a standalone cold boot and a CCS-assisted boot. In particular, compare the waveform duration and sequence to determine whether there are any abnormalities during RCW loading. You may also refer to the Reference Manual, Table 4-8 "RCW State Timing", to check whether the SD card clock reflects the expected frequency transitions during the boot process. Please note that these transitions depend on both successful RCW loading and proper PLL lock. 2.Yes, I agree with your approach. Based on the information available, it is reasonable to focus on steps 1 through 15 first, especially the early power, clock, reset, and boot-source related stages. 3.You may try the CCS commands below to verify whether the LS1046A can be accessed while the device remains in this state. For example, you can attempt to read the RCWSR registers: (bin) 1 % delete all (bin) 2 % config cc cwtap (bin) 3 % show cc (bin) 4 % ccs::config_chain {ls1043a dap sap2} (bin) 5 % display ::ccs::get_config_chain (bin) 6 % ccs::display_mem 32 0x01ee0000 4 0 100 Show more lines 4.You may also refer to the Reference Manual, Table 4-8 "RCW State Timing", and observe whether the SD card clock reflects the expected frequency changes during RCW processing. I would recommend verifying the associated waveforms during the boot sequence. In practice, I typically use the HARD-CODED mode during initial debugging. As an additional check, you could configure the board to use a hard-coded RCW and verify whether the observed waveforms follow the sequence described in Figure 4-1 "Power-on Reset Sequence". If the waveforms match the expected behavior, the reset-related hardware design is generally likely to be functioning correctly. I will be OoO for more than one week, so there will be no updates from my side during this period. If this issue is urgent, please create a new thread so that another team member can assist you. Thank you. Re: LS1046A custom board: cold boot fails from eMMC, SD and QSPI; CodeWarrior RCW apply enables U-Bo Hi, I tried to read from ccs cconsole but during cold boot stall i am getting below response (bin) 7 % ccs::display_mem 2 0x01ee0000 4 0 1 Scan timeout We tried capturing with respect to ASLEEP signal and founf below observation: SD CLK drops from ~200kHz to ~20kHz (suspecting fallback) SD DATA0 always high during 200kHz and some transaction just before clock drop to 20kHz.
View full article
有没有比较简单易用的8位微控制器/汇编语言? 我正在寻找一款可以查看实际十六进制/二进制代码的 8 位微控制器。我在大学学习 8051 汇编语言,我非常喜欢看到和理解内存中的每一条指令和值。但是这些微控制器已经过时,需要大量的“破解”才能兼容。至少每次我把代码放到真正的硬件上运行时,都会有这种感觉。那么,有没有一种简单的8位汇编语言,可以配合实际的芯片,让我能够编写简单的电子项目程序呢? Re: Is there a simple 8 bit microcontroller/assembly language that is nice to work with? 你好; 如果您正在学习汇编语言,S08PT 设备可能是一个不错的起点; S08PT|8 位 5V 全功能 MCU,带 EEPROM 和 TSI | NXP 半导体 。 使用该软件工具是CodeWarrior for MCUs (Eclipse IDE) v11.1,适用于 Windows 10/11;该工具可以使用汇编代码进行测试,因为它具有汇编调试工具视图,并且可以查看内存以了解代码的功能。 本设备配有评估板 S08PT60-EVK [MC9S08PT60],如果您感兴趣,请参阅 [ S08PT60-EVK 产品信息],其中包含各种外设,供您在实际硬件上测试代码的不同配置。 板载接口包括 RGB LED、6 轴数字加速度计和磁力计、环境温度传感器、两个电容式触摸板、电位器、两个用户按钮和红外收发器。同时兼容 Arduino 扩展板的引脚布局。 您可以在主页上阅读更多关于这些功能的信息: S08P MCU 评估套件 | 恩智浦半导体 此致敬礼,路易斯
View full article
LWIP TCP/IPサーバー・クライアント実践演習 こんにちは。S32K358 用の TCP クライアントハンドシェイクのサンプルはありますか?以前のスレッドに投稿したように、いくつか問題が発生しています。以前、S32K148 の問題解決に関する投稿(LWIP TCP/IP Server-Client Hands-On - NXP Community)を見ましたが、それが役に立つかもしれません。 もしお持ちでしたら、コピーを送っていただけないでしょうか。私のメールアドレスは[email protected]です。よろしくお願いいたします! Re: LWIP TCP/IP Server-Client Hands-On こんにちは、@sunshine88 さん。 S32K358には、lwip_s32k148_HandsOnワークショップのような参考プロジェクトはありません。lwip_s32k148_HandsOn_Server と lwip_s32k148_HandsOn_Client の両方をプライベートメッセージでお送りしました。 よろしくお願いします、 ジュリアン
View full article
S32K358 MBDT/Simulink – 将 SoC 存储在非易失性存储器中 您好,NXP团队, 我正在使用 RD-BESSK358BMU 板(S32K358 MCU)以及 MATLAB/Simulink 和 NXP MBDT。 我的板上运行着一个 EKF SOC 估算器。我需要定期将计算出的 SOC 保存到非易失性存储器中,以便在完全断电/开机后,可以读取最后存储的 SOC 并将其用作 EKF 的初始 SOC。 在 Simulink/MBDT 中,对于 S32K358,推荐的实现方式是什么? 我可以在 S32 配置工具中看到 Fee、MemAcc 和 Mem_43_InFls。这些模块是否适用于此目的? 您能否分享一些关于S32K358 Simulink/MBDT非易失性读/写的示例? 我找到了一些使用 EEPROM/FEE 的较早的 S32K 示例,但我特别想找到适用于 Simulink/MBDT 的 S32K358 的推荐解决方案。 谢谢。
View full article
画面の最上位レイヤーにおけるイベントコールバック関数名の生成が正しく行われないことに関連するバグ。 私が使用している GUI Guider のバージョンは 2.0.0 です。Top で作業しているときに...レイヤーにイベントを追加する際、生成されるgg_event_layer_top.cファイル内のトップレイヤーのイベントコールバック関数名が異常です。現在、イベントコールバック関数名の途中に括弧が挿入されており、例:「static void lv_layer_top () _event_handler ( lv_event_t * e )」のようになっています。実際、ボトムレイヤーでも同様の問題が発生しますが、スクリーンでは同様の問題は発生しません。このバグが早急に修正されることを願っています。よろしくお願いいたします。 回复: 关于屏幕顶层(Top Layer)的事件回调函数名生成异常的bug こんにちは@UENGさん フィードバックありがとうございます。この問題はバージョン2.0.1で修正されました。GUI Guiderをダウンロードしてインストールしてください。 よろしくお願いします、 ウェンビン
View full article
The TCP client in S32K358 is not receiving the handshake packet. I've created a TCP client thread. When the handshake function is executed, I can see the messages sent by the client to the server and the messages sent by the server to the client using Wireshark. However, in the final step, the TCP client doesn't return a frame. I've been monitoring the GMAC receive interrupt and found it's stuck in a loop. The MCU TCP client hasn't received the final acknowledgment frame, so it hasn't sent the final handshake acknowledgment frame. What could be the reason? Re: S32K358 中TCP 客户端握手包接收不到 Hello @sunshine88, Are you using the lwip example provided inside the RTD package? If yes, could you share your RTD version?  Can you also share which status is being returned to RxStatus?  As requested on your other community post (LWIP TCP/IP Server-Client Hands-On), I've sent you a private message with the Lwip_HandsOn project for S32K148. Best regards, Julián
View full article
Is there a simple 8 bit microcontroller/assembly language that is nice to work with? I'm searching for an 8 bit microcontroller where I can look at the actual hex/binary code. I've been learning 8051 assembly in university and I absolutely love seeing and understand every single instruction and value in the memory. But those microcontrollers are antiquated and need a bunch of "hacks" for compatibility. At least that's what it feels like everytime I put my code onto real hardware. So is there a simple 8 bit assembly language with actual chips I can program simple electronics projects with ? Re: Is there a simple 8 bit microcontroller/assembly language that is nice to work with? Hello; If you are learning assembly a good start point could be the S08PT device; S08PT|8-bit 5V Full-featured MCU with EEPROM and TSI | NXP Semiconductors. The software tool to use it is CodeWarrior for MCUs (Eclipse IDE) v11.1 available for windows 10/11.; in this tool you can test with assembly code as it have the tools view for debug in assembly and review the memory to understand the functionality of your code. This device have an evaluation board S08PT60-EVK, [MC9S08PT60] if you are interested, [S08PT60-EVK Product Information] with various peripherals, for you to test different configurations from your code onto real hardware. The onboard interfaces include an RGB LED, a 6-axis digital accelerometer and magnetometer, an ambient temperature sensor, two capacitive touch pads, a potentiometer, two user push-buttons, and IRDA transceiver. Also is compatible with the Arduino pin layout for expansions boards. You can read more about the features in the main page: S08P MCUs Evaluation Kit | NXP Semiconductors Best Regards, Luis
View full article
S32K358 MBDT/Simulink – Store SOC in Non-Volatile Memory Hello NXP Team, I am using the RD-BESSK358BMU board (S32K358 MCU) with MATLAB/Simulink and NXP MBDT. I have an EKF SOC estimator running on the board. I need to periodically save the calculated SOC in non-volatile memory, so after a complete power OFF/ON, the last stored SOC can be read and used as the initial SOC of the EKF. What is the recommended way to implement this in Simulink/MBDT for S32K358? I can see Fee, MemAcc, and Mem_43_InFls in the S32 Configuration Tool. Should these modules be used for this purpose? Is there any S32K358 Simulink/MBDT example for non-volatile Read/Write that you can share? I found older S32K examples using EEPROM/FEE, but I am specifically looking for the recommended solution for S32K358 with Simulink/MBDT. Thank you.
View full article
S32K358のTCPクライアントはハンドシェイクパケットを受信していません。 TCPクライアントスレッドを作成しました。ハンドシェイク関数が実行されると、Wiresharkを使用してクライアントからサーバーに送信されたメッセージとサーバーからクライアントに送信されたメッセージを確認できます。しかし、最終ステップでTCPクライアントはフレームを返しません。GMAC受信割り込みを監視していたところ、ループに陥っていることがわかりました。MCU TCPクライアントは最終確認フレームを受信していないため、最終ハンドシェイク確認フレームを送信していません。原因は何でしょうか? Re: S32K358 中TCP 客户端握手包接收不到 こんにちは、@sunshine88 さん。 RTDパッケージ内のlwip例を使っていますか?もしそうなら、RTDのバージョンを教えていただけますか? RxStatusに返却されるステータスも教えてもらえますか? 他のコミュニティ投稿(LWIP TCP/IP サーバー・クライアント・実践形式)でのご要望通り、Lwip_HandsOnプロジェクトのプライベートメッセージを送りました。S32K148。 よろしくお願いします、 ジュリアン
View full article
S32K358 MBDT/Simulink – SOCを不揮発性メモリに保存する こんにちは、NXPチームの皆さん。 RD-BESSK358BMUボード(S32K358 MCU)をMATLAB/SimulinkとNXP MBDTで使っています。 ボード上でEKF SOC推定器を動作させています。計算されたSOCを定期的に不揮発性メモリに保存する必要があるため、完全な電源オフ/オン後、最後に保存されたSOCを読み取り、EKFの初期SOCとして使用できるようにします。 Simulink/MBDTでS32K358を実装する際の推奨される方法は何ですか? S32設定ツールでFee、MemAcc、Mem_43_InFlsが見えます。これらのモジュールをこの目的に使用すべきでしょうか? S32K358、不揮発性の読み書き(Read/Write)に関するSimulink/MBDTの例があれば教えてもらえますか? EEPROM/FEEを使用した古いS32Kのサンプルは見つかりましたが、Simulink/MBDTを使用したS32K358向けの推奨ソリューションを具体的に探しています。 ありがとう。
View full article
S32K358 中TCP 客户端握手包接收不到 现在我建立了一个TCP 客户端线程,当执行到握手端函数时,通过wireshark 能够看到客户端发给服务器得报文,也能看到服务器给客户端得报文,但是最后一步TCp客户端没有返回帧。我一直监控GMAC接收中断,发现一直卡死在循环中。MCU TCP客户端一直没有接收到最后的确认返回帧,所以没有发出去最后一帧的确认握手协议。是什么原因那? Re: S32K358 中TCP 客户端握手包接收不到 你好@sunshine88 , 你使用的是RTD包中提供的lwip示例吗?如果可以,能否分享一下您的即饮版本? 您能否也分享一下RxStatus 返回的是哪个状态? 根据您在另一篇社区帖子( LWIP TCP/IP 服务器客户端实践)中的要求,我已经向您发送了一条包含 S32K148 的 Lwip_HandsOn 项目的私信。 此致, 朱利安
View full article
使いやすい8ビットのマイクロコントローラやアセンブリ言語はありますか? 実際の16進/バイナリコードが見られる8ビットのマイクロコントローラを探しています。大学で8051アセンブリ言語を学んでいるのですが、メモリ内の命令や値の一つ一つを見て理解できることが本当に大好きです。しかし、それらのマイクロコントローラは時代遅れで互換性のために多くの「ハック」が必要です。少なくとも、自分のコードを実際のハードウェアに書き込むたびに、そんな風に感じるんです。では、シンプルな8ビットアセンブリ言語で実際のチップを使った簡単な電子工学プロジェクトをプログラムできるものはありますか? Re: Is there a simple 8 bit microcontroller/assembly language that is nice to work with? こんにちは; アセンブリを学ぶなら、良い出発点はS08PTデバイスです。 S08PT|8ビット5V EEPROMとTSIを備えたフル機能MCU |NXP Semiconductors。 使用可能なソフトウェアツールは、Windows 10/11向けに利用可能な CodeWarrior for MCUS (Eclipse IDE) v11.1 です。このツールではアセンブリコードでテストできます。アセンブリ内のデバッグビューが表示され、メモリを確認してコードの機能を理解することができます。 このデバイスには評価ボードS08PT60-EVK、[MC9S08PT60]、[興味があれば]、[S08PT60-EVK製品情報]と様々な周辺機器が搭載されており、コードから実際のハードウェアへの異なる構成をテストできます。 オンボードインターフェースにはRGB LED、6軸デジタル加速度計と磁力計、周囲温度センサ、2つの静電容量式タッチパッド、ポテンショメーター、2つのユーザープッシュボタン、IRDAトランシーバが含まれます。また、拡張ボード用のArduinoピン配列にも対応しています。 詳細はメインページでご覧いただけます: S08P MCUs 評価キット | NXP Semiconductors 敬具、ルイス
View full article
关于屏幕顶层(Top Layer)的事件回调函数名生成异常的bug 我使用的GUI Guider版本是2.0.0。当我为Top Layer添加事件时,生成的gg_event_layer_top.c中关于Top Layer的事件回调函数名会异常,目前的情况是,事件回调函数名的中间会被插入一对括号,就像这样“ static void lv_layer_top () _event_handler ( lv_event_t * e )”。事实上,对于Bottom Layer也存在相同的问题,而Screens则未出现类似的问题。希望能尽快修复bug。谢谢! 回复: 关于屏幕顶层(Top Layer)的事件回调函数名生成异常的bug Hi @UENG , 感谢您的反馈,该问题已经在V2.0.1中修复,请下载安装该版本:GUI Guider Best Regards, Wenbin
View full article
A bug related to the incorrect generation of event callback function names for the top layer of the screen. The GUI Guider version I'm using is 2.0.0. When I'm working on Top...When adding events to a Layer, the event callback function names for the Top Layer in the generated gg_event_layer_top.c file are abnormal. Currently, a pair of parentheses is inserted in the middle of the event callback function name, like this: "static void lv_layer_top () _event_handler ( lv_event_t * e )". In fact, the same issue exists for the Bottom Layer, while Screens does not exhibit a similar problem. Hopefully, this bug can be fixed soon. Thank you! 回复: 关于屏幕顶层(Top Layer)的事件回调函数名生成异常的bug Hi @UENG , Thank you for your feedback. This issue has been fixed in version 2.0.1. Please download and install this version: GUI Guider Best Regards, Wenbin
View full article
LWIP TCP/IP Server-Client Hands-On       你好,我们有没有关于S32K358 的TCP 客户端握手例程,我现在遇到了一些问题,我在上一篇帖子中发出了这个问题。我看到之前有一篇帖子是关于S32K148相关问题的已解决: LWIP TCP/IP Server-Client Hands-On - NXP Community,不知道是否能够帮我我!       如果有,麻烦您发一份,我的邮箱是[email protected].。万分感谢!  Re: LWIP TCP/IP Server-Client Hands-On 你好@sunshine88 , S32K358 没有像 lwip_s32k148_HandsOn 工作坊那样的参考项目。我已向您发送了包含 lwip_s32k148_HandsOn_Server 和 lwip_s32k148_HandsOn_Client 的私信。 此致, 朱利安
View full article