2399669_ja-JP

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

2399669_ja-JP

2399669_ja-JP

iMXRT1176DVMAA + Macronix MX25U51245G 54フラッシュメモリに関する問題

こんにちは。カスタムボードを扱っているのですが、サプライチェーンの問題により、Macronix MX25U51245G 54 の機能フラッシュを交換する必要があります。ブートローダーROM APIを使用したSFDP検出に関して、問題が発生しているようです。

  • MIMXRT1176DVMAAを使用したカスタムPCBA
  • フラッシュデバイスをWinbond W25Q512NWEIQからMacronix MX25U51245G 54に変更しました。
  • FlexSPI1を使用する
  • 1V8電源
  • 仕様内の信号完全性

回路図の接続図は以下のとおりです。

achampoux_0-1785249761617.png

achampoux_1-1785249804702.png

デフォルトでは、新しいフラッシュではシリアルダウンローダーやLinkServerのどちらでも書き書き/消去操作を正しく行えません。しかし、フラッシュの読み取りはうまくいくようだ。

SDK 25.12.00の例プロジェクトevkbmimxrt1170_flexspi_nor_polling_transfer_cm7をRAM(TCM)で動作させ、ボード/hardware_init.cでカスタムLUTだけを変更したことで、新しいフラッシュで正しく書き込み・読み取り・消去ができました。問題のLUTは以下の通りです:

const uint32_t customLUT[CUSTOM_LUT_LENGTH] = {
	[4 * NOR_CMD_LUT_SEQ_IDX_READ_NORMAL] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x03,
            kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_READ_NORMAL + 1] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04,
            kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x0B,
            kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST + 1] =
        FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_1PAD, 0x0A,
            kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0xEB,
            kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x20
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD + 1] =
        FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x0A,
            kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04
        ),
    [4 * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE] =
        FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x06,
            kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x20,
            kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_SINGLE] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x02,
            kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_SINGLE + 1] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_1PAD, 0x04,
            kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x38,
            kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x20
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD + 1] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_4PAD, 0x04,
            kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_READID] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9F,
            kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x03
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_WRITESTATUSREG] =
        FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x01,
            kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_1PAD, 0x02
        ),
	[4 * NOR_CMD_LUT_SEQ_IDX_READSTATUSREG] =
		FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x05,
            kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x01
        ),
    [4 * NOR_CMD_LUT_SEQ_IDX_ERASECHIP] =
        FLEXSPI_LUT_SEQ(
            kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0xC7,
            kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0
        ),
};

このフラッシュデバイスとブートローダーAPIまたはSFDP検出に関して、既知の問題はありますか?

Re: Issue with iMXRT1176DVMAA + Macronix MX25U51245G 54 flash

こんにちは、 @achampoux さん

NXP MIMXRTシリーズにご関心をお寄せいただきありがとうございます!

使用されているフラッシュチップ(MX25U51245G 54)のデータシートを確認したところ、いくつかの独自の機能があるようです。

最も重要な点: 4バイトアドレスモードが永続的

フラッシュローダーによって自動生成されたLUTが、4バイトアドレスモードを使用していない可能性があると推測されます。SDKのfsl_romapiプロジェクトを見て確認することをお勧めします。

ROM_FLEXSPI_NorFlash_GetConfig(instance, &norConfig, &option);
 
次に、norConfigを取得してその値を確認します。これが問題の原因である場合、ツールによって生成されたFCBヘッダーではなく、シリアルダウンロードモードでカスタムFCBヘッダーを直接使用する必要があります。デバッガー経由でダウンロードする場合は、カスタムダウンロードアルゴリズムを使用する必要があります。
 
よろしくお願いします、
ギャビン
タグ(1)
評価なし
バージョン履歴
最終更新日:
水曜日
更新者: