Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32K344 用 I2C マスターの例 (RTD 5.0.0) S32K344 (RTD 5.0.0) のマスターモードで I2C を使用したいと考えています。利用可能なI2Cサンプルプロジェクトをインポートしようとしたとき、多くのエラーが発生しました(.mexファイルを含む)RTD 5.0.0 をサポートする動作する I2C マスター サンプル プロジェクトはありますか? Re: I2C Master Example for S32K344 (RTD 5.0.0) こんにちは@gayancho 例を実行する前に、構成ファイルを生成する必要があります。これを行うには、S32DS のプロジェクト エクスプローラー ビューに移動し、現在のプロジェクトを選択します。次に、S32 構成ツール メニューを開き、操作するツール (ピン、クロック、ペリフェラルなど) を選択します。 必要な変更を行った後、[S32 構成ツール] → [コードの更新]ボタンをクリックします。コードが更新されると、例はエラーなしでビルドされるはずです。 さらに、 S32K344 LPI2C0 Transmission FailuresのThreadでは、設定ファイル(.mex)とmain.cを共有しました。LPI2C0 をマスターとして使用したブロッキング伝送例のファイル。実際のソフトウェアバージョンと一致しない場合もありますが、参考として役立ちます。 BR、ヴェインB Re: I2C Master Example for S32K344 (RTD 5.0.0) こんにちは@gayancho あなたの.mexを確認しましたファイルで、I2C クロック ソースの構成が見つからないのは、必要な Clock_Ip_ReferencePoint エントリが存在しないことが原因です。 McuClockReference セクション内で I2C クロックの適切な参照ポイントを定義する必要があります。Clock_Ip_ReferencePoint ドライバーで、I2C クロック ソースに対応する新しい参照ポイントを追加します。これは AIPS_SLOW_CLK になります。 参照ポイントを追加したら、Lpi2c ドライバ構成に進みます。I2C クロック ソースでは、新しく作成された McuClockReferencePoint が選択可能なオプションとして表示されます。 AIPS_SLOW_CLKに対応する参照ポイントを選択します。共有したスクリーンショットに基づくと、これは次のようになります: /Clock_Ip_ReferencePoints/Clock_Ip_ReferencePoints/McuClockReferencePoint_1 Re: I2C Master Example for S32K344 (RTD 5.0.0) こんにちは@VaneB 、クロック コンポーネントで LPI2C0 PCC クロックを有効にしましたが、LPI2C 構成にはまだ「ソース クロックが有効になっていません」と表示され、I2C クロック ソース ドロップダウンは空のままです。クロックと LPI2C が同じ機能グループ (BOARD_InitPeripherals) にあることを確認しました。クロック ソースを使用できるようにするために、LPI2C0 の RTD 5.0.0 でどのクロック ソース/構成設定を有効にする必要があるかを正確に教えていただけますか?
View full article
imx8mp U-boot ramoops memory Dear support! What I wanted to achieve is to get the persistent memory which could be used for ramoops storage. So I did some testing in U-boot, but each of the memory address which I used was "scrambled" after reset. I tried reset or reset -w commands, but nothing helped. Here is the example of my test: u-boot=> mw 55100000 10 u-boot=> md 55100000 55100000: 00000010 ffffffff ffffffff ffffffff ................ 55100010: ffffffff ffffffff ffffffff ffffffff ................ ... u-boot=> reset resetting ... U-Boot SPL 2024.04-4fa57eaf6dd (Feb 19 2026 - 12:49:01 +0000) DDRINFO: start DRAM init DDRINFO: DRAM rate 4000MTS DDRINFO:ddrphy calibration done DDRINFO: ddrmix config done DDR configured as dual rank SEC0: RNG instantiated Normal Boot Trying to boot from BOOTROM Boot Stage: Primary boot Find img info 0x48025a00, size 888 Need continue download 1024 NOTICE: Do not release JR0 to NS as it can be used by HAB NOTICE: BL31: v2.10.0 (release):android-14.0.0_2.2.0-rc2-0-g7c64d4e86 NOTICE: BL31: Built : 10:35:32, Aug 29 2024 U-Boot 2024.04-4fa57eaf6dd (Feb 19 2026 - 12:49:01 +0000) CPU: i.MX8MP[8] rev1.1 1600 MHz (running at 1200 MHz) CPU: Industrial temperature grade (-40C to 105C) at 60C Reset cause: POR DRAM: 4 GiB ... u-boot=> md 55100000 55100000: ffffffff ffffffff ffffffff ffffffff ................ 55100010: ffffffff ffffffff ffffffff ffffffff ................ ... Who/where the memory "scrambled" then? ATF, SPL, PMIC or? Which address could be used? Is it even possible to do it on imx8mp machine? Many thanks, Andy i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux PMIC Yocto Project Re: imx8mp U-boot ramoops memory Hello, Sure, I started with using it with correct way via DTB in Linux. But when I rebooted the board, nothing has been written into this section. So I was thinking someone has to "scramble" the memory. So I moved one level down into U-boot. There I also tried to define the "reserved-memory", but it didn't help. As I said, I tried multiple memory addresses (55110000, 944400000, ...) based on: 3d800000-3dbfffff : 3d800000.ddr-pmu ddr-pmu@3d800000 40000000-54ffffff : System RAM 48210000-4975ffff : Kernel code 49760000-49adffff : reserved 49ae0000-49d1ffff : Kernel data 4ffed000-4fffcfff : reserved 55000000-5510ffff : reserved 55110000-553fffff : System RAM 55400000-554fffff : reserved 55500000-7fffffff : System RAM 80000000-80ffffff : reserved 81000000-923fffff : System RAM 92400000-943fffff : reserved 94400000-ffffffff : System RAM c0000000-ffffffff : reserved 100000000-10fffffff : reserved 100000000-10fffffff : gcContMem 110000000-13fffffff : System RAM 13b0ec000-13f7fffff : reserved 13f827000-13f827fff : reserved 13f82a000-13f82cfff : reserved 13f82d000-13f841fff : reserved 13f842000-13f88ffff : reserved 13f890000-13fffffff : reserved reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; ramoops: ramoops@94400000 { compatible = "ramoops"; reg = <0 0x94400000 0 0x00100000>; // 1MB at 0x94400000 record-size = <0x10000>; // 64kB per record console-size = <0x10000>; // 64kB for console ftrace-size = <0x40000>; // 256kB for ftrace output pmsg-size = <0x10000>; // 64kB for user messages }; }; I would say the problem has to be somewhere deeper, that the memory is reset, maybe PMIC? If yes, where/how to configure it to not do a DRAM power cycle. BR, Andy Re: imx8mp U-boot ramoops memory Hello, Did you add the .dts node for that? please refer to the following example of implementation:   https://embear.ch/posts/using-ramoops/  Re: imx8mp U-boot ramoops memory Hello, I understand, unfortunately ramoops is not implemented in our BSP, toradex did it so it would be better if you ask them for the implementation on their BSP.   Re: imx8mp U-boot ramoops memory Hello, not sure if this a Toradex' related problem, while it could be somewhere in ATF or... which is a NXP part. On the other hand someone else was asking the same there https://community.toradex.com/t/pstore-and-ramoops-on-verdin-imx8mp-and-ivy-dev-board/29567/6 but no response... . Do you know where they did it then? Thanks, Andy Re: imx8mp U-boot ramoops memory Ok, will answer it by myself. Three components (U-Boot, Kernel and ATF) have to touched to make it really working. U-boot + Kernel (DTB) &wdog1 { - fsl,ext-reset-output; + // fsl,ext-reset-output; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_wdog>; status = "okay"; ATF (platform_def.h)  - #define IMX_WDOG_B_RESET + // #define IMX_WDOG_B_RESET After that, ramoops should survive the reboot. BR, Andy
View full article
LPC5460xセカンダリブートローダーが正常にフラッシュされない Y モデム プロトコルを介してデバイス上のアプリケーション コードを再フラッシュできるようにするために、セカンダリ ブートローダーを開発しました。 私のブートローダはフラッシュと ECRP 値に保存され、たとえば停電中にブートロードする場合に最初のセクターが誤って消去されるのを防ぎます。 ただし、アプリケーション コードからブートローダーを更新できるようにしたいと考えています。ECRP 値はフラッシュの最初のページをロックするため、ドキュメントによると、ブートローダーの書き換えに進む前に、すべてのセクターを消去して (大量消去など) ロックを解除する必要があります。 Q1そんなことが可能なのか? Q2. フラッシュセクターのロックを解除するには、すべてのセクターを消去した後にリセットが必要ですか? Q3コードを書き、試してみましたが、チップを消去して、コードの最初のページをセクター 0 にフラッシュすることはできましたが、IAP コマンドを使用して 2 番目のページをフラッシュしても何も起こらず、その後、ページ 2 と IAP ステータス コード 19 (文書化されていない) の比較でコードが失敗しました。 実際のアプリケーションでは外部の世界から UART や SWD にアクセスできないため、可能であればアプリケーションから実行する必要があります。 ケリー Re: LPC5460x Secondary bootloader not flashing successfully ハリー 結局、ブートローダーのフラッシュは実装しませんでした。 ステップ 2 はステップ 1 をオーバーライドします -> アプリケーション コードからブートローダーを更新し、リセットを発行すると、更新を実行している SRAM 内のコードが失われます。したがって、フラッシュ ロックを解除する別の方法がない限り、更新を実行する外部マスターなしではこれを実現することはできません。 Re: LPC5460x Secondary bootloader not flashing successfully こんにちは@kellykan Q1: アプリケーション コードからブートローダーを更新することは可能ですか? はい、可能です。ただし、ECRP 保護のため、いくつかの重要な手順と考慮が必要になります。ECRP 値はフラッシュの最初のページをロックして保護します。通常、ブートローダを更新するには、一括消去を実行して ECRP 保護を解除する必要があります。一括消去後、ブートローダを再プログラムし、ECRP 値を再度設定できます。 Q2: フラッシュ セクターのロックを解除するには、すべてのセクターを消去した後にリセットが必要ですか? はい、通常、大量消去後にはフラッシュ コントローラを再初期化し、ECRP ロックが適切にクリアされていることを確認するためにリセットが必要です。リセットを行わないと、フラッシュ コントローラにロックの残りが残る可能性があり、後続のフラッシュ操作中に問題が発生する可能性があります。 Q3: IAPコマンドを使用して2ページ目をフラッシュする際の問題 1. 消去またはプログラミングが不完全: プログラミングを試みる前に、一括消去が成功し、フラッシュ セクターが正しく消去されていることを確認します。 2. IAP コマンド シーケンスが正しくありません: フラッシュ セクターの消去とプログラミングに正しい IAP コマンド シーケンスを使用していることを確認します。 3. リセット要件: 前述のように、ECRP ロックを完全にクリアするには、大量消去後にリセットを実行する必要がある場合があります。 これがお役に立てれば幸いです。 BR 下がる
View full article
Failures with GPIO and RTC after Zephyr project enabled TF-M with PROFILE_MEDIUM Attached is a zip of a simple VSCode / NXP MCUXpresso Zephyr project which demonstrates GPIO and RTC failures after enabling TF-M with PROFILE_MEDIUM at ISOLATION_LEVEL=2. The project contains a simple overlay MCXN947 overlay file, a simple prj.conf file, and a couple simple c files. When the project reaches boot, zephyr has already configured TF-M. At boot the project attempts to toggle a couple GPIO. The code appears to work, no errors are thrown, but a logic analyzer shows the pins are not toggling. After that it prints some console messages with the time from the RTC. The time properly advances as it should however if the board is reset, the time is lost and starts at zero again. The RTC did not survive a reset. If the TF-M configuration is removed and the project is changed to a simple zephyr non TF-M project, the GPIO and RTC will work as expected. The flash and debug process also work as expected.  It is my hypothesis that the AHBSC controller is not configured properly and does not allow GPIO or the RTC to operate with non-secure code.  Another problem of lesser severity is that I have been unable to configure launch.json to properly flash and then debug main.c or other non-secure code.  I am using Zephyr 4.3.99...the latest zephyr version. VSCode and MCUXpresso are both up to date. Re: Failures with GPIO and RTC after Zephyr project enabled TF-M with PROFILE_MEDIUM Additional files below. If there is a way to send the project, let me know. Re: Failures with GPIO and RTC after Zephyr project enabled TF-M with PROFILE_MEDIUM I had a zip of my project attached to the original post but it seems to have been deleted. I'll try again. Nope zip is not supported. I'll try to attach the raw source files. You can take them and make your own project. Since there is a 5 file limit, I'll try to send them in two replies.  THANK YOU for looking at this. This problem is a show stopper for me and I also think it might be a big problem for others also.  Re: Failures with GPIO and RTC after Zephyr project enabled TF-M with PROFILE_MEDIUM Hi @ClarkS  Can you share your code? BR Harry Re: Failures with GPIO and RTC after Zephyr project enabled TF-M with PROFILE_MEDIUM Hi @ClarkS  Thank you for your detailed description. " ## Known Findings 1. **BusFault when reading AHBSC**: Non-secure code triggers immediate BusFault (BFAR: 0x400AC1D0) when attempting to read AHBSC controller registers - This proves: At ISOLATION_LEVEL=2, NS is completely locked out from peripheral access verification - AHBSC controller itself is in secure-protected memory space 2. **GPIO still doesn't work**: Even if AHBSC configuration is happening in secure world (which we can't v_erify), NS GPIO remains non-functional " According to the MCX Nx4x Reference Manual 73.1.2 Security considerations   Each GPIO module is also instantiated to use two module slots (for example, GPIO0 and GPIO0_alias). At the Secure AHB controller, one slot can be configured for secure access while the other is configured for non-secure access. The GPIO module implements Access protection that can be used to configure secure/non-secure and privileged/non-privileged access on a per pin basis I think the following links are helpful to you. NXP MCXN947 CPU1 cannot control GPIO · Issue #88521 · zephyrproject-rtos/zephyr NXP MCXN947 CPU1 cannot control GPIO · Issue #88521 · zephyrproject-rtos/zephyr MCXN947 failed to control GPIO in slave core (CPU1) BR Harry Re: Failures with GPIO and RTC after Zephyr project enabled TF-M with PROFILE_MEDIUM I have been continuing to work on this with no success. I am preparing a reply to you with more information and a request for further help. I'll post it tomorrow.  Re: Failures with GPIO and RTC after Zephyr project enabled TF-M with PROFILE_MEDIUM I am still unable to get GPIO to work after configuring zephyr to implement TF-M. I have attempted to modify the blinky app  by adding TF-M and when I do, the LED no longer flashes. Please provide a modification of the blinky sample app which simply enables TF-M. Ideally it should implement the best method of adjusting the AHBSC, SYSCON, and GPIO registers so as to enable GPIO.  Is modifying target_cfg.c the only way to adjust these registers before main is executed? I hope there is a better method because I don’t like modifying my zephyr repo. 
View full article
MCAL/RTD support for ANAMUX input selection (DCMRWF1 register) @PetrS Example S32K344 PIT SWtrig ADC ANAMUX S32DS 3.6.0 RTD 6.0.0  Looking through the example "S32K344_PIT_SW_ADC_ANAMUX_RTD600" the input selection for the ANAMUX is done via "direct" access of the DCMRWF1 register. Is/are there already an MCAL or RTD function(s) available to enable the voltage dividers for the individual internal voltages and to select the input for the analog multiplexer?  Or do I need to write my own functions to do that? Re: MCAL/RTD support for ANAMUX input selection (DCMRWF1 register) I was hoping that the ADC RTD would have an API to select and enable the ANAMUX functionality. But I create my own control. Re: MCAL/RTD support for ANAMUX input selection (DCMRWF1 register) Hi Dirk, some RTD drivers probably use DCM_GPR registers internally when needed, but there is no dedicated RTD driver or a public API for arbitrary DCM_GPR access. BR, Petr
View full article
タイトル: WM8904 を使用した SAI + EDMA ピンポンキャプチャ — i.MX RT / LPC におけるドップラーオーディオ信号のノイズ NXPコミュニティの皆様、こんにちは。 私は、EDMA ピンポン バッファリングを使用して SAI1 経由で WM8904 コーデックからオーディオをキャプチャし、それをヘッドフォン出力から再生するドップラー超音波プローブ アプリケーションに取り組んでいます。脈拍は検出されていますが、キャプチャおよび再生されたオーディオには大きなバックグラウンド ノイズがあります。 --- **ハードウェア構成:** - コーデック: WM8904 (制御用はI2C、オーディオデータ用はI2S/SAIでコネクテッド) - オーディオインターフェース: SAI1 (I2S モード) - DMA: ピンポン転送によるEDMA - サンプルレート: 48 kHz、ステレオ、16ビット - バッファサイズ: ピンポンバッファあたり48,000サンプル (バッファあたり0.5秒) - 合計キャプチャ: 4サイクル = 約2秒のオーディオ - RTOS: FreeRTOS - 再生音量: ヘッドフォン出力で 75/100 --- **SAI RX構成:** - SAI1 RXはRCR3レジスタを介して有効化されます(SAI1->RCR3 |= I2S_RCR3_RCE(1)) - TXとRXの両方でFIFOエラー割り込みが有効 - TXはサイレントダミーバッファループを実行して、RXに必要なI2Sビットクロックを生成します。 - RXはコールバックベースのピンポンステートマシンでSAI_TransferReceiveEDMA()を使用する - キャプチャ後: SAI_TransferAbortReceiveEDMA() と SAI_TransferAbortSendEDMA() が呼び出されます --- **コーデック入力設定 (fsl_wm8904 ドライバ経由の WM8904):** - MICBIAS 電源オフ(未使用) - ADCの電源オン - 録音チャネルの音量: 75 (左1 + 右1) - 録音チャネルのミュート: false --- **コーデック出力設定(WM8904ヘッドフォン):** - ラインアウトがミュートされ、電源がオフになっています - 最初にヘッドフォンをミュートし、次にDACの電源をオンにし、音量を75に設定してからミュートを解除します - ミュート解除前の10msのセトリング遅延(SDK_DelayAtLeastUs) --- **問題:** キャプチャされたオーディオには予想どおり手首の脈拍信号が含まれていますが、録音全体にわたって目立ったバックグラウンド ノイズが存在します。このノイズは、ヘッドフォン出力を介した再生時に聞こえます。ノイズは次の組み合わせのようです: 1. 低周波ベースラインドリフト(体の動きや呼吸によるアーティファクトの可能性あり) 2. ドップラーフロントエンドからの高周波復調スペックル 3. 脈拍イベント情報が存在しないときの心拍間背景ノイズ --- **信号調整を適用(ファームウェア、キャプチャ後):** 現在、キャプチャ後にソフトウェアで次の 4 段階フィルターを適用しています。 1. DCオフセット除去(平均減算) 2. 1次ハイパスフィルタ: y[n] = x[n] - x[n-1] 3. 移動平均平滑化(ウィンドウ = 3サンプル) 4. ホールド機能付き固定しきい値ノイズゲート(しきい値 = 4500、ホールド = 1200サンプル) これらのフィルターにもかかわらず、ノイズは依然として存在し、聞こえます。 --- **質問:** 1.このプラットフォーム上の WM8904 で、DMA バッファに到達する前にハードウェア レベルでノイズを最小限に抑えるための推奨される SAI RX 構成はありますか? 2. SAI1 で TX (ダミー クロック) と RX を同時に実行するとノイズが発生する可能性がある既知の接地またはクロック構成の問題はありますか? 3. ピンポン バッファには、データの破損やノイズとして現れるグリッチを引き起こす可能性のある、EDMA 転送アライメントまたはキャッシュ コヒーレンス要件がありますか? 4. 低振幅ドップラー信号の SNR を向上させるために、WM8904 入力パス (PGA ゲイン、入力インピーダンス、ADC 構成) に推奨されるコーデック レジスタ設定はありますか? NXP チームまたはコミュニティからのガイダンスをいただければ幸いです。 よろしくお願いします。 Re: Title: SAI + EDMA Ping-Pong Capture with WM8904 — Noise in Doppler Audio Signal on i.MX RT / LPC こんにちは、 @AAA1 さん。 弊社製品にご関心をお寄せいただき、また弊社のコミュニティをご利用いただき、誠にありがとうございます。 SAIのエラー情報はチップ固有のものであるため、まずはi.MX RTデバイスの正確な仕様をご確認ください。    Q1.このプラットフォーム上のWM8904において、DMAバッファに到達する前のハードウェアレベルでのノイズを最小限に抑えるための推奨SAI RX構成はありますか? A1: サンプルがDMAバッファに到達する前にノイズを低減することを明示的に目的としたWM8904固有のSAI RX構成を提供するドキュメントは見つかりませんでした。 BCLK、FS、ワード幅、極性、およびTX/RX同期モードが正しく設定されていることを確認してください。 Q2.SAI1でTX(ダミークロック)とRXを同時に動作させた場合に、ノイズが発生する可能性のある既知の接地またはクロック構成の問題はありますか? A2: SAI1でTXとRXを同時に実行すると必然的にノイズが発生するという「既知の問題」に関する文書は見つかりませんでした。 SAIクロックツリーの設定(MCLK/BCLK/SAI機能クロック/バスクロック)を再度確認してください。 お使いのi.MX RTデバイスに関するチップの不具合情報も併せてご確認ください。 Q3. ピンポンバッファには、データ破損やノイズとして現れるグリッチを引き起こす可能性のあるEDMA転送アライメントやキャッシュコヒーレンシの要件はありますか? A3:このアプリケーションノートを参照してください。 https://www.nxp.com/docs/en/application-note/AN12042.pdf Q4. 低振幅ドップラー信号のSNRを向上させるために、WM8904入力パス(PGAゲイン、入力インピーダンス、ADC構成)のコーデックレジスタ設定で推奨されるものはありますか? A4:既知のリファレンスデモをお探しの場合は、WM8904を使用するNXPの評価プラットフォームであるMIMXRT685-EVKが参考になるかもしれません。そのSDKデモもご参考になるでしょう。 https://github.com/nxp-mcuxpresso/mcuxsdk-examples/tree/release/26.03.00/_boards/evkmimxrt685 MCUXpresso SDK APIリファレンスマニュアル:Wm8904 よろしくお願いいたします。 メイ・リウ
View full article
S32K358 マルチコア共有メモリ こんにちは、 私は現在、s32k358 マルチコアで作業しており、IPC に共有可能なメモリを使用しようとしています。 IPC データ共有に core0status と core1status 変数を使用しようとしています。 ただし、両方の変数は同じメモリ内で宣言されているため、各コアが値を上書きします。 各コアで交換される core0status と core1status のアドレス。 ここで何が欠けているのでしょうか?添付のコードをご確認ください。 Re: S32K358 Multicore share memory こんにちは、 @nirmal_masilamaniさん、 XRDC は、CM7_0 に DID=0、CM7_1 に DID=1 を割り当てるように適切に初期化する必要があります。XRDC ドメイン割り当てを確認してください。RTD の例を参照できます。   安全なファイルに関しては、アクセスを要求する必要があります。以前共有した FAQ を参照してください。 よろしくお願いします、 ジュリアン Re: S32K358 Multicore share memory こんにちは@Julián_AragónM 、 ご返信ありがとうございます。 NDA に署名したアカウントを持っていますが、それでも安全なファイルにアクセスできません。 また、S32K324の共有メモリプログラムを参照しましたが、私のプログラムでは #define CORE_DOMAIN_ID (IP_XRDC->HWCFG1) は両方のコアで常に0 を表示します。 ここで何が欠けているのでしょうか? Re: S32K358 Multicore share memory こんにちは、 @nirmal_masilamani さん、 トレーニング プレゼンテーションもあります: S32K3 RTD XRDC、SEMA42、MPU、XBIC、および INTM トレーニング プレゼンテーション。ただし、S32K3 の場合はセキュリティ保護されたファイルです。アクセス権がない場合は、有効な NDA をアップロードしてリクエストする必要がある場合があります。セキュア アクセス権に関する FAQ | NXP Semiconductorsを参照してください。 公開されているアプリケーション ノートは次の 2 つです。 AN13024: S32G2 拡張リソース ドメイン コントローラ (XRDC) アプリケーション ノート。 AN14715: S32K3XX ハードウェアリソースの分離と保護 モジュールは非常に似ていますが、S32G デバイスと S32K デバイスにはいくつかの違いがあるため、アプリケーションノートをよくお読みください。 よろしくお願いします、 ジュリアン Re: S32K358 Multicore share memory こんにちは@Julián_AragónM 、 ご返信よろしくお願いします。 共有メモリの問題はドキュメントに従って解決されましたが、sema42 ドライバーを構成したいのですが、どうすればよいですか? それに関するドキュメントを提供していただけますか?私はs32ds v3.5 RTD 4.0.0を使用しています。 Re: S32K358 Multicore share memory こんにちは、 @nirmal_masilamaniさん、 共有変数は、CM7_1 (セカンダリ コア) ではなく、CM7_0 (ブート コア) によって 1 回だけ初期化されます。Core0 は、初期値を持つ共有グローバル変数の ROM から RAM へのデータコピーを実行しますが、Core1 はデータのコピーを無視してコード内でのみ使用します。 Core0 と Core1 間のリンカー ファイルは次のようになります。 S32K3 デュアル コアとコア間のメモリ共有に関する資料をプライベート メッセージで送信しました。 よろしくお願いします、 ジュリアン Re: S32K358 Multicore share memory こんにちは@Julián_AragónM 、 同じ例に従いましたが、両方のコアはドメイン ID として 0 を返します。 コア 2 でも sema を初期化する必要がありますか? Re: S32K358 Multicore share memory こんにちは、 @nirmal_masilamaniさん、 いいえ。XRDC が正しく設定されていない可能性があります。デフォルトでは、CM7_0 と CM7_1 の両方の DID = 0 になります。XRDC 構成に関するプライベート メッセージを送信しました。 よろしくお願いします、 ジュリアン
View full article
Motor Control using DSC Hello,  Is there any performance benchmarking data available of the DSCs against MCUs ? Can we combine the DSCs with i.MXRT/MCXA for motor control solution.  The idea is to control a pmsm with absolute encoders via GaN inverters. The GaN requires sub-nano second PWM resolution that only DSCs are capable to handle within NXP product lines, but they lack abs encoder peripherals. Hence wanted to know whether it's possible to do sw decoding of abs enc along with motor control on DSC or is it possible use DSC for PWM generation and Motor control task being carried out by a faster MCU? Re: Motor Control using DSC Your question is missing the most important detail. What is the absolute encoder interface and how fast it has to be ? If it's an analog signal you just have to evaluate if the onboard ADCs are good enough (in precision and accuracy) and fast enough (samples/sec) or if you need an external ADC connected over SPI (for example). Plus don't forget to evaluate if the raw signal needs some analog or digital filtering to be clean enough. If it's bit-parallel you just map it to GPIO's that can be read from a single I/O register (DSC's GPIO ports have different mappings, ensure to select an hardware configuration with enough ports with only I/O not dedicated to other functions). If it's over a serial link or over fieldbus it depends on the specific chip hardware and software support.
View full article
greenVIPの変更 こんにちは、 すでに別の投稿で同様のトピックを部分的に取り上げましたが、新しいトピックで追加情報を取得するように求められました。 greenVIP デモを使用/変更してカスタム プロジェクトを作成しようとしています。 これまで私が理解したことはこれだけですので、何か間違っている点がありましたらご指摘ください。 私の理解では、ブート シーケンスは次のようになります。 bootCFG ピンが正しい位置にある場合、bootROM チップは外部フラッシュのアドレスであるアドレス 0x0 からコードの実行を開始します。 アドレス 0x0 には、BLOB の一部である IVT (イメージ ベクター テーブル) があり、DCD、ブート テーブル、およびブート コアの定義を指します。 S32 Design Studio IVT ツールには、DCD とアプリケーション ブートローダーをロードするオプションがあります。アプリケーション ブートローダとは何ですか? また、アプリケーション ブートローダに RAM 開始ポインタとエントリ ポインタを提供する必要があるのはなぜですか?これは単にブート テーブルの別名ですか、それともブート テーブルはどこで、どのように構成できるのでしょうか? IVT ツールには、「BLOB のエクスポート」と「IVT イメージ」のエクスポートのオプションもあります。違いは何ですか、または BLOB には何が含まれていますか? 次に、DCD (デバイス構成データ) セクションが 0x0000_0100 で実行され、各コアのメモリ アクセスとクロックを構成することになります。 S32 DS には DCD ツールもあり、WRITE コマンドと CHECK コマンドを追加または編集できます。ペリフェラルレジスタを設定するためのものだと正しく理解してよろしいでしょうか?実際にすべてのレジスタを DCD で初期化できますか? また、どのレジスタを DCD で変更する必要があり、どのレジスタを実行時に変更できるかをどのように判断すればよいですか? 独自のコードを起動しようとしている場合、どのような条件で設定すればよいのでしょうか? 次に、0x0010_0000 にあるブート テーブルが実行され、すべてのコア コードを RAM にロードします。 これを確認してください。また、上ですでに質問したように、ブート テーブルはどこで構成できますか? その後、基本的にすべてのコアが起動します。 何か重要な手順を見逃していませんか? さらに、 greenVIPの大きなメリットの一つは、デターミニスティックで、オートモーティブグレードのセーフティが検証済み、あるいは既に検証済みのマルチコアブートアップシーケンスを備えていることだと思います。もし私の認識が間違っていたら、確認または訂正をお願いします。これは、M33ブートコアのコードを変更すべきではない、あるいは変更できないという意味でもあるのでしょうか? さらに、各コアのバイナリがブート シーケンス中にフラッシュから RAM にコピーされるだけの場合、カスタム プロジェクトに greenVIP アーキテクチャを使用する目的は、 greenVIP ユーザー ガイドの表 11 で指定された適切なフラッシュ アドレスに自分のコード バイナリをフラッシュすることだけです。各パーティションのフラッシュ アドレスですか?たとえば、RTU_0_C0 でコードを実行したい場合、バイナリをアドレス 0x0024_0000 にフラッシュすればよいのでしょうか? Re: Modifying greenVIP こんにちは、 HiddenSquidさん ご質問と詳細情報をありがとうございます。 カスタム プロジェクトを作成するために、greenVIP デモを使用/変更しようとしていることは承知しています。したがって、アプリケーションについては、S32ZE_GreenVIP_1.x.1/doc/UG_S32ZE_GreenVIP.pdf を参照できます。 ブートローダ アプリケーションは、S32Z2 デバイス上の GreenVIP の両方の種類 (SMU_LA|SMU_LAV) に統合されています。BootROM はステージ 1 ブートローダとして機能し、プライマリ アプリケーション (SMU_LA|SMU_LAV) をロードします。これに続いて、ブートローダがステージ 2 で制御を引き継ぎ、セカンダリ アプリケーション (RTU_0 コア、RTU_1 コア、FLEXLLCE など) をロードします。 次の図のように、S32Z2 デバイス上の SMU_LA に対して GreenVIP がサービス モードで起動しています。 1.bootCFG ピンが正しい位置にある場合、bootROM チップは外部フラッシュのアドレスであるアドレス 0x0 からコードの実行を開始します。 >>>BootROM は、外部フラッシュの 0x0 の位置から直接「命令を取得して実行」するわけではありません。電源投入後、チップはまず内部 ROM 内の BootROM を実行します。BootCFG/スイッチの設定に基づいてブートメディア(QSPI/SD/eMMCなど)を選択し、ブートメディア上のブートヘッダー/IVTを読み取って後続のアクションを決定します。 2. アドレス 0x0 には、BLOB の一部である IVT (イメージ ベクター テーブル) があり、DCD、ブート テーブル、およびブート コアの定義を指します。 S32 Design Studio IVT ツールには、DCD とアプリケーション ブートローダーをロードするオプションがあります。アプリケーション ブートローダとは何ですか? また、アプリケーション ブートローダに RAM 開始ポインタとエントリ ポインタを提供する必要があるのはなぜですか?これは単にブート テーブルの別名ですか、それともブート テーブルはどこで、どのように構成できるのでしょうか? >>>アプリケーション ブートローダーは、第 1 段階のアプリケーション イメージです。S32Z/E + greenVIP の場合、通常は SMU/M33 側のブート マネジメント プログラムです。BootROM はそれを RAM に移動し、エントリ ポイントにジャンプします。 IVT ツールには、「BLOB のエクスポート」と「IVT イメージ」のエクスポートのオプションもあります。違いは何ですか、または BLOB には何が含まれていますか? >>> IVT の機能は、「ポインタ テーブル」として機能し、BootROM による解析に使用される DCD、アプリケーション ブートローダ、およびその他のイメージ ブロックを取得する場所を BootROM に指示することです。 BLOB は IVT に基づいており、関連するイメージはメモリ/アライメントに従って単一の書き込み可能な全体イメージ (ブート メディアに直接書き込むことができる) に物理的に組み立てられます。 3. 次に、DCD (デバイス構成データ) セクションが 0x0000_0100 で実行され、各コアのメモリ アクセスとクロックを構成することになります。 S32 DS には DCD ツールもあり、WRITE コマンドと CHECK コマンドを追加または編集できます。ペリフェラルレジスタを設定するためのものだと正しく理解してよろしいでしょうか?実際にすべてのレジスタを DCD で初期化できますか? また、どのレジスタを DCD で変更する必要があり、どのレジスタを実行時に変更できるかをどのように判断すればよいですか? 独自のコードを起動しようとしている場合、どのような条件で設定すればよいのでしょうか? >>> DCD の役割は、BootROM ステージで実行される「ペリフェラル/ストレージ サブシステムの初期初期化スクリプト」のセットです。代表的な機能には、SRAM/DDR の初期化、QSPI パラメータの設定、必要な特定のクロック/リセットなどがあり、後続のアプリケーション イメージを正しく転送して実行できるようにします。DCD は、「BootROM の後、アプリケーション イメージの前」に準備する必要があるハードウェア条件を最小限に抑えることを目的としており、より高レベルのペリフェラルの初期化 (ドライバ、複雑なタイミング モジュールなど) は、アプリケーション ブートローダー/アプリケーション内で実行する必要があります。 4. 次に、0x0010_0000 にあるブート テーブルが実行され、すべてのコア コードを RAM にロードします。 これを確認してください。また、上ですでに質問したように、ブート テーブルはどこで構成できますか? >>> SMU が BootROM によって起動された後、ブートローダはブート テーブルに従って RTU のすべてのイメージをロードおよび/または起動します。ブート テーブル構成の詳細については、UG_S32ZE_GreenVIP.pdf の「3.4 ブート テーブルのコンパイル」を参照してください。 5. さらに、私が理解している限り、greenVIP の大きな利点の 1 つは、デターミニスティックであり、オートモーティブ グレードのセーフティが検証可能またはすでに検証されているマルチコア ブートアップ シーケンスを備えていることです。間違っていたら確認または訂正をお願いします。これは、M33 ブート コアのコードも変更すべきではない、または変更できないという意味ですか? >>>GreenVIP (S32Z/E 車載統合プラットフォーム) は、お客様が最小限の労力で S32Z/E ファミリ上でアプリケーションの開発を開始できるようにする機能的なソフトウェア プラットフォームを提供することを目的としています。各単一アプリケーション (vECU) のスタンドアロン開発とそれらの統合が可能になります。GreenVIP プラットフォームは、独自のデバイス機能を活用した S32Z/E の適切な使用方法を示すことを目的としています。M33 をソフトウェア レベルで適用する場合は、お客様が変更を加えることができます。これはソフトウェア レベルの開発アプリケーションです。当社が提供するgreenvipは、お客様が参照および使用するためのものであり、お客様の迅速な発展を促進します。 6. さらに、各コアのバイナリがブートシーケンス中にフラッシュからRAMにコピーされるだけの場合、カスタムプロジェクトでgreenVIPアーキテクチャを使用する目的は、greenVIPユーザーガイドの表11(各パーティションのフラッシュアドレス)で指定された適切なフラッシュアドレスに独自のコードバイナリをフラッシュすることだけでしょうか?つまり、例えばRTU_0_C0でコードを実行したい場合、バイナリをアドレス0x0024_0000にフラッシュするということですか? >>>GreenVIP アプリケーションの場合、バイナリをアドレス 0x0024_0000 にフラッシュすると、RTU_0_C0.bin をこのアドレスにフラッシュするときに、SMU ブートローダによって自動的に RAM にコピーされます。ただし、エントリ/開始アドレスが同じ場合にのみ開始できます。 この情報がお役に立つことを願っております。 BR ジョーイ Re: Modifying greenVIP こんにちは@Joey_z 、 回答ありがとうございます。これは概念的には大いに理解するのに役立ちますが、実用的な観点からは少し困惑しています。 ブートテーブルについてですが、 UG_S32ZE_GreenVIP.pdf のセクション3.4「ブートテーブルのコンパイル」では、ブートテーブルのコンパイル手順のみが規定されており、実際の設定部分については触れられていないようです。同じセクションではブートローダーの設定についても触れられていますが、Tresos プロジェクトの観点からのみ言及されています。S32 Design Studio 用の同等の設定ツールはありますか?あるいは、この問題にはどのように対処すればよいでしょうか? 「BLOB は IVT に基づいています」とおっしゃるのは、 IVT が BLOB の一部であるという意味ですか、それともBLOB のコンパイルプロセスが IVT に基づいているという意味ですか?現時点での私の理解では、BLOB には以下のものが含まれています。 1. IVT 2. DCD 3. アプリケーションブートローダー 私はS32 DS IVTツールの視覚的な意味に基づいて推測しました   ご確認または訂正をお願いします。 greenVIPに関するコメントについて:「各アプリケーション(vECU)のスタンドアロン開発とそれらの統合を可能にします。当社が提供するgreenVIPは、お客様の参照と使用を目的としており、お客様の迅速な開発を促進します。」R52コアとM33/SMUコア用の独自のソフトウェアを開発するには、どのようにアプローチすればよいか、実用的な観点からもう少し詳しく説明していただけますか。例えば、SMU_LAプロジェクトのmain.cファイル(添付ファイルとして追加)を見つけましたが、これもTresosプロジェクトとしてのみ実装されており、main関数は確認できます。 int main(void) { SwPartId = PART_ID; /* Monitoring initialization (SwPartId, osTaskID_First, osTaskID_Last, osTaskID_Reset) */ Monitoring_Init(SwPartId, OsTaskASW_1ms, OsTaskASW_1000ms, OsTaskASW_1000ms); EcuM_Init(); /* start OS never returns */ return 0; } しかし、 EcuM_Init()の定義/内容が見つからないため、行き止まりになってしまいます。マルチコア ブート プロセス アーキテクチャの説明は、具体的にはどこにありますか? また、どこで見つけることができますか? お時間を割いていただき、ありがとうございます! Re: Modifying greenVIP こんにちは、 HiddenSquid ご返信と情報ありがとうございます。 1.S32 Design Studio 用の同等の構成ツールはありますか? また、この問題にはどのように対処すればよいですか? >>>5.12 ブート サービスの章を参照してください。ブート サービス (ブートローダー) は、SMU tresos プロジェクトで構成可能なコンポーネントとして提供されます。このコンポーネントは、複数の実行環境、アプリケーションソース、アプリケーションの構成を可能にします。 画像の断片。GreenVIP パッケージの場合、ブートローダー アプリケーションには Tresos のみを使用できます。 2.「BLOB は IVT に基づいています」というのは、IVT が BLOB の一部であるという意味ですか、それとも BLOB のコンパイル プロセスが IVT に基づいているという意味ですか。 >>>IVT/DCD/アプリケーション ブートローダーは BLOB に含まれています。 3. しかし、EcuM_Init() の定義/内容が見つからないため、行き止まりになってしまいます。マルチコア ブート プロセス アーキテクチャの説明は、具体的にはどこにありますか? また、どこで見つけることができますか? >>> GreenVIP の場合、ブートローダ アプリケーションをロードして Tresos でコードを生成し、EcuM_Init() 情報を見つけてください。GreenVIP パッケージはマルチコアなので、これも参照してみてください。 BR ジョーイ
View full article
S32K344 OTA 演示 您好, 我想使用 Design Studio 3.4/3.5 试试 S32K344 的演示,看看内存交换是如何完成的。我尝试安装 SW32K3_OTADEMO_0.8.0_D2203.exe、但我仍然无法在 DS 3.4 中看到任何示例代码。请帮帮我。 Re: S32K344 OTA DEMO 你好@jerryrig OTADEMO 的版本说明显示,S32 Design Studio 3.4 和 RTD 1.0.0需要 HF02 才能导入和版本项目。这是非常老的 RTD 版本,演示版尚未更新到其他/更新的版本。因此,您可以使用它进行评估,然后再改用最新的 RTD。 可以在以下路径找到版本说明: c:\NXP\SW32K3_OTADEMO_0.8.0\SW32K3_OTADEMO_0.8.0_ReleaseNotes.pdf 如果您只想测试交换,请看这篇文章: https://community.nxp.com/t5/S32K/s32k3-flash-swap-requirements/m-p/1920123/highlight/true#M38475 我在那里介绍了如何编写 AB 交换的简约代码。这只是一项简单的 HSE 服务,无需其他服务。 要查看哪个分区处于活动状态,请参阅 DCMSTAT 寄存器。HSE 固件参考手册修订版中对此进行了描述。第 264 页的 2.7。 此致, Lukas Re: S32K344 OTA DEMO 谢谢,我会按照您提供的步骤和信息进行操作。
View full article
Clarification on MCAL portpin Id Hi Team, We are configuring the port module during that PortPin Id has been assigning, From the user manual value will be assigned to the symbolic name what exactly does it mean? Since the S32K322 PTE6 is 84 pin in the microcontroller but portpin Id is showing in the MCAL configuration has 66? Please do clarify the same.   Re: Clarification on MCAL portpin Id Hi @Thiru2483  The PortPin Id parameter in the Port driver configuration is simply an internal numerical identifier that becomes associated with a symbolic name. Its value is assigned automatically in the order in which you configure the pins, starting from 1 and increasing sequentially. This number does not match the actual physical pin on the MCU. BR, VaneB
View full article
RT1064 GUI-Guider LVGL 性能调整 我们有一款基于 MIMXRT1064-EVK 设计的产品。我们使用 GUI-Guider 设计基于 LVGL 的应用程序,与 GUI-Guider 示例项目使用的屏幕类型相同。我们正在努力寻找性能改进方法,并看到了这篇关于可提高性能的系统级更改的文章: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/LVGL-Benchmark-Performance-Optimization/ta-p/2252208。除此以外,是否还可以调整 LVGL 配置设置以提高性能? 我们注意到,在基于 GUI-Guider 生成的项目的项目中,即使屏幕是静态的,不需要更新 GUI 元素,LVGL 性能监测器报告的 CPU 使用率也相当高。有没有任何 LVGL 设置可以减少重绘的次数? Re: RT1064 GUI-Guider LVGL performance tweaks 嗨,@aanderson-eemn、 GUI 指南用户指南(GUIGU IDERUG_1.10.1:GUI Guider v1.10.1 用户指南 | 恩智浦半导体)有关于性能优化的特定章节,但您之前分享的知识库文章已经探讨了大多数建议。我建议遵循这两份文档,以提高 LVGL 应用程序的性能。 BR, Edwin. Re: RT1064 GUI-Guider LVGL performance tweaks @EdwinHz谢谢你的建议。我们发现在同步动态随机存取存储器(SDRAM)中运行应用程序可以显著提高性能,但是我在生成从同步动态随机存取存储器(SDRAM)运行应用程序的十六进制文件时遇到了很多问题。基准测试性能优化文档描述了使用安全配置工具创建基于同步动态随机存取存储器\(SDRAM\)的固件映像的过程,该工具似乎可以生成适合串行下载器模式的映像:https://docs.mcuxpresso.nxp.com/secure/latest/06_processor_specific_workflow.html#image-running-from-external-sdram。但是,我们将使用 jLink 直接刷新我们的设备,因此我们需要我们的镜像包含启动头文件、ivt、dcd 等...我找到了这篇文章,描述了如何手动将这些部分重新添加到链接器脚本中:https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/I-MX-RT-How-to-boot-to-SDRAM/ta-p/1125054 但我没有任何收获。你能否提供一些指导,说明如何生成一个可以使用 JLink 刷新、从 同步动态随机存取存储器(SDRAM) 运行应用程序的二进制? 以下是我认为最接近实现这一目标的步骤,供参考: 1. 从 RT1064-EVK 板上使用 mcuxpresso SDK V25.06.00 的 iled_blinky 项目开始。 将 `XIP_BOOT_HEADER_DCD_ENABLE=1` 和 `SKIP_SYSCLK_INIT` 添加到预处理器定义中 3. 检查"在托管链接器脚本中将应用程序链接到 RAM" 4. 删除 `PROGRAM_FLASH` 内存区域,将 `BOARD_SDRAM` 内存区域移至列表顶部 5. 运行编译来生成链接器文件 6. 取消选中 " 管理链接器脚本 " 然后将启动头文件/ivt/boot_data/data/dcd_data 部分重新添加到链接器脚本中
View full article
Clarification on Bootloader Flow: MCUboot_opensource and OTA Examples Hello, I am working with the NXP SDK for the i.MX RT platform and I noticed that the SDK provides multiple bootloader-related examples, such as mcuboot_opensource and ota_mcuboot_basic. From my understanding, the boot flow seems to be as follows: The mcuboot_opensource project is programmed first and acts as the main bootloader. The ota_mcuboot_basic example is then used to handle firmware updates. Finally, the OTA process updates the actual user application firmware. So effectively, there appear to be three components involved: MCUboot bootloader (mcuboot_opensource) OTA update application (ota_mcuboot_basic) Final user application firmware I would like to confirm if this understanding is correct. Specifically: Is mcuboot_opensource always required as the base bootloader for OTA examples like ota_mcuboot_basic? Does ota_mcuboot_basic act as the main application that gets updated, or is it only a reference example for implementing OTA updates in a custom application? In a real product, would we typically keep MCUboot as the bootloader and replace ota_mcuboot_basic with our own application? Any clarification on the correct boot flow and how these examples are intended to be used in a production setup would be very helpful. Thank you. Re: Clarification on Bootloader Flow: MCUboot_opensource and OTA Examples Hi @Bhumika18, hope you are doing well. Is mcuboot_opensource always required as the base bootloader for OTA examples like ota_mcuboot_basic?   Yes, as it contains the required source code for MCUboot to work properly. Does ota_mcuboot_basic act as the main application that gets updated, or is it only a reference example for implementing OTA updates in a custom application?   It is a reference application that implements OTA updates, therefore you would use the same logic into a custom application to enable OTA updates.   In a real product, would we typically keep MCUboot as the bootloader and replace ota_mcuboot_basic with our own application? Yes, just make sure that you maintain the OTA functionalities of the mentioned example in order to be able to do the OTA in your custom application.   Please let me know if this information clears out your doubts.
View full article
RT1064 GUI-Guider LVGL performance tweaks We have a product designed based off of the MIMXRT1064-EVK. We're using GUI-Guider to design LVGL based applications for the same type of screen that the GUI-Guider example projects use. We're working on finding performance improvements and came across this post about system level changes that can improve performance: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/LVGL-Benchmark-Performance-Optimization/ta-p/2252208 . In addition to these, are there LVGL configuration settings that can be adjusted for performance gains? We noticed that in the projects based on the GUI-Guider generated project the CPU usage as reported by the LVGL performance monitor is fairly high even when the screen is static and no GUI elements need updating. Are there any LVGL settings that can reduce the amount of redrawing that's happening? Re: RT1064 GUI-Guider LVGL performance tweaks Hi @aanderson-eemn, The GUI Guider User Guide (GUIGUIDERUG_1.10.1: GUI Guider v1.10.1 User Guide | NXP Semiconductors) has a specific section on performance optimizations, but most of the recommendations are already explored by the knowledge base article that you previously shared. My recommendation would be to follow both of these documentations to increase performance of your LVGL application. BR, Edwin. Re: RT1064 GUI-Guider LVGL performance tweaks @EdwinHz Thank you for the advice. We have found that running the application in SDRAM has resulted in a noticeable increase in performance, but I have been having a lot of trouble generating a hex file that runs the application from SDRAM. The benchmark performance optimization document described a process for creating a SDRAM-based firmware image using the secure provisioning tool that seems to generate an image suitable for the serial downloader mode: https://docs.mcuxpresso.nxp.com/secure/latest/06_processor_specific_workflow.html#image-running-from-external-sdram . However, we will be flashing our device directly using a JLink, so we need our image to include the boot header, ivt, dcd etc... I found this article describing how to manually re-add those sections to the linker script: https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs-Knowledge/I-MX-RT-How-to-boot-to-SDRAM/ta-p/1125054 , but I didn't have any luck. Could you provide some guidance for how I can generate a binary file that I can flash using a JLink, that runs the application from SDRAM? For reference here are the steps that I think come closest to achieving this: 1. starting with the iled_blinky project on the RT1064-EVK board with mcuxpresso SDK V25.06.00 . 2. add `XIP_BOOT_HEADER_DCD_ENABLE=1` and `SKIP_SYSCLK_INIT` to the preprocessor defines 3. check "Link application to RAM" in managed linker script 4. delete `PROGRAM_FLASH` memory region and move `BOARD_SDRAM` memory region to the top of the list 5. run a build to generate the linker file 6. uncheck "manage linker script" and re-add the boot header/ivt/boot_data/dcd_data sections to the linker script
View full article
ブートローダフローの説明: MCUboot_opensource と OTA の例 こんにちは、 私は i.MX RT プラットフォーム用の NXP SDK を使用していますが、SDK にはmcuboot_opensourceやota_mcuboot_basicなど、ブートローダ関連の複数の例が提供されていることに気付きました。 私の理解では、ブートフローは次のようになります。 mcuboot_opensourceプロジェクトが最初にプログラムされ、メインのブートローダとして機能します。 次に、 ota_mcuboot_basic の例を使用してファームウェアの更新を処理します。 最後に、OTA プロセスによって実際のユーザー アプリケーション ファームウェアが更新されます。 つまり、実際には 3 つの要素が関係しているようです。 MCUboot ブートローダー (mcuboot_opensource) OTAアップデートアプリケーション(ota_mcuboot_basic) 最終ユーザーアプリケーションファームウェア この理解が正しいかどうか確認したいと思います。具体的には: ota_mcuboot_basicのような OTA の例の場合、ベース ブートローダとしてmcuboot_opensource が常に必要ですか? ota_mcuboot_basic は更新されるメインアプリケーションとして機能しますか、それともカスタムアプリケーションで OTA 更新を実装するための参照例にすぎませんか? 実際の製品では、通常、MCUboot をブートローダーとして保持し、 ota_mcuboot_basic を独自のアプリケーションに置き換えますか? 正しいブートフローと、これらの例を本番環境でどのように使用するかについての説明があれば、非常に役立ちます。 よろしくお願いします。 Re: Clarification on Bootloader Flow: MCUboot_opensource and OTA Examples こんにちは@Bhumika18さん、お元気でいらっしゃることを願っています。 ota_mcuboot_basic のような OTA の例の場合、ベース ブートローダーとして mcuboot_opensource が常に必要ですか? はい、MCUboot が正しく動作するために必要なソース コードが含まれています。 ota_mcuboot_basic は更新されるメインアプリケーションとして機能しますか、それともカスタムアプリケーションで OTA 更新を実装するための参照例にすぎませんか? これは OTA アップデートを実装するリファレンス アプリケーションであるため、OTA アップデートを有効にするには、同じロジックをカスタム アプリケーションに使用します。 実際の製品では、通常、MCUboot をブートローダーとして保持し、ota_mcuboot_basic を独自のアプリケーションに置き換えますか? はい、カスタム アプリケーションで OTA を実行できるようにするには、前述の例の OTA 機能を維持するようにしてください。 この情報で疑問が解消されたかどうかお知らせください。
View full article
RT1176 PMIC_ON_REQ goes low after 5mS We are currently verifying that our design meets the power up sequence per the reference manual.  We are bypassing the internal DC/DC and all power rails come up in the correct sequence.  However, we have an intermittent issue that occurs sometimes during a brief power cycle.  The root cause appears to be the RT1176 "PMIC_ON_REQ" going low, about 5 mS after "VDD_SNVS_IN" goes high. I can't seem to find anywhere in the reference manual that explains the cases when "PMIC_ON_REQ" would go low.  There is one mention of when the "DCDC_IN" goes below 2.6V that will cause “PMIC_ON_REQ to go low.  However, "PMIC_ON_REQ" still goes low and stays low even though “VDD_SNVS_IN” and “DCDC_IN” have remained stable throughout powerup.  i.MXRT Re: RT1176 PMIC_ON_REQ goes low after 5mS I found that I wasn't handling the RT1176 POR_B (pin T10) according to the MCU’s power sequencing specifications.  The MCU reference manual states that the POR_B must remain low until all the power rails are stable.  In my case, I inadvertently had the input to POR_B indirectly dependent on the PMIC_ON_REQ.  The details aren't important but I basically had a sort of a circular logic going on. In other words, POR_B was glitching during the power up and was telling the MCU to reset before it had a chance to power up.  I also slowed down my overall power sequencing timing, allowing some margin for each of the power rails to come up and waited awhile before pulling POR_B high.  Here is a plot of my sequencing that is working now ("MCU_RESET is the name I gave POR_B): Re: RT1176 PMIC_ON_REQ goes low after 5mS Hi mckaylund , Did you ever figure this out? I have the exact same issue with the PMIC_ON_REQ going low after ~5 ms. Re: RT1176 PMIC_ON_REQ goes low after 5mS Could you expound on your comment about the relationship between ON/OFF and PMIC_REQ_ON? I have hardware that more consistently shows PMIC_REQ_ON going low after 5mS.  How is the ON/OFF signal linked to the PMIC_REQ_ON dropping low after 5mS after initial power-up?  I haven't seen any specific mention of this behavior related to power sequencing.  The consistency of the 5mS seems like the outcome of some logic rather than a transient voltage/current blip on the ON/OFF or PMIC_REQ_ON.  I've included two oscilloscope screen captures of our power sequence which also includes the ONOFF signal.  In one capture, I have tied ONOFF to ground via a 6.6K ohm, and the other screen capture is with the ONOFF left unconnected for the MCU internal pullup control. Could you clarify where the series resistor should be placed: ON/OFF or PMIC_REQ_ON?  Re: RT1176 PMIC_ON_REQ goes low after 5mS Hi @mckaylund , ON/OFF is used to switch PMIC_REQ_ON to control power modes. A 4.7-kΩ to 10-kΩ series resistor can be used when the current drain is critical. Regards, Jing
View full article
KW47: wireless_ranging_bm の RF スイッチングの例 こんにちは、 wireless_ranging_bm の例を実行するときに RF スイッチングは発生しますか?はいの場合、 1) RF_GPIO_4(PTD1) と RF_GPIO_5(PTD2) はどのように構成されますか?コードをトレースしましたが、これらの 2 つのピンのピン構成は見つかりませんでした。 2) 切り替えを制御しているのは誰ですか?(測距デモアプリまたはNBU) よろしくお願いします。 Re: KW47: RF switching on wireless_ranging_bm example こんにちは、 あなたの調子が良いといいのですが。 アンテナ切り替えを使用する測距操作の場合、測距シーケンス マネージャ (RSM) は、ローカリゼーション コントロール (LCL) モジュールに切り替えトリガーを提供します。詳細については、KW47 リファレンス マニュアルの 52.4.4.2 トランシーバを参照してください。 wireless_rangingの例では、RFスイッチのピン構成はpin_mux.cで定義されています。関数 BOARD_InitRFSwitchControlPins()。KW47-LOC は、異なる RF_GPO および pin-mux 設定 (PTD1、PTD2、PTD3) のセットを使用します。BLE ローカリゼーション アプリケーションのデバッグ GPIO およびアンテナ切り替え IO を設定する API PLATFORM_InitLcl を参照してください。PTD1、PTD2、PTD3 のセットアップが含まれています。 よろしくお願いします、 アナ・ソフィア。
View full article
i.MX93 RAW10 capture issue – only first line valid (IMX219 + ISI) Hello, I am currently debugging a RAW capture issue on i.MX93 (FRDM-iMX93) using a Sony IMX219 sensor and would appreciate any guidance on how to further debug or resolve this problem. Setup: SoC: i.MX93 Sensor: IMX219 Format: RAW10 (SRGGB10_1X10) Capture via mxc-isi → /dev/video0 Kernel: 6.12.20 (NXP BSP based) Media topology: The media graph looks correct and all links are enabled. The active pipeline is: Device topology entity 1: crossbar (3 pads, 3 links, 1 route) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 routes: 0/0 to 2/0 [ACTIVE] pad0: SINK, MUST_CONNECT stream 0 format SRGGB10_1X10 3280x2464 field none connected from csidev-4ae00000.csi pad1 pad1: SINK, MUST_CONNECT connected from mxc_isi.output pad0 pad2: SOURCE stream 0 format SRGGB10_1X10 3280x2464 field none connected to mxc_isi.0 pad0 entity 5: mxc_isi.0 (2 pads, 2 links, 0 routes) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: SINK stream 0 format SRGGB10_1X10 3280x2464 field none compose bounds 0,0 3280x2464 compose 0,0 3280x2464 connected from crossbar pad2 pad1: SOURCE stream 0 format SRGGB10_1X10 3280x2464 field none crop bounds 0,0 3280x2464 crop 0,0 3280x2464 connected to mxc_isi.0.capture pad0 entity 8: mxc_isi.0.capture (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video0 pad0: SINK connected from mxc_isi.0 pad1 entity 16: mxc_isi.output (1 pad, 1 link) type Node subtype V4L flags 0 pad0: SOURCE connected to crossbar pad1 entity 23: csidev-4ae00000.csi (2 pads, 2 links, 1 route) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 routes: 0/0 to 1/0 [ACTIVE] pad0: SINK stream 0 format SRGGB10_1X10 3280x2464 field none connected from imx219 2-0010 pad0 pad1: SOURCE stream 0 format SRGGB10_1X10 3280x2464 field none connected to crossbar pad0 entity 28: imx219 2-0010 (1 pad, 1 link, 0 routes) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev3 pad0: SOURCE stream 0 format SRGGB10_1X10 3280x2464 colorspace raw, full-range crop bounds 8,8 3280x2464 crop 8,8 3280x2464 connected to csidev-4ae00000.csi pad0 Streaming starts successfully and runs at about 15 fps. Capture command used: v4l2-ctl -d /dev/video0 --set-fmt-video=width=3280,height=2464,pixelformat=RG10 --stream-mmap --stream-count=1 --stream-to=raw10.raw Streaming to /dev/null also works and reports approximately 15.00 fps. Issue description: This is the RAW frame I captured. Although streaming succeeds, the dumped RAW image contains valid data only in the first line. The rest of the frame appears invalid or constant. This behavior is consistent across multiple captures. Questions: Are there any known issues on i.MX93 ISI when capturing RAW formats (especially RAW10) where only the first line is written correctly? Could this be related to: Bytes-per-line or stride mismatch? CSI-2 packet handling such as line length or short packets? ISI RAW packing or memory write configuration? Are there recommended debug points such as registers, trace events, or driver logs in: CSI-2 RX ISI Crossbar that could help identify why only one line is captured correctly? Any hints, references, or similar experiences would be very helpful. Thank you in advance for your support. Best regards, Minh Re: i.MX93 RAW10 capture issue – only first line valid (IMX219 + ISI) Hello, You're successfully hitting 15 fps, the CSI-2 receiver is seeing the Start and End of Frame packets, but the ISI is likely discarding the rest of the payload because the line length doesn't match the programmed width or the 32-byte alignment requirements of the NXP DMA engine. Check your byte CareCredit com sperline calculation for RAW10—if the ISI is expecting a specific packing format and gets a different byte count, it often stops writing to memory after the first line to prevent buffer corruption. I’d recommend checking the CSI-2 RX error registers for CRC/ECC flags and ensuring the ISI is in full bypass mode, as any attempt at internal color processing on RAW10 will cause the pipeline to stall or misbehave. Re: i.MX93 RAW10 capture issue – only first line valid (IMX219 + ISI) it seems you capture resolution bigger than 2k, how about capturing 1080P? if you need capture resolution bigger than 2k, you need change the ISI driver about chain buffer
View full article
ScriptGUI3, MC33777BT (EVBMA777T3) and BMA6402SA (KIT6X02AP2T1) Hi, I am trying to run some demo scripts in SCriptGUI3 (3.55) to read back registers from EVBMA777T3. I am using the KIT6X02AP2T1 to interface the TPL3. From the source code it seems that BMS6402 is supported, but the script (777_uc1_precise_current_meas.txt) doesn't work. Am I doing something wrong? Re: ScriptGUI3, MC33777BT (EVBMA777T3) and BMA6402SA (KIT6X02AP2T1) Hello Crt33   Could you send your file so we can check if there are any relevant changes?   Thanks for your understanding. I will be waiting for your response Have a great day and best of luck. Re: ScriptGUI3, MC33777BT (EVBMA777T3) and BMA6402SA (KIT6X02AP2T1) Hi, in my previous post I listed the wrong file. I used SCRIPT_uc1_current_measurement.txt which should auto-detect the PHY, not the 777_uc1_precise_current_meas.txt. The output (error) is fine. I am attaching the file. Re: ScriptGUI3, MC33777BT (EVBMA777T3) and BMA6402SA (KIT6X02AP2T1) Hi, I have spent the last day trying to run at least some example script from the ScriptGUI3 using KIT6X02AP2T1 and EVBMA777T3. Since that didn't work I modified the script to access at least some registers from the BMA6402SA gateway on the KIT6X02AP2T1.  I tried to init the PHY as bms6402 and as mc33665a as the device info register is the same. In first case I get a python error initializing the PHY. In the second case the initialization goes well, but I don't get back the response. Please see attached screenshoots.  What am I doing wrong or what is the trick using ScriptGUI3 and BMA6402 on KIT6X02AP2T1? In theory it should work. The kardware is fine as I can use the KIT6X02AP2T1 to interface BMA7118 using EvalGUI8. Thanks
View full article
Can someone please explain to me what "/0Z" is in TJA1463AT/0Z? I've been trying to find PCN for the subject in NXP homepage, but can't it yet. CAN Re: Can someone please explain to me what "/0Z" is in TJA1463AT/0Z? Thank you~ Re: Can someone please explain to me what "/0Z" is in TJA1463AT/0Z? Hi, There is no PCN available for the new TJA1463AT. The full orderable part number is TJA1463AT/0Z where /0 just indicates the first revision of TJA1463AT and Z indicates reel packing (Reel 13" Q1/T1 in Sulfur Barrier Bag). BR, Tomas
View full article