Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
LPC5411x PLL設定 こんにちは 現在のプロジェクトでは、LPC5411x の PLL モジュールを使用しています。データシートのセクション 6.5.49.6 によれば、PLL の N、M、および P 値は、対応するレジスタに書き込む前に計算する必要があります。 ただし、 SDK_2_9_0_LPCXpresso54114では、NDEC、MDEC、および PDEC の計算コードは実装されていません。代わりに、次に示すように、SDK は手動で事前に計算された値を syspllndec レジスタに直接書き込みます。(M=75 に設定したいので、MDEC=9637 を手動で計算し、 SYSCON_SYSPLLSSCTRL0_MDECに設定する必要があります) 今後の SDK リリースで、NDEC、MDEC、PDEC の計算機能を SDK に追加する予定はありますか? 現在、NDEC、MDEC、PDEC の設定は直感的ではなく、M、N、または P を変更するたびに、対応する NDEC、MDEC、PDEC 値を手動で再計算する必要があるため、維持が困難です。 よろしくお願いします。 LPC54xxx Re: LPC5411x PLL settings こんにちは@yhc123 ご投稿ありがとうございます。 現在、LPC5411 の新しい SDK バージョンをリリースする予定はありません。必要な計算はすべてお客様側で実装する必要があります。ご不便をおかけして申し訳ございません。
記事全体を表示
S32G:为什么 QSPI_IP_HyperflashProgram 每 2 字节发送一次写入命令? 专家们好 CTM: 法雷奥 平台:S32G3 模块:RTD 5.0.0QLP04 Fls 驱动程序 客户报告说,他们遇到的或非闪存写入吞吐量明显低于预期。 客户可能想知道为什么 QSPI_IP_HyperflashPro gram 函数 2 字节以 2 字节传输数据。看来这就是瓶颈所在。 是否有专家能就这一问题提供帮助? 感谢你的支持 狮子座 RTD Re: S32G: why the Qspi_Ip_HyperflashProgram sends write command for every 2 bytes? 你好@Nhi_Nguyen 谢谢您的帮助。但是在我们的驱动程序中一次写入 2 字节对客户来说太慢了吗?怎样才能提高性能? BR、 狮子座 Re: S32G: why the Qspi_Ip_HyperflashProgram sends write command for every 2 bytes? 你好@LeoLiAP、 这是因为 Hyperbus 支持以下两种类型的数据发送: 驱动程序支持将单个字写入内部缓冲(您的代码是每个地址数据的单个字),然后调用命令将缓冲区发送到 Fls(写入缓冲区)。 顺祝商祺! Nhi Re: S32G: why the Qspi_Ip_HyperflashProgram sends write command for every 2 bytes? 你好@LeoLiAP、 写入 2 字节遵循 Hyperbus 协议,所以我知道我们无法改变这一点。但 SW 团队将改进代码以节省时间,相关票据为ARTDCMEM-1247。 顺祝商祺! Nhi
記事全体を表示
Consulting on the compatibility of FS27 RTD and BMS GEN2 RTD Hi Experts, The customer's new BMS project wants to use S32K358 + FS27 + BMS GEN2 SDK. I learned from the BMS team that: BMS GEN2 SDK AUTOSAR 4.4 R21-11 Version 0.9.1 CD05 and BMS GEN2 SL SDK AUTOSAR 4.4 R21-11 Version 0.9.1 CD05 will be available next week. This supports S32K3 RTD 6.0.0 integration. The BMS GEN2 SDK will be migrated to S32K3 RTD 6.0.0 in BMS release v1.0.0 somewhere in Q1 '26. In other words, the BMS GEN2 SDK will be compatible with S32K3 RTD 6.0.0 in the near future. The customer needs a 24V platform and therefore wants to use FS27 instead of FS26. I found the following two versions of FS27 from Automotive SW - SBC/PMIC - Real Time Drivers: S32K3xx SBC FS27 R21-11 0.8.0 based on S32K3 RTD 5.0.0 SBC FS27 R23-11 1.0.0 based on S32K3 RTD 7.0.0 Q1. The customer is concerned that the drivers for FS27 and BMS GEN2 SDK are incompatible because the S32K3 RTD versions do not appear to be consistent.  If S32K3 RTD 6.0.0 is selected in the BMS GEN2 SDK, will there be any problems if the customer uses S32K3xx SBC FS27 R21-11 0.8.0 or SBC FS27 R23-11 1.0.0? Q2. Does the FS27 have a driver based on S32K3 RTD 6.0.0? Would you please help me? Thank you for the help in advance! Best Regards, Robin Here is the information of customer: Contact Name                TengHsaing Wen Email (Contact)              [email protected] Company                        XINGMOBILITY AA SW - External Device Priority: MEDIUM Source: Direct Customer Re: Consulting on the compatibility of FS27 RTD and BMS GEN2 RTD Hi Viktor, Thank you for your information. The "BMS GEN2 SDK AUTOSAR 4.4 R21-11 Version 0.9.1 CD05" based on S32K3 RTD 6.0.0 is not yet available for download. Once it becomes available for download, I will at least test whether it can be compiled successfully. Best Regards, Robin Re: Consulting on the compatibility of FS27 RTD and BMS GEN2 RTD Hello Robin, there is no dedicated release for RTD 6.0.0, but the latest version (FS27 1.0.0) should be backwards compatible with it. In case of any issues, please let us know. Best regards, Viktor Re: Consulting on the compatibility of FS27 RTD and BMS GEN2 RTD The topic has been redirect to the team to investigate it. Contact point: Razvan Tilimpea / Cristian Durla or Viktor Obr Re: Consulting on the compatibility of FS27 RTD and BMS GEN2 RTD Hi Viktor, "BMS GEN2 SDK AUTOSAR 4.4 R21-11 Version 0.9.1 CD05" is now available for download.  The customer questioned whether the AUTOSAR versions of the two drivers, R23-11 and R21-11, would differ significantly and cause compatibility issues if they were paired with SBC FS27 R23-11 1.0.0. Best Regards, Robin Re: Consulting on the compatibility of FS27 RTD and BMS GEN2 RTD Hi @viktorobr , "BMS GEN2 SDK AUTOSAR 4.4 R21-11 Version 0.9.1 CD06" is now available for download.  The customer questioned whether the AUTOSAR versions of the two drivers, R23-11 and R21-11, would differ significantly and cause compatibility issues if they were paired with SBC FS27 R23-11 1.0.0. Best Regards, Robin Re: Consulting on the compatibility of FS27 RTD and BMS GEN2 RTD Hi Robin, compatibility between different Autosar versions is tricky, we would have to compare all of the drivers used by both of the components you try to integrate and I'm not 100% familiar with the BMS SDK. I can tell you that between the FS27 versions and the drivers it uses we didn't notice major changes between R21-11 and R23-11, there might be some minor differences that will appear right away when you combine the components in one project (version specific macros etc.), but from functional point of view it should still behave the same. Best regards, Viktor
記事全体を表示
LS1046カスタムボードにおけるDDR4キャリブレーションの問題 良い一日! 私たちはカスタム LS1046 ベースのボードを立ち上げようとしていますが、DDR4 のキャリブレーション手順に行き詰まっています。 モジュールのSPDデータは正常に表示され、キャリブレーションプロセスも正常に開始されますが、その後、この理由で失敗します(CodeWarriorのログ 😞  ################################# 実行 1 検索結果: wrlvl_searcher ###################################### テスト結果: [ ============================================================ 更新日: WRLVL_CNTL = 0x8655F605、WRLVL_CNTL_2 = 0x00000000、 WRLVL_CNTL_3 = 0x00000000、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新日: WRLVL_CNTL = 0x8655F60A、WRLVL_CNTL_2 = 0x0B0B0C0F、 WRLVL_CNTL_3 = 0x0F10110D、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新日: WRLVL_CNTL = 0x8655F60A、WRLVL_CNTL_2 = 0x0B0B0C0F、 WRLVL_CNTL_3 = 0x0F101115、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新日: WRLVL_CNTL = 0x8655F60A、WRLVL_CNTL_2 = 0x0B0B0C0F、 WRLVL_CNTL_3 = 0x0F10111D、SDRAM_CLK_CNTL = 0x02800000 書き込みレベリングの開始値は正しいので、これ以上の変更は必要ありません。 しかし、他の問題によりテストは失敗しました。 最も一般的な障害の原因: -DDR4 DQn_MAPレジスタに設定された値が正しくない -ODT値が正しくない - 間違ったドライバー強度が選択されました -タイミング構成0プロパティ(TIMING_CFG_0レジスタ)に選択されたタイミング値が正しくありません <<テストに失敗しました!>> {{Write Leveling start values are correct and require no further modification, but the test failed due to other issues.}} えーっと。キャプチャレジスタ: 0xE20, 0xDEADBEEF 0xE24、0xDEADBEEF 0xE28, 0x00000000 0xE40, 0x00000000 0xE44, 0x00000000 0xE48, 0x0000001D 0xE4C、0x60FF2001 0xE50, 0x00001FC0 0xE54, 0x00000000 0xE58, 0x00010000 ############################################ DQ マッピングは問題ないようです。CPU から DDR スロットへのマッピングは 1:1 SO、DDR モジュール SPD からの DQ マッピングを変更せずに使用します。 何が問題なのでしょうか? Re: DDR4 calibration issues on LS1046 custom board お客様ボード上で利用可能な RCW はありますか? ASLEEP LED は点灯したり消えたりしましたか? DDRクロックの周波数はどれくらいですか? よろしくお願いします。 Re: DDR4 calibration issues on LS1046 custom board DDR キャリブレーションは、ハードコードされた RCW を使用して実行されます。 システムクロック - 100 MHz DDRバスクロック - 800 MHz、DDRデータレート - 1600 mt/s メモリ モジュール - 非 ECC。 興味深い点の 1 つは、タイマーから時間まで、キャリブレーションの第 1 段階 (wrtlvl 検索) が正常に通過したことです。 例: テスト結果: [ ===================================================== 更新日: WRLVL_CNTL = 0x8655F605、WRLVL_CNTL_2 = 0x00000000、 WRLVL_CNTL_3 = 0x00000000、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新日: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、 WRLVL_CNTL_3 = 0x0F10110D、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新日: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、 WRLVL_CNTL_3 = 0x0F101115、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新日: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0F、 WRLVL_CNTL_3 = 0x0F10111D、SDRAM_CLK_CNTL = 0x02800000 《テスト合格!》 Err.captureレジスタ: 0xE20, 0x00000000 0xE24, 0x00000000 0xE28,0x00000000 0xE40,0x00000000 0xE44,0x00000000 0xE48, 0x0000001D 0xE4C, 0x00000000 0xE50,0x00000000 0xE54,0x00000000 0xE58, 0x00010000 ごみ: 0xF00,0x00000000 0xF04, 0x00000002 0xF08, 0x0000000F 0xF0C,0x14000C20 0xF10, 0x00000000 0xF14, 0x00000000 0xF18, 0x00000000 0xF1C, 0x00000000 0xF20, 0x00000000 0xF24, 0x2F003000 0xF28, 0x32003400 0xF2C, 0x39003B00 0xF30, 0x3C003E00 0xF34, 0x00005000 0xF38, 0x00000000 0xF3C, 0x00000000 0xF40, 0x00000000 0xF44, 0x00000000 0xF48, 0x00000001 0xF4C, 0xD4000000 0xF50, 0x13001500 0xF54, 0x17001900 0xF58, 0x1D001F00 0xF5C, 0x21002200 0xF60, 0x3A000000 0xF64, 0x00009000 0xF68, 0x00000020 0xF6C, 0x00000000 0xF70, 0x0070006F 0xF74, 0x00000000 0xF78, 0x00000000 0xF7C, 0x00000000 0xF80, 0x00000000 0xF84, 0x00000000 0xF88, 0x00000000 0xF8C, 0x00000000 0xF90, 0x00000000 0xF94, 0x80000000 0xF98, 0x00000000 0xF9C, 0x34043104 0xFA0, 0x35043304 0xFA4, 0x31043304 0xFA8, 0x2F043104 0xFAC, 0x04040000 0xFB0, 0x00000003 0xFB4, 0x1F1E1F21 0xFB8, 0x1E1C1F1D 0xFBC, 0x1F1B1D1E 0xFC0, 0x1C1B1C1C 0xFC4, 0x1F1E1F22 0xFC8, 0x1F1F2120 0xFCC, 0x1F1E1F20 0xFD0, 0x1C1D201F 0xFD4, 0x1F1B1B1E 0xFD8, 0x1F1D1E1C 0xFDC, 0x1F1F1D1F 0xFE0, 0x1F1D1E1C 0xFE4、0x1F1C191A 0xFE8、0x1C1D1C1A 0xFEC、0x1F1E1C1E 0xFF0, 0x1E1F1E1A 0xFF4, 0x1F1F1F1F 0xFF8, 0x1F1F1F1F 0xFFC、0x1F000000 データ: 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000f 0x0000000f 0x00000010 0x00000011 0x0000001d   その直後に、(設定を変更せずに)キャリブレーション プロセスを再度開始すると、失敗します。 ######## ## Result for: wrlvl_searcher ## #### テスト結果: [ 更新: WRLVL_CNTL = 0x8655F605、WRLVL_CNTL_2 = 0x00000000、 WRLVL_CNTL_3 = 0x00000000、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、 WRLVL_CNTL_3 = 0x0F10110D、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、 WRLVL_CNTL_3 = 0x0F101115、SDRAM_CLK_CNTL = 0x02800000 ============================================================ 更新: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、 WRLVL_CNTL_3 = 0x0F10111D、SDRAM_CLK_CNTL = 0x02800000 書き込みレベリングの開始値は正しく、それ以上の変更は必要ありませんが、テスト その他の問題により失敗しました。最も一般的な障害の原因: - DDR4 DQn_MAPレジスタに設定された値が正しくない - ODT値が正しくない - 間違ったドライバ強度が選択されました - タイミング構成0プロパティ(TIMING_CFG_0レジスタ)に選択されたタイミング値が正しくありません <<テストに失敗しました!>> {{Write Leveling start values are correct and require no further modification, but the test failed due to other issues.}} エラーキャプチャレジスタ: 0xE20, 0xDEADBEEF 0xE24, 0xDEADBEEF 0xE28, 0x00000000 0xE40, 0x00000000 0xE44, 0x00000000 0xE48, 0x0000001D 0xE4C, 0x60FF2001 0xE50, 0x00001FC0 0xE54, 0x00000000 0xE58, 0x00010000 ごみ: 0xF00, 0x00000000 0xF04, 0x00000002 0xF08, 0x0000000E 0xF0C, 0x14000C20 0xF10, 0x00000000 0xF14, 0x00000000 0xF18, 0x00000000 0xF1C, 0x00000000 0xF20, 0x00000000 0xF24, 0x2F003100 0xF28, 0x33003400 0xF2C, 0x3A003A00 0xF30, 0x3C003E00 0xF34, 0x00005000 0xF38, 0x00000000 0xF3C, 0x00000000 0xF40, 0x00000000 0xF44, 0x00000000 0xF48, 0x00000001 0xF4C, 0xD4000000 0xF50, 0x13001500 0xF54, 0x17001900 0xF58, 0x1D001F00 0xF5C, 0x21002200 0xF60, 0x3A000000 0xF64, 0x00009000 0xF68, 0x00000020 0xF6C, 0x00000000 0xF70, 0x0070006F 0xF74, 0x00000000 0xF78, 0x00000000 0xF7C, 0x00000000 0xF80, 0x00000000 0xF84, 0x00000000 0xF88, 0x00000000 0xF8C, 0x00000000 0xF90, 0x00000000 0xF94, 0x80000000 0xF98, 0x00000000 0xF9C, 0x31022F02 0xFA0, 0x33023102 0xFA4, 0x30023102 0xFA8, 0x2E022F02 0xFAC, 0x02020000 0xFB0, 0x10000003 0xFB4, 0x46444650 0xFB8, 0x45445142 0xFBC, 0x51445052 0xFC0, 0x46454544 0xFC4, 0x45434651 0xFC8, 0x44455045 0xFCC, 0x46455051 0xFD0, 0x45455146 0xFD4, 0x52505052 0xFD8, 0x52505246 0xFDC, 0x50464546 0xFE0, 0x51465042 0xFE4, 0x53464650 0xFE8, 0x52515145 0xFEC, 0x50454546 0xFF0, 0x45505142 0xFF4, 0x46464646 0xFF8, 0x52515350 0xFFC, 0x00000000   データ: 0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000025 ######################################################## また、DDR モジュールが非 ECC であり、プロジェクト設定で ECC が無効になっているにもかかわらず、キャリブレーション プロセス中にレーン 8 がプローブされていることに気付きました。   Re: DDR4 calibration issues on LS1046 custom board 1. QCVS はハードコードされた RCWオフィシャルをサポートしていないため、有効な RCW がRCW ソース フラッシュまたは SD カードに存在している必要があります。 まず RCW をフラッシュにプログラムし、次に QCVS DDR 検証を行ってください。 2. CCS で以下のコマンドを実行します。 (ビン)42%すべて削除 (bin)43%config cc cwtap (ビン)44%ccを表示 (bin) 45 % ccs::config_chain {ls1043a dap sap2} (bin) 46 % 表示 ::ccs::get_config_chain (bin) 47 % ccs::reset_to_debug ログを私に送ってください。 3.回路図を共有してレイアウトが以下の通りであることを確認してください。 AN5097、DDR4 SDRAMメモリインターフェースのハードウェアおよびレイアウト設計の考慮事項 よろしくお願いします。 Re: DDR4 calibration issues on LS1046 custom board この問題は、QCVS の新しいバージョン (4.27.0) にアップデートすることで解決しました。
記事全体を表示
MMA8693 加速度计的参考寄存器设置 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我能否使用 MMA8693 找到新项目的参考寄存器设置? 现在我只想让它感知到明显的动作。(例如:停止 → 移动) 我想可能是在图形用户界面上找到的。 加速度传感器 Re: Reference register setting for MMA8693 accelerometer <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,HJ、 对不起,我昨天不在办公室,耽误了您的回复。 无论选择的动态范围如何,运动和瞬态检测功能的阈值分辨率都是 0.0625g/LSB,而且无法提高。您说得没错,瞬态检测功能只适用于 MMA8652FC,而且除非 HPF_BYP 位被设置,否则它分析的是高通滤波数据。 此致, 托马斯 Re: Reference register setting for MMA8693 accelerometer <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,托马斯、 我删除了之前的问题,因为我找到了问题所在。 门槛有问题。 我还有一个问题。 是否有可能使 MMA8653 不受重力等直流因素的影响而变得更加灵敏? 我想,如果使用 MMA8652 及其 HPF,可能会很容易。 但我的客户想用 MMA8653 找到路。 请给我一点提示。 谢谢! Re: Reference register setting for MMA8693 accelerometer <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢! Re: Reference register setting for MMA8693 accelerometer <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,HJ、 能否请您说明所用加速度计的确切零件编号?如果是 MMA8653FC,则可以使用嵌入式移动侦测功能。有关该功能的更多信息,包括寄存器设置示例,请参阅AN4070。 希望对您有所帮助。 此致, 托马斯 PS: 如果我的回答有助于解决您的问题,请标记为"正确" 或 "有帮助"。谢谢。
記事全体を表示
在自定义 i.MX95 板上 “启动内核...” 后 Debian 13 内核挂起 你好 我们目前正在定制的基于 i.MX 95 的板上测试 Debian 13。 构建成功完成,所有必需的二进制文件(uboot、内核和 rootfs)均已生成并使用 SD 卡闪存到主板上。在 U-Boot 之前,板可以正常启动,而且 U-Boot 日志显示正常。但是,在出现"启动内核...... "的信息后,系统会无限期挂起,控制台上也不会再打印内核日志。 我们曾尝试启用早期的主机输出,但从 U-Boot 移交后仍未观察到内核输出。 请查看随附的启动日志以供参考。 如果您能就定制 i.MX95 板上出现此问题的可能原因或推荐的调试步骤提供指导,我们将不胜感激。 感谢您的支持。 致以最崇高的敬意, Maruti Naik Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 你好,查维拉、 感谢您的反馈, 我们已经在我们的自定义主板上成功移植和验证了 Linux 6.12.20 和 Android 15.0.0_2.0.0 BSP。对于 Debian 13,我们使用相同的 BSP 改编和系统管理器 (SM) 配置,因为板的硬件配置没有改变。 这些映像使用 FlexBuild 生成,并使用我们平台的标准恩智浦闪存程序闪存。根据我们的分析,这个问题似乎与 U-Boot 有关。解决方法是,当我们使用 Linux BSP 中的 flash.bin 时,主板可以完全启动并按预期运行。但是,当我们使用通过 FlexBuild 生成的 Debian 13 flash.bin 时,会遇到启动问题。 这表明 Debian 13 U-Boot 与 Linux 电路板支持包 U-Boot 相比可能存在配置不匹配或差异。请与我们联系,告知是否有任何特定于 Debian 13 的已知 U-Boot 配置更改,或者在使用 FlexBuild 生成 flash.bin 时是否需要进行其他修改。 致以最崇高的敬意, Maruti Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 嗨,@Maruti、 感谢您联系恩智浦支持中心! 为了进一步帮助您,请您提供以下信息? 你是如何生成图像并将其闪存到板上的? 您是否根据自定义板的硬件配置正确移植了电路板支持包。?系统管理器 (SM) 的配置是否正确以匹配定制板上的硬件? 致以最崇高的敬意, Chavira Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 我们可以使用 Debian 13 编译的二进制文件启动板,而不会出现任何问题。 目前,我正在测试 3.4.5 版Debian 13 用户指南中的 GoPoint 演示。我以 debian 用户身份登录。 运行后: debian@imx95ig61m:~$systemctl stop gdm&& systemctl start weston ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units==== 停止 "gdm.service "需要身份验证。 验证身份: debian ==== 验证完成 ==== ==== 验证 org.freedesktop.systemd1.manage-units==== 启动 "weston.service "需要身份验证。 验证身份: debian ==== 验证完成 ==== 屏幕就会变成空白,什么也不显示。 请问 weston.ini 中是否需要其他配置才能使 Weston 和 GoPoint 演示正常工作? 我们使用的是 1024x600 分辨率的 lvds 显示器。 Re: Debian 13 Kernel Hang After 'Starting kernel...' on Custom i.MX95 Board 嗨,@Maruti、 对不起,我的回复晚了--我们的社区跟踪系统遇到了一些问题。 您还需要帮助吗?
記事全体を表示
MCUXpresso IDEターミナル・チュートリアル MCUXpresso IDE の最新バージョンには、ターミナル エミュレーション アプリケーションが付属しています。このツールは、NXP開発プラットフォームの仮想シリアルポートから送信された情報を表示するために使用できます。 1. MCUXpresso IDEを開く   2. IDEの上部にある「ターミナルを開く」ボタンをクリックするか、「Ctrl + Alt + Shift + T」を押して、MCUXpresso IDEターミナルを起動します。 3. シリアルターミナルを選択   4. シリアルポート設定(LPC-Link2 COMポート番号を使用)を115200ボーレート、8データビット、パリティなし、1ストップビットに設定し、「OK」ボタンを押します。 5. 接続が開いていることを確認します。コネクテッドの場合、MCUXpresso IDEはターミナルビューで下図のようになります。 6. 出発の準備は完了です
記事全体を表示
CIFAR10 TFLM Quick Build Guide catalogs I. Overview II. Environment Preparation 2.1 Virtual environment 2.2 Using Google Colab III. Core Steps 3.1 CIFAR10 dataset 3.2 Model creation 3.3 Model Training 3.4 Model Transformation 3.5 Inference Validation 3.6 Benchmark Performance 3.7 Full Implementation 3.7 Simplified version (Colab) IV. TFLite Micro Deployment V. Quick Verification Application Examples VII. Conclusion Reference Spoiler (Highlight to read) more details, please see the attachment. more details, please see the attachment. I. Overview CIFAR-10 : Alex Krizhevsky, University of Toronto The CIFAR-10 public dataset, and one of the most classic and commonly used entry-level benchmark datasets in computer vision, contains 60,000 32x32 color images (50,000 training, 10,000 testing) in 10 categories, such as airplanes, cars, birds, cats, and more. tflm_cifar10 : Demonstrates how to run a CIFAR-10 image classification model in real-time on a microcontroller from NXP using the TensorFlow Lite Micro framework. That is, a pre-trained convolutional neural network model for the CIFAR-10 dataset is deployed to the MCU, giving it the ability to recognize 10 classes of common objects (airplanes, cars, birds, cats, etc.). Model: a lightweight CNN model with 3 convolutional layers, ReLU activation layer, pooling layer and a fully connected layer. Input: 32x32 pixel color image. Output: probability that an image belongs to one of the 10 categories in CIFAR-10. This document: provides the complete process of building for the CIFAR10 dataset, from the dataset, model training transformation, deployment of inference of the rapid implementation of the program, can be used as an example of the tflm_cifar10 (inference-based) front complement, this paper does not involve the deployment and optimization of the end-side. ... """ CIFAR10 快速训练、测试、部署与推理完整流程 """ import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # 减少TensorFlow日志 import tensorflow as tf import numpy as np import time import matplotlib.pyplot as plt print(f"TensorFlow版本: {tf.__version__}") print(f"NumPy版本: {np.__version__}") class CIFAR10QuickPipeline: def __init__(self): """初始化管道""" self.model = None self.tflite_model = None def load_data(self, sample_size=1000): """加载简化数据集""" print("\n1. 加载CIFAR10数据集...") (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() # 预处理 x_train = x_train.astype('float32') / 255.0 x_test = x_test.astype('float32') / 255.0 # 使用少量数据(快速训练) x_train_small = x_train[:sample_size] y_train_small = y_train[:sample_size] x_test_small = x_test[:200] y_test_small = y_test[:200] # 转换为独热编码 y_train_onehot = tf.keras.utils.to_categorical(y_train_small, 10) y_test_onehot = tf.keras.utils.to_categorical(y_test_small, 10) print(f"训练数据: {x_train_small.shape}") print(f"测试数据: {x_test_small.shape}") return (x_train_small, y_train_onehot), (x_test_small, y_test_onehot) def create_simple_model(self): """创建简化CNN模型""" print("\n2. 创建简单CNN模型...") model = tf.keras.Sequential([ # 输入层 tf.keras.layers.Input(shape=(32, 32, 3)), # 卷积层1 tf.keras.layers.Conv2D(8, (3, 3), padding='same', activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), # 卷积层2 tf.keras.layers.Conv2D(16, (3, 3), padding='same', activation='relu'), tf.keras.layers.MaxPooling2D((2, 2)), # 全连接层 tf.keras.layers.Flatten(), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile( optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'] ) model.summary() self.model = model return model def train_model(self, x_train, y_train, x_test, y_test, epochs=10): """训练模型""" print("\n3. 训练模型...") # 回调函数:早停 callbacks = [ tf.keras.callbacks.EarlyStopping( monitor='val_loss', patience=3, restore_best_weights=True ) ] history = self.model.fit( x_train, y_train, epochs=epochs, batch_size=32, validation_data=(x_test, y_test), callbacks=callbacks, verbose=1 ) # 评估模型 test_loss, test_acc = self.model.evaluate(x_test, y_test, verbose=0) print(f"\n测试准确率: {test_acc:.4f}") return history def convert_to_tflite(self): """转换为TFLite格式""" print("\n4. 转换为TFLite格式...") # 转换为TFLite converter = tf.lite.TFLiteConverter.from_keras_model(self.model) # 优化配置 converter.optimizations = [tf.lite.Optimize.DEFAULT] converter.target_spec.supported_types = [tf.float32] # 转换 tflite_model = converter.convert() # 保存模型 with open('cifar10_model.tflite', 'wb') as f: f.write(tflite_model) # 保存为字节数组(用于嵌入式部署) self.save_as_c_array(tflite_model) self.tflite_model = tflite_model model_size = len(tflite_model) / 1024 print(f"模型大小: {model_size:.1f} KB") return tflite_model def save_as_c_array(self, tflite_model): """保存为C数组格式""" c_array = '// 自动生成的CIFAR10模型数组\n' c_array += '#include \n\n' c_array += 'const unsigned char cifar10_model_tflite[] = {\n' # 每行显示12个字节 for i in range(0, len(tflite_model), 12): line_bytes = tflite_model[i:i+12] c_array += ' ' + ', '.join(f'0x{b:02x}' for b in line_bytes) + ',\n' c_array += '};\n\n' c_array += f'const unsigned int cifar10_model_tflite_len = {len(tflite_model)};\n' with open('cifar10_model_array.h', 'w') as f: f.write(c_array) print("C数组已保存: cifar10_model_array.h") def test_tflite_inference(self, x_test, y_test, num_tests=10): """测试TFLite推理""" print(f"\n5. 测试TFLite推理 ({num_tests}个样本)...") if self.tflite_model is None: with open('cifar10_model.tflite', 'rb') as f: self.tflite_model = f.read() # 加载TFLite模型 interpreter = tf.lite.Interpreter(model_content=self.tflite_model) interpreter.allocate_tensors() input_details = interpreter.get_input_details() output_details = interpreter.get_output_details() # 类别名称 class_names = ['飞机', '汽车', '鸟', '猫', '鹿', '狗', '青蛙', '马', '船', '卡车'] correct = 0 times = [] for i in range(min(num_tests, len(x_test))): # 准备输入 input_data = x_test[i:i+1] # 推理 start_time = time.perf_counter() interpreter.set_tensor(input_details[0]['index'], input_data) interpreter.invoke() inference_time = time.perf_counter() - start_time times.append(inference_time) # 获取输出 output = interpreter.get_tensor(output_details[0]['index']) predicted_class = np.argmax(output[0]) actual_class = np.argmax(y_test[i]) # 检查是否正确 if predicted_class == actual_class: correct += 1 print(f"样本 {i+1}: 预测={class_names[predicted_class]:<5} " f"实际={class_names[actual_class]:<5} " f"时间={inference_time*1000:.1f}ms " f"{'✓' if predicted_class == actual_class else '✗'}") accuracy = correct / num_tests avg_time = np.mean(times) * 1000 print(f"\n推理统计:") print(f" 准确率: {accuracy:.1%} ({correct}/{num_tests})") print(f" 平均推理时间: {avg_time:.1f}ms") print(f" 推理速度: {1000/avg_time:.0f} FPS") return accuracy, avg_time def benchmark_performance(self, x_test): """性能基准测试""" print("\n6. 性能基准测试...") interpreter = tf.lite.Interpreter(model_content=self.tflite_model) interpreter.allocate_tensors() input_details = interpreter.get_input_details() # 预热 test_input = x_test[0:1] for _ in range(10): interpreter.set_tensor(input_details[0]['index'], test_input) interpreter.invoke() # 基准测试 num_runs = 100 start_time = time.perf_counter() for _ in range(num_runs): interpreter.invoke() total_time = time.perf_counter() - start_time avg_time = total_time / num_runs * 1000 print(f"基准测试结果:") print(f" 总推理次数: {num_runs}") print(f" 总时间: {total_time*1000:.1f}ms") print(f" 平均推理时间: {avg_time:.1f}ms") print(f" 推理速度: {1000/avg_time:.0f} FPS") return avg_time def save_model_summary(self): """保存模型摘要""" summary = [] self.model.summary(print_fn=lambda x: summary.append(x)) with open('model_summary.txt', 'w') as f: f.write('\n'.join(summary)) f.write(f"\n\n模型信息:") f.write(f"\n参数数量: {self.model.count_params():,}") f.write(f"\n保存时间: {time.ctime()}") print("模型摘要已保存: model_summary.txt") def main(): """主函数""" print("=" * 60) print("CIFAR10 快速训练、测试、部署管道") print("=" * 60) # 创建管道 pipeline = CIFAR10QuickPipeline() # 1. 加载数据 (x_train, y_train), (x_test, y_test) = pipeline.load_data(sample_size=2000) # 2. 创建模型 pipeline.create_simple_model() # 3. 训练模型 history = pipeline.train_model(x_train, y_train, x_test, y_test, epochs=15) # 4. 保存模型摘要 pipeline.save_model_summary() # 5. 转换为TFLite pipeline.convert_to_tflite() # 6. 测试推理 pipeline.test_tflite_inference(x_test, y_test, num_tests=20) # 7. 性能测试 pipeline.benchmark_performance(x_test) print("\n" + "=" * 60) print("流程完成!生成的文件:") print(" 1. cifar10_model.tflite - TFLite模型") print(" 2. cifar10_model_array.h - C数组格式") print(" 3. model_summary.txt - 模型摘要") print("=" * 60) if __name__ == "__main__": main() ... VII. Conclusion The purpose of this paper is to take a common image classification scenario (CIFAR10) as an example, so that readers can quickly understand the complete process from data building, model creation, training, inference and validation, which can be used as an example of the tflm_cifar10 (end-side inference-based) front complement, this paper does not involve the end-side deployment and optimization.
記事全体を表示
RT1170 以太网中的自由缓冲区超出范围问题 您好, 我正在尝试从自定义板上的自定义项目中执行基本的以太网测试。作为该项目(该项目集成了不同的模块,如SD卡、CAN、GPIO、ADC、以太网和EEPROM)的一部分,基本的以太网发送和接收有待验证。但我在 ping 发送前遇到"freed buffer out of range 错误" 。我已经完成了与以太网有关的所有基本初始化和配置。我看到出现错误的原因是函数"ethernetif_rx_free" (enet_ethernetif_kinetis.c) 中的 LWIP_ASSERT("Freed buffer out of range", ((idx>= 0)&& (idx< ENET_RXBUFF_NUM))); 其中的 idx 值为负数。这一完整的功能可在 EVK 套件上使用。 还能缺少什么?请提出建议。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 大家好 这个问题也发生在我的 RT1024 客户板上,当我在某个地方放了一个断点然后它就停止了,然后恢复正常运行更有可能导致这个错误。 此致敬礼! Ping Re: Freed Buffer out of Range Issue in Ethernet for RT1170 如果示例项目在您的自定义板中运行良好,则问题似乎出在软件方面。 您使用的不是 FreeRTOS 对吗? 似乎有什么东西干扰了示例的行为,可能是缺少某些配置,或者只是示例流程受到应用程序其他部分的影响。 我建议你尝试使用最新的软件开发工具包版本,即2.15.000。如果您的问题在此版本中仍然出现,那么恐怕您的应用程序流程出现了问题。 此致, 丹尼尔 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 是的,在自定义板中实现合并的源代码时会出现问题。但是,没有与其他接口合并的 Ethernet_PING 的单个来源在自定义板中运行良好。当以太网的单个源与其余接口合并时,就会出现问题。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 如果我没有理解错的话,当您运行 SDK 示例时,它是可以工作的。但当您添加自定义应用程序时,问题就出现了。你能确认吗? 此致, 丹尼尔 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 实际上,以太网的各个源代码在自定义板中运行良好。当我尝试集成代码时,以太网无法正常工作。我观察到EIR 寄存器的第 25 (RXF)、26 (TXB) 和 27 (TXF) 位被设置为 0,RDAR 寄存器的第 24 位被更新为 0,但在以太网的工作代码中,这些寄存器被设置为 "1"。 我怀疑这些寄存器更新是由中断处理的,但我无法在自定义项目代码库中找到负责这些更新的特定处理程序。请帮帮我。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 请仔细检查是否有任何外围更改(例如:......)。为了让 EVK 示例在您的定制硬件中运行,您的项目中需要哪些外围实例? 如果您已经验证了这一点,看来问题出在硬件方面。 您是否已经用 HDG 验证了您的设计? 此致, 丹尼尔 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 我使用的是 SDK 11.6.1 版。我正在尝试测试 lwip_ping_bm_cm7 示例。在 EVK 中运行正常。 但是,当尝试将所有源代码与以太网连接时,它在自定义板上不起作用。如果我们面临"Freed Buffer out of range" ,可能会出现什么问题?请帮我解决这个问题。 Re: Freed Buffer out of Range Issue in Ethernet for RT1170 您好, 您使用的是哪个版本的 SDK? 您用来测试的 SDK 示例是什么? 如果我理解正确,应用程序在 EVK 中运行正常,对吗? 此致, 丹尼尔
記事全体を表示
PCIe: i.MX 95: 複数の MSI IRQ ベクトルを割り当てる こんにちは、 PCIe2 インスタンス経由でコネクテッドされた i.MX95 ベースのシステムで ATH12K Wi-Fi モジュールを使用しています。 linux-imx lf‑6.12.y ベースのカーネルではこのセットアップは失敗しますが、lf‑6.6.y ベースのカーネルでは期待どおりに動作します。 カーネル ドライバは 16 個の MSI 割り込みを正常に要求し、受信します。しかし、その後、Wi-Fi モジュールの起動に失敗します。 [ 5.888139] ath12k_pci 0001:01:00.0:iommuグループ5に追加 [ 5.888506] ath12k_pci 0001:01:00.0:BAR 0 [mem 0xa10000000-0xa101fffff 64bit]: 割り当て済み [ 5.888553] ath12k_pci 0001:01:00.0:有効化デバイス (0000 -> 0002) [ 5.889315] ath12k_pci 0001:01:00.0:MSIベクター: 16 [ 5.889334] ath12k_pci 0001:01:00.0:ハードウェア名: wcn7850 hw2.0 [ 6.475718] ath12k_pci 0001:01:00.0:チップID 0x2 チップファミリー 0x4 ボードID 0xff soc_id 0x40170200 [ 6.475743] ath12k_pci 0001:01:00.0:fw_version 0x110cffff fw_build_timestamp 2025-06-25 09:26 fw_build_id QC_IMAGE_VERSION_STRING=WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3 [ 7.647106] ath12k_pci 0001:01:00.0:制御応答完了、ポーリングを受信できませんでした。 [ 8.675241] ath12k_pci 0001:01:00.0:サービス接続タイムアウト [ 8.681002] ath12k_pci 0001:01:00.0:HTTへの接続に失敗しました: -110 [ 8.692180] ath12k_pci 0001:01:00.0:コアの起動に失敗しました: -110 カーネルメーリングリスト[1]では別のPCIeデバイスに関する関連した議論がありましたが、まだ私たちのシステムで動作する構成には至っていません。 どうすれば最善の進め方でしょうか? 再開まで今しばらくお待ちください。 最大 [1] https://lore.kernel.org/all/1819305.VLH7GnMWUR@steina-w/ Re: PCIe: i.MX 95: Allocate Multiple MSI IRQ Vectors こんにちは、 i,MX95 はまだ初期段階であり、一部の構成はデザインされていません。しかし、PCIe2経由でATH12Kを搭載したi.MX95は lf-6.12.y ですが、 lf-6.6.y で作業中ですこれは、新しいカーネルの PCIe または Wi-Fi スタックにおける回帰またはドライバー相互作用の変更を示唆しており、PCIe パワーマネージメント (ASPM)、MSI マッピング、または ATH12K の特定の PCIe エンドポイントの癖に関係している可能性があります。多くの場合、カーネル パッチを適用するか、新しいカーネルのブート引数で ASPM を無効にすることで解決できます。dmesg で PCIe エラーを確認し、デバイスツリーを比較し、NXP/Linux カーネル メーリング リストで関連するコミットを探します。  考えられる原因とトラブルシューティングの手順を次に示します。 1. カーネルログを確認する ( dmesg ) PCIe エラーを探す: 障害が発生した lf-6.12.y カーネルの dmesg で、「PCI」、「MSI」、「ATH12K」、「Error」、「Firmware」、または「Timeout」メッセージを検索します。 ファームウェアのロード: ath12k ファームウェアが正しくロードされているかどうか、および初期化中にエラーが発生していないかどうかを確認します。  2. PCIe電源管理(ASPM) 一般的な問題:新しいカーネルでは、多くの場合、Active State パワーマネージメント (ASPM) がデフォルトで有効になっています。これにより、組み込みシステム上の ATH12K などの PCIe デバイス、特に古いファームウェア/ハードウェアで問題が発生する可能性があります。 ASPM を無効にしてみてください:カーネル ブート引数 (U-Boot または GRUB など) に pcie_aspm=off を追加して、再度テストします。  3. Devicetree/DTBの違い DTB の比較:両方のカーネル ( .dtb ファイル) で使用されるデバイス ツリー BLOB (DTB) を生成して比較します。特に割り込み、電源ドメイン、または互換性プロパティに関連する、 pci2 の PCIe ノードの変更を探します。  4. カーネルドライバー/ファームウェアの回帰 特定のコミット: ATH12K ドライバ ( ath12k )、 mac80211 、または lf-6.12.y のコア PCIe/Arm コードによって、セットアップを壊す変更が導入された可能性があります。 メーリング リストを検索: ath12k 、 i.MX95 、およびそれ以降のカーネル (6.12+) に関するパッチやディスカッションについては、Linux カーネル メーリング リスト (LKML) および NXP のリストを確認してください。  5. MSIの取り扱い 割り込み再マッピング:割り込みを受信すると、その処理方法 (MSI-X と MSI、割り込み再マッピング) が微妙に変わる場合があります。 proc/interrupts で割り込みをチェックします。カーネル間で割り込みの分布またはカウントが異なるかどうかを確認します。  6. ファームウェアブロブ ファームウェア バージョン:新しいカーネルのドライバと互換性のある、ATH12K 用の正しいファームウェアを使用していることを確認します。新しいドライバには新しいファームウェアが必要になる場合があります。  要約すると、 dmesg から始めてASPMを無効にしてみてください。これらは、組み込みプラットフォームの新しいカーネルでPCIe Wi-Fiの障害が発生する最も一般的な原因です。   よろしくお願いします。 Re: PCIe: i.MX 95: Allocate Multiple MSI IRQ Vectors 提案は問題をデバッグするための良い指針でしたが、解決策を見つけることができませんでした。つまり、すべての MSI IRQ ベクトルがドライバ内の IRQ ルーチンをトリガーしたわけではありません。 最終的には、ath12k ドライバーを変更して、1 つの MSI IRQ のみを要求するようにすることで、この問題を回避しました。 現在の Linux マスターにはこの問題は発生しないことに注意してください。 よろしくお願いします。 最大
記事全体を表示
在 imx8mp 上使用 rproc 希望你一切都好。这可能是一组零星的问题,但我是 Yocto 和异构芯片的新手。如有任何帮助,我们将不胜感激。 我使用的是使用 imx8mp 的Kontron 底板。我可以通过 SD 卡在 A 核上构建并运行 Yocto,同样,我也可以在 M 核上运行代码。但是后者是使用 U-启动 完成的,现在我想将其移到使用 rpmsg 功能进行 rproc 控制。 我用 menuconfig 启用了驱动程序,现在加载 Linux 时,我在 sys/class/ 中看到了 remoteproc 文件夹。然而,它是空的。我相信这意味着它没有在设备树中启用。如果我的理解有误,请纠正我,我想按以下步骤操作: 修改设备树以为 TCM 保留内存(并启用邮箱?)。 用叠加法来完成,而不是修改调入的 dtb 文件。 使用配方/层将其添加到内核版本中。 我找到了这份imx linux rproc 支持文档,但它没有告诉我如何像上面描述的那样加载覆盖层,也没有告诉我不同的加载方法。 我的模糊问题是 我朝着设备树的方向冲错树了吗?"的" 方式是什么? 我的最终目标是我用 Yocto 构建所有东西,将图像闪存到板上,无需进一步的板互动。这可能吗? 更尖锐的问题: 如何在 Yocto 版本时应用叠加层? imx linux rproc 支持文档提到了rproc DTS 节点和使用的内存节点。只需要做这些改动吗? 提前感谢! i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux Yocto Project Re: Using rproc on the imx8mp 嗨,@waker、 我用设备树冲错树了吗?什么是 “完成” 的方式? 你说得对:完成的方法是在 DT 中启用 i.MX remoteproc 节点,保留固件和 RPMsg 使用的内存区域(ITCM/DTCM 或 DDR、vrings、vdev 缓冲区、可选资源表),然后连接 rpmsg‑virtio 使用的邮箱(MU)。i.MX 的内核 rproc 驱动程序(imx-rproc)需要这些 DT 节点;如果存在,你会在 /sys/class/remoteproc/ 下看到 remoteproc0。 如何在 Yocto 版本时应用叠加层? 您可以按照以下指南实现这一目标: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/How-to-use-Devshell-to-compile-device-tree-files/ta-p/1727428 https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/How-to-compile-Linux-Kernel-Image-and-device-tree-using-Yocto/ta-p/2022759 我的最终目标是我用 Yocto 版本所有东西,将图像闪存到板上,无需进一步的板互动。这可能吗? 是的,你可以根据需要生成合适的补丁并将补丁应用到Yocto Project。 imx linux rproc 支持文档是否提到了 rproc DTS 节点和使用的内存节点。只需要做这些改动吗? 是的。 你可以查看我们的 imx8MP-EVK 板的演示和设备树作为参考。 要启用虚拟通道,必须在系统中安装一个内核模块,如我们在示例中所述。 https://github.com/nxp-mcuxpresso/legacy-mcux-sdk-examples/tree/main/evkmimx8mp/multicore_examples/rpmsg_lite_str_echo_rtos https://github.com/nxp-imx/linux-imx/blob/lf-6.12.y/arch/arm64/boot/dts/freescale/imx8mp-evk-rpmsg.dts 敬上, Chavira Re: Using rproc on the imx8mp 感谢您的回复,我已经将设备树加载到系统上(附上了经过修改的 Kontron 提供的设备树)。我可以看到这是预留内存目录: root@kontron-mx8mp:~# ls /proc/device-tree/reserved-memory/ '#address-cells' m4@0x10000000 m4@0x800000 name '#size-cells' vdev0vring1@55008000 dsp@92400000 m4@0x7E0000 m4@80000000 ranges vdev0vring0@55000000 vdevbuffer@55400000 但是,远程程序目录(/sys/class/remoteproc/)是空的,我读过这是设备树中的内存问题。知道我哪里出错了吗? 可能还值得一提的是,我在启动时看到了以下内容: [ 13.286497] remoteproc remoteproc0: releasing imx-rproc 我还使用您提到的evk rpmsg dts 进行了校准,但没有成功。我也遇到了同样的问题。 Re: Using rproc on the imx8mp 我在启动时也看到了这个: `[13.289371] 平台 imx8mp-cm7:延迟探测等待中`
記事全体を表示
iMX93の全コアにZephyrを搭載 こんにちは、 iMX93 のすべてのコアで RTOS を実行したいと考えています。それは可能ですか? Zephyr の Web サイトを見ると、FRDM-IMX93 ボードの M33 コアで Zephyr を実行するプロジェクトがあるようです。また、A55 コアで Zephyr を実行するプロジェクトもあります。 しかし、両方実行することはできますか?両方の A55 プロセッサで別々の Zephyr プロジェクトを実行できますか? チップの初期化はどのように機能しますか。クロックやメモリコントローラの初期化のようなものですか?誰がそんなことをするのでしょうか? 不可能な場合は、MCUXPresso を使用して M33 コア上で RTOS を実行し、チップを初期化することはできますか?両方の A55 コアに Zephyr を使用しますか? すべてのコアで RTOS を実行する方法は何ですか? Re: Zephyr on all cores of a iMX93 こんにちは@simmania 2x A55 で実行される 2 つの Zephyr プロジェクトの場合、これはサポートされません。サポートされているフレームワークは、Linux を実行する A55 --> Jailhouse --> Zephyr を実行するその他の A55 であるため、Jailhouse がハードウェアのアイソレータを管理する必要があります。 不可能な場合は、MCUXPresso を使用して M33 コア上で RTOS を実行し、チップを初期化することはできますか?両方の A55 コアに Zephyr を使用しますか? --> i.MX93は、ブートROMからM33を起動する低消費電力ブートをサポートしています。目的を達成するには、SDKのコードを大幅に書き換える必要があります。根本的な問題は、DDRを誰が初期化するかです。ドキュメントによると、U-Bootを維持するのが最適な選択です。U-BootはM33とA55プロセッサの両方でZephyrを同時にロードできるためです。 https://docs.zephyrproject.org/latest/boards/nxp/imx93_evk/doc/index.html よろしくお願いします、 志明 Re: Zephyr on all cores of a iMX93 NXPの社員によると、銛を使えば可能だという。 NXPのテクニカルサポートは、それは不可能だと言っています。 非常に紛らわしい。 Re: Zephyr on all cores of a iMX93 iMX93のAコアとmコアの両方がZephyrリリースをサポートしています。ZephyrランディングページにアクセスしてMPU Zephyr使用ガイドを入手してください。Aコアとmコアの両方でZephyrを同時に実行したい場合は、NXPのHarpoonリリースを探してください。 https://www.nxp.com/design/design-center/software/embedded-software/zephyr-os-for-edge-connected-devices:ZEPHYR-OS-EDGE Re: Zephyr on all cores of a iMX93 Harpoonのドキュメントで、以下の記述を見つけました。 Harpoonは、Linuxディストリビューション上で並列動作する1つ(または複数)のCortex-Aコア上で動作するRTOS上で、リアルタイム処理能力が要求されるアプリケーションを開発するための環境を提供し、64ビットArmアーキテクチャを活用して高いパフォーマンスを実現します。 つまり、一部のコアではまだLinuxが必要なのです。つまり、iMX93の全コアでZephyrを実行することは不可能のようだ。 Re: Zephyr on all cores of a iMX93 @simmania コアユーザーガイドはこちら UG10199:NXP MPU Cortex-Aコア Zephyrユーザーガイド | NXPセミコンダクターズ Zephyrのウェブページには、すでに93 Aコアとmコアのサポートについて記載されています。 i.MX93 EVK — Zephyrプロジェクトドキュメント 銛ユーザーガイド UG10170:Harpoonユーザーガイド|NXPセミコンダクターズ Re: Zephyr on all cores of a iMX93 ご回答ありがとうございます。 しかし、私たちはまだiMX93を使った開発を行っておらず、私たちにとってはまだ明確な答えが出ていません。 私たちは現在、新しいプロジェクトで使用するハードウェアを選定しているところです。今私たちが知りたいのは、Linuxを必要とせずにZephyrをすべてのコアで実行できるかどうかだけです。 Re: Zephyr on all cores of a iMX93 @simmania 1 つの A コアで Harpoon を実行し、別の A コアで Zephyr を実行し、mcore で Zephyr を実行することもできます。あるいは、A コアでネイティブ Zephyr を実行し、mcore Zephyr を実行する BootROM を使用することもできます。 プログラム flash.bin を UUU を使用して SD/eMMC に書き込む — MCUXpresso SDK ドキュメントを参照してください。 ステップ4でzephyr.binをimx-mkimage/i.MX9のm33_image.binにコピーしてフラッシュbinを作成します 対応するLinux BSPリリースからブートイメージとimx-mkimageソースリポジトリを入手してください。imx-mkimage/i.MX9に配置する必要のあるブートイメージは以下のとおりです。 - u-boot-imx93evk.bin-sd (rename to u-boot.bin) - u-boot-spl.bin-imx93evk-sd (rename to u-boot-spl.bin) - bl31-imx93.bin (rename to bl31.bin) - mx93a0-ahab-container.img - lpddr4_dmem_1d_v202201.bin - lpddr4_dmem_2d_v202201.bin - lpddr4_imem_1d_v202201.bin - lpddr4_imem_2d_v202201.bin Re: Zephyr on all cores of a iMX93 実際、私はついにFRDM iMX93上で、両方のA55コアを使用してSMPでZephyrを動作させることに成功しました。鍵は「```west flash -r spsdk``` でした」でした。 Re: Zephyr on all cores of a iMX93 リアルタイムエッジソフトウェアユーザーガイドの第3.3章「柔軟なリアルタイムシステム」を参照してください。 表30は、i.MX 93プラットフォーム上で実行可能なすべてのAMPシステムを示しています。 また、 hetogeneous-multicore は、これらの可能なすべての AMP システムを実行するためのハローワールドの例を提供します。たとえば、i.MX 93 は構築でき、Realtime Edge も次の事前構築済みバイナリ イメージを提供します。 i.MX93の各Cortex-Aコアで2つのZephyrを実行するための重要な技術的ポイント: 1. リソースの割り当て 第3.3.2.2章の技術的なポイントを参照し、リソースの競合を避けるために、これら2つのZephyrインスタンスには異なるUARTとRAMメモリを使用してください。 heterogeneous-multicoreを使用せずに Zephyr のサンプルを構築することもできますが、リソース割り当ての方法についてはheterogeneous-multicoreを参照することができます。 2. 起動方法 現在、ubootコマンドを使用してこれら2つのZephyrインストールを起動できます。最初のZephyrは「cpu release」コマンドを使用して起動し、次に「go」コマンドを使用して起動します。詳細については、ユーザーガイドを参照してください。 また、Real-time Edgeで提供されるCortex-Aコアの統合ライフマネジメントをサポートするには、TF-A、U-BootなどのReal-time Edgeリポジトリを使用する必要があります。 そして、次回のRealtime Edgeリリース(7月リリース予定)では、「高速起動」という新機能が提供されます。この新機能により、TF-Aはこれら2つのZephyrインスタンスを1秒未満で起動できるようになります。 この件に関して他に何かお手伝いが必要な場合は、遠慮なくお知らせください。ありがとうございます。 Re: Zephyr on all cores of a iMX93 それは素晴らしいですね! 銛を使う?しかし、Harpoonのドキュメントにはこう書かれている。 「システムはLinux上で起動し、Jailhouseハイパーバイザがハードウェアを分割して、LinuxとゲストRTOSを並行して実行します。」 私たちは、LinuxなしでZephyrがすべてのコアで動作することを望んでいます。 Re: Zephyr on all cores of a iMX93 答えはイエスですが、これ以上の詳細情報は提供できません。さらに質問がある場合は、 @Jiafei_Pan までお問い合わせください。 Re: Zephyr on all cores of a iMX93 同時に2つのZephyrアプリケーションを実行することについて話しているのですか、それともSMPを使用して両方のコアをスケジューリングに利用できるようにしているアプリケーションについて話しているのですか? 2番目のケースには非常に興味があるのですが、うまく動作させることができません。 Re: Zephyr on all cores of a iMX93 @Jiafei_Pan さん、Harpoon を導入せずに A コアと mcore 上で 2 つの Zephyr を実行できるようにする方法について何か情報を提供していただけますか。ありがとう!
記事全体を表示
溦【xins4698】腾龙新公司注册游戏账号网址是多少 溦【xins4698】腾龙新公司注册游戏账号网址是多少 LPC Marketing LPC51Uxx LPC546xx LPC54xxx LPC55xx LPC800
記事全体を表示
如何:使用 NXP Vision SDK 示例项目中的现有代码在 S32DS 中创建新的 Makefile 项目 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 本文档详细介绍了如何在 S32 Design Studio 中创建新项目,以及如何使用 NXP Vision SDK 示例项目中提供的现有代码和 makefile 进行构建。如果您使用来自任何其他来源的代码创建新的 makefile 项目,则过程可能会有所不同。 在从现有代码创建新的 makefile 项目之前,我们需要向环境变量 PATH 添加一些路径和几个新的环境变量。添加这些路径和变量主要有 3 种方法。哪种方法取决于您的需要。 方法 1 路径和变量可以单独添加到每个项目。如果您只希望这些更改影响少数项目,这将很有用。或者如果您的项目需要不同的路径和变量。注意:这些更改将在项目创建后进行(如下面的步骤 15 - 17 所示) 方法 2 路径和变量可以添加到 S32DS 内的整个工作区。这些在 S32DS 之外是不可见的,因此不会影响整个 Windows 环境。如果您有大量对路径和变量有共同要求的项目,并且不希望它们在 S32DS 之外的任何工具中可见,这将非常有用。 方法 3 路径和变量可以全局添加到 Windows 环境中,并将影响所有已安装的工具。不推荐使用这种方法。 选择方法后,将以下路径添加到 PATH 变量(使用 S32DS 的默认安装设置显示的路径): C:\NXP\S32DS.3.1\S32DS\build_tools\gcc-6.3-arm32-eabi\bin C:\NXP\S32DS.3.1\S32DS\build_tools\gcc-6.3-arm64-eabi\bin C:\NXP\S32DS.3.1\S32DS\build_tools\gcc-6.3-arm64-linux\bin C:\NXP\S32DS.3.1\S32DS\build_tools\msys32\mingw32\bin 或者在 Eclipse 中(可以使用变量,如果 S32DS 安装布局在未来版本中发生变化,则无需更新这些变量) ${S32DS_ARM32_TOOLCHAIN_DIR} ${S32DS_ARM64_LINUX_TOOLCHAIN_DIR} ${S32DS_ARM64_TOOLCHAIN_DIR} ${S32DS_GCC_TOOCHAIN_DIR} 还需要添加以下 Windows 系统变量: 变量名称:S32V234_SDK_ROOT 变量值:C:\NXP\S32DS_Vision_v2018.R1\S32DS\s32v234_sdk 变量名称:APU_TOOLS 变量值:C:\NXP\S32DS_Vision_v2018.R1\S32DS\APUC 以下步骤演示了基于上述方法 1 的过程。 1)启动S32DS for Vision 2)点击“新建” 3)选择“使用现有代码的 Makefile 项目” 4)选择下一步 5)输入项目名称。 6)对于“现有代码位置”, a)选择“浏览… ”,然后选择目录C:\NXP\S32DS.3.1\S32DS\software\VSDK_S32V2_RTM_1_3_0\s32v234_sdk\demos\isp\isp_sonyimx224_rgb_yuv_gs8    b) Click OK 7)对于“索引器设置工具链”,选择与您所需的构建配置相匹配的选项。对于我们这里的示例,我们将选择“ ARM Linux 64 位目标二进制工具链”。有关工具链选项的更多详细信息,请参阅 Vision 扩展包用户指南。这设置了一些工具链路径,但稍后我们将根据 VSDK 示例的特定需求设置更多路径。 8)点击完成 9) 在项目资源管理器中右键单击该项目。选择“属性” 10) 转到“C/C++ 构建”部分 11)转到“行为”选项卡,在“构建”旁边的字段中输入: ISP 示例:' allsub ' APEX 示例:' APU_COMP=nxp allsub ' 12)转到“构建器设置”选项卡,在“构建位置”部分更改“构建目录”的路径。点击“工作区... ”按钮 13) 在文件夹选择菜单中,选择子文件夹“ build-v234ce-gnu-linux-d ”,然后单击“确定” 14)转到“环境”部分 15)选择环境变量“ PATH ”,然后单击“编辑... ” 16)将路径变量添加到值字段,每个变量用逗号“;”分隔 ${S32DS_ARM32_TOOLCHAIN_DIR} ${S32DS_ARM64_LINUX_TOOLCHAIN_DIR} ${S32DS_ARM64_TOOLCHAIN_DIR} ${S32DS_GCC_TOOCHAIN_DIR} 单击OK。 17) Click 'Add...' 18) 单击“添加... ”,然后输入变量名称“ APU_TOOLS ”和值“ ${S32DS_APU_TOOLCHAIN_DIR} ” 单击OK。 19)单击“确定”关闭“属性”菜单。 20)点击“构建” 21) 构建完成后,将创建二进制文件(ELF)
記事全体を表示
楼宇及家居自动化系统 Overview 智能的集成楼宇系统使用户能够提高能效、降低维护成本,并方便地控制智能手机和高级 HMI 的环境。 它们的互联功能拥有大数据平台,可做出更智能、环保的决策,同时确保最大的舒适度和性能。 NXP ®提供全方位的解决方案,旨在满足智能建筑的环境、寿命和节能要求,从照明到暖通空调、网络到楼宇门禁等等。我们的集成产品功能有助于推动下一波智能建筑浪潮、降低系统成本并加快产品上市时间。 用例 智能控制和访问 楼宇安全 暖通空调(HVAC) 照明 安全监控 连接 结构框图 产品 类别 MCU 产品URL K70_120:Kinetis ® K70-120–150 MHz,基于 Arm ® Cortex ® -M4 内核的高速 USB、以太网、DDR 和防篡改微控制器 产品描述 Kinetis ® K70 MCU 系列为工业控制面板、导航显示器、销售点终端和医疗监控设备等应用提供业界领先的低功耗和混合信号模拟集成。 类别 电源管理 产品网址 1 TEA1723FT:集成MOSFET的高压启动反激控制器,适用于11 W应用,F~Burst = 1750 Hz 产品描述 1 TEA1723是一款小体积低成本开关模式电源(SMPS)控制器IC,适合低功率应用(最高11 W),可直接使用整流市电电源工作。 产品网址 2 NTS0104:双电源转换收发器;开漏;自动方向感应 产品描述 2 NTS0104是4位双电源转换收发器,具有自动方向感测功能,可使能双向电压电平转换。 类别 Zigbee 产品URL JN5189/88 (T):适用于 Zigbee ®和 Thread 的高性能、超低功耗 MCU,内置 NFC 选项 产品描述 JN5189 产品组合旨在为下一代极低电流无线设备供电,支持 Zigbee 3.0、Thread 和 IEEE 802.15.4。 类别 传感器 产品网址 1 PCF85063A:具有闹钟功能和 I2C 总线的微型实时时钟/日历 产品描述 1 PCF85063ATL是一款CMOS实时时钟(RTC)和日历,最适合低功耗应用。 产品网址 2 PCT2075:I2C 总线 Fm+,精度为 1 摄氏度,数字温度传感器和热看门狗 产品描述 2 PCT2075 是一款温度数字转换器,在 -25 °C 至 +100 °C 范围内具有 ±1 °C 的精度。 类别 驱动程序 产品网址 1 PCF85176:适用于低复用率的 40 x 4 通用 LCD 驱动器 产品描述 1 PCF85176是一款外围器件,能驱动几乎任何低复用率液晶显示器(LCD)。 产品网址 2 PCA9633: 4位Fm+ I²C总线LED驱动器 产品描述 2 PCA9633是一款I²C总线控制的4位LED驱动器,最适合红/绿/蓝/琥珀(RGBA)调色应用。 类别 接口 产品网址 1 SC16IS752_SC16IS762:双 UART,带 I²C 总线/SPI 接口、64 字节发送和接收 FIFO、内置 IrDA SIR 支持 产品描述 1 SC16IS752/SC16IS762是一个连接双通道高性能UART的I²C总线/SPI总线接口,提供最大5Mbit/s的数据速率、低工作和睡眠电流;还为应用提供8个额外可编程I/O引脚。 产品网址 2 TDA5051AT: 家庭自动化调制解调器 产品描述 2 TDA5051A是一款调制解调器IC,专用于使用家庭电源网络以600波特或1200波特的数据速率进行ASK传输。 它通过单个5V电源工作。 产品网址 3 PCA9848:8通道超低电压、带复位功能的Fm+ I2C总线开关 产品描述 3 PCA9848是一款超低电压的八通道双向变换开关,通过I²C总线进行控制。 产品网址 4 PCA6408A:低压、8 位 I²C 总线和 SMBus I/O 扩展器,带有中断输出、复位和配置寄存器 产品描述 4 PCA6408A 是一款 8 位通用 I/O 扩展器,可通过 I²C 总线接口为大多数微控制器系列提供远程 I/O 扩展。 产品网址 5 PCA9629APW: Fm+ I2C总线高级步进电机控制器 产品描述 5 PCA9629A 是一款 I²C 总线控制的低功耗 CMOS 器件,可提供驱动四相步进电机所需的所有逻辑和控制。 框图 智能家居
記事全体を表示
Android 启动时解锁设备 背景 一些客户将运行 Android 的 imx 连接到云端,因此重新启动引导加载程序和使用fastboot oem unlock是不可接受的。这样系统就断开了连接,无法使用adb进行远程操作。 因此本文建议在系统首次运行时,在启动bootloader之前执行oem unlock,即可直接解锁。 补丁 diff --git a/drivers/fastboot/fb_fsl/fb_fsl_boot.c b/drivers/fastboot/fb_fsl/fb_fsl_boot.c index 86b919775a..d60cd248ee 100644 --- a/drivers/fastboot/fb_fsl/fb_fsl_boot.c +++ b/drivers/fastboot/fb_fsl/fb_fsl_boot.c @@ -529,6 +529,42 @@ bool __weak is_power_key_pressed(void) { return false; } +static void wipe_all_userdata(void) +{ + char response[FASTBOOT_RESPONSE_LEN]; + + /* Erase all user data */ + printf("Start userdata wipe process....\n"); + /* Erase /data partition */ + fastboot_wipe_data_partition(); + +#if defined (CONFIG_ANDROID_SUPPORT) || defined (CONFIG_ANDROID_AUTO_SUPPORT) + /* Erase the misc partition. */ + process_erase_mmc(FASTBOOT_PARTITION_MISC, response); +#endif + +#ifndef CONFIG_ANDROID_AB_SUPPORT + /* Erase the cache partition for legacy imx6/7 */ + process_erase_mmc(FASTBOOT_PARTITION_CACHE, response); +#endif + +#if defined(AVB_RPMB) && !defined(CONFIG_IMX_TRUSTY_OS) + printf("Start stored_rollback_index wipe process....\n"); + rbkidx_erase(); + printf("Wipe stored_rollback_index completed.\n"); +#endif + process_erase_mmc(FASTBOOT_PARTITION_METADATA, response); + printf("Wipe userdata completed.\n"); +} +void do_unlock(void) +{ + int status; + wipe_all_userdata(); + status = fastboot_set_lock_stat(FASTBOOT_UNLOCK); + if (status < 0) + return FASTBOOT_LOCK_ERROR; + printf("Unlock device\n"); +} int do_boota(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) { ulong addr = 0; @@ -563,6 +599,9 @@ int do_boota(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) { fastboot_set_lock_stat(FASTBOOT_LOCK); lock_status = FASTBOOT_LOCK; } + if (lock_status == FASTBOOT_LOCK){ + do_unlock(); + } bool allow_fail = (lock_status == FASTBOOT_UNLOCK ? true : false); avb_metric = get_timer(0); Android i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano
記事全体を表示
适用于 ARM 2018.R1 的 S32 Design Studio - 更新 4 现已发布 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />       产品发布公告 汽车微控制器和处理器 ARM ® 2018.R1 版 S32 设计工作室  Update 4          新增内容 适用于 S32K14x 的 S32 SDK 1.9.0 BETA 版。这是一个累积更新 - 它包含之前更新的所有内容(更新 1 、更新 2 、更新 3 ) 要在新项目向导中选择新的 SDK,必须将工具链更改为“ARM Bare-Metal 32 位目标二进制工具链” 安装说明 此更新适用于 在线的 (通过 Eclipse Updater)或 离线安装(直接下载链接) 在线的 安装: 进入菜单“帮助”->“安装新软件...”对话框  select predefined update site "S32DesignStudio - http://www.nxp.com/lgfiles/updates/Eclipse/S32DS_ARM_2018.R1/updatesite" 选择所有可用项目并单击“下一步”按钮   离线安装: 转到 S32 Design Studio for ARM 产品页面 -> 下载部分或使用 直接链接下载更新存档 zip 文件 启动 S32DS 并转到“帮助”->“安装新软件...” 添加一个新的 “Archive” 仓库,然后浏览并选择您在之前步骤中下载的更新归档.zip 文件。 选择所有可用项目并单击“下一步”按钮。   这将启动更新安装过程。 概述
記事全体を表示
将 MCUXpresso SDK 导入 MCUXpresso IDE <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> MCUXpresso SDK 软件包以 .zip 格式下载文件。如果您使用 第三方 IDE(例如 IAR 或 Keil),则必须解压缩该包才能访问项目文件。此外,还必须为 MCUXpresso 配置工具提供解压缩的 SDK 文件夹。这就是为什么默认建议继续解压下载的 SDK 包。   但是,如果使用 MCUXpresso IDE,则可以将压缩或解压缩的 SDK 导入 MCUXpresso IDE。压缩的 SDK 将节省磁盘空间,并且可以比解压缩的 SDK 文件夹更快地导入 IDE。通过将 MCUXpresso SDK 导入 IDE,可以扩展 MCUXpresso 的 IDE 部件支持,因此如果您需要添加新设备,这可以节省一些时间。另请注意,您的 SDK 包必须支持 MCUXpresso,因此必须是最近在 SDK Builder 中创建的(3 月 24 日之后),并且包中明确支持 MCUXpresso,否则您在尝试导入它时会收到错误。 将 MCUXpresso SDK zip 包或文件夹拖放到 IDE 中时,会创建该 zip/文件夹的副本并将其放入 C:\Users\ \mcuxpresso\SDKPackages 目录中。因此,您可以删除已下载的原始副本以节省磁盘空间。     如果导入的 SDK 是压缩的,那么在创建或导入示例项目时,SDK 源文件总是会被复制到工作区中。如果导入的 SDK 已解压,那么您可以选择将 SDK 源文件复制到工作区(这是默认设置),或者可以直接将 SDK 文件作为链接引用进行引用。 如果将 SDK 作为压缩文件导入,则可以稍后从 MCUXpresso IDE 内部解压缩。此解压缩已经过优化,因此比通过 WinZip 等程序解压缩要快得多。在 MCUXpresso IDE 内部解压时,MCUXpresso SDKPackages 文件夹中的 zip 文件将在解压完成后自动从硬盘中删除。然后,您可以在使用 MCUXpresso 配置工具时将此解压缩的文件夹用作该 SDK 位置。       您还可以通过将 SDK 包(压缩或解压)放入默认 SDKPackages 目录( C:\Users\ \mcuxpresso\SDKPackage) 并重新启动 MCUXpresso IDE 来添加 MCUXpresso SDK。   最后,您还可以通过转到窗口 -> 首选项 -> MCUXpresso IDE -> SDK 选项来指定 MCUXpresso IDE 应该搜索 SDK 文件(压缩或解压)的其他目录。这对于将 SDK 存储库保存在硬盘驱动器上的特殊位置非常有用。但是,对于存储在默认位置之外的 SDK,IDE 内部的“删除 SDK”功能是禁用的,并且额外的搜索路径仅保存在每个工作区中,因此如果您选择另一个工作区,它将不会知道新的 SDK 文件夹,直到您重新添加路径。如果在不同位置为同一设备找到多个 SDK,IDE 会根据列表中的优先级选择要使用的包(顶部优先)。   有关预安装部件支持和导入 SDK 的更多详细信息,请参阅 MCUXpresso IDE 用户指南第 4 部分以及此信息丰富的培训视频。
記事全体を表示
KSDK 段式 LCD 示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 此补丁为带有 TWRPI-SLCD 模块的 Kinetis Tower 板添加了段式 LCD (SLCD) 示例。它重用了“用于 FRDM-KL43Z 的 KL33Z 的 Kinetis SDK 1.2.0 独立版”中包含的 SLCD 驱动程序,并使用 TWRPI-SLCD 模块将示例移植到电路板上。   该补丁是为 KSDK v1.2.0 编写的,可在www.freescale.com/KSDK上找到。要安装补丁,请解压缩到 KSDK 安装目录,默认情况下为 C:\Freescale\KSDK_1.2.0。仅针对这些示例更新了库和示例应用程序中的调试构建配置。使用前需要更新发布构建配置。这些示例支持的主板有:   TWR-KL46Z48M   TWR-KL43Z48M   TWR-KL46Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。此示例的路径为\KSDK_1.2.0\examples\twrkl46z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。   TWR-KL43Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。本例的路径是 \KSDK_1.2.0\examples\twrkl43z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 此补丁为带有 TWRPI-SLCD 模块的 Kinetis Tower 板添加了段式 LCD (SLCD) 示例。它重用了“用于 FRDM-KL43Z 的 KL33Z 的 Kinetis SDK 1.2.0 独立版”中包含的 SLCD 驱动程序,并使用 TWRPI-SLCD 模块将示例移植到电路板上。   该补丁是为 KSDK v1.2.0 编写的,可在www.freescale.com/KSDK上找到。要安装补丁,请解压缩到 KSDK 安装目录,默认情况下为 C:\Freescale\KSDK_1.2.0。仅针对这些示例更新了库和示例应用程序中的调试构建配置。使用前需要更新发布构建配置。这些示例支持的主板有:   TWR-KL46Z48M   TWR-KL43Z48M   TWR-KL46Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。此示例的路径为\KSDK_1.2.0\examples\twrkl46z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。   TWR-KL43Z48M 板示例附带 Kinetis Development Studio (KDS) 工具链的项目,并使用 KDS v3.0.0 进行测试。本例的路径是 \KSDK_1.2.0\examples\twrkl43z48m\demo_apps\slcd_low_power_demo\kds。该示例还包括 KDS .WSD 工作集文件。当将其导入 KDS 时,它会同时导入平台库和示例应用程序。该示例用于在 TWRPI-SLCD 上显示时间,并将显示 mm:ss。 概述 回复:KSDK段式LCD示例 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 如何将 fsl_slcd 组件纳入处理器专家?
記事全体を表示
LS1046 RESET_REQ 和 RSTRQSR 我们看到 RESET_REQ_B 在我们的定制 LS1046 硬件上被断言。当我们读取 RSTRQSR 时,我们得到以下内容: md 1ee00C8 01ee00c8: 00480000 00000000 00000000 00000000 如果我正确排序字节,则意味着: MBEE_RR(多位 ECC 重置请求)和 SRDS_RST_RR(SerDes 复位事件。如果任何启用的 SerDes PLL 未锁定,则会发生这种情况。) 有人能确认我的解码是否正确,并指出可能导致 MBEE_RR 的原因吗?我不确定从哪里开始寻找这个。 谢谢! 回复:LS1046 RESET_REQ 和 RSTRQSR 我们修复了这个问题 - 我们的 SRDS_PLL_PD_S1 和 SRDS_PLL_PD_S2 的值是错误的 - 参考手册对这些值有点令人困惑。一旦我们解决了这个问题,错误就消失了。 回复:LS1046 RESET_REQ 和 RSTRQSR 亲爱的@SimonRo , 您能否指出在“4.4.1 开机复位序列”的哪一步中遇到了这个问题? 还是启动结束后才会发生? 我需要更多信息才能了解可能发生的情况。 回复:LS1046 RESET_REQ 和 RSTRQSR 我通过将 SRDS_PLL_PD_S1 和 SRDS_PLL_PD_S2 设置为 0 来关闭 SERDES。 我的 RCW 现在看起来像这样: 00000000: 0c150010 10000000 00000000 00000000 00000010: 11330559 40000012 60040000 c1000000 00000020: 00000000 00000000 00000000 10038ffe 00000030: 20124000 04261301 00000096 00000001 但RESET_REQ_B 仍然有效: => md 1ee0000 01ee0000: 7f7f7720 0000004f 00000000 00000000 w..O........... 01ee0010: 00000000 00000000 00000000 00000000 ................ 01ee0020: 00000000 00000000 00000000 00000000 ................ 01ee0030: 00000000 00000000 00000000 00000000 ................ 01ee0040: 00000000 00000000 00000000 00000000 ................ 01ee0050: 00000000 00000000 00000000 00000000 ................ 01ee0060: 00000000 00000000 00000000 00000000 ................ 01ee0070: 00000000 00000000 00000000 00000000 ................ 01ee0080: 00000000 00000000 00000000 00000000 ................ 01ee0090: 00000000 00000000 00000000 00000000 ................ 01ee00a0: 00000000 10010787 40000000 00000000 ...........@.... 01ee00b0: 00000000 00000000 00000000 00000000 ................ 01ee00c0: 00400000 00000000 00480000 00000000 [email protected]..... 01ee00d0: 00000000 00000000 00000000 00000000 ................ 01ee00e0: 00000000 00000000 00000000 00000000 ................ 01ee00f0: 00000000 00000000 00000000 00000000 ................ 我认为是: SRDS_RST_RR(SerDes 重置事件。如果任何启用的 SerDes PLL 未锁定,则会发生。) 我想知道如果 SERDES 断电为什么会看到这个? 谢谢!
記事全体を表示