RT1176 SFPD QSPI IS25LP064D-JKLE 私は評価ボードと同じ方法で FlexSPI1 を実装するカスタム RT1176 ボードをフラッシュしようとしていますが、使用しようとしている IS25LP064D-JKLE をサポートするために、フラッシュ VCC に 3.3V を供給しています。flexspi_nor_config.cを添付しました。およびメモリの設定。デフォルトのflexspi_nor_polling_transfer_cm7を使用しています。Link Application to RAM を有効にしてデバッグすると、「プログラムデータ - 読み出しデータ値が正しくありません!」というエラーが返されます(125行目)。設定上の問題が何なのかまだ把握できていません。現在、MCU Link MR を使用していますが、Jlink にもアクセスできます。カスタムボードにはディップ・スイッチがあり、ブートモード 1 を 1、ブートモード 0 を 0 に設定しています。 Re: RT1176 SFPD QSPI IS25LP064D-JKLE こんにちは@AnteoJ 、
NXP MIMXRTシリーズにご興味をお持ちいただきありがとうございます。
RT1020-EVK で使用されるフラッシュは ISSI_IS25LP064A SO、対応する flexspi_nor_config.c は SDKs 内にあります。まずはこれを確認してください。
また、フラッシュを交換するときは、まず SEC/MCUBootUtility に組み込まれているテンプレートのテストに合格すると、独自のフラッシュを LUT の問題から保護することができます。
よろしくお願いします、 ギャビン Re: RT1176 SFPD QSPI IS25LP064D-JKLE データシートに従って特定のフラッシュの値を調べて置き換えましたが、デバッグを開始すると、依然として IMPRECISERR と UNDEFINSTR が発生します。調整する必要がある追加のパラメータがあるかどうかはわかりません。ここに私のコードがあります: /* * 著作権 2018-2022 NXP * 無断転載を禁じます。 * * SPDXライセンス識別子: BSD-3条項 */ #include "evkbmimxrt1170_flexspi_nor_config.h" /* ツールによって使用されるコンポーネント ID 定義。*/ #ifndef FSL_COMPONENT_ID #FSL_COMPONENT_ID "プラットフォーム.ドライバ.xip_board" を定義します #endif /**************************************************************************************** * コード **********************************************************************************/ #定義されている場合(XIP_BOOT_HEADER_ENABLE) && (XIP_BOOT_HEADER_ENABLE == 1) # __CC_ARM が定義されている場合 || __ARMCC_VERSION が定義されている場合 || __GNUC__が定義されている場合 __attribute__ ((セクション(".boot_hdr.conf")),使用済み)) #elif 定義済み( __ICCARM__ ) #pragma location = ".boot_hdr.conf" #endif #FLASH_DUMMY_CYCLES 0x03 を定義する #FLASH_DUMMY_VALUE 0x03 を定義する const flexspi_nor_config_t qspiflash_config = { .memConfig= { 。タグ= FLEXSPI_CFG_BLK_TAG、 .バージョン= FLEXSPI_CFG_BLK_VERSION、 .readSampleClksrc=kFlexSPIReadSampleClk_Loopback内部的に、 .csホールド時間= 3u、 .csセットアップ時間= 3u、 // DDRモード、ワードアダッサブル、セーフ構成、差動クロックを有効にする .controllerMiscOption= 0x10, .デバイスタイプ= kFlexSpiDeviceType_SerialNOR、 .sflashPadType= kSerialFlash_4Pads、 .シリアルクロック周波数= kFlexSpiシリアルクロック_60MHz、 .sflashA1サイズ= 8u * 1024u * 1024u、 /* フラッシュ設定機能を有効にする */ .configCmdEnable= 1u、 .configModeType[0]= kDeviceConfigCmdType_Generic、 /* 設定コマンドシーケンスを設定する */ .configCmdSeqs[0]= { .seqNum= 1, .seqId= 12, 。予約済み= 0, }, /* フラッシュ内の読み取りレジスタの設定値を準備する */ .configCmdArgs[0]= (FLASH_DUMMY_VALUE << 4)、 .lookupTable= { // LUTを読み込む [0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x20), [1] = FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, FLASH_DUMMY_CYCLES, READ_SDR, FLEXSPI_4PAD, 0x04), // ステータスLUTの読み取り [4 * 1 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05, READ_SDR, FLEXSPI_1PAD, 0x04), // 書き込み有効LUT [4 * 3 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0x0), // セクターLUTを消去する [4 * 5 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20, RADDR_SDR, FLEXSPI_1PAD, 0x18), // ブロックLUTを消去する [4 * 8 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xD8, RADDR_SDR, FLEXSPI_1PAD, 0x18), // PapeプログラムLUT [4 * 9 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x02, RADDR_SDR, FLEXSPI_1PAD, 0x18), [4 * 9 + 1] = FLEXSPI_LUT_SEQ(WRITE_SDR, FLEXSPI_1PAD, 0x04, STOP, FLEXSPI_1PAD, 0x0), // チップLUTを消去する [4 * 11 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x60, STOP, FLEXSPI_1PAD, 0x0), // 読み取りレジスタLUTを設定する [4 * 12 + 0] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xC0, WRITE_SDR, FLEXSPI_1PAD, 0x01), [4 * 12 + 1] = FLEXSPI_LUT_SEQ(STOP, FLEXSPI_1PAD, 0x00, 0, 0, 0), }, }, .ページサイズ= 256u、 .セクターサイズ= 4u * 1024u、 .ipcmdシリアルクロック周波数= 0x1、 .ブロックサイズ= 64u * 1024u、 .isUniformBlockSize= 偽、 }; #endif /* XIP_BOOT_HEADER_ENABLE */
View full article