How to config HyperRAM after initialization in MCXN947

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

How to config HyperRAM after initialization in MCXN947

496 次查看
TomC818
Contributor III

Hi, 

I am using a custom designed MCXN947 board with 64MB of external Hyper RAM (W959D8NFYA), I have followed MCX N947:FlexSPI Connecting to HyperRAM - Analysis and Configuration to set up the initialization code for the hyper RAM and tested successfully. 

However, when I tried to load a large file from sd card (with the help of FatFs) I am getting mysterious bit flip which corrupts my data in hyper RAM. I am copy the data to the hyper RAM through direct access, so each time on 1 block of data should be written.

TomC818_0-1764322578207.png

TomC818_1-1764322622291.png



Is there anything I have done wrong in the configuration?

#include "fsl_device_registers.h"

#include "fsl_debug_console.h"

#include <stdio.h>

#include "fsl_cache.h"

#include "fsl_common.h"

#include "fsl_gpio.h"

#include "fsl_edma.h"

#include "peripherals.h"

#include <stdbool.h>

#include <stdint.h>

#include "fsl_flexspi.h"

#include "fsl_flexspi_edma.h"

#include "fsl_cache_lpcac.h"

#include "fsl_gpio.h"

#include "hyperram_init.h"

#include "MCXN947_cm33_core0_COMMON.h"

#include "fsl_reset.h"

uint8_t write_test_block[CONFIG_MAX_BLOCK_SIZE] __attribute__((aligned(32)));

uint8_t read_test_block[CONFIG_MAX_BLOCK_SIZE] __attribute__((aligned(32)));

uint8_t hyperram_spoof[CONFIG_MAX_BLOCK_SIZE] __attribute__((aligned(32)));

enum

{

    READ_DATA,

    WRITE_DATA,

    READ_REG,

    WRITE_REG,

};

edma_transfer_config_t transferConfig;

edma_config_t userConfig;

volatile bool g_Transfer_Done = false;

void SysTick_Handler(void);

flexspi_device_config_t hyperRAM_config =

    {

        .flexspiRootClk = 40000000,

        .isSck2Enabled = false,

        .flashSize = (0x10000U),

        .CSIntervalUnit = kFLEXSPI_CsIntervalUnit1SckCycle,

        .CSInterval = 2,

        .CSHoldTime = 3,

        .CSSetupTime = 3,

        .columnspace = 3,

        .dataValidTime = 3,

        .enableWordAddress = true,

        .AWRSeqIndex = 1,

        .AWRSeqNumber = 1,

        .ARDSeqIndex = 0,

        .ARDSeqNumber = 1,

        .AHBWriteWaitUnit = kFLEXSPI_AhbWriteWaitUnit2AhbCycle,

        .AHBWriteWaitInterval = 0,

        .enableWriteMask = true,

};

uint32_t hyperRAM_LUT[64] =

    {

        /* Read Data */

        [0] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR, kFLEXSPI_8PAD, 0xA0, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),

        [1] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_DUMMY_RWDS_DDR, kFLEXSPI_8PAD, 0x07),

        [2] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_READ_DDR, kFLEXSPI_8PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00),

        /* Write Data */

        [4] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR, kFLEXSPI_8PAD, 0x20, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),

        [5] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_DUMMY_RWDS_DDR, kFLEXSPI_8PAD, 0x07),

        [6] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_WRITE_DDR, kFLEXSPI_8PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00),

        /* Read Register */

        [8] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR, kFLEXSPI_8PAD, 0xE0, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),

        [9] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_DUMMY_RWDS_DDR, kFLEXSPI_8PAD, 0x07),

        [10] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_READ_DDR, kFLEXSPI_8PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0x00),

        /* Write Register */

        [12] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DDR, kFLEXSPI_8PAD, 0x60, kFLEXSPI_Command_RADDR_DDR, kFLEXSPI_8PAD, 0x18),

        [13] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_CADDR_DDR, kFLEXSPI_8PAD, 0x10, kFLEXSPI_Command_WRITE_DDR, kFLEXSPI_8PAD, 0x07),

        [14] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_WRITE_DDR, kFLEXSPI_8PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_8PAD, 0x00),

};

void EDMA_1_CH0_IRQHandler(void)

{

    if ((EDMA_GetChannelStatusFlags(FLEXSPI0_RX_DMA_BASEADDR, FLEXSPI0_RX_DMA_CHANNEL) & kEDMA_InterruptFlag) != 0U)

    {

        EDMA_ClearChannelStatusFlags(FLEXSPI0_RX_DMA_BASEADDR, FLEXSPI0_RX_DMA_CHANNEL, kEDMA_InterruptFlag);

        g_Transfer_Done = true;

    }

}

void EDMA_1_CH1_IRQHandler(void)

{

    if ((EDMA_GetChannelStatusFlags(FLEXSPI0_TX_DMA_BASEADDR, FLEXSPI0_TX_DMA_CHANNEL) & kEDMA_InterruptFlag) != 0U)

    {

        EDMA_ClearChannelStatusFlags(FLEXSPI0_TX_DMA_BASEADDR, FLEXSPI0_TX_DMA_CHANNEL, kEDMA_InterruptFlag);

        g_Transfer_Done = true;

    }

}

static status_t flexspi_hyper_ram_reset(FLEXSPI_Type *base)

{

    flexspi_transfer_t hyperRAM;

    status_t status;

    /* Write data */

    hyperRAM.deviceAddress = 0x0U;

    hyperRAM.port = kFLEXSPI_PortA1;

    hyperRAM.cmdType = kFLEXSPI_Command;

    hyperRAM.SeqNumber = 1;

    hyperRAM.seqIndex = 4;

    status = FLEXSPI_TransferBlocking(base, &hyperRAM);

    if (status == kStatus_Success)

    {

        for (uint32_t i = 150000; i > 0; i--)

        {

            __NOP();

        }

    }

    return status;

}

status_t hyperRAM_mem_init(bool enable_cache)

{

    edma_config_t userConfig;

    EDMA_GetDefaultConfig(&userConfig);

    EDMA_Init(DMA1, &userConfig);

    EnableIRQ(EDMA_1_CH0_IRQn);

    flexspi_config_t config;

    cache64_config_t cacheCfg;

    status_t status = kStatus_Success;

    RESET_PeripheralReset(kFLEXSPI_RST_SHIFT_RSTn);

    FLEXSPI_GetDefaultConfig(&config);

    config.ahbConfig.enableAHBPrefetch = true;

    config.ahbConfig.enableAHBBufferable = true;

    config.ahbConfig.enableReadAddressOpt = true;

    config.ahbConfig.enableAHBCachable = true;

    config.rxSampleClock = kFLEXSPI_ReadSampleClkLoopbackFromDqsPad;

    for (uint8_t i = 1; i < FSL_FEATURE_FLEXSPI_AHB_BUFFER_COUNT - 1; i++)

    {

        config.ahbConfig.buffer[i].bufferSize = 0;

    }

    config.ahbConfig.buffer[0].masterIndex = 4;

    config.ahbConfig.buffer[0].bufferSize = 512;

    config.ahbConfig.buffer[0].enablePrefetch = true;

    config.ahbConfig.buffer[0].priority = 0;

    config.ahbConfig.buffer[FSL_FEATURE_FLEXSPI_AHB_BUFFER_COUNT - 1].bufferSize = 512;

#if !(defined(FSL_FEATURE_FLEXSPI_HAS_NO_MCR0_COMBINATIONEN) && FSL_FEATURE_FLEXSPI_HAS_NO_MCR0_COMBINATIONEN)

    config.enableCombination = true;

#endif

    FLEXSPI_Init(HYPERRAM_FLEXSPI, &config);

    FLEXSPI_SetFlashConfig(HYPERRAM_FLEXSPI, &hyperRAM_config, kFLEXSPI_PortA1);

    FLEXSPI_UpdateLUT(HYPERRAM_FLEXSPI, 0, hyperRAM_LUT, ARRAY_SIZE(hyperRAM_LUT));

;

    FLEXSPI_SoftwareReset(HYPERRAM_FLEXSPI);

    status = flexspi_hyper_ram_reset(HYPERRAM_FLEXSPI);

    if (status != kStatus_Success)

    {

        PRINTF("failed to reset hyperRAM....\r\n");

        return status;

    }

    FLEXSPI_SoftwareReset(HYPERRAM_FLEXSPI);

    if (enable_cache)

    {

        CACHE64_GetDefaultConfig(&cacheCfg);

        CACHE64_Init(CACHE64_POLSEL0, &cacheCfg);

        CACHE64_EnableWriteBuffer(CACHE64_CTRL0, false);

        CACHE64_EnableCache(CACHE64_CTRL0);

    }

    return status;

}

uint32_t get_vendor_id(FLEXSPI_Type *base, int regAddr)

{

    uint32_t vendor_id = 0;

    status_t status;

    uint32_t buffer = 0;

    flexspi_transfer_t hyperRAM;

    hyperRAM.deviceAddress = regAddr;

    PRINTF("accessing address:0x%x\r\n", regAddr);

    hyperRAM.port = kFLEXSPI_PortA1;

    hyperRAM.cmdType = kFLEXSPI_Read;

    hyperRAM.SeqNumber = 1;

    hyperRAM.seqIndex = 2;

    hyperRAM.data = &buffer;

    hyperRAM.dataSize = 4;

    PRINTF("Reading id\r\n");

    status = FLEXSPI_TransferBlocking(base, &hyperRAM);

    vendor_id = buffer & 0xffff;

    PRINTF("vendor id: 0x%4x\r\n", vendor_id);

    PRINTF("status:%d\r\n", status);

    return vendor_id;

}

And this is the header I added:


#ifndef HYPERRAM_INIT_H_

#define HYPERRAM_INIT_H_

#include <stdbool.h>

#include <stdint.h>

#include "fsl_common.h"

#ifdef __cplusplus

extern "C"

{

#endif

#define HyperRAM_write_buffer (1024)

#define HyperRAM_read_buffer (1024)

#define HYPERRAM_FLEXSPI FLEXSPI0

#define HYPERRAM_FLEXSPI_BASE_ADDRESS FlexSPI0_AMBA_BASE

#define HYPERRAM_FLEXSPI_PORT kFLEXSPI_PortA1

#define HYPERRAM_FLEXSPI_AMBA_BASE FlexSPI_AMBA_BASE

#define MAX_COLUMN_SIZE (30)

#define HYPERRAM_CMD_LUT_SEQ_IDX_READDATA 0

#define HYPERRAM_CMD_LUT_SEQ_IDX_WRITEDATA 4  

#define HYPERRAM_CMD_LUT_SEQ_IDX_READREG 8    

#define HYPERRAM_CMD_LUT_SEQ_IDX_WRITEREG 12

#define CONFIG_MAX_BLOCK_SIZE (16384)

    status_t hyperRAM_mem_init(bool enable_cache);

#ifdef __cplusplus

}

#endif

#endif



标签 (1)
0 项奖励
回复
5 回复数

442 次查看
Harry_Zhang
NXP Employee
NXP Employee

HI @TomC818 

 status_t hyperRAM_mem_init(bool enable_cache);

HyperRAM is not cache-coherent. If your region is mapped as cacheable, then CPU writes may stay in D-cache , HyperRAM has stale data,CPU reads may return stale cached data.

So i think you can try to disable Cache.

BR

Harry 

0 项奖励
回复

439 次查看
TomC818
Contributor III

@Harry_Zhang I have tried without enabling Cache64 of the Flexspi already and still getting wrongful data but flipping. I wonder is this related to the misconfiguration of the hyper RAM, because I am using direct pointer already the only the target address should get the data, but as you can see in the memory monitor of the attached image, somehow 0x8000_0030 is also getting updated which is not supposed to happen.

0 项奖励
回复

348 次查看
Harry_Zhang
NXP Employee
NXP Employee

Hi @TomC818 

I don't think this is a configuration issue with HyperRAM.

I think you can reproduce it with minimal SD free code (excluding FATfs/SD DMA), and turn off all SD/Tfat related files first. If this is not a problem, the problem is more likely to lie in the SD card read path (DMA, FatFs, buffer management).

BR

Harry

0 项奖励
回复

294 次查看
TomC818
Contributor III

Hi @Harry_Zhang ,


I use f_read first to load a 32KB chunk to the on-chip SRAM first and then copy the data from SRAM to external HyperRAM; I have checked the data in the SRAM and it seems to be correct. Here is the memory monitor on the SRAM range.

TomC818_0-1765254953956.png
But when copied from the SRAM to HyperRAM I am getting data corruption only at specific offset, shown here:

TomC818_1-1765255077588.png


I have re-run the program several times and the data corruption only occur at specific addresses, here shown at 0x30 and 0x7c, so it is unlikely to be a signal integrity issue. I think this is the same bit flipping issue as mentioned before. As mentioned, I am already not using cache for the Flexspi. 

FYI, I have tested with some simpler R/W test with increments , (i.e. loops with i++) which is successful and the data I checked manually with memory monitor is correct.

I tried direct access and DMA method already which both result in the data corruption in the mentioned offset.

 

0 项奖励
回复

187 次查看
Harry_Zhang
NXP Employee
NXP Employee

Hi @TomC818 

I think you can use byte by byte writing for comparative testing.

If there are no errors when writing byte by byte (i.e. there are no more errors at 0x30/0x7c before), but you previously encountered errors when writing with memcpy/32-bit, it indicates that it was caused by a sudden write width/misalignment.

You can force alignment, use byte writing, or adjust the write width.

BR

Harry

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2251109%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%A6%82%E4%BD%95%E5%9C%A8%20MCXN947%20%E5%88%9D%E5%A7%8B%E5%8C%96%E5%90%8E%E9%85%8D%E7%BD%AE%20HyperRAM%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2251109%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%EF%BC%8C%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%2064MB%20%E5%A4%96%E9%83%A8%E8%B6%85%E7%BA%A7%E5%86%85%E5%AD%98%20(W959D8NFYA)%20%E7%9A%84%E5%AE%9A%E5%88%B6%E8%AE%BE%E8%AE%A1%E7%9A%84%20MCXN947%20%E6%9D%BF%EF%BC%8C%E6%88%91%E5%B7%B2%E7%BB%8F%E6%8C%89%E7%85%A7%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FMCX-Microcontrollers-Knowledge%2FMCX-N947-FlexSPI-Connecting-to-HyperRAM-Analysis-and%2Fta-p%2F1988799%22%20target%3D%22_blank%22%3EMCX%20N947%EF%BC%9AFlexSPI%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20HyperRAM%E2%80%94%E2%80%94%E5%88%86%E6%9E%90%E5%92%8C%E9%85%8D%E7%BD%AE%E4%B8%BA%E8%B6%85%E7%BA%A7%E5%86%85%E5%AD%98%3C%2FA%3E%E5%AE%89%E8%A3%85%E4%BA%86%E5%88%9D%E5%A7%8B%E5%8C%96%E4%BB%A3%E7%A0%81%E5%B9%B6%E6%88%90%E5%8A%9F%E8%BF%9B%E8%A1%8C%E4%BA%86%E6%B5%8B%E8%AF%95%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E4%BD%86%E6%98%AF%EF%BC%8C%E5%BD%93%E6%88%91%E8%AF%95%E5%9B%BE%E4%BB%8E%20SD%20%E5%8D%A1%EF%BC%88%E5%9C%A8%20FatFs%20%E7%9A%84%E5%B8%AE%E5%8A%A9%E4%B8%8B%EF%BC%89%E5%8A%A0%E8%BD%BD%E4%B8%80%E4%B8%AA%E5%A4%A7%E6%96%87%E4%BB%B6%E6%97%B6%EF%BC%8C%E5%8D%B4%E5%87%BA%E7%8E%B0%E4%BA%86%E7%A5%9E%E7%A7%98%E7%9A%84%E4%BD%8D%E7%BF%BB%E8%BD%AC%EF%BC%8C%E6%8D%9F%E5%9D%8F%E4%BA%86%E8%B6%85%20RAM%20%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E3%80%82%E6%88%91%E6%98%AF%E9%80%9A%E8%BF%87%E7%9B%B4%E6%8E%A5%E8%AE%BF%E9%97%AE%E5%B0%86%E6%95%B0%E6%8D%AE%E5%A4%8D%E5%88%B6%E5%88%B0%E8%B6%85%20RAM%20%E4%B8%AD%E7%9A%84%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%AF%8F%E6%AC%A1%E5%BA%94%E5%86%99%E5%85%A5%201%20%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%9D%97%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22TomC818_0-1764322578207.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1764322578207.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1764322578207.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1764322578207.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1764322578207.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1764322578207.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1764322578207.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F367755iF7291C63AB521F0F%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22TomC818_0-1764322578207.png%22%20alt%3D%22TomC818_0-1764322578207.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22TomC818_1-1764322622291.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1764322622291.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1764322622291.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1764322622291.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1764322622291.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1764322622291.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1764322622291.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F367757iB2EA9F5A061340EB%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22TomC818_1-1764322622291.png%22%20alt%3D%22TomC818_1-1764322622291.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%91%E5%9C%A8%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%81%9A%E9%94%99%E4%BA%86%E4%BB%80%E4%B9%88%E5%90%97%EF%BC%9F%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CDIV%3E%3CPRE%20translate%3D%22no%22%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_device_registers.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_debug_console.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%3CSTDIO.H%3E%3C%2FSTDIO.H%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_cache.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_common.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_gpio.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_edma.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22peripherals.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%3CSTDBOOL.H%3E%3C%2FSTDBOOL.H%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%3CSTDINT.H%3E%3C%2FSTDINT.H%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_flexspi.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_flexspi_edma.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_cache_lpcac.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_gpio.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22hyperram_init.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22MCXN947_cm33_core0_COMMON.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_reset.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3Ewrite_test_block%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3ECONFIG_MAX_BLOCK_SIZE%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E__attribute__%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3Ealigned%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E32%3C%2FSPAN%3E%3CSPAN%3E)))%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3Eread_test_block%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3ECONFIG_MAX_BLOCK_SIZE%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E__attribute__%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3Ealigned%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E32%3C%2FSPAN%3E%3CSPAN%3E)))%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3Ehyperram_spoof%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3ECONFIG_MAX_BLOCK_SIZE%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E__attribute__%3C%2FSPAN%3E%3CSPAN%3E((%3C%2FSPAN%3E%3CSPAN%3Ealigned%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E32%3C%2FSPAN%3E%3CSPAN%3E)))%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Eenum%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EREAD_DATA%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EWRITE_DATA%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EREAD_REG%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EWRITE_REG%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Eedma_transfer_config_t%3C%2FSPAN%3E%20%3CSPAN%3EtransferConfig%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Eedma_config_t%3C%2FSPAN%3E%20%3CSPAN%3EuserConfig%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Evolatile%3C%2FSPAN%3E%20%3CSPAN%3Ebool%3C%2FSPAN%3E%20%3CSPAN%3Eg_Transfer_Done%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESysTick_Handler%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Eflexspi_device_config_t%3C%2FSPAN%3E%20%3CSPAN%3EhyperRAM_config%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EflexspiRootClk%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E40000000%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EisSck2Enabled%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EflashSize%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3E0x10000U%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3ECSIntervalUnit%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_CsIntervalUnit1SckCycle%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3ECSInterval%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3ECSHoldTime%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E3%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3ECSSetupTime%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E3%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3Ecolumnspace%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E3%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EdataValidTime%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E3%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EenableWordAddress%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EAWRSeqIndex%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EAWRSeqNumber%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EARDSeqIndex%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EARDSeqNumber%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EAHBWriteWaitUnit%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_AhbWriteWaitUnit2AhbCycle%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EAHBWriteWaitInterval%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20.%3C%2FSPAN%3E%3CSPAN%3EenableWriteMask%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3EhyperRAM_LUT%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E64%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20Read%20Data%20*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0xA0%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_RADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x18%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_CADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x10%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_DUMMY_RWDS_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x07%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_READ_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x04%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_STOP%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_1PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x00%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20Write%20Data%20*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E4%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x20%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_RADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x18%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E5%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_CADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x10%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_DUMMY_RWDS_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x07%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E6%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_WRITE_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x04%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_STOP%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_1PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x00%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20Read%20Register%20*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E8%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0xE0%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_RADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x18%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E9%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_CADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x10%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_DUMMY_RWDS_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x07%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E10%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_READ_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x04%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_STOP%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_1PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x00%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%2F*%20Write%20Register%20*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E12%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x60%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_RADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x18%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E13%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_CADDR_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x10%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_WRITE_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x07%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%5B%3C%2FSPAN%3E%3CSPAN%3E14%3C%2FSPAN%3E%3CSPAN%3E%5D%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_LUT_SEQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_WRITE_DDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x04%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_Command_STOP%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_8PAD%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0x00%3C%2FSPAN%3E%3CSPAN%3E)%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EEDMA_1_CH0_IRQHandler%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20((%3C%2FSPAN%3E%3CSPAN%3EEDMA_GetChannelStatusFlags%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_RX_DMA_BASEADDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_RX_DMA_CHANNEL%3C%2FSPAN%3E%3CSPAN%3E)%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%3EkEDMA_InterruptFlag%3C%2FSPAN%3E%3CSPAN%3E)%20%3C%2FSPAN%3E%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E0U%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EEDMA_ClearChannelStatusFlags%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_RX_DMA_BASEADDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_RX_DMA_CHANNEL%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkEDMA_InterruptFlag%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eg_Transfer_Done%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3EEDMA_1_CH1_IRQHandler%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20((%3C%2FSPAN%3E%3CSPAN%3EEDMA_GetChannelStatusFlags%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_TX_DMA_BASEADDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_TX_DMA_CHANNEL%3C%2FSPAN%3E%3CSPAN%3E)%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%3EkEDMA_InterruptFlag%3C%2FSPAN%3E%3CSPAN%3E)%20%3C%2FSPAN%3E%3CSPAN%3E!%3D%3C%2FSPAN%3E%20%3CSPAN%3E0U%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EEDMA_ClearChannelStatusFlags%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_TX_DMA_BASEADDR%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI0_TX_DMA_CHANNEL%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkEDMA_InterruptFlag%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eg_Transfer_Done%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Estatic%3C%2FSPAN%3E%20%3CSPAN%3Estatus_t%3C%2FSPAN%3E%20%3CSPAN%3Eflexspi_hyper_ram_reset%3C%2FSPAN%3E%3CSPAN%3E(FLEXSPI_Type%20%3C%2FSPAN%3E%3CSPAN%3E*%3C%2FSPAN%3E%3CSPAN%3Ebase%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eflexspi_transfer_t%3C%2FSPAN%3E%20%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Estatus_t%3C%2FSPAN%3E%20%3CSPAN%3Estatus%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Write%20data%20*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EdeviceAddress%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0x0U%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Eport%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_PortA1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EcmdType%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_Command%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ESeqNumber%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EseqIndex%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E4%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Estatus%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_TransferBlocking%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Ebase%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Estatus%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3D%3C%2FSPAN%3E%3CSPAN%3E%20kStatus_Success)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Efor%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%20i%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E150000%3C%2FSPAN%3E%3CSPAN%3E%3B%20i%20%3C%2FSPAN%3E%3CSPAN%3E%26gt%3B%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%20i%3C%2FSPAN%3E%3CSPAN%3E--%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E__NOP%3C%2FSPAN%3E%3CSPAN%3E()%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ereturn%3C%2FSPAN%3E%20%3CSPAN%3Estatus%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Estatus_t%3C%2FSPAN%3E%20%3CSPAN%3EhyperRAM_mem_init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Ebool%3C%2FSPAN%3E%20%3CSPAN%3Eenable_cache%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eedma_config_t%3C%2FSPAN%3E%20%3CSPAN%3EuserConfig%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EEDMA_GetDefaultConfig%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3EuserConfig%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EEDMA_Init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EDMA1%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3EuserConfig%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EEnableIRQ%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EEDMA_1_CH0_IRQn%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eflexspi_config_t%3C%2FSPAN%3E%20%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ecache64_config_t%3C%2FSPAN%3E%20%3CSPAN%3EcacheCfg%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Estatus_t%3C%2FSPAN%3E%20%3CSPAN%3Estatus%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20kStatus_Success%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ERESET_PeripheralReset%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_RST_SHIFT_RSTn%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI_GetDefaultConfig%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EenableAHBPrefetch%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EenableAHBBufferable%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EenableReadAddressOpt%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EenableAHBCachable%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ErxSampleClock%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_ReadSampleClkLoopbackFromDqsPad%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Efor%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3Ei%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%20%3C%2FSPAN%3E%3CSPAN%3Ei%3C%2FSPAN%3E%20%3CSPAN%3E%26lt%3B%3C%2FSPAN%3E%20%3CSPAN%3EFSL_FEATURE_FLEXSPI_AHB_BUFFER_COUNT%3C%2FSPAN%3E%20%3CSPAN%3E-%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%20%3C%2FSPAN%3E%3CSPAN%3Ei%3C%2FSPAN%3E%3CSPAN%3E%2B%2B%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Ebuffer%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3Ei%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EbufferSize%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Ebuffer%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EmasterIndex%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E4%3C%2FSPAN%3E%3CSPAN%3E%3B%20%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Ebuffer%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EbufferSize%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E512%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Ebuffer%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EenablePrefetch%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Ebuffer%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3Epriority%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EahbConfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Ebuffer%3C%2FSPAN%3E%3CSPAN%3E%5B%3C%2FSPAN%3E%3CSPAN%3EFSL_FEATURE_FLEXSPI_AHB_BUFFER_COUNT%3C%2FSPAN%3E%20%3CSPAN%3E-%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%5D.%3C%2FSPAN%3E%3CSPAN%3EbufferSize%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E512%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23if%3C%2FSPAN%3E%20%3CSPAN%3E!%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Edefined%3C%2FSPAN%3E%3CSPAN%3E(FSL_FEATURE_FLEXSPI_HAS_NO_MCR0_COMBINATIONEN)%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%26amp%3B%3C%2FSPAN%3E%3CSPAN%3E%20FSL_FEATURE_FLEXSPI_HAS_NO_MCR0_COMBINATIONEN)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EenableCombination%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23endif%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI_Init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EHYPERRAM_FLEXSPI%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3Econfig%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI_SetFlashConfig%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EHYPERRAM_FLEXSPI%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3EhyperRAM_config%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EkFLEXSPI_PortA1%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI_UpdateLUT%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EHYPERRAM_FLEXSPI%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM_LUT%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EARRAY_SIZE%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EhyperRAM_LUT%3C%2FSPAN%3E%3CSPAN%3E))%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI_SoftwareReset%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EHYPERRAM_FLEXSPI%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Estatus%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3Eflexspi_hyper_ram_reset%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EHYPERRAM_FLEXSPI%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Estatus%3C%2FSPAN%3E%20%3CSPAN%3E!%3D%3C%2FSPAN%3E%3CSPAN%3E%20kStatus_Success)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%22failed%20to%20reset%20hyperRAM....%3C%2FSPAN%3E%3CSPAN%3E%5Cr%5Cn%3C%2FSPAN%3E%3CSPAN%3E%22%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ereturn%3C%2FSPAN%3E%20%3CSPAN%3Estatus%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EFLEXSPI_SoftwareReset%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3EHYPERRAM_FLEXSPI%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3Eenable_cache%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ECACHE64_GetDefaultConfig%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3EcacheCfg%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ECACHE64_Init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ECACHE64_POLSEL0%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3EcacheCfg%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ECACHE64_EnableWriteBuffer%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ECACHE64_CTRL0%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3Efalse%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ECACHE64_EnableCache%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3ECACHE64_CTRL0%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ereturn%3C%2FSPAN%3E%20%3CSPAN%3Estatus%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3Eget_vendor_id%3C%2FSPAN%3E%3CSPAN%3E(FLEXSPI_Type%20%3C%2FSPAN%3E%3CSPAN%3E*%3C%2FSPAN%3E%3CSPAN%3Ebase%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3Eint%3C%2FSPAN%3E%20%3CSPAN%3EregAddr%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%20vendor_id%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Estatus_t%3C%2FSPAN%3E%20%3CSPAN%3Estatus%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%20buffer%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eflexspi_transfer_t%3C%2FSPAN%3E%20%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EdeviceAddress%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EregAddr%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%22accessing%20address%3A0x%3C%2FSPAN%3E%3CSPAN%3E%25x%3C%2FSPAN%3E%3CSPAN%3E%5Cr%5Cn%3C%2FSPAN%3E%3CSPAN%3E%22%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3EregAddr%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Eport%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_PortA1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EcmdType%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_Read%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3ESeqNumber%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EseqIndex%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E2%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3Edata%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3Ebuffer%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E.%3C%2FSPAN%3E%3CSPAN%3EdataSize%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3E4%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%22Reading%20id%3C%2FSPAN%3E%3CSPAN%3E%5Cr%5Cn%3C%2FSPAN%3E%3CSPAN%3E%22%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Estatus%3C%2FSPAN%3E%20%3CSPAN%3E%3D%3C%2FSPAN%3E%20%3CSPAN%3EFLEXSPI_TransferBlocking%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Ebase%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%3CSPAN%3EhyperRAM%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20vendor_id%20%3C%2FSPAN%3E%3CSPAN%3E%3D%3C%2FSPAN%3E%3CSPAN%3E%20buffer%20%3C%2FSPAN%3E%3CSPAN%3E%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%3E0xffff%3C%2FSPAN%3E%3CSPAN%3E%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%22vendor%20id%3A%200x%3C%2FSPAN%3E%3CSPAN%3E%254x%3C%2FSPAN%3E%3CSPAN%3E%5Cr%5Cn%3C%2FSPAN%3E%3CSPAN%3E%22%3C%2FSPAN%3E%3CSPAN%3E%2C%20vendor_id)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3E%22status%3A%3C%2FSPAN%3E%3CSPAN%3E%25d%3C%2FSPAN%3E%3CSPAN%3E%5Cr%5Cn%3C%2FSPAN%3E%3CSPAN%3E%22%3C%2FSPAN%3E%3CSPAN%3E%2C%20%3C%2FSPAN%3E%3CSPAN%3Estatus%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Ereturn%3C%2FSPAN%3E%3CSPAN%3E%20vendor_id%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FPRE%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%3CSPAN%3E%3CBR%20%2F%3E%E8%BF%99%E6%98%AF%E6%88%91%E6%B7%BB%E5%8A%A0%E7%9A%84%E6%A0%87%E9%A2%98%EF%BC%9A%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CDIV%3E%3CPRE%20translate%3D%22no%22%3E%3CSPAN%3E%23ifndef%3C%2FSPAN%3E%3CSPAN%3E%20HYPERRAM_INIT_H_%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_INIT_H_%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%3CSTDBOOL.H%3E%3C%2FSTDBOOL.H%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%3CSTDINT.H%3E%3C%2FSTDINT.H%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_common.h%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23ifdef%3C%2FSPAN%3E%3CSPAN%3E%20__cplusplus%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3Eextern%3C%2FSPAN%3E%20%3CSPAN%3E%22C%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23endif%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHyperRAM_write_buffer%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3E1024%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHyperRAM_read_buffer%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3E1024%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_FLEXSPI%3C%2FSPAN%3E%3CSPAN%3E%20FLEXSPI0%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_FLEXSPI_BASE_ADDRESS%3C%2FSPAN%3E%3CSPAN%3E%20FlexSPI0_AMBA_BASE%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_FLEXSPI_PORT%3C%2FSPAN%3E%20%3CSPAN%3EkFLEXSPI_PortA1%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_FLEXSPI_AMBA_BASE%3C%2FSPAN%3E%3CSPAN%3E%20FlexSPI_AMBA_BASE%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EMAX_COLUMN_SIZE%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3E30%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_CMD_LUT_SEQ_IDX_READDATA%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_CMD_LUT_SEQ_IDX_WRITEDATA%3C%2FSPAN%3E%20%3CSPAN%3E4%3C%2FSPAN%3E%3CSPAN%3E%20%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_CMD_LUT_SEQ_IDX_READREG%3C%2FSPAN%3E%20%3CSPAN%3E8%3C%2FSPAN%3E%3CSPAN%3E%20%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3EHYPERRAM_CMD_LUT_SEQ_IDX_WRITEREG%3C%2FSPAN%3E%20%3CSPAN%3E12%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23define%3C%2FSPAN%3E%20%3CSPAN%3ECONFIG_MAX_BLOCK_SIZE%3C%2FSPAN%3E%3CSPAN%3E%20(%3C%2FSPAN%3E%3CSPAN%3E16384%3C%2FSPAN%3E%3CSPAN%3E)%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Estatus_t%3C%2FSPAN%3E%20%3CSPAN%3EhyperRAM_mem_init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Ebool%3C%2FSPAN%3E%20%3CSPAN%3Eenable_cache%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23ifdef%3C%2FSPAN%3E%3CSPAN%3E%20__cplusplus%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23endif%3C%2FSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSPAN%3E%23endif%3C%2FSPAN%3E%3C%2FPRE%3E%3C%2FDIV%3E%3CP%3E%3CSPAN%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2251109%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EMCX%20N%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2251964%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20config%20HyperRAM%20after%20initialization%20in%20MCXN947%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2251964%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246062%22%20target%3D%22_blank%22%3E%40TomC818%3C%2FA%3E%3C%2FP%3E%0A%3CPRE%20translate%3D%22no%22%3E%20%3CSPAN%3Estatus_t%3C%2FSPAN%3E%20%3CSPAN%3EhyperRAM_mem_init%3C%2FSPAN%3E%3CSPAN%3E(%3C%2FSPAN%3E%3CSPAN%3Ebool%3C%2FSPAN%3E%20%3CSPAN%3Eenable_cache%3C%2FSPAN%3E%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FPRE%3E%0A%3CP%3EHyperRAM%20%E6%B2%A1%E6%9C%89%E7%BC%93%E5%AD%98%E4%B8%80%E8%87%B4%E6%80%A7%E3%80%82%E5%A6%82%E6%9E%9C%E6%82%A8%E7%9A%84%E5%8C%BA%E5%9F%9F%E8%A2%AB%E6%98%A0%E5%B0%84%E4%B8%BA%E5%8F%AF%E7%BC%93%E5%AD%98%EF%BC%8C%E5%88%99%20CPU%20%E5%86%99%E5%85%A5%E5%8F%AF%E8%83%BD%E4%BC%9A%E4%BF%9D%E7%95%99%E5%9C%A8%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98%E4%B8%AD%EF%BC%8CHyperRAM%20%E6%9C%89%E9%99%88%E6%97%A7%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8CCPU%20%E8%AF%BB%E5%8F%96%E5%8F%AF%E8%83%BD%E4%BC%9A%E8%BF%94%E5%9B%9E%E8%BF%87%E6%97%B6%E7%9A%84%E7%BC%93%E5%AD%98%E6%95%B0%E6%8D%AE%E3%80%82%3C%2FP%3E%0A%3CP%3E%E5%9B%A0%E6%AD%A4%EF%BC%8C%E6%88%91%E8%AE%A4%E4%B8%BA%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%B0%9D%E8%AF%95%E7%A6%81%E7%94%A8%E7%BC%93%E5%AD%98%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E5%93%88%E5%88%A9%20%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2252016%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20config%20HyperRAM%20after%20initialization%20in%20MCXN947%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2252016%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%E6%88%91%E5%B7%B2%E7%BB%8F%E8%AF%95%E8%BF%87%E4%B8%8D%E5%90%AF%E7%94%A8%20Flexspi%20%E7%9A%84%20Cache64%EF%BC%8C%E4%BD%86%E8%BF%98%E6%98%AF%E5%BE%97%E5%88%B0%E4%BA%86%E9%94%99%E8%AF%AF%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8C%E8%80%8C%E4%B8%94%E8%BF%98%E5%9C%A8%E7%BF%BB%E8%BD%AC%E3%80%82%E6%88%91%E6%83%B3%E7%9F%A5%E9%81%93%E8%BF%99%E6%98%AF%E5%90%A6%E4%B8%8E%E8%B6%85%E5%86%85%E5%AD%98%E7%9A%84%E9%94%99%E8%AF%AF%E9%85%8D%E7%BD%AE%E6%9C%89%E5%85%B3%EF%BC%8C%E5%9B%A0%E4%B8%BA%E6%88%91%E4%BD%BF%E7%94%A8%E7%9B%B4%E6%8E%A5%E6%8C%87%E9%92%88%E5%B7%B2%E7%BB%8F%E6%98%AF%E5%94%AF%E4%B8%80%E7%9A%84%E7%9B%AE%E6%A0%87%E5%9C%B0%E5%9D%80%E5%BA%94%E8%AF%A5%E8%8E%B7%E5%BE%97%E6%95%B0%E6%8D%AE%E4%BA%86%EF%BC%8C%E4%BD%86%E6%98%AF%E6%AD%A3%E5%A6%82%E4%BD%A0%E5%9C%A8%E6%89%80%E9%99%84%E5%9B%BE%E5%83%8F%E7%9A%84%E5%86%85%E5%AD%98%E7%9B%91%E6%B5%8B%E4%B8%AD%E7%9C%8B%E5%88%B0%E7%9A%84%E9%82%A3%E6%A0%B7%EF%BC%8C%E4%B8%8D%E7%9F%A5%E4%BD%95%E6%95%85%200x8000_0030%20%E4%B9%9F%E5%9C%A8%E6%9B%B4%E6%96%B0%EF%BC%8C%E8%BF%99%E6%98%AF%E4%B8%8D%E5%BA%94%E8%AF%A5%E5%8F%91%E7%94%9F%E7%9A%84%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2256608%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20config%20HyperRAM%20after%20initialization%20in%20MCXN947%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2256608%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246062%22%20target%3D%22_blank%22%3E%40TomC818%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E6%88%91%E8%AE%A4%E4%B8%BA%E8%BF%99%E4%B8%8D%E6%98%AF%20HyperRAM%20%E7%9A%84%E9%85%8D%E7%BD%AE%E9%97%AE%E9%A2%98%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%88%91%E6%83%B3%E4%BD%A0%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9C%80%E5%B0%91%E7%9A%84%20SD%20%E7%A9%BA%E9%97%B2%E4%BB%A3%E7%A0%81%EF%BC%88%E4%B8%8D%E5%8C%85%E6%8B%AC%20FATfs%2FSD%20DMA%EF%BC%89%E9%87%8D%E7%8E%B0%E5%AE%83%EF%BC%8C%E5%B9%B6%E5%85%88%E5%85%B3%E9%97%AD%E6%89%80%E6%9C%89%E4%B8%8E%20SD%2FTfat%20%E7%9B%B8%E5%85%B3%E7%9A%84%E6%96%87%E4%BB%B6%E3%80%82%E5%A6%82%E6%9E%9C%E8%BF%99%E4%B8%8D%E6%98%AF%E9%97%AE%E9%A2%98%EF%BC%8C%E9%82%A3%E4%B9%88%E9%97%AE%E9%A2%98%E6%9B%B4%E5%8F%AF%E8%83%BD%E5%87%BA%E5%9C%A8%20SD%20%E5%8D%A1%E7%9A%84%E8%AF%BB%E5%8F%96%E8%B7%AF%E5%BE%84%E4%B8%8A%EF%BC%88DMA%E3%80%81FatFs%E3%80%81%E7%BC%93%E5%86%B2%E5%8C%BA%E7%AE%A1%E7%90%86%EF%BC%89%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E5%93%88%E5%88%A9%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2257624%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20config%20HyperRAM%20after%20initialization%20in%20MCXN947%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2257624%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%2C%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%91%E5%85%88%E7%94%A8%20f_read%20%E5%B0%86%2032KB%20%E7%9A%84%E6%95%B0%E6%8D%AE%E5%9D%97%E5%8A%A0%E8%BD%BD%E5%88%B0%E7%89%87%E5%86%85%20SRAM%EF%BC%8C%E7%84%B6%E5%90%8E%E5%B0%86%20SRAM%20%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%E5%A4%8D%E5%88%B6%E5%88%B0%E5%A4%96%E9%83%A8%20HyperRAM%EF%BC%9B%E6%88%91%E6%A3%80%E6%9F%A5%E4%BA%86%20SRAM%20%E4%B8%AD%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%8C%E4%BC%BC%E4%B9%8E%E6%98%AF%E6%AD%A3%E7%A1%AE%E7%9A%84%E3%80%82%E8%BF%99%E6%98%AFSRAM%E7%B3%BB%E5%88%97%E7%9A%84%E5%86%85%E5%AD%98%E7%9B%91%E6%B5%8B%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22TomC818_0-1765254953956.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1765254953956.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_0-1765254953956.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369051i787CB18318FE6CD0%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22TomC818_0-1765254953956.png%22%20alt%3D%22TomC818_0-1765254953956.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%E4%BD%86%E5%BD%93%E4%BB%8E%20SRAM%20%E5%A4%8D%E5%88%B6%E5%88%B0%20HyperRAM%20%E6%97%B6%EF%BC%8C%E6%88%91%E5%8F%91%E7%8E%B0%E5%8F%AA%E6%9C%89%E5%9C%A8%E7%89%B9%E5%AE%9A%E5%81%8F%E7%A7%BB%E5%A4%84%E6%95%B0%E6%8D%AE%E6%8D%9F%E5%9D%8F%EF%BC%8C%E5%A6%82%E5%9B%BE%E6%89%80%E7%A4%BA%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22TomC818_1-1765255077588.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1765255077588.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22TomC818_1-1765255077588.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F369053i71A2D7DAB2E5D1DC%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22TomC818_1-1765255077588.png%22%20alt%3D%22TomC818_1-1765255077588.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%E6%88%91%E9%87%8D%E6%96%B0%E8%BF%90%E8%A1%8C%E4%BA%86%E5%87%A0%E6%AC%A1%E7%A8%8B%E5%BA%8F%EF%BC%8C%E6%95%B0%E6%8D%AE%E6%8D%9F%E5%9D%8F%E5%8F%AA%E5%8F%91%E7%94%9F%E5%9C%A8%E7%89%B9%E5%AE%9A%E5%9C%B0%E5%9D%80%EF%BC%8C%E8%BF%99%E9%87%8C%E6%98%BE%E7%A4%BA%E7%9A%84%E6%98%AF%200x30%20%E5%92%8C%200x7c%EF%BC%8C%E5%9B%A0%E6%AD%A4%E4%B8%8D%E5%A4%AA%E5%8F%AF%E8%83%BD%E6%98%AF%E4%BF%A1%E5%8F%B7%E5%AE%8C%E6%95%B4%E6%80%A7%E9%97%AE%E9%A2%98%E3%80%82%E6%88%91%E8%AE%A4%E4%B8%BA%E8%BF%99%E4%B8%8E%E4%B9%8B%E5%89%8D%E6%8F%90%E5%88%B0%E7%9A%84%E4%BD%8D%E7%BF%BB%E8%BD%AC%E9%97%AE%E9%A2%98%E7%9B%B8%E5%90%8C%E3%80%82%E5%A6%82%E5%89%8D%E6%89%80%E8%BF%B0%EF%BC%8C%E6%88%91%E5%B7%B2%E7%BB%8F%E4%B8%8D%E4%BD%BF%E7%94%A8%20Flexspi%20%E7%9A%84%E7%BC%93%E5%AD%98%E4%BA%86%E3%80%82%20%3CBR%20%2F%3E%3CBR%20%2F%3E%E9%A1%BA%E4%BE%BF%E6%8F%90%E4%B8%80%E4%B8%8B%EF%BC%8C%E6%88%91%E7%94%A8%E4%B8%80%E4%BA%9B%E6%9B%B4%E7%AE%80%E5%8D%95%E7%9A%84%20R%2FW%20%E6%B5%8B%E8%AF%95%E8%BF%9B%E8%A1%8C%E4%BA%86%E5%A2%9E%E9%87%8F%E6%B5%8B%E8%AF%95%EF%BC%8C%EF%BC%88%E5%8D%B3%E4%BD%BF%E7%94%A8%20i%2B%2B%EF%BC%89%E5%BE%AA%E7%8E%AF%EF%BC%8C%E6%88%90%E5%8A%9F%E4%BA%86%EF%BC%8C%E6%88%91%E7%94%A8%E5%86%85%E5%AD%98%E7%9B%91%E6%B5%8B%E6%89%8B%E5%8A%A8%E6%A3%80%E6%9F%A5%E7%9A%84%E6%95%B0%E6%8D%AE%E6%98%AF%E6%AD%A3%E7%A1%AE%E7%9A%84%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%88%91%E5%B7%B2%E7%BB%8F%E5%B0%9D%E8%AF%95%E8%BF%87%E7%9B%B4%E6%8E%A5%E5%AD%98%E5%8F%96%E5%92%8C%20DMA%20%E6%96%B9%E6%B3%95%EF%BC%8C%E4%BD%86%E7%BB%93%E6%9E%9C%E9%83%BD%E6%98%AF%E6%95%B0%E6%8D%AE%E5%9C%A8%E4%B8%8A%E8%BF%B0%E5%81%8F%E7%A7%BB%E4%BD%8D%E7%BD%AE%E6%8D%9F%E5%9D%8F%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2260576%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20config%20HyperRAM%20after%20initialization%20in%20MCXN947%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2260576%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F246062%22%20target%3D%22_blank%22%3E%40TomC818%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E6%88%91%E8%AE%A4%E4%B8%BA%E4%BD%A0%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%3CSTRONG%3E%E9%80%90%E5%AD%97%E8%8A%82%3C%2FSTRONG%3E%E5%86%99%E5%85%A5%E8%BF%9B%E8%A1%8C%E6%AF%94%E8%BE%83%E6%B5%8B%E8%AF%95%E3%80%82%3C%2FP%3E%0A%3CP%3E%E5%A6%82%E6%9E%9C%E5%9C%A8%E9%80%90%E5%AD%97%E8%8A%82%E5%86%99%E5%85%A5%E6%97%B6%E6%B2%A1%E6%9C%89%E9%94%99%E8%AF%AF%EF%BC%88%E5%8D%B3%E4%B9%8B%E5%89%8D%E5%9C%A8%200x30%2F0x7c%20%E5%A4%84%E4%B8%8D%E5%86%8D%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%EF%BC%89%EF%BC%8C%E4%BD%86%E4%B9%8B%E5%89%8D%E5%9C%A8%E4%BD%BF%E7%94%A8%20memcpy%2F32%20%E4%BD%8D%E5%86%99%E5%85%A5%E6%97%B6%E9%81%87%E5%88%B0%E9%94%99%E8%AF%AF%EF%BC%8C%E8%BF%99%E8%A1%A8%E6%98%8E%E6%98%AF%E7%94%B1%E4%BA%8E%E7%AA%81%E7%84%B6%E7%9A%84%E5%86%99%E5%85%A5%E5%AE%BD%E5%BA%A6%2F%E9%94%99%E4%BD%8D%E9%80%A0%E6%88%90%E7%9A%84%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E5%8F%AF%E4%BB%A5%E5%BC%BA%E5%88%B6%E5%AF%B9%E9%BD%90%E3%80%81%E4%BD%BF%E7%94%A8%E5%AD%97%E8%8A%82%E5%86%99%E5%85%A5%E6%88%96%E8%B0%83%E6%95%B4%E5%86%99%E5%85%A5%E5%AE%BD%E5%BA%A6%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E5%93%88%E5%88%A9%3C%2FP%3E%3C%2FLINGO-BODY%3E