搜索
bottom↓
回复: 0

1052,代码运行在sdram,AHB方式读取qspi器件,系统会异常

[复制链接]

出0入0汤圆

发表于 2018-9-27 13:06:17 | 显示全部楼层 |阅读模式
相同的代码,AHB方式读取QSPI Flash数据,启动方式不一样,分别是从sd卡启动和QSPI启动,但最终都是加载到sdram中运行的。SD卡启动时,任何操作程序正常;
QSPI启动,读取qspi的数据会产生死机,IP操作qspi正常。

启动时xip flash配置:
const flexspi_nor_config_t spiflash_config = {
    .memConfig =
        {
            .tag = FLEXSPI_CFG_BLK_TAG,/*标志:FCFB*/
            .version = FLEXSPI_CFG_BLK_VERSION,/*版本:V1.4.0*/
            .readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackInternally,/*内部环回*/
            .csHoldTime = 3u, /*保持时间*/
            .csSetupTime = 3u,/*建立时间*/
            .columnAddressWidth = 0u,/*列地址宽度*/
            .deviceModeCfgEnable = 1u,/*设备模式配置使能*/
            .deviceModeType = 1u,/*Quad 使能命令*/
            .deviceModeSeq.seqNum = 1u,/*LUT序列号*/
            .deviceModeSeq.seqId = 4u, /*LUT序列索引*/   
            .deviceModeArg = 0x000200,/*设置 QE=1(S9)*/
            .deviceType = kFlexSpiDeviceType_SerialNOR,/*设备类型为nor flash*/
            .sflashPadType = kSerialFlash_4Pads,/*设备数据总线为4*/
            .serialClkFreq = kFlexSpiSerialClk_100MHz,/*flash 时钟*/
            .sflashA1Size = 16u * 1024u * 1024u,      /*flash 大小32MBytes*/
            //.dataValidTime = {16u, 16u},
            .lookupTable =
                {
                    /*快速读命令(四线)*/
                    [0]     = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x6B, RADDR_SDR, FLEXSPI_4PAD, 0x18),
                    [1]     = FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
                    

                    /*读状态命令*/
                    [1*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05, READ_SDR, FLEXSPI_1PAD, 0x04),
                    /*写使能命令*/
                    [3*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0),      
                    /*擦除扇区命令*/
                    [5*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20, RADDR_SDR, FLEXSPI_1PAD, 0x04),
                    /*页编程命令(四线)*/
                    [9*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x32, RADDR_SDR, FLEXSPI_1PAD, 0x18),  
                    [9*4+1] = FLEXSPI_LUT_SEQ(WRITE_SDR,FLEXSPI_4PAD , 0x04, STOP, FLEXSPI_1PAD, 0),                  
                    /*整片擦除*/
                    [11*4]  = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xc7, STOP, FLEXSPI_1PAD, 0),                  
                },
        },
    .pageSize = 256u,/*页大小为256字节*/
    .sectorSize = 4u * 1024u,/*扇区大小为4k字节*/
};

程序中重新对flexspi 进行初始化:
        FLEXSPI_GetDefaultConfig(&config);       
        config.ahbConfig.enableAHBPrefetch = true;// 允许AHB预读取的功能        
        FLEXSPI_Init(base, &config);// 写入配置

        // 根据串行闪存功能配置闪存设置
        FLEXSPI_SetFlashConfig(base, &deviceconfig, kFLEXSPI_PortA1);       
        udelay(10);

        // 更新查找表
        FLEXSPI_UpdateLUT(base, 0, &customLUT_24bit[0], 64);


哪位大侠知道原因么?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 09:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表