Multi Source Translation Content

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

Multi Source Translation Content

讨论

排序依据:
使用 emcem 中提供的接口向缓存位置注入故障 大家好, 我还有一个关于以下查询的问题( eMcem_setupinjectionChannel 的参数应该选择哪些值 - NXP 社区)。😞 我需要在缓存位置注入一个 2 位故障,但我不太确定参考手册中提到的具体含义,我们使用的是 NXP s32K394 微控制器: 我需要调用以下函数两次,以便将错误注入缓存,并获取缓存中如下所示的 2 位错误: 如果我的做法有误,能否请您分享一下如何进行这种注入的示例代码?目前我们的项目中使用的是 SAF 代码包,软件包,如果已经有针对这些的故障注入代码,请告诉我需要参考哪个文件才能使用 SAF 模块中提供的内存测试接口 (EIM) 注入各种类型的故障。 Re: Fault Injection to cache location using an interface provide in emcem 你好@Rudved_3366 , 我还没有找到这种缓存注入的例子,但简而言之就是: 在注入 CM7_0 指令缓存 标签双位错误之前,请验证相关的 指令缓存 错误库条目 (IEBRn) 是否可用且已解锁。 我在一台S32K344上进行了测试,这台机器就在我工作台上。我注入了: if (eMcem_SetupInjectionChannel(EMCEM_EIM_CH_3, 1, 2 ) != (Std_ReturnType)E_OK) { while (1U); } if (eMcem_InjectFault(EMCEM_EIM_CH_3) != (Std_ReturnType)E_OK) { while (1U); } 然后,在处理程序中禁用 EIM。 void BusFault_Handler(void) { if(IP_EIM->EIMCR & EIM_EIMCR_GEIEN_MASK) { IP_EIM->EIMCR = EIM_EIMCR_GEIEN(0); } } 请注意,恢复代码(例如 VTOR 引用的向量表、异常处理程序以及处理程序调用的任何内容)不能位于可缓存区域中,因为我们不希望在恢复期间再次注入错误。 然后,再次读取 IEBR 寄存器,并通过向其写入 0 来清除它们。 调用 API 使缓存失效。 此致, 丹尼尔 Re: Fault Injection to cache location using an interface provide in emcem 你好@danielmartynek , 请您也查看一下上面关于缓存地址故障注入的查询。
查看全文
Help Required: HSE Firmware Flashing on S32K312 Hi NXP Team, I am currently working on HSE firmware on the S32K312. I have the HSE firmware BIN file, but I am unable to understand the correct procedure to flash it onto the S32K312. I tried flashing the BIN using PEmicro, but it failed. I also tried using the IVT configuration in S32 Design Studio, but when I selected S32K312, it showed “No processor supported.” I have already gone through the available examples and posts, but I am still stuck at the HSE firmware flashing step. Could you please provide me with the correct and shortest procedure to flash the HSE BIN firmware on S32K312 and make HSE operational? Please guide me specifically on how and where the BIN file needs to be flashed and what needs to be done after flashing. (I have attached the Bin File in Zip File )so check it @nxp  Thanks & Regards, Sohel Jakati Re: Help Required: HSE Firmware Flashing on S32K312 Hi @Mohmedsohel  Have you already checked the S32K344_HSE_FW_INSTALL demo provided in the S32K3 MCUs for General Purpose HSE Demo Examples? Also, you mentioned that you tried using the IVT Tool from S32 Config Tools. However, this tool does not support S32K3 devices. For S32K3, the IVT can be modified directly in the S32DS project under Project_Settings → Startup_Code → startup_cm7.s BR, VaneB
查看全文
K82が境界スキャンで誤ったIDを返しました 私は2つのMK82FN256VDC15プロセッサを搭載したボードを持っており、バウンダリースキャンを使ってテストする予定です。 全て正常に動作しています。相互接続テストやその他の各種テストも全て良好です。しかし、初期のインフラストラクチャテストでは間違ったIDが返され、失敗しました。 K82用のBSDLは存在しないようですが、K80のBSDLファイルには内部構造がK80と同一であると記載されており、K80 BSDLも使用可能です。 私はK80-121BGA.BSDLというファイルを使用しています。内部のIDコードは次のとおりです。 00001000001111011001000000011101 しかし、私の場合は少し異なる結果が出ています…。 000 1 10 11 001111011001000000011101 バージョン欄に1つ、部品番号欄に2つ、合計3つのボーナス「1」があるようです。 BSDLを編集して失敗を隠すことで解決することもできますが、なぜ予想と異なる値が表示されるのか理解する必要があります。部品が本物であることを知ることは重要なので、なぜBSDLに修正が必要だったのか、非常に明確な説明が必要です。偽造部品の問題を隠しているだけかもしれません。 当社の部品はCEMを通じて購入されており、CEMは承認されたチャネルを通じて購入する必要があります。 どんなご意見でも歓迎いたします。 Re: K82 returning incorrect ID in boundary scan こんにちは、@olly12 さん。 この問題を報告していただき、また弊社にご指摘いただきありがとうございます。 データシートのJTAG IDレジスタの定義(PRN = 0001)に基づくと、BSDLファイル内のIDCODEの値が間違っている可能性があると思われます。 この件については、社内チームに報告し、さらなる検証と修正を依頼します。エスカレーションの手続きを進めるにあたり、最終アプリケーションについていくつか詳細を教えていただけますか? 再度、感謝します! BR セレステ Re: K82 returning incorrect ID in boundary scan こんにちは、 @olly12 さん、 内部調査により、報告されたIDCODE 0x1B3D901Dは、マスク1N03PのMK82FN256VDC15と一致することが確認されました。提供されたBSDLは0x083D901Dを想定していますが、これは2つのフィールドで異なります。 DC: 文書化された値は 0x2C ですが、BSDLは 0x20 を使用しています — K82 Reference Manual Rev. 2, §65.3.3, pp.2193~2194年。 PRN:マスク 1N03P はリビジョン 1 を使用していますが、BSDL では 0 が 指定されています — K82 データシート Rev. 2、p. 2。 また、デバイスに対して独自にJTAGチェックを実施したところ、IDコード0x1B3D901Dを取得しました。したがって、報告された不一致はBSDLのIDCODE定義で説明できます。この不一致だけでは、偽造品であることを示すものではありません。 BSDLファイルのエラーによりご迷惑をおかけして申し訳ございません。訂正内容については引き続きフォローアップいたします。 BR セレステ
查看全文
RW610: VIT v4.11.0 returns INVALID_DEVICE despite successful model initialization — hardware ID 0x00 Hello Team, I am integrating Voice Intelligent Technology (VIT) into a custom board using an RW610 MCU. The model loads and all initialization APIs succeed, but VIT_Process() returns VIT_INVALID_DEVICE (11) Could you confirm whether the VIT library below supports my RW610 silicon, or whether a different library release is required? Item Configuration MCU NXP RW610 on a custom board Audio codec MAX98089 IDE MCUXpresso IDE - 24.12.0 RTOS FreeRTOS Debug output Semihosted printf VIT package release/24.12.00/CortexM33-RW61X Library libVIT_CM33_RW61X_v04_11_00.a Library version reported at runtime 0x00040b00 — v4.11.0 VIT API version 0x00030400 Model version reported at runtime 0x00040b00 — v4.11.0 Configured device VIT_RW610, numeric value 9 Operating mode VIT_WAKEWORD_ENABLE Library source: https://github.com/nxp-mcuxpresso/VIT/tree/release/24.12.00/CortexM33-RW61X  Model generation: I generated a replacement English model using NXP’s online model-generation tool with these settings: Device selected in the portal: RW612  Portal version: 24.12.00 I selected RW612 because I did not see an RW610 option in the portal. The generated VIT_Model_en.h declares v4.11.0. Only wake-word recognition is currently enabled in the application. The VIT initialization sequence is: 1. VIT_GetLibInfo() 2. VIT_SetModel() 3. VIT_GetModelInfo() 4. VIT_GetMemoryTable() 5. Assign aligned, statically allocated memory regions. 6. VIT_GetInstanceHandle() 7. VIT_ResetInstance() 8. VIT_SetControlParameters() 9. VIT_GetStatusParameters() 10. Start microphone capture and call VIT_Process(). All listed initialization calls succeed. Processing then returns error 11. Runtime Log: [VIT INFO] button request: ENTER EXCLUSIVE VIT / START [VIT INFO] exclusive mode: application tasks paused, speaker stopped; initializing VIT [VIT INFO] init: English model, wake-word-only; heap=37904 [VIT INFO] GetLibInfo OK [VIT INFO] library release=0x00040b00 API=0x00030400 features=0xe channels=1 requestedDevice=9 [VIT INFO] SetModel OK [VIT INFO] GetModelInfo OK [VIT INFO] VIT: available wake word: HEY NURSE [VIT INFO] GetMemoryTable OK [VIT INFO] memory region 0 needs=135934 reserved=144460 bytes [VIT INFO] memory region 1 needs=135894 reserved=157324 bytes [VIT INFO] memory region 2 needs=8854 reserved=17644 bytes [VIT INFO] memory region 3 needs=47079 reserved=49934 bytes [VIT INFO] GetInstanceHandle OK [VIT INFO] ResetInstance OK [VIT INFO] SetControlParameters OK [VIT INFO] GetStatusParameters OK [VIT INFO] instance: library=0x00040b00 model=0x00040b00 selectedDevice=9 features=0x4 [VIT INFO] ResetInstance OK [VIT INFO] VIT: listening, PCM48k stereo channel 0 -> PCM16k mono [VIT ERROR] Process failed: code=11 (INVALID_DEVICE); RED LED = VIT fault [VIT ERROR] RW61x identity: addr=0x45001114 raw=0x00007102 masked=0x00007100 libraryExpected=0x00007000 [VIT INFO] VIT: stopped Device-check observation Inspection of the linked library’s device-validation code indicates that, for device ID 9, it reads address 0x45001114, clears the lowest eight bits, and compares the result with 0x00007000. Does libVIT_CM33_RW61X_v04_11_00.a support RW610 devices that return 0x00007102 at address 0x45001114? Is the comparison against 0x00007000 a known compatibility limitation or issue in this release? Which VIT library release and matching API headers should I use for this RW610? Is a model generated with the portal’s RW612 selection supported on RW610, or is a separate RW610 model-generation option required? Please advise on the supported library/model combination and any further diagnostics needed. Thank you.
查看全文
RW610:VIT v4.11.0 尽管模型初始化成功,但返回 INVALID_DEVICE 错误 — 硬件 ID 0x00 各位同事好, 我正在使用 RW610 MCU 将语音智能技术 (VIT) 内置到定制板中。模型加载成功,所有初始化 API 也都成功,但 VIT_Process() 返回 VIT_INVALID_DEVICE (11) 错误。 请确认以下 VIT 库是否支持我的 RW610 芯片,或者是否需要其他版本的库? 项目配置 MCU NXP RW610 芯片安装在定制板上 音频编解码器 MAX98089 IDE MCUXpresso IDE - 24.12.0 实时操作系统 FreeRTOS 调试输出 半托管printf VIT 代码包,软件包 版本/24.12.00/CortexM33-RW61X 库 libVIT_CM33_RW61X_v04_11_00.a 运行时报告的库版本 0x00040b00 — v4.11.0 VIT API 版本 0x00030400 运行时报告的模型版本 0x00040b00 — v4.11.0 已配置设备 VIT_RW610 ,数值为 9 工作模式 VIT_WAKEWORD_ENABLE 库来源: https://github.com/nxp-mcuxpresso/VIT/tree/release/24.12.00/CortexM33-RW61X 模型生成: 我使用 NXP 的在线模型生成工具,并按照以下设置生成了一个替换的英文模型: 门户中选择的设备:RW612 门户网站版本:24.12.00 我选择 RW612 是因为我在门户网站上没有看到 RW610 选项。 生成的 VIT_Model_en.h 文件声明版本为 v4.11.0。目前应用程序中仅启用了唤醒词识别功能。 VIT初始化顺序如下: 1. VIT_GetLibInfo() 2. VIT_SetModel() 3. VIT_GetModelInfo() 4. VIT_GetMemoryTable() 5. 分配对齐的、静态分配的内存区域。 6. VIT_GetInstanceHandle() 7. VIT_ResetInstance() 8. VIT_SetControlParameters() 9. VIT_GetStatusParameters() 10. 开始麦克风捕获并调用 VIT_Process()。 所有列出的初始化调用均成功。处理过程随后返回错误 11。 运行时日志: 【维生素信息】按钮请求:输入专属维生素/开始 [VIT 信息] 独占模式:应用程序任务已暂停,扬声器已停止;正在初始化 VIT [VIT 信息] 初始化:英文模型,仅唤醒词;堆内存=37904 [VIT 信息] 获取库信息成功 [VIT 信息] 库版本=0x00040b00 API=0x00030400 功能=0xe 通道=1 请求设备=9 [VIT 信息] 设置模型成功 [VIT 信息] 获取模型信息成功 [VIT 信息] VIT:可用唤醒词:嘿,护士 [VIT 信息] 获取内存表成功 [VIT 信息] 内存区域 0 需要 135934 字节,已保留 144460 字节 [VIT 信息] 内存区域 1 需要 135894 字节,已保留 157324 字节 [VIT 信息] 内存区域 2 需要 8854 字节,已保留 17644 字节 [VIT 信息] 内存区域 3 需要 47079 字节,已保留 49934 字节 [VIT 信息] 获取实例句柄成功 [VIT 信息] 重置实例成功 [VIT 信息] 设置控制参数成功 [VIT 信息] 获取状态参数成功 [VIT 信息] 实例:库=0x00040b00 模型=0x00040b00 选定设备=9 功能=0x4 [VIT 信息] 重置实例成功 [VIT 信息] VIT:正在监听,PCM48kHz 立体声通道 0 -> PCM16kHz 单声道 [VIT 错误] 进程失败:代码=11(无效设备);红色 LED 指示灯 = VIT 故障 [VIT 错误] RW61x 标识:地址=0x45001114 原始地址=0x00007102 掩码地址=0x00007100 库预期地址=0x00007000 [VIT 信息] VIT:已停止 设备检查观察 检查链接库的设备验证代码表明,对于设备 ID 9,它读取地址 0x45001114,清除最低八位,并将结果与 0x00007000 进行比较。 libVIT_CM33_RW61X_v04_11_00.a 是否支持在地址 0x45001114 返回 0x00007102 的 RW610 设备? 与 0x00007000 进行比较是否是此版本中已知的兼容性限制或问题? 我应该为这台 RW610 使用哪个 VIT 库版本和匹配的 API 头文件? 使用门户网站的 RW612 选择生成的模型是否支持 RW610,还是需要单独的 RW610 模型生成选项? 请告知支持的库/模型组合以及是否需要进一步诊断。 谢谢。
查看全文
RW610:VIT v4.11.0がモデル初期化に成功したにもかかわらずINVALID_DEVICE戻る — ハードウェアID 0x00 こんにちは、チームのみなさん。 私はRW610 MCUを使ってカスタムボードに音声Intelligent Technology(VIT)を統合しています。モデルはロードされ、すべての初期化APIは成功しますが、VIT_Process()はVIT_INVALID_DEVICE(11)を返します。 下記のVITライブラリが私のRW610シリコンをサポートしているか、それとも別のライブラリリリースが必要なのか確認してもらえますか? アイテム構成 MCU カスタム基板上のNXP RW610 オーディオ・コーデック MAX98089 IDE MCUXpresso IDE - 24.12.0 RTOS FreeRTOS デバッグ出力 セミホスト型printf VITパッケージ リリース/24.12.00/CortexM33-RW61X 図書館 libVIT_CM33_RW61X_v04_11_00.a 実行時に報告されたライブラリバージョン 0x00040b00 — v4.11.0 VIT APIバージョン 0x00030400 実行時に報告されるモデルバージョン 0x00040b00 — v4.11.0 設定済みデバイス VIT_RW610 、数値9 動作モード VIT_WAKEWORD_ENABLE 図書館の情報源: https://github.com/nxp-mcuxpresso/VIT/tree/release/24.12.00/CortexM33-RW61X モデル生成: NXPのオンラインモデル生成ツールを使って、以下の設定で代替英語モデルを生成しました。 ポータルで選択されたデバイス:RW612 ポータルバージョン:24.12.00 ポータルにRW610のオプションが見当たらなかったので、RW612を選択しました。 生成されたVIT_Model_en.hはv4.11.0を宣言しています。現在、アプリケーションではウェイクワード認識のみが有効になっています。 VITの初期化シーケンスは次のとおりです。 1. VIT_GetLibInfo() 2. VIT_SetModel() 3. VIT_GetModelInfo() 4. VIT_GetMemoryTable() 5. 整列された静的に割り当てられたメモリ領域を割り当てる。 6. VIT_GetInstanceHandle() 7. VIT_ResetInstance() 8. VIT_SetControlParameters() 9. VIT_GetStatusParameters() 10. マイクのキャプチャを開始し、VIT_Process() を呼び出します。 リストに記載されたすべての初期化呼び出しは成功します。プロセッシングはエラー11を返します。 ランタイムログ: [VIT INFO] ボタンリクエスト: ENTER EXCLUSIVE VIT / START [VIT INFO] 排他モード:アプリケーションタスクの一時停止、スピーカー停止;VITの初期化 [VIT INFO] init: 英語モデル、ウェイクワードのみ;heap=37904 [VIT INFO] GetLibInfo OK [VIT INFO] ライブラリリリース=0x00040b00 API=0x00030400 features=0xe channels=1 requestedDevice=9 [VIT INFO] SetModel OK [VIT INFO] GetModelInfo OK [VIT INFO] VIT: 利用可能なウェイクワード: HEY NURSE [VIT INFO] GetMemoryTable OK [VIT INFO] メモリ領域 0 needs=135934 reserved=144460 bytes [VIT INFO] メモリ領域 1 needs=135894 reserved=157324 bytes [VIT INFO] メモリ領域 2 needs=8854 reserved=17644 bytes [VIT INFO] メモリ領域 3 needs=47079 reserved=49934 bytes [VIT INFO] GetInstanceHandle OK [VIT INFO] ResetInstance OK [VIT INFO] SetControlParameters OK [VIT INFO] GetStatusParameters OK [VIT INFO] インスタンス: library=0x00040b00 model=0x00040b00 selectedDevice=9 features=0x4 [VIT INFO] ResetInstance OK [VIT INFO] VIT: リスニング、PCM48kステレオチャネル 0 -> PCM16kモノラル [VIT ERROR] プロセス失敗: code=11 (INVALID_DEVICE); RED LED = VIT fault [VIT ERROR] RW61x 識別子: addr=0x45001114 raw=0x00007102 masked=0x00007100 libraryExpected=0x00007000 [VIT INFO] VIT: 停止 機器点検の観察 リンクされたライブラリのデバイス検証コードを調べたところ、デバイスID 9の場合、アドレス0x45001114を読み取り、下位8ビットをクリアし、その結果を0x00007000と比較していることがわかりました。 libVIT_CM33_RW61X_v04_11_00.aはアドレス0x45001114で0x00007102を返すRW610デバイスをサポートしていますか? 0x00007000との比較は、このリリースにおける既知の互換性の制限または問題ですか? このRW610には、どのVITライブラリのリリースとそれに対応するAPIヘッダーを使用すればよいですか? ポータルのRW612選択で生成されたモデルはRW610でサポートされていますか?それとも別のRW610モデル生成オプションが必要ですか? サポートされているライブラリ/モデルの組み合わせや、さらに必要な診断についてご助言ください。 ありがとう。
查看全文
LS1046A Linux 6.6.52 NVMeプローブの失敗で無効な管理者CQEが発生します こんにちは、NXPチームの皆様、 弊社では、LS1046Aベースのボードにおいて、NVMeプローブの断続的な障害が発生していることを確認しております。 SoC: LS1046A Kernel: Linux 6.6.52 U-Boot: 2022.04 NVMe: ATP I-Temp. NVMe M.2 2242 SSD NVMe FW: W1207A1 Connection: LS1046A PCIe3, pcie@3600000 Link: PCIe Gen3 x2 Linux BDF: 0002:01:00.0 U-BootはNVMeを一貫して検出し、そのファイルシステムを一覧表示し、カーネル、initramfs、FDTを読み込みます。LinuxはNVMeプローブ中に時折失敗します: [ 5.419777] could not locate request for tag 0x0 [ 5.424399] nvme nvme0: invalid id 0 completed on queue 0 [ 66.527417] nvme nvme0: I/O 17 QID 0 timeout, disable controller [ 66.529448] nvme nvme0: Device not ready; aborting shutdown, CSTS=0x1 [ 66.542612] nvme: probe of 0002:01:00.0 failed with error -4 タイムアウトしたリクエストのタグは一定ではありません。I/O 17 QID 0 と I/O 21 QID 0 の両方を確認しましたが、無効な完了は常に管理キュー 0 の CID/タグ 0 を報告します。 ASPMとAPSTは無効になっています。 nvme_core.default_ps_max_latency_us=0 nvme_core.apst=0 pcie_aspm=off 何かアドバイスをいただければ幸いです。 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE こんにちは、 修正オプション オプション1 — 推奨:U-Bootにパッチを適用してSCFG内のPCIeスヌープビットを設定する(正しい修正方法) U-Boot ボード初期化コード (例: board/freescale/ls1046ardb/ls1046ardb.c または同等のもの) で、SCFG SNPCNFGCR レジスタが PCIe の読み書きスヌーピングを有効にしていることを確認してください。LS1046Aリファレンスマニュアルはこれらのビットを定義しています。関連する追加事項は以下の通りです。 #include /* In board_init() or equivalent early init: */ struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR; /* Enable PCIe, SATA, USB, eDMA snooping */ setbits_be32(&scfg->snpcnfgcr, SCFG_SNPCNFGCR_SECRDSNP | SCFG_SNPCNFGCR_SECWRSNP | SCFG_SNPCNFGCR_SATARDSNP | SCFG_SNPCNFGCR_SATAWRSNP | SCFG_SNPCNFGCR_USB1RDSNP | SCFG_SNPCNFGCR_USB1WRSNP | SCFG_SNPCNFGCR_USB2RDSNP | SCFG_SNPCNFGCR_USB2WRSNP | SCFG_SNPCNFGCR_USB3RDSNP | SCFG_SNPCNFGCR_USB3WRSNP | SCFG_SNPCNFGCR_EDMASNP);   LS1046A CCI-400インターコネクトでは、これらのビットを設定してPCIeマスターの読み書きがキャッシュの整合性に参加する必要があります。設定が完了すると、NVMe DMAコントローラがArmキャッシュをスヌープし、Linuxの dma-coherent マッピングが正確になります。 U-Bootを2024.01以降にアップグレードすることを強くお勧めします。NXP Layerscape U-Bootは、2022.04以降、PCIe/コヒーレンシーに関する修正を多数蓄積しています。 オプション2 — フォールバック:DTSをオーバーライドしてPCIe3を非コヒーレントとしてマークする もし今すぐU-Bootを変更できない場合は、基板のDTS内のPCIe3ノードを上書きして、明示的に非整合性をマークしてください。これはソフトウェアキャッシュの保守を伴う6.1以前の動作に戻ります: /* In your board .dts (e.g. fsl-ls1046a-yourboard.dts) */ &pcie3 { /* pcie@3600000 */ /delete-property/ dma-coherent; };   これによりLinuxはキャッシュできないDMAマッピングを使用し、明示的なキャッシュフラッシュを行う必要があり、その代償としてスループットは低下します。U-Bootを修正するまでの間、これは有効な回避策です。 Layerscape PCIe DTバインディングのドキュメントには、 dma-coherent 一貫性を保証するためにハードウェアIPが必要であると明記されており、SoCインターコネクトのスヌーピングビットがプログラムされていない場合は設定すべきではありません。 オプション3 - セカンダリ:ハンドオフ前にU-BootでNVMeが適切にシャットダウンされていることを確認する U-Boot 2022.04 のNVMeドライバはLinuxに移行する前に優雅なNVMeシャットダウンを出さないことがあります( CC.SHN = 01b 、 CSTS.SHST = 10b を待ってください)。これにより、コントローラが CSTS.RDY=1 に残り、管理キューの状態が古くなる可能性があります。Linuxはコントローラをリセットします(CC.EN = 0 → 1)が、DMAの整合性の問題も存在すると、リセットで古い補完が確実に排水されないことがあります。 一貫性を修正した後も断続的な障害が続く場合は、 booti / bootm の前に、U-Boot ブート スクリプトまたはボード コードに明示的な NVMe シャットダウンを追加してください。あるいは、Linux NVMeドライバがすでにプリインストール済みのコントローラを処理している( nvme_disable_ctrl() でリセットされるため)、これはオプション1より優先度が低いです。 よろしくお願いします。 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE 詳しい説明をありがとうございました。 以下は、当社の掲示板におけるPCI情報です。 root@E7-2:~# lspci 0000:00:00.0PCIブリッジ:Freescale Semiconductor Inc製デバイス81c0(リビジョン10) 0000:01:00.0イーサネットコントローラ:Broadcom Inc.およびその子会社 デバイス6866(rev a0) 0001:00:00.0PCIブリッジ:Freescale Semiconductor Inc製デバイス81c0(リビジョン10) 0002:00:00.0PCIブリッジ:Freescale Semiconductor Inc製デバイス81c0(リビジョン10) 0002:01:00.0不揮発性メモリコントローラ:ATP Electronics Inc デバイス 0d0b(rev 03) NVMEエンドポイントPCIeデバイス制御レジスタ root@E7-2:~# setpci -s 0002:01:00.0 78.w 201f root@E7-2:~# setpci -s 0002:01:00.0CAP_EXP+8.w 201f エンドポイントのno-snoopフィールドがクリアされているようです。 他に確認すべき事項はありますか?ご協力いただき、大変感謝しております。 よろしくお願いします。 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE よろしくお願いします。 オプション1の場合、提案されているSNPCNFGCRマスクにはSEC、SATA、USB、およびeDMAが含まれます。 スヌープビットはありますが、PCIe1/2/3のスヌープビットはありません。   SNPCNFGCRで制御している正確なビットを教えていただけますか LS1046AでPCIe3による盗聴が行われている?   以前のNXPコミュニティの回答によると、PCIeスヌーピングは SNPCNFGCRではなく、PCIe No Snoop TLP属性によって制御されます。 提案されたマスクがどのようにしてNVMe DMAを通過させるのか、もう少し詳しく教えていただけますか pcie@3600000 コヒーレント?   以前のNXPのリンクを参照してください。 https://community.nxp.com/t5/Layerscape/Does-LS1046A-support-DMA-and-Cache-coherency/mp/1416557   https://community.nxp.com/t5/QorIQ/PCIe-and-data-cache-on-LS1046A/m-p/1053625   Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE こんにちは、 SNPCNFGCR は、LS1046A上のPCIe3スヌーピングを制御するビットは存在しません。PCIeのコヒーレンシは、このレジスタではなく、PCIe No Snoop TLP属性によって決定されます。 提案されたマスクが一般的に参照されているものである場合: 0xc0f3e000 設定するのは以下のみです。 ビット 機能 31:30 SECの読み書きスヌープ 23:22 SATA読み書きスヌープ 21:20 USB1 読み書きスヌープ 17 eDMAスヌープ 16:15 USB2 読み書きスヌープ 14:13 USB3 読み書きスヌープ     EDMASNP ビットはeDMA用であり、PCIe DMA用ではありません。したがって、このマスクだけではNVMe DMAを pcie@3600000 整合性にすることはできません。 NVMeパスの場合: NVMeはPCIeエンドポイントであり、LS1046A DDRへの受信メモリ書き込みTLPを開始します。 これらのTLPは、ハードウェアスヌーピング/コヒーレンシのためにNo Snoop = 0に設定する必要があります。 LS1046Aのルートポートだけでなく、 NVMeエンドポイントのPCIeデバイス制御レジスタも確認してください。その Enable No Snoop フィールドは CAP_EXP+0x08 、ビット11( 0x0800 )にあります。これをクリアすると、エンドポイントがスヌープ禁止トランザクションを発行できなくなります。   LS1046AのPCIeインバウンド/CCI/SMMU構成では、トランザクションをコヒーレントパス経由でルーティングする必要があります。NXPは、受信PCIeコヒーレンシーは SNPCNFGCR ではなく、ホストコヒーレンシー設定/SMMUによって処理されると述べています。   したがって、デバイスツリー内の dma-coherent は ソフトウェア宣言であり、PCIeスヌーピングを可能にするハードウェアスイッチではありません。これは、PCIe/CCI/SMMUおよびエンドポイントのNo-Snoop設定が既に一貫して構成されている場合にのみ有効です。 よろしくお願いします。   よろしくお願いします。 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE DTSボード全体を点検しました。 ボード DTS "odin-maroon.dts"以下に示すように、socノード上でdma-coherentを定義するベースファイルfsl-ls1046a.dtsiが含まれています。 しかし、odin-maroon.dts では明示的に削除されています。以下を参照してください。 &soc { /delete-property/ dma-coherent; pcie@3400000 { /delete-property/ iommu-map; }; pcie@3500000 { /delete-property/ iommu-map; }; pcie@3600000 { /delete-property/ iommu-map; }; /delete-node/ iommu@9000000; }; ボードのDTSは、選択された多くのデバイスにDMAコヒーレント機能を追加しますが、pcie1、pcie2、またはpcie3には追加しません。 したがって、PCIe3/NVMeは現在、SMMU変換を行わない非コヒーレントDMAデバイスとして動作することが想定されている。 また、ATP NVMeエンドポイントがNoSnoop-を報告していることも確認したので、Device Control No Snoop Enableビットはクリアです。 root@E7-2:~# lspci -s 0002:01:00.0 0002:01:00.0 Non-Volatile memory controller: ATP ELECTRONICS INC Device 0d0b (rev 03) root@E7-2:~# lspci -vvv -s 0002:01:00.0|grep -i snoop Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset- Max snoop latency: 0ns Max no snoop latency: 0ns root@E7-2:~# setpci -s 0002:01:00.0 CAP_EXP+8.w 201f root@E7-2:~# setpci -s 0002:01:00.0 78.w 201f 確認いただけますか: 1. LS1046A上で、スヌープ=0なしのPCIe3インバウンドメモリ書き込みTLPは、iommuマップとSMMUノードを除去した後もハードウェアコヒーレントを保てますか? 2. dma-coherentをpcie3に特化して追加すべきでしょうか? &pcie3 { DMAコヒーレント; }; iommu-mapとSMMUを削除したままにしておくことは可能でしょうか? 3.あるいは、PCIe3のハードウェアコヒーレンシを確保するには、SMMUノードとiommuマップを復元する必要があるのでしょうか?PCIe3はコヒーレントパスに到達するためにSMMUが必要ですか?それとも インバウンドウィンドウルートを直接コヒーレントDDRに送る? 4. PCIe3のインバウンドDMAトランザクションがコヒーレントパスを使用しているかどうかを確認するために、どのレジスタをダンプできますか? よろしくお願いします。 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE こんにちは、 断続的に発生するNVMeプローブの不具合について、追加のA/B検証を実施しました。 NVMe SSDにコネクテッドされたPCIe3ノードに特化して「dma-coherent」を追加しました: pcie@3600000 { dma-coherent; }; ランタイムDTBは、プロパティが存在することを確認します。 /sys/firmware/devicetree/base/soc/pcie@3600000/dma-coherent Linuxは現在、NVMeエンドポイントに対して「dev_is_dma_coherent() = 1」と報告しています。エンドポイントのPCIeデバイス制御レジスタは「0x201f」のままなので、「Enable No Snoop」(ビット11)はクリアです。 root@E7-2:~# setpci -s 0002:01:00.0 CAP_EXP+8.w 201f この変更後、NVMeプローブの障害を再現することなく、600回以上の連続再起動サイクルを完了しました。変更前はLinuxが「dev_is_dma_coherent() = 0」と報告しており、NVMe管理者キューの初期化中に断続的にこの失敗が再現されていました。 この結果は、PCIe3/NVMe DMAのコヒーレンシ構成が関与していたことを強く示唆している。 よろしくお願いします。
查看全文
SPC563M64 JATG 通过 USB Multilink 进行无码传输 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 大家好。我在通过 USB Multilink 连接 SPC563M64 时遇到了一些问题。我的设备处于审查模式,配置为 0xAAAA_AAAA,序列号密码为 0x1122334455667788。我尝试用这个密码解锁设备,但无法连接。   在正常启动模式下,我可以通过 CAN(通过我的软件)读取完整的 Shadow 块的内容,所以我确定串口密码和配置字是正确的。但我无法解除设备的审查。   在串行启动模式下 {[1],[0]},我可以使用密码 0xFEEDFACECAFEBEEF 进入 CAN 启动模式,并且我可以通过禁用闪存访问(正如应该的那样)来访问 JTAG/NEXUS 而无需审查。电源、JTAG连接等都已正确连接。   电源稳定,RESET 电路通过 4K7 电阻上拉。我尝试使用相同的传感器配置连接 MPC5674,并且 JTAG 取消传感器通过,没有任何问题。   猜猜看? 概述 Re: SPC563M64 JATG uncensoring through USB Multilink 嗨@lukaszadrapa , 你知道那种感觉吗?当你遇到一个难题时,却发现有人在 10 年前也遇到过完全相同的问题! 🙂 我目前正在研究博世 MSE6.0 ECU 中的 SPC563M64,以及 C90LC Shadow Flash 和 JTAG/Nexus 审查。 你最终把所有问题都解决了吗?我特别想了解你们是如何管理审查配置的,以及你们是否还有任何代码示例、文档或工具可以分享。 我还在考虑使用 TNM5000 进行 CFLASH 和 CSHADOW 访问。 即使过了这么多年,任何建议我都会非常感激! 谢谢! Re: SPC563M64 JATG uncensoring through USB Multilink <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 我猜你用的是 CodeWarrior 2.10,对吧?我刚刚发现,CW2.10 中包含的 ICDPPCNEXUS 调试器无法解除设备的审查,因为驱动程序中存在一个错误。 作为替代方案,您需要使用 CodeWarrior 10.6,或者您可以从www.pemicro.com下载 PKGPPCNEXUS。 给您带来不便,敬请谅解。 此致, Lukas Re: SPC563M64 JATG uncensoring through USB Multilink <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 是的,我知道C90CL设备上的这个功能,我尝试使用密码0x5566778811223344,但没有成功。 更多信息:我可以通过MCU内部软件重写阴影区域,当我设置配置0x55AA_55AA时,一切正常——在无审查模式下可以完全访问Nexus。 我记得,在旧的 55XX 设备上进行 JTAG 取消审查是不可能的,但这个芯片有迪士尼禁止机制和 JTAG 审查 CTRL 寄存器。 Re: SPC563M64 JATG uncensoring through USB Multilink <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您好, 你试过更换密码吗?在 C90LC 闪存上,需要将密码交换为 0xCAFEBEEFFEEDFACE(而不是 0xFEEDFACECAFEBEEF)。您能试试吗?请告知结果。 此致, Lukas
查看全文
HSE FW MUのインストール後にS32K396がロックされる:RESET_RECOVERY_MODEに関する説明 未回答のThread(https://community.nxp.com/t5/S32K/S32K396-device-locked-asks-for-ADKP-after-HSE-FW-install-over-MU/m-p/2402535)について、S32K396がMU経由でHSEのFWをインストールした後にADKPを求めてきた件についてフォローアップします。 私のBCWにはRESET_RECOVERY_MODEビットが設定されていないことに気づきました。RM758227-RM00286 HSE-B ファームウェアリファレンスマニュアル - V2.7 には、私が解読するのに助けが必要な特定の表現があります: 表119には、 RESET_RECOVERY_MODEは連続リセットによるリカバリモードへの移行を無効にするために使用されると記載されています。 セクション 2.6.1.3.3 では、リカバリー モードに入るにはRESET_RECOVERY_MODE == 1 かつDCMRWP1ビット ( SBAF_REC_DIS_FRSTまたはSBAF_REC_DIS_DRST ) == 0 が必要であると規定されています。 もう少し詳しく教えていただけますか: RESET_RECOVERY_MODEを1に設定すると、リカバリーモードが明示的に有効または無効になりますか? 0のままにすると、リカバリーモードを完全に止めてしまい、なぜデバイスがロックされたままでADKPを求められるのか説明できるのでしょうか? 復旧経路を確実に確保するために、MU(マルチユニット)環境におけるBCWおよびDCMRWP1の推奨構成は何ですか? よろしくお願いいたします。 マーカス Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 私がインストールを試みた最後の2台のユニットについて回答します。 コード内でライフサイクル設定やADKP設定に一切手を加えてはならない。いずれのソフトウェアもIVTにLCWが設定されておらず、インストール試行中にHSEサービスも使用されませんでした。 これらのテストすべてにおいて、FS26はデバッグモードに保持されました(DEBUGピンはVBOSにブリッジ接続されました)。 JLink経由で接続しようとすると、毎回同じ結果になります。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 1) RESET_RECOVERY_MODE = 1 に設定すると、対応する SBAF_REC_DIS_FRST または SBAF_REC_DIS_DRST ビットが 0 の場合、連続した機能リセットまたは破壊リセットの後にリカバリー モードに入ることができます。 2) 0のままにしておくと、このリセットによってトリガーされる回復メカニズムのみが無効になります。ADKPをプロビジョニングしたり、ライフサイクルを進めたり、デバイスをロックしたりすることはありません。先に発生したADKPプロンプトは、デバイスの異常な状態が原因であった可能性があります。というのも、その後J-Linkは「デバイスはロックされていません」および「HSEファームウェアがインストールされていません」というメッセージを報告し、続いてDAPエラーが発生したからです。 3) RESET_RECOVERY_MODE = 1 を使用し、該当する SBAF_REC_DIS_FRST/DRST ビットを 0 のままにします。リセットソースは、HSE FW のインストール中にも制御する必要があります。 デバイスのライフサイクルを変更したか、ADKPがプロビジョニングされていて既知か、FS26ウォッチドッグがインストール時に無効化されたか、そしてJ-Linkが同じDAPエラーを報告しているか確認していただけますか? Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Hello 私はマーカスの同僚で、最後の2ユニットをレンガで塞いだ者です。 最初のものはアクティブパーティションもパッシブパーティションにもソフトウェアが書かれておらず、私のロジックエラーによりコアはスワップを要求せず、ファームウェアアドレス転送後4秒で機能リセットを行いました。 2台目はインストール前に上パーティションにアプリケーションが書き込まれていましたが、ファームウェアアドレスを移した直後にユニットとの連絡が途絶えました。 当社のハードウェアにはFS26ウォッチドッグが搭載されていますが、今回のテストではデバッグモードに切り替えました。デバッグモードで保持しているにもかかわらず、まだ何か影響がある可能性はありますか? マニュアルを読んだ限りでは、特に何も設定されていない場合はJTAGリカバリーモードに入るはずですが、これは正しいでしょうか? JLink Commanderで接続しようとすると、デバッガーがパスワードでロックされていると表示されるのですが、ライフサイクルを進めたことがないので、そのようなことはあり得ないはずです。 もしJTAGリカバリーモードなら、デバッガへのアクセスやプログラムメモリの消去・消去の正確な手順は何でしょうか?そして、これはJLinkで実現可能でしょうか?オフィスにはTrace32がありますが、現在は別のテストベンチに接続されているため、JLinkを使いたいと思っています。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 現在、JTAG経由でHSEファームウェアをMUインターフェース経由でインストールしようとしたところ、4台のユニットが全く反応しないようですAB_SWAP繰り返しますが、JTAGのリカバリーモードにアクセスする特別な手順はありますか? そもそも正しいファームウェアを使っているのだろうか?私たちは、MD5サムがcd85d261edf3b8c6afe23348bc734ad2のファイルを使用しています。 新しいユニットにHSEファームウェアをインストールするプログラムのデモ例はありますか?私が見つけることができた唯一の例は、Trace32スクリプトでした。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Hello この 問題はこのThreadで解決されました。私たちのプロトタイプには、はるかに古いSBAFファームウェアがインストールされたプリプロダクションバッチのチップが含まれていることが判明しました。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification あなたのCASEは、4つのデバイスに影響を及ぼす別の繰り返しの設置失敗のようです。別のデバイスでこの手順を試みる前に、以下の情報を提供してください。 1) MD5値だけでなく、HSEファームウェアのファイル名とバージョンをすべて記載してください。 2) ファイルがS32K396 AB_SWAP Pinkイメージであることを確認します。 3) SBAFバージョン、完全なBCW値、IVTダンプ、およびDCMRWP1値。 4) ピンク色の画像のアドレスと保存場所。 5) MU通信ログ、J-Linkログ、および関連するインストールソースコードをすべて揃えてください。 別のデバイスを使用する前に、ファームウェアイメージとインストール手順を確認する必要があります。RESET_RECOVERY_MODEの設定は、リカバリが利用できなかった理由を説明できるかもしれないが、インストール自体が失敗した理由を説明するものではない。 新しいユニットにHSEファームウェアをインストールするプログラムのデモ例はありますか?- HSEデモ例(HSEフレームワークを含む)は、使いやすさと理解のしやすさを考慮して、HSEサービス用のベアメタルサンプルコードとして提供されています。これらはあくまでデモコードです: https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples 以下の例コードをS32396に移植できます。原理は同じですが、S32K396に関連するFWバージョンをダウンロードし、リンク(2x)をリンカーコマンドファイルで変更する必要があります。 c:\NXP\S32K3_HSE_DemoExamples_1_0_0\S32K3_HSE_DemoExamples\Device_Configuration\S32K344_HSE_FW_INSTALL\ もしLauterbach TRACE32デバッガがあれば、最も簡単な方法もご紹介できます。
查看全文
S32K396 在 HSE 固件 MU 安装后锁定:RESET_RECOVERY_MODE 说明 关于 S32K396 在通过 MU 安装 HSE 固件后请求 ADKP 的未解答帖子( https://community.nxp.com/t5/S32K/S32K396-device-locked-asks-for-ADKP-after-HSE-FW-install-over-MU/mp/2402535 )的后续讨论。 我注意到我的 BCW 没有设置RESET_RECOVERY_MODE位。RM758227-RM00286 HSE-B 固件参考手册 - V2.7 中包含一些我需要帮助解读的特定措辞: 表 119 指出RESET_RECOVERY_MODE用于禁用因连续重置而进入恢复模式。 第 2.6.1.3.3 节规定,进入恢复模式需要RESET_RECOVERY_MODE == 1 和DCMRWP1位( SBAF_REC_DIS_FRST或SBAF_REC_DIS_DRST ) == 0。 请问您能否解释一下: 将RESET_RECOVERY_MODE设置为 1 是否明确启用或禁用恢复模式? 将其设置为 0 是否会完全阻止恢复模式,从而解释为什么我的设备一直处于锁定状态并要求输入 ADKP? 为确保恢复路径保持畅通,MU 安装推荐的 BCW 和 DCMRWP1 配置是什么? 顺祝商祺! 马库斯 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 针对我尝试安装的最后两台设备,我给出以下解答: 代码中的任何内容都不应该触及任何生命周期或 ADKP 设置。所有软件的 IVT 中均未设置 LCW,安装尝试期间也未使用 HSE 服务。 在所有这些测试中,FS26 都保持在调试模式(DEBUG 引脚桥接到 VBOS)。 无论我们尝试通过 JLink 连接还是其他方式连接,都会得到相同的结果。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 1) 设置 RESET_RECOVERY_MODE = 1 可在连续功能复位或破坏性复位后进入恢复模式,前提是相应的 SBAF_REC_DIS_FRST 或 SBAF_REC_DIS_DRST 位为 0。 2) 将其设置为 0 只会禁用此重置触发的恢复机制。它不会配置 ADKP、推进生命周期或锁定设备。之前的 ADKP 提示可能是由于设备状态异常引起的,因为 J-Link 后来报告称设备未锁定且 HSE 固件未安装,随后出现 DAP 错误。 3) 使用 RESET_RECOVERY_MODE = 1,并将适用的 SBAF_REC_DIS_FRST/DRST 位保持为 0。在 HSE 固件安装期间,还应控制 RESET 源。 请确认您是否更改了设备生命周期,是否已配置并识别了 ADKP,安装过程中是否禁用了 FS26 看门狗,以及 J-Link 是否仍然报告相同的 DAP 错误? Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Hello 我是马库斯的同事,负责最后两套单元房的装修。 第一个分区(包括主动分区和被动分区)都没有写入任何软件,由于我的逻辑错误,核心从未请求交换,而是在传输固件地址 4 秒后执行了功能性 RESET。 第二台设备在安装前已将应用程序写入上层分区,但在传输固件地址后,我立即与该设备失去了联系。 我们的硬件有一个 FS26 看门狗,但在这些测试中,它被切换到了调试模式。即使在调试模式下,这是否仍然会造成影响? 根据我的理解,如果未进行其他显式设置,则应进入 JTAG 恢复模式,这种理解是否正确? 当我尝试连接 JLink Commander 时,它似乎表明调试器已被密码锁定,但据我所知,这不应该发生,因为我们从未进入过生命周期后期。 如果处于 JTAG 恢复模式,获取调试器访问权限并擦除/编程存储器的具体步骤是什么?可以用 JLink 实现吗?我们办公室有一台 Trace32,但它目前连接到另一个测试平台上,我更希望使用 JLink。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 现在,在尝试通过 MU 接口安装 AB_SWAP HSE 固件后,我们发现有 4 个单元似乎完全没有通过 JTAG 响应。再次确认一下,进入 JTAG 恢复模式是否有特殊步骤? 我们用的固件版本真的正确吗?我们使用的文件 MD5 值为 cd85d261edf3b8c6afe23348bc734ad2。 是否有演示程序可以演示如何在新设备上安装 HSE 固件?我找到的唯一例子是 Trace32 脚本。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 您的案例似乎是四台设备都出现了重复安装失败的情况。在尝试在其他设备上进行此操作之前,请提供以下信息: 1)完整的 HSE 固件文件名和版本,而不仅仅是 MD5 值。 2)确认该文件为 S32K396 AB_SWAP 粉色镜像。 3) SBAF 版本、完整的 BCW 值、IVT 转储和 DCMRWP1 值。 4) 粉色图像地址和存储位置。 5) 完整的 MU 通信日志、J-Link 日志和相关安装源代码。 使用其他设备之前,应验证固件映像和安装顺序。RESET_RECOVERY_MODE 设置可能解释了为什么无法恢复,但并不能解释为什么安装本身失败。 是否有演示程序可以演示如何在新设备上安装 HSE 固件?- 我们提供 HSE 演示示例(包含 HSE 框架),这些示例是 HSE 服务的裸机示例代码,方便使用和理解。这些只是演示代码: https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples 您可以将以下示例代码移植到 S32396,原理相同,但您必须下载与 S32K396 相关的固件版本,并将链接器命令文件中的链接 (2x) 更改为: c:\NXP\S32K3_HSE_DemoExamples_1_0_0\S32K3_HSE_DemoExamples\Device_Configuration\S32K344_HSE_FW_INSTALL\ 如果您有 Lauterbach TRACE32 调试器,我也可以为您提供最简单的方法。 Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Hello 这个问题已在本帖中得到解决,原来我们的原型机包含来自预生产批次的芯片,这些芯片加载了较旧的 SBAF 固件。
查看全文
SPC563M64 JATGのUSBマルチリンクによる検閲解除 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、みんな。SPC563M64をUSBマルチリンク経由で接続する際に問題が発生しています。私のデバイスは、構成0xAAAA_AAAA、シリアルパスワード0x1122334455667788で検閲モードになっています。このパスワードを使ってデバイスの検閲を解除しようとしましたが、接続できませんでした。   通常の起動モード{[0],[0]}では、ソフトウェアでCANを通じてシャドウブロックの内容を読み取ることができ、どのシリアルパスワードや設定ワードが正しいか確信できます。でもデバイスのアンセンサーはできません。   シリアルブートモード{[1],[0]}ではパスワード0xFEEDFACECAFEBEEFでCANブートモードにアクセスでき、JTAG/NEXUSアクセスも検閲なしでフラッシュアクセスをディアセイブ(あるべき状態)で行えます。つまり、電源やJTAG接続などは正しく行われているということです。   電源は安定しており、リセットは4.7kΩの抵抗器を介してプルアップされている。同じ検閲設定とJTAG検閲解除パスを使用してMPC5674を接続しようとしましたが、問題なく動作しました。   何か予想はありますか? 全般 Re: SPC563M64 JATG uncensoring through USB Multilink こんにちは、 @lukaszadrapa さん。 何か問題で悩んでいる時に、10年前に全く同じ問題を抱えていた人を見つけた時の気持ち、分かりますよね! 🙂 現在、Bosch MSE6.0 ECUに搭載されているSPC563M64を使用して、C90LCシャドウフラッシュとJTAG/Nexusによる検閲について調査しています。 最終的にすべて正常に動作するようになりましたか?特に検閲の設定をどのように管理したのか、そして共有できるコード例やドキュメント、ツールがあれば知りたいです。 また、CFLASHやCSHADOWのアクセスのTNM5000も検討しています。 長年経った今でも、どんなアドバイスでも大変ありがたく思います! ありがとう! Re: SPC563M64 JATG uncensoring through USB Multilink <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、 あなたはCodeWarrior 2.10を使っているんですよね?CW2.10に含まれているICDPPCNEXUSデバッガが、ドライバのバグでデバイスの検閲を解除できないことが最近分かりました。 回避策としてCodeWarrior 10.6を使うか、www.pemicro.com からPKGPPCNEXUSをダウンロードすることも可能です ご迷惑をおかけして申し訳ありません。 よろしくお願いいたします。 ルーカス Re: SPC563M64 JATG uncensoring through USB Multilink <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> はい、C90CLデバイスのこの機能については知っています。パスワードとして0x5566778811223344を試してみましたが、うまくいきませんでした。 追加情報として、内部のMCUソフトでシャドウエリアを書き換えられ、設定設定0x55AA_55AAすべて順調に進み、検閲なしモードでネクサスに完全にアクセスできます。 古い55XXデバイスではJTAGの検閲解除は不可能だったと記憶していますが、このチップにはDISNEXの抑制メカニズムとJTAG Censor CTRLレジスタがあります。 Re: SPC563M64 JATG uncensoring through USB Multilink <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、 パスワードを変更してみましたか?C90LCフラッシュでは、パスワードを0xFEEDFACECAFEBEEFの代わりに0xCAFEBEEFFEEDFACEに変更する必要があります。試してみてくれない?結果を教えてください。 よろしくお願いいたします。 ルーカス
查看全文
NXP LPSPI Configuration S32K344 EVB Hi team, I am currently working on LPSPI communication on the S32K344 EVK using NXP RTD 4.0.0. I have completed the required configuration for LPSPI and am trying to develop an SPI loopback communication on the EVK. However, I am currently facing an issue where the data is being transmitted, but I am not receiving the expected data in the RX buffer. I have attached the following for your reference: Project source code Relevant configuration details Could you please go through the attached project and configuration and help me identify the issue? Specifically, I would appreciate your support in checking: LPSPI master/slave configuration LPSPI pin configuration and signal routing TX/RX buffer configuration API usage for LPSPI transmit and receive Any additional configuration required for loopback communication on the S32K344 EVK Please let me know if any additional information or logs are required from my side. Thanks, Raky Re: NXP LPSPI Configuration S32K344 EVB Hi @rakYps21  I reviewed your code and configuration, and I could not find any issues. I also flashed the project onto an FRDM-A-S32K344 board, and as shown in the screenshots below, the RX buffers on both the master and slave sides contain the expected data for both transmissions.  I understand that you are using an S32K3x4EVB board. Could you please let me know which specific EVB variant you are using? Also, if possible, could you share a picture of the MCU on your board? I would like to check the device marking and mask set.  BR, VaneB Re: NXP LPSPI Configuration S32K344 EVB Hi @VaneB, Thank you for your acknowledgment and for testing the setup from your end. I am currently using the FRDM Automotive S32K344MINI-EVB board HDQFP172 MCU. I have also shared an image of the MCU mounted on the board for your reference. Kindly check and confirm. Please let me know if you need any additional information from my side. Regards, Raky Re: NXP LPSPI Configuration S32K344 EVB Hi @rakYps21  Thank you for sharing the image. It looks like we are using a very similar setup. To make sure both setups are aligned, could you please double-check that your SPI signals on your setup are connected as shown below and match the pin assignments specified in the FRDM-A-S32K344 Rev. A schematic? Re: NXP LPSPI Configuration S32K344 EVB Hi @rakYps21  The connections were a little difficult to distinguish in the photo, so I have marked them on the FRDM-A-S32K344 image below using different colors for clarity: brown for CLK, red for PCS, orange for MOSI, and yellow for MISO. I am also attaching the captured signals so you can verify that the SPI communication is working as expected. Re: NXP LPSPI Configuration S32K344 EVB @VaneB  Also, could you please share images of your setup and the physical connections for reference? Looking forward to your response and further guidance on the issue. BR, Raky Re: NXP LPSPI Configuration S32K344 EVB Hi @VaneB , I have double-checked the SPI signal connections and pin assignments on my setup, and they are configured as specified in the FRDM-A-S32K344. Everything matches the configuration you mentioned. Looking forward to your response and further guidance on the issue. Best regards, Raky Re: NXP LPSPI Configuration S32K344 EVB @VaneB Thank you so much for your support. It is working as expected now. Does LPSPI support internal Loopback for this FRDM-A-S32K344 EVB ? Re: NXP LPSPI Configuration S32K344 EVB I am currently working on interfacing the external NFC reader IC with the NXP S32K344 board. I would now like to establish communication with the external NFC reader instead of using SPI loopback mode. For this, I understand that I need to configure the following hardware interfaces: 1. 3.3 V power supply and common ground 2. NFC_IRQ interrupt signal 3. SPI MOSI, MISO, CLK (SCK), and CS signals Additionally, I need your guidance on implementing the platform-specific functions required by the library, particularly the following: #define platformDelay(t) vTaskDelay(pdMS_TO_TICKS(t)) #define platformGetSysTick() xTaskGetTickCount() #define platformSpiTxRx(txBuf, rxBuf, len) Could you please help clarify the following? 1. What are the recommended hardware connections and GPIO configurations for interfacing the external NFC reader with the NXP S32K344? 2. How should the NFC_IRQ signal be configured and handled on the NXP platform? 3. How should platformGetSysTick() and platformDelay() be implemented to ensure compatibility with the RFAL library? 4. How should platformSpiTxRx() be implemented using the NXP LPSPI driver to transmit and receive data from the NFC reader? 5. Are there any additional platform-specific configurations or initialization steps required to establish communication with the external NFC reader? Your guidance would be greatly appreciated. Thank you for your support. Regards, Raky
查看全文
SPC563M64 JATG uncensoring through USB Multilink Hi all. I have some trouble to connect SPC563M64 through USB Multilink. My device is in censored mode with configuration 0xAAAA_AAAA and serial password 0x1122334455667788. I try to uncensor device with this password, but have no connect.    In normal boot mode {[0],[0]} i can read contents of full Shadow block through CAN (by my software), so I'm sure what serial password and configuration word is correct. But i can't uncensor device.   In serial boot mode {[1],[0]} i can access CAN boot mode with password 0xFEEDFACECAFEBEEF and i have JTAG/NEXUS access without censoring with flash access diasabled (as it should be). So power, JTAG connections etc done right.     Power is stable, reset pulled up through 4K7 resistor. I tryed to connect MPC5674 with same censor configuration and JTAG uncensor pass with no troubles.   Any guess?  General Re: SPC563M64 JATG uncensoring through USB Multilink Hi @lukaszadrapa, You know how it is when you’re struggling with a problem and find someone who had exactly the same issue 10 years ago! 🙂 I’m currently working with the SPC563M64 in a Bosch MSE6.0 ECU, researching C90LC Shadow Flash and JTAG/Nexus censorship. Did you eventually get everything working? I’m particularly interested in how you managed the censorship configuration and whether you still have any code examples, documentation or tools you could share. I’m also considering the TNM5000 for CFLASH and CSHADOW access. Any advice would be greatly appreciated, even after all these years! Thanks! Re: SPC563M64 JATG uncensoring through USB Multilink Hi, I guess that you use CodeWarrior 2.10, right? I just found out that the the ICDPPCNEXUS debugger which is included in CW2.10 is not able to uncensor the device because there's a bug in drivers. As a workaround, it is necessary to use CodeWarrior 10.6 or you can download PKGPPCNEXUS from www.pemicro.com Sorry for inconvenience. Regards, Lukas Re: SPC563M64 JATG uncensoring through USB Multilink Yes, i know about this feature on C90CL devises, i tryed to use password as 0x5566778811223344, but not success.     More info: I can rewrite shadow area by internal MCU software, and when i sets up config 0x55AA_55AA all gone right - full nexus access in uncensored mode.     I remeber, what it impossible to do JTAG uncensor on old 55XX device, but this chip have DISNEX inhibit mechanism and JTAG Censor CTRL register. Re: SPC563M64 JATG uncensoring through USB Multilink Hi, have you tried to swap the password? On C90LC flash, it is necessary to swap the password like this 0xCAFEBEEFFEEDFACE (instead of 0xFEEDFACECAFEBEEF). Could you try that? Please let me know the result. Regards, Lukas
查看全文
LS1046A 间歇性 Linux 6.6.52 NVMe 探测失败,管理 CQE 无效 您好,NXP团队: 我们发现基于 LS1046A 的板上存在间歇性 NVMe 探针故障。 SoC: LS1046A Kernel: Linux 6.6.52 U-Boot: 2022.04 NVMe: ATP I-Temp. NVMe M.2 2242 SSD NVMe FW: W1207A1 Connection: LS1046A PCIe3, pcie@3600000 Link: PCIe Gen3 x2 Linux BDF: 0002:01:00.0 U-Boot 可以持续检测到 NVMe,列出其文件系统,并加载内核、initramfs 和 FDT。Linux 在 NVMe 探测期间偶尔会发生故障: [ 5.419777] could not locate request for tag 0x0 [ 5.424399] nvme nvme0: invalid id 0 completed on queue 0 [ 66.527417] nvme nvme0: I/O 17 QID 0 timeout, disable controller [ 66.529448] nvme nvme0: Device not ready; aborting shutdown, CSTS=0x1 [ 66.542612] nvme: probe of 0002:01:00.0 failed with error -4 超时请求标签不是固定的。我们已经看到了 I/O 17 QID 0 和 I/O 21 QID 0,但是无效完成始终报告管理队列 0 上的 CID/标签 0。 ASPM 和 APST 已禁用: nvme_core.default_ps_max_latency_us=0 nvme_core.apst=0 pcie_aspm=off 任何指导都将不胜感激。 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE 你好, 修复选项 方案一——首选:修改 U-启动 以在 SCFG 中设置 PCIe 侦听位(正确修复方案) 在你的 U-Boot 板初始化代码中(例如, 板/freescale/ls1046ardb/ls1046ardb.c 或等效文件),确保 SCFG SNPCNFGCR 寄存器启用 PCIe 读/写侦听。LS1046A 参考手册对这些位进行了定义;相关的补充内容如下: #include /* In board_init() or equivalent early init: */ struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR; /* Enable PCIe, SATA, USB, eDMA snooping */ setbits_be32(&scfg->snpcnfgcr, SCFG_SNPCNFGCR_SECRDSNP | SCFG_SNPCNFGCR_SECWRSNP | SCFG_SNPCNFGCR_SATARDSNP | SCFG_SNPCNFGCR_SATAWRSNP | SCFG_SNPCNFGCR_USB1RDSNP | SCFG_SNPCNFGCR_USB1WRSNP | SCFG_SNPCNFGCR_USB2RDSNP | SCFG_SNPCNFGCR_USB2WRSNP | SCFG_SNPCNFGCR_USB3RDSNP | SCFG_SNPCNFGCR_USB3WRSNP | SCFG_SNPCNFGCR_EDMASNP);   LS1046A CCI-400 互连需要设置这些位,以便 PCIe 主读/写操作参与缓存一致性。设置完成后,NVMe DMA 控制器将侦听 ARM 缓存,Linux 的 dma-coherent 映射将是正确的。 强烈建议将 U-Boot 升级到 2024.01 或更高版本——NXP Layerscape U-Boot 自 2022.04 版本以来积累了多个 PCIe/一致性修复程序。 选项 2 — 备用方案:覆盖 DTS 设置,将 PCIe3 标记为非一致性接口 如果现在无法更改 U-启动,请在板 DTS 中覆盖 PCIe3 节点,将其明确标记为非一致性。这将恢复到 6.1 版本之前的行为,即软件缓存维护方式: /* In your board .dts (e.g. fsl-ls1046a-yourboard.dts) */ &pcie3 { /* pcie@3600000 */ /delete-property/ dma-coherent; };   这迫使 Linux 使用不可缓存的 DMA 映射并执行显式缓存刷新,代价是吞吐量有所下降。在修复 U-Boot 期间,这是一个有效的临时解决方案。 Layerscape PCIe DT 绑定文档明确指出, dma-coherent 要求硬件 IP 保证一致性——如果未对 SoC 互连侦听位进行编程,则不应设置 dma-coherent。 选项 3 — 备用:确保在 U-Boot 中正确关闭 NVMe 后再进行交接 U-Boot 2022.04 的NVMe 驱动程序可能不会发出优雅的 NVMe 关闭( CC.SHN = 01b ,等待 CSTS.SHST = 10b ),然后跳转到 Linux。这会导致控制器处于 CSTS.RDY=1 状态,并且可能存在过时的管理队列状态。Linux 会重置控制器(CC.EN = 0 → 1),但如果同时存在 DMA 一致性问题,则重置可能无法可靠地清除过时的完成状态。 修复一致性问题后,如果间歇性故障仍然存在,请在 启动i / 启动m 之前向 U-启动 启动脚本或板代码中添加显式的 NVMe 关闭。或者,Linux NVMe 驱动程序已经可以处理预先启用的控制器(它通过 nvme_disable_ctrl() 重置它),因此该方案的优先级低于方案 1。 此致 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE 谢谢! 对于方案 1,建议的 SNPCNFGCR 掩码包含 高效密码学标准(SEC)、SATA、USB 和 eDMA。 可以窥探位,但不能窥探 PCIe1/2/3 的窥探位。   请问您能否指出SNPCNFGCR中控制该功能的具体位? LS1046A 是否在监听 PCIe3?   根据 NXP 社区早前的回应,PCIe 窥探是 由 PCIe No Snoop TLP 属性控制,而不是 SNPCNFGCR。 能否解释一下所提出的掩码如何实现 NVMe DMA? PCIe@3600000 相干?   请参阅之前NXP的链接: https://community.nxp.com/t5/Layerscape/Does-LS1046A-support-DMA-and-Cache-coherency/mp/1416557   https://community.nxp.com/t5/QorIQ/PCIe-and-data-cache-on-LS1046A/m-p/1053625   Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE 非常感谢您的详细解释。 以下是我们主板上的PCI信息 root@E7-2:~# lspci 0000:00:00.0PCI桥接器:飞思卡尔半导体公司设备81c0(修订版10) 0000:01:00.0以太网控制器:博通公司及其子公司 设备 6866(修订版 a0) 0001:00:00.0PCI桥接器:飞思卡尔半导体公司设备81c0(修订版10) 0002:00:00.0PCI桥接器:飞思卡尔半导体公司设备81c0(修订版10) 0002:01:00.0非易失性存储器控制器:ATP ELECTRONICS INC 设备 0d0b(修订版 03) 以及 NVME 端点PCIe 设备控制寄存器 root@E7-2:~# setpci -s 0002:01:00.0 78.w 201f root@E7-2:~# setpci -s 0002:01:00.0CAP_EXP+8.w 201f 看起来该端点的 no-snoop 字段已被清除。 还有其他需要检查的地方吗?非常感谢您的帮助。 此致 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE 你好, SNPCNFGCR 没有位可以控制 LS1046A 上的 PCIe3 侦听。PCIe 一致性由 PCIe No Snoop TLP 属性决定,而不是由该寄存器决定。 如果所提议的掩码是通常引用的: 0xc0f3e000 它仅设置: 位数 功能 31:30 高效密码学标准\(SEC\) 读/写监听 23:22 SATA 读/写窥探 21:20 USB1 读/写窥探 17 eDMA 窥探 16:15 USB2 读/写窥探 14:13 USB3 读/写窥探     EDMASNP 位用于eDMA ,而不是 PCIe DMA。因此,该掩码本身不能使通过 pcie@3600000 NVMe DMA 保持一致。 对于 NVMe 路径: NVMe 是 PCIe 端点,并启动入站内存写入 TLP 到 LS1046A DDR。 对于硬件侦听/一致性,这些 TLP 的No Snoop 必须设置为 0 。 检查NVMe 端点的PCIe 设备控制寄存器,而不仅仅是 LS1046A 根端口。其 Enable No Snoop ”字段位于 CAP_EXP+0x08 ,第 11 位( 0x0800 )。清除此设置可防止端点发出 No-Snoop 交易。   LS1046A 的 PCIe 入站/CCI/SMMU 配置也必须通过一致性路径路由事务。NXP 表示,入站 PCIe 一致性由主机一致性设置/SMMU 处理,而不是由 SNPCNFGCR 处理。   因此,设备树中的 dma-coherent 是一个软件声明,而不是启用 PCIe 侦听的硬件开关。仅当 PCIe/CCI/SMMU 和端点 No-Snoop 设置已一致配置时,此方法才有效。 此致   此致 Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE 我们检查了整个板的DTS。 板 DTS“odin-maroon.dts”包括基础 fsl-ls1046a.dtsi,它定义了 soc 节点上的 dma-coherent,请参见下文。 然而,odin-maroon.dts 文件明确地将其移除,如下所示: &soc { /delete-property/ dma-coherent; pcie@3400000 { /delete-property/ iommu-map; }; pcie@3500000 { /delete-property/ iommu-map; }; pcie@3600000 { /delete-property/ iommu-map; }; /delete-node/ iommu@9000000; }; 然后,板载 DTS 将 DMA 一致性功能添加到许多选定的设备,但不会添加到 pcie1、pcie2 或 pcie3。 因此,PCIe3/NVMe 目前预计将作为非相干 DMA 设备运行,无需 SMMU 转换。 我们还确认 ATP NVMe 端点报告 NoSnoop-,因此其设备控制 No Snoop Enable 位为空。 root@E7-2:~# lspci -s 0002:01:00.0 0002:01:00.0 Non-Volatile memory controller: ATP ELECTRONICS INC Device 0d0b (rev 03) root@E7-2:~# lspci -vvv -s 0002:01:00.0|grep -i snoop Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset- Max snoop latency: 0ns Max no snoop latency: 0ns root@E7-2:~# setpci -s 0002:01:00.0 CAP_EXP+8.w 201f root@E7-2:~# setpci -s 0002:01:00.0 78.w 201f 请您确认一下: 1. 在 LS1046A 上,当 iommu-map 和 SMMU 节点被移除时,No Snoop=0 的 PCIe3 入站内存写入 TLP 能否保持硬件一致性? 2. 我们是否应该专门为 PCIe 3 添加 DMA 相干技术? &pcie3 { DMA相干; }; 如何在移除 iommu-map 和 SMMU 的情况下进行操作? 3. 或者说,PCIe3硬件一致性是否需要恢复SMMU节点和iommu映射?PCIe3 是否需要 SMMU 才能到达一致性路径,还是可以的? 入站窗口路由直接到相干DDR? 4. 我们可以转储哪些寄存器来验证 PCIe3 入站 DMA 事务是否使用一致性路径? 谢谢! Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE 您好, 我们针对间歇性 NVMe 探针故障完成了额外的 A/B 验证。 我们专门为连接到 NVMe SSD 的 PCIe3 节点添加了 `dma-coherent`: pcie@3600000 { dma-coherent; }; 运行时 DTB 确认该属性存在: /sys/firmware/devicetree/base/soc/pcie@3600000/dma-coherent Linux 现在报告 NVMe 端点的 `dev_is_dma_coherent() = 1`。端点 PCIe 设备控制寄存器仍为 `0x201f`,因此启用无窥探(第 11 位)为空。 root@E7-2:~# setpci -s 0002:01:00.0 CAP_EXP+8.w 201f 经过这一更改后,我们完成了 600 多次连续重启循环,没有重现 NVMe 探测失败的情况。在更改之前,Linux 报告 `dev_is_dma_coherent() = 0`,并且在 NVMe 管理队列初始化期间可以间歇性地重现此故障。 该结果强烈表明 PCIe3/NVMe DMA 一致性配置与此有关。 此致
查看全文
LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE Hi NXP team, We are seeing an intermittent NVMe probe failure on our LS1046A-based boards. SoC: LS1046A Kernel: Linux 6.6.52 U-Boot: 2022.04 NVMe: ATP I-Temp. NVMe M.2 2242 SSD NVMe FW: W1207A1 Connection: LS1046A PCIe3, pcie@3600000 Link: PCIe Gen3 x2 Linux BDF: 0002:01:00.0 U-Boot can consistently detect the NVMe, list its filesystem, and load the kernel, initramfs, and FDT. Linux occasionally fails during NVMe probe: [ 5.419777] could not locate request for tag 0x0 [ 5.424399] nvme nvme0: invalid id 0 completed on queue 0 [ 66.527417] nvme nvme0: I/O 17 QID 0 timeout, disable controller [ 66.529448] nvme nvme0: Device not ready; aborting shutdown, CSTS=0x1 [ 66.542612] nvme: probe of 0002:01:00.0 failed with error -4 The timed-out request tag is not constant. We have seen both I/O 17 QID 0 and I/O 21 QID 0, but the invalid completion always reports CID/tag 0 on Admin Queue 0. ASPM and APST are disabled: nvme_core.default_ps_max_latency_us=0 nvme_core.apst=0 pcie_aspm=off Any guidance would be appreciated. Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE Hello, Fix Options Option 1 — Preferred: Patch U-Boot to set PCIe snoop bits in SCFG (correct fix) In your U-Boot board init code (e.g. board/freescale/ls1046ardb/ls1046ardb.c or equivalent), ensure the SCFG SNPCNFGCR register enables PCIe read/write snooping. The LS1046A Reference Manual defines these bits; the relevant additions are: #include /* In board_init() or equivalent early init: */ struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR; /* Enable PCIe, SATA, USB, eDMA snooping */ setbits_be32(&scfg->snpcnfgcr, SCFG_SNPCNFGCR_SECRDSNP | SCFG_SNPCNFGCR_SECWRSNP | SCFG_SNPCNFGCR_SATARDSNP | SCFG_SNPCNFGCR_SATAWRSNP | SCFG_SNPCNFGCR_USB1RDSNP | SCFG_SNPCNFGCR_USB1WRSNP | SCFG_SNPCNFGCR_USB2RDSNP | SCFG_SNPCNFGCR_USB2WRSNP | SCFG_SNPCNFGCR_USB3RDSNP | SCFG_SNPCNFGCR_USB3WRSNP | SCFG_SNPCNFGCR_EDMASNP);   The LS1046A CCI-400 interconnect requires these bits to be set so that PCIe master reads/writes participate in cache coherency. Once set, the NVMe DMA controller will snoop the ARM caches, and Linux's dma-coherent mappings will be correct. Strongly consider upgrading U-Boot to 2024.01 or later — NXP Layerscape U-Boot has accumulated several PCIe/coherency fixes since 2022.04. Option 2 — Fallback: Override DTS to mark PCIe3 as non-coherent If you cannot change U-Boot right now, override the PCIe3 node in your board DTS to explicitly mark it non-coherent. This reverts to the pre-6.1 behaviour with software cache maintenance: /* In your board .dts (e.g. fsl-ls1046a-yourboard.dts) */ &pcie3 { /* pcie@3600000 */ /delete-property/ dma-coherent; };   This forces Linux to use non-cacheable DMA mappings and perform explicit cache flushes, at the cost of some throughput. It is a valid workaround while you fix U-Boot. The Layerscape PCIe DT binding documentation explicitly notes that dma-coherent requires the hardware IP to guarantee coherency — it should not be set if the SoC interconnect snooping bits are not programmed. Option 3 — Secondary: Ensure proper NVMe shutdown in U-Boot before handoff U-Boot 2022.04's NVMe driver may not issue a graceful NVMe shutdown ( CC.SHN = 01b , wait for CSTS.SHST = 10b ) before jumping to Linux. This leaves the controller in CSTS.RDY=1 with potentially stale Admin Queue state. Linux resets the controller (CC.EN = 0 → 1), but if the DMA coherency issue is also present, the reset may not drain the stale completion reliably. After fixing coherency, if intermittent failures persist, add an explicit NVMe shutdown to your U-Boot boot script or board code before booti / bootm . Alternatively, the Linux NVMe driver already handles a controller that is pre-enabled (it resets it via nvme_disable_ctrl() ), so this is lower priority than Option 1. Regards Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE thanks for option 1,  the proposed SNPCNFGCR mask contains SEC, SATA, USB and eDMA snoop bits, but no PCIe1/2/3 snoop bits.   Could you please identify the exact bit(s) in SNPCNFGCR that control PCIe3 snooping on LS1046A?   According to an earlier NXP Community response, PCIe snooping is controlled by the PCIe No Snoop TLP attribute rather than SNPCNFGCR. Could you clarify how the proposed mask makes NVMe DMA through pcie@3600000 coherent?   see the earlier NXP link: https://community.nxp.com/t5/Layerscape/Does-LS1046A-support-DMA-and-Cache-coherency/m-p/1416557   https://community.nxp.com/t5/QorIQ/PCIe-and-data-cache-on-LS1046A/m-p/1053625   Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE thanks a lot for the detailed explaination. below is the PCI info at our boards root@E7-2:~# lspci 0000:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 81c0 (rev 10) 0000:01:00.0 Ethernet controller: Broadcom Inc. and subsidiaries Device 6866 (rev a0) 0001:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 81c0 (rev 10) 0002:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 81c0 (rev 10) 0002:01:00.0 Non-Volatile memory controller: ATP ELECTRONICS INC Device 0d0b (rev 03) and the NVME endpoint PCIe Device Control register  root@E7-2:~# setpci -s 0002:01:00.0 78.w 201f root@E7-2:~# setpci -s 0002:01:00.0 CAP_EXP+8.w 201f it looks the no-snoop field is cleared for the endpoint. Anything else needs to be checked? very appreciated for the help. Regards Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE Hello, SNPCNFGCR has no bit(s) that control PCIe3 snooping on LS1046A. PCIe coherency is determined by the PCIe No Snoop TLP attribute, not this register. If the proposed mask is the commonly referenced: 0xc0f3e000 it sets only: Bits Function 31:30 SEC read/write snoop 23:22 SATA read/write snoop 21:20 USB1 read/write snoop 17 eDMA snoop 16:15 USB2 read/write snoop 14:13 USB3 read/write snoop     The EDMASNP bit is for eDMA, not PCIe DMA. Thus, this mask cannot by itself make NVMe DMA through pcie@3600000 coherent. For the NVMe path: NVMe is the PCIe endpoint and initiates inbound Memory Write TLPs into LS1046A DDR. Those TLPs must have No Snoop = 0 for hardware snooping/coherency. Check the NVMe endpoint’s PCIe Device Control register, not merely the LS1046A root port. Its Enable No Snoop field is at CAP_EXP+0x08 , bit 11 ( 0x0800 ). Clearing it prevents the endpoint from issuing No-Snoop transactions.   The LS1046A’s PCIe inbound/CCI/SMMU configuration must also route the transaction through the coherent path. NXP states that inbound PCIe coherency is handled by the host coherency setup/SMMU rather than SNPCNFGCR .   Therefore, dma-coherent in the device tree is a software declaration, not the hardware switch that enables PCIe snooping. It is valid only when the PCIe/CCI/SMMU and endpoint No-Snoop settings have already been configured consistently. Regards   Regards Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE We checked the complete board DTS. The board DTS "odin-maroon.dts" includes the base fsl-ls1046a.dtsi which defines dma-coherent on the soc node, see below. However, the odin-maroon.dts explicitly removes it, see below: &soc { /delete-property/ dma-coherent; pcie@3400000 { /delete-property/ iommu-map; }; pcie@3500000 { /delete-property/ iommu-map; }; pcie@3600000 { /delete-property/ iommu-map; }; /delete-node/ iommu@9000000; }; The board DTS then adds dma-coherent back to many selected devices, but not to pcie1, pcie2, or pcie3. Therefore, PCIe3/NVMe is currently expected to operate as a non-coherent DMA device, without SMMU translation. We also confirmed that the ATP NVMe endpoint reports NoSnoop-, so its Device Control No Snoop Enable bit is clear. root@E7-2:~# lspci -s 0002:01:00.0 0002:01:00.0 Non-Volatile memory controller: ATP ELECTRONICS INC Device 0d0b (rev 03) root@E7-2:~# lspci -vvv -s 0002:01:00.0|grep -i snoop Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset- Max snoop latency: 0ns Max no snoop latency: 0ns root@E7-2:~# setpci -s 0002:01:00.0 CAP_EXP+8.w 201f root@E7-2:~# setpci -s 0002:01:00.0 78.w 201f Could you please confirm: 1. On LS1046A, can PCIe3 inbound Memory Write TLPs with No Snoop=0 remain hardware coherent when iommu-map and the SMMU node are removed? 2. Should we add dma-coherent specifically to pcie3: &pcie3 { dma-coherent; }; while keeping iommu-map and SMMU removed? 3. Or does PCIe3 hardware coherency require restoring the SMMU node and iommu-map? Does PCIe3 require SMMU to reach the coherent path, or can the inbound window route directly to coherent DDR? 4. What registers can we dump to verify whether PCIe3 inbound DMA transactions are using the coherent path? thanks Re: LS1046A intermittent Linux 6.6.52 NVMe probe failure with invalid Admin CQE Hi , We completed an additional A/B validation for the intermittent NVMe probe failure. We added `dma-coherent` specifically to the PCIe3 node connected to the NVMe SSD: pcie@3600000 { dma-coherent; }; The runtime DTB confirms the property is present: /sys/firmware/devicetree/base/soc/pcie@3600000/dma-coherent Linux now reports `dev_is_dma_coherent() = 1` for the NVMe endpoint. The endpoint PCIe Device Control register remains `0x201f`, so Enable No Snoop (bit 11) is clear. root@E7-2:~# setpci -s 0002:01:00.0 CAP_EXP+8.w 201f After this change, we completed more than 600 consecutive reboot cycles without reproducing the NVMe probe failure. Before the change, Linux reported `dev_is_dma_coherent() = 0`, and the failure could be reproduced intermittently during NVMe Admin Queue initialization. This result strongly suggests that the PCIe3/NVMe DMA coherency configuration was involved. Regards
查看全文
NXP LPSPI 配置 S32K344 EVB 大家好, 我目前正在使用 NXP RTD 4.0.0 在 S32K344 EVK 上进行 LPSPI 通信。 我已经完成了 LPSPI 所需的配置,现在正在尝试在 EVK 上开发 SPI 回环通信。 但是,我目前遇到的问题是数据正在传输,但我在接收缓冲区中没有收到预期的数据。 附件内容供您参考: 项目源代码 相关配置详情 请您查看一下附件中的项目和配置,并帮我找出问题所在吗? 具体来说,我希望您能协助核实以下事项: LPSPI 主/从配置 LPSPI引脚配置和信号路由 TX/RX 缓冲区配置 LPSPI 发送和接收的 API 使用 S32K344 EVK 上环回通信所需的任何其他配置 如果还需要我提供任何其他信息或日志,请告知。 谢谢! 拉基 Re: NXP LPSPI Configuration S32K344 EVB 你好@rakYps21 我检查了您的代码和配置,没有发现任何问题。我还将该项目烧录到FRDM-A-S32K344开发板上,如下面的截图所示,主端和从端的接收缓冲区都包含了两次传输的预期数据。 我知道你使用的是S32K3x4EVB板。请问您具体使用的是哪种EVB版本? 另外,如果可以的话,能否分享一下您电路板上MCU的照片?我想检查一下设备的标记和掩膜设置。 BR,VaneB Re: NXP LPSPI Configuration S32K344 EVB 嗨@VaneB , 感谢您的确认和测试。 我目前使用的是FRDM Automotive S32K344MINI-EVB 板HDQFP172 MCU。 我还分享了一张安装在电路板上的MCU的图片供您参考。 请核实确认。 如果您需要我提供任何其他信息,请告诉我。 此致, 拉基 Re: NXP LPSPI Configuration S32K344 EVB 你好@rakYps21 感谢分享图片。 看来我们使用的配置非常相似。为确保两种设置一致,请您仔细检查一下您设置中的 SPI 信号是否按如下所示连接,并与 FRDM-A-S32K344 Rev. A 原理图中指定的引脚分配相匹配? Re: NXP LPSPI Configuration S32K344 EVB 嗨@VaneB , 我已经仔细检查了我的设置中的 SPI 信号连接和引脚分配,它们均按照 FRDM-A-S32K344 中的规定进行配置。 所有配置都与您提到的完全一致。 期待您的回复和进一步指导。 此致, 拉基 Re: NXP LPSPI Configuration S32K344 EVB @VaneB另外,能否请您分享一下您的设备配置和物理连接的图片以供参考? 期待您的回复和进一步指导。 BR, 拉基 Re: NXP LPSPI Configuration S32K344 EVB 你好@rakYps21 照片中的连接不太容易区分,因此我在下面的 FRDM-A-S32K344 图片上用不同的颜色标记了它们,以便更清晰:棕色代表 CLK ,红色代表 PCS ,橙色代表 MOSI ,黄色代表 MISO 。 我还附上了捕获到的信号,以便您验证 SPI 通信是否按预期工作。 Re: NXP LPSPI Configuration S32K344 EVB @VaneB非常感谢您的支持。 现在一切正常。 LPSPI是否支持FRDM-A-S32K344 EVB的内部环回功能? Re: NXP LPSPI Configuration S32K344 EVB 我目前正在研究如何将外部 NFC 读卡器IC 与NXP S32K344板连接起来。 我现在想与外部 NFC 阅读器建立通信,而不是使用 SPI 回环模式。 为此,我知道我需要配置以下硬件接口: 1. 3.3V电源和公共接地 2. NFC_IRQ 中断信号 3. SPI MOSI、MISO、CLK (SCK) 和 CS 信号 此外,我还需要您在实现库所需的平台特定功能方面提供指导。 尤其包括以下几点: #define platformDelay(t) vTaskDelay(pdMS_TO_TICKS(t)) #define platformGetSysTick() xTaskGetTickCount() #define platformSpiTxRx(txBuf, rxBuf, len) 请问您能否帮忙澄清以下问题? 1. 将外部 NFC 阅读器与 NXP S32K344 连接时,推荐的硬件连接和 GPIO 配置是什么? 2. 在NXP平台上应该如何配置和处理NFC_IRQ信号? 3. 应如何实现 platformGetSysTick() 和 platformDelay() 以确保与 RFAL 库兼容? 4. 如何使用 NXP LPSPI 驱动程序实现 platformSpiTxRx() 来从 NFC 阅读器发送和接收数据? 5. 与外部 NFC 阅读器建立通信是否需要任何额外的平台特定配置或初始化步骤? 非常感谢您的指导。 感谢您的支持。 问候, 拉基
查看全文
S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Following up on an unanswered thread (https://community.nxp.com/t5/S32K/S32K396-device-locked-asks-for-ADKP-after-HSE-FW-install-over-MU/m-p/2402535) about an S32K396 asking for ADKP after an HSE FW install over MU. I noticed my BCW didn't have the RESET_RECOVERY_MODE bit set. The RM758227-RM00286 HSE-B Firmware Reference Manual - V2.7 has specific wording that I need help deciphering: Table 119 states RESET_RECOVERY_MODE is used to disable entry into recovery mode because of consecutive resets. Section 2.6.1.3.3 states entry into recovery mode requires RESET_RECOVERY_MODE == 1 AND DCMRWP1 bits (SBAF_REC_DIS_FRST or SBAF_REC_DIS_DRST) == 0. Could you clarify: Does setting RESET_RECOVERY_MODE to 1 explicitly enable or disable recovery mode? Could leaving it at 0 completely prevent recovery mode, explaining why my device remains locked and asking for the ADKP? What is the recommended BCW and DCMRWP1 configuration for MU installations to ensure a recovery path is kept open? Best regards, Marcus Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification 1) Setting RESET_RECOVERY_MODE = 1 enables entry into recovery mode after consecutive functional or destructive resets, provided the corresponding SBAF_REC_DIS_FRST or SBAF_REC_DIS_DRST bit is 0. 2) Leaving it at 0 disables only this reset-triggered recovery mechanism. It does not provision ADKP, advance the lifecycle, or lock the device. The earlier ADKP prompt may have been caused by the abnormal device state, since J-Link later reported Device is not locked and HSE firmware not installed, followed by a DAP error. 3) Use RESET_RECOVERY_MODE = 1 and keep the applicable SBAF_REC_DIS_FRST/DRST bits at 0. The reset source should also be controlled during the HSE FW installation. Could you confirm whether you changed the device lifecycle, whether an ADKP was provisioned and is known, whether the FS26 watchdog was disabled during installation, and whether J-Link still reports the same DAP error? Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Answering for the last two units that I tried to install: Nothing in the code should have touched any lifecycle or ADKP settings. None of the softwares had LCW set in the IVT and no HSE services were used during install attempts. FS26 was held in debug mode for all these tests (DEBUG pin bridged to VBOS). We get identical results whenever we try to connect via JLink. Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Hello I'm Marcus' coworker who bricked the last two units. The first one had no software written to either active or passive partition, and due to a logic error on my part the core never requested a swap and instead performed a functional reset 4 seconds after transferring firmware address. The second one had an application written to the upper partition before installing, but I then lost contact with the unit immediately after transferring firmware address. Our hardware has an FS26 watchdog, but this was shunted into debug mode for these tests. Could this still be affecting anything, even though it's held in debug mode? My reading of the manual is that it should go into JTAG recovery mode if nothing else is set explicitly, is this correct? When I try to connect with JLink Commander it seems to indicate the debugger is password-locked, but as I understand it that should not be possible as we have never advanced lifecycle. If it is in JTAG recovery mode, what are the exact steps to get debugger access and erase / program memory? And can this be done with a JLink? We have a Trace32 at the office, but it's currently plugged into a different test bench and I'd prefer to use the JLink. Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification We are now at four units that seem to be totally unresponsive over JTAG, after attempting to install AB_SWAP HSE firmware over MU interface. To reiterate, is there any special procedure to access JTAG recovery mode? Are we even using the correct firmware? We're using a file with MD5 sum cd85d261edf3b8c6afe23348bc734ad2. Is there any demo example of a program that installs HSE firmware on a new unit? The only example I was able to find was a Trace32 script. Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Hello This issue was resolved in this thread, it turned out our prototypes contain chips from a pre-production batch that had a much older SBAF firmware loaded. Re: S32K396 locked after HSE FW MU install: RESET_RECOVERY_MODE clarification Your case appears to be a separate repeated installation failure affecting four devices. Before attempting the procedure on another device, please provide: 1) Complete HSE firmware filename and version, not only the MD5 value. 2) Confirmation that the file is the S32K396 AB_SWAP Pink image. 3) SBAF version, complete BCW value, IVT dump, and DCMRWP1 value. 4) Pink image address and storage location. 5) Complete MU communication log, J-Link log, and the relevant installation source code. The firmware image and installation sequence should be verified before another device is used. The RESET_RECOVERY_MODE setting may explain why recovery was unavailable, but it does not explain why the installation itself failed. Is there any demo example of a program that installs HSE firmware on a new unit? - There are HSE Demo Examples (containing HSE framework) that are bare metal sample codes for HSE services for ease of use and understanding. These are just demo codes: https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples You may port following example code to S32396, it is still the same principle, but you must download FW version related to S32K396 and change link (2x) in the linker command file: c:\NXP\S32K3_HSE_DemoExamples_1_0_0\S32K3_HSE_DemoExamples\Device_Configuration\S32K344_HSE_FW_INSTALL\ I could provide you also easiest method, in case you have available Lauterbach TRACE32 debugger.
查看全文
NXP LPSPI構成S32K344 EVB チームの皆さん、こんにちは。 現在、NXP RTD 4.0.0を使用してS32K344 EVK上でLPSPI通信を行う作業に取り組んでいます。 LPSPIに必要な設定は完了しており、EVK上でSPIループバック通信を開発しようとしています。 しかしながら、現在、データは送信されているものの、RXバッファに期待されるデータが受信されないという問題に直面しています。 ご参考までに、以下の資料を添付いたしました。 プロジェクトのソースコード 関連する構成の詳細 添付のプロジェクトと設定を確認し、問題を特定する手助けをしてもらえますか? 具体的には、以下の点でご協力いただけるとありがたいです: LPSPIマスター/スレーブ構成 LPSPIのピン構成と信号ルーティング TX/RXバッファ構成 LPSPIの送受信におけるAPIの使用方法 S32K344 EVKでのループバック通信に必要な追加設定 私の方で追加の情報やログが必要な場合はお知らせください。 ありがとうございます ラキー Re: NXP LPSPI Configuration S32K344 EVB こんにちは、 @rakYps21さん コードと設定を確認しましたが、問題は見つかりませんでした。また、FRDM-A-S32K344ボードにもプロジェクトを書き込んでみたところ、以下のスクリーンショットに示すように、マスター側とスレーブ側の両方のRXバッファには、両方の送信で期待されるデータが格納されていました。 あなたはS32K3x4EVBボードを使用していると理解しています。どのEVBバリアントを使っているのか教えていただけますか? また、可能であれば、ボードにMCUの写真を載せてもらえますか?デバイスのマーキングとマスクセットを確認したいです。 BR、VaneB Re: NXP LPSPI Configuration S32K344 EVB こんにちは、 @VaneB さん。 ご承認いただき、またそちら側で設定テストを実施していただき、ありがとうございます。 現在、 FRDM オートモーティブ S32K344MINI-EVBボードHDQFP172 MCUを使っています。 また、基板に取り付けられたMCUの画像も参考までに共有しました。 ご確認をお願いいたします。 私の方から何か追加情報が必要な場合は、お知らせください。 よろしくお願いいたします。 ラキー Re: NXP LPSPI Configuration S32K344 EVB こんにちは、 @rakYps21さん 画像を共有していただきありがとうございます。 どうやら私たちは非常に似たような設定を使っているようですね。両方のセットアップが揃っているか確認するために、下記のようにあなたのセットアップ上のSPI信号が接続されており、FRDM-A-S32K344改訂A回路図で指定されたピン割り当てと一致している かを再確認 してもらえますか? Re: NXP LPSPI Configuration S32K344 EVB こんにちは、 @VaneB さん。 私のセットアップにおけるSPI信号接続とピン割り当てを二重に確認しましたが、FRDM-A-S32K344の仕様どおりに設定されています。 すべて、あなたが言及した構成と一致しています。 ご回答と今後のご指導をお待ちしております。 よろしくお願いします、 ラキー Re: NXP LPSPI Configuration S32K344 EVB @VaneBまた、参考までにセットアップの画像や物理的な接続の画像を教えていただけますか? ご回答と今後のご指導をお待ちしております。 BR、 ラキー Re: NXP LPSPI Configuration S32K344 EVB こんにちは、 @rakYps21さん 写真では接続が少し判別しにくかったため、下のFRDM-A-S32K344画像に鮮明さのために異なる色でマーキングしました: CLKは茶色、 PCSは赤、 MOSIはオレンジ、 MISOは黄色です。 また、キャプチャした信号も接続して、SPI通信が期待通りに動作しているか確認できるようにしています。 Re: NXP LPSPI Configuration S32K344 EVB @VaneBサポート、本当にありがとうございます。 現在は期待通りに動作しています。 LPSPIはこのFRDM-A-S32K344 EVBの内部ループバックをサポートしていますか? Re: NXP LPSPI Configuration S32K344 EVB 現在、外部NFCリーダICと NXP S32K344 ボードのインターフェース作業を行っています。 今度はSPIループバックモードを使う代わりに、外部のNFCリーダと通信を確立したいと考えています。 そのために、以下のハードウェアインターフェースを設定する必要があることは理解しています。 1. 3.3V電源と共通接地 2. NFC_IRQ割り込み信号 3. SPIのMOSI、MISO、CLK(SCK)、およびCS信号 さらに、ライブラリで求められるプラットフォーム固有の機能の実装についてもご指導いただきたいです。 特に以下の点です。 #define platformDelay(t) vTaskDelay(pdMS_TO_TICKS(t)) #define platformGetSysTick() xTaskGetTickCount() #define platformSpiTxRx(txBuf, rxBuf, len) 以下の点を詳しく説明してもらえますか? 1. 外部NFCリーダとNXP S32K344を接続するための推奨ハードウェア接続およびGPIO構成は何ですか? 2. NXPプラットフォーム上でNFC_IRQ信号をどのように構成・処理すべきか? 3. platformGetSysTick()およびplatformDelay()はRFALライブラリとの互換性を確保するためにどのように実装すべきか? 4. NXP LPSPIドライバを使ってNFCリーダからのデータの送受信をどのように実装すべきか? 5. 外部NFCリーダとの通信を確立するために、プラットフォーム固有の追加の設定や初期化ステップが必要ですか? ご指導いただければ大変ありがたいです。 再開まで今しばらくお待ちください。 よろしくお願いいたします。 ラキー
查看全文
eMcem_setupinjectionChannel の引数として選択する値 こんにちは、 @danielmartynek さん。 私たちはS32K394マイクロコントローラを使っていますが、以下の関数の2/3の引数の正しいビット値を選ぶのに問題があります。 2番目と3番目の引数に渡す値をどのように選択する必要があるか、 以下の例を参考に、1ビットエラーと2ビットエラーを注入する場合、どのような値を渡す必要があり、どのようにデータを選択してビットをチェックすればよいでしょうか? SRAMにいくつかのランダムな値を使用して1つの例を試したところ、障害を注入した後、メモリへの書き込みまたは読み出しの前に、ランダムにメモリ位置が注入されました。しかし、特定のメモリ位置を注入したいのですが、どうすればその操作を実行できますか? 私が試したサンプルコード: メモリに基づいてこれら2つの引数値を選択する方法と、特定の場所に障害を注入する方法を教えてください。 ご回答をお待ちしています。 Re: what values to select as arguments for eMcem_setupinjectionChannel @danielmartynek : 上記の質問に加えて: ラッチアドレスとは何か、もう少し詳しく教えてもらえますか?これをグローバルアドレスにマッピングするにはどうすればいいですか?もしDTCMのオフセットアドレスなら、DTCMの開始アドレスを0x20000000にしてオフセットアドレスを追加すれば、そのフォールトが期待されるアドレス内に確実に注入されます。 Re: what values to select as arguments for eMcem_setupinjectionChannel こんにちは、 @danielmartynek さん: 情報ありがとうございます。ビットの選択方法については理解できましたが、emcemマニュアルの情報によると、障害を注入した後、対応する障害注入関連のメモリ領域を読み書きする必要があるとのことです。しかし、現在その操作は行っていないにもかかわらず、障害が注入されています。これはどのように機能するのでしょうか? 以下の情報は、S32K3 eMcem(S32K3_SAF_EMCEM_UM) ソフトウェア製品 Rev. 10.0 — 2025年1月21日のセクション3.4.2に記載されています Re: what values to select as arguments for eMcem_setupinjectionChannel こんにちは、@Rudved_3366 さん。 SRAM0へのエラー注入に関する最初の要望については、リファレンスマニュアルのEMI_2_CH_0定義を参照してください。   EMCEM_EIM_2_CH_0 SRAM0を対象とし、64ビットのデータと8ビットのチェックビットへのアクセスを提供します。 設定内容: eMcem_SetupInjectionChannel(EMCEM_EIM_2_CH_0、55U、66U); 参考マニュアルのエラー注入チャネル記述子n、Word0(EICHD0_WORD0 – EICHD4_WORD0)の記述によると: データビットインデックス55は、WORD[1]のビット23に対応します。 ビットインデックス66がWORD[0]のビット26に対応するかどうかを確認します。 その結果、注入設定により、SRAM0内のデータビット1つとチェックビット1つが反転される。この構成では、生成された障害パターンは訂正不可能なECCエラーとして解釈され、ERM0_CH0によって報告されます。 DTCM_1について。 すべて正しいようです。 ERMチャネルは誤り源を特定し、この場合はCH12がDTCM1に対応します。 ERMアドレスは、そのチャネルに関連付けられたラッチアドレスであり、完全なグローバルアドレスではありません。 よろしくお願いいたします。 ダニエル Re: what values to select as arguments for eMcem_setupinjectionChannel また、DTCM1に障害を注入しているのですが、障害注入自体は行われているものの、レジスタに報告されるメモリアドレスはDTCM1からのものではありません。 添付のスクリーンショットをご覧ください。 関数を呼び出して障害を注入する: デバッガ: EIMモジュールデータ: ERMステータス情報: NCE10の設定は問題ありません。ITCM0が初期化されていないため、デフォルト設定になっています。 しかし、NCE2エラーが設定されているのがわかります。 しかし、添付したメモリ割り当てのExcelスクリーンショットによると、ここで報告されているアドレスは間違っています。 そしてここでも、メモリの読み書きの前に障害を注入するとエラーが発生します。(これTrace32デバッガーでテストしています。 Re: what values to select as arguments for eMcem_setupinjectionChannel こんにちは、@Rudved_3366 さん。 これは、スタックやアプリケーションデータが故障が注入されているメモリ領域にあることが原因かもしれません。 ERMによって取得されたアドレスを分析し、.mapファイル内で対応するアドレスを特定してください。ファイル。これにより、注入されたフォールトがスタック、グローバル変数、あるいはアプリケーションが使用する他の重要なメモリ領域に影響を与えているかどうかを判断するのに役立ちます。 Re: what values to select as arguments for eMcem_setupinjectionChannel はい、その通りです。ERMがキャプチャした値を、ERMチャネルで特定された影響を受けたメモリ領域のベースアドレスに加算するだけです。あなたの場合、メモリベースアドレスは0x20000000 よろしくお願いいたします。 ダニエル
查看全文
RT1170 QSPI Flash (MX25L51245G ) Hello, We are using the MX25L51245G external flash and RT1176 and have implemented the configuration shown below. It works flawlessly in XIP mode, but I would like to get a validation from you as well. However, when running a multicore application in "Link application mode", the system hits a hardfault. Specifically, it triggers an assert due to the value read from the FlexCAN MCR register. "I'm also getting various different errors, including HardFaults." I am attaching some screenshots and my lookup table below for your reference. M7 flash init(RAM): M4 flash init(RAM): hardfault for multicore(RAM): Here is the lookup table configuration designed to support the software running seamlessly in both RAM and XIP (Execute-in-Place) modes:   #define FLASH_DUMMY_CYCLES 0x08 const flexspi_nor_config_t qspiflash_config = { .memConfig = { .tag = FLEXSPI_CFG_BLK_TAG, .version = FLEXSPI_CFG_BLK_VERSION, .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackFromDqsPad, .csHoldTime = 3u, .csSetupTime = 3u, .controllerMiscOption = 0x10, .deviceType = kFlexSpiDeviceType_SerialNOR, .sflashPadType = kSerialFlash_4Pads, .serialClkFreq = kFlexSpiSerialClk_133MHz, //okuma hatasi olursa kFlexSpiSerialClk_120MHz .sflashA1Size = 64u * 1024u * 1024u, //64MB //Her acilista QE = 1. ROM once WREN'i (seq 3) kendisi gonderir, sonra 4*12'yi 0x40 ile calistirir. //NXP RT1170 EVK'daki configCmd kalibinin aynisi .configCmdEnable = 1u, .configModeType[0] = kDeviceConfigCmdType_Generic, .configCmdSeqs[0] = {.seqNum = 1u, .seqId = 12u, .reserved = 0u}, //1 tane sequence calistir: 4*12 //asagiyi 0x20 yapinca calismadi dogrudan memory hatasinda patladi main'e gelmeden .configCmdArgs[0] = 0x40u, //WRITE_SDR'nin gonderecegi byte: SR = 0x40 .lookupTable = { [0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x6C, RADDR_SDR, FLEXSPI_1PAD, 0x20),//6Ch QREAD4B: komut ve 4 byte adres tek hattan (1-1-4) [1] = FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, FLASH_DUMMY_CYCLES, READ_SDR, FLEXSPI_4PAD, 0x04),//8 dummy bekle, data 4 hattan [4 * 1 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05, READ_SDR, FLEXSPI_1PAD, 0x04),//status regini 0x05'den okuyacam (WIP = bit0) [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0x0),//write en ettim //asagidakini yoruma alinca gercekten silmedi [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x21, RADDR_SDR, FLEXSPI_1PAD, 0x20),//4 byte adress alarak 4 kb sector silecem [4 * 8 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xDC, RADDR_SDR, FLEXSPI_1PAD, 0x20),//64 kb block silecem(app'de kullanmiyoruz) [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x12, RADDR_SDR, FLEXSPI_1PAD, 0x20),//4 byte 1 page yazacam [4 * 9 + 1] = FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04, STOP, FLEXSPI_1PAD, 0x0),//datayi gonder ve bitir (WEL'i flash program bitince kendisi temizler) [4 * 11 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xC7, STOP, FLEXSPI_1PAD, 0x0),//tum flashi silecem(app'de kullanmiyoruz) [4 * 12 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x01, WRITE_SDR, FLEXSPI_1PAD, 0x01),//WRSR + tam 1 byte (configCmdArgs[0]): sadece SR yazilir, CR'ye dokunmaz //seq 6/7 bos: ROM API suspend/resume kullanmiyor }, }, .pageSize = 256u, .sectorSize = 4u * 1024u, .ipcmdSerialClkFreq = 0x1, .blockSize = 64u * 1024u, .isUniformBlockSize = true, }; Thanks for helping. i.MXRT
查看全文