硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6176|回复: 9
收起左侧

[ThreadX全家桶] 请教下,guix 资源文件放在外部 qspi 的下载算法里面运行貌似有时会死机或者没有反应 ?

[复制链接]

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
发表于 2021-1-12 09:15:50 | 显示全部楼层 |阅读模式
请教下,guix 资源文件放在外部 qspi 的下载算法里面运行貌似有时会死机或者没有反应 ?

qspi 使用的 MT25QL512AB
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-12 12:54:06 | 显示全部楼层
你用的内存映射模式吗
回复

使用道具 举报

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
 楼主| 发表于 2021-1-12 13:45:19 | 显示全部楼层
本帖最后由 hpdell 于 2021-1-12 13:55 编辑
eric2013 发表于 2021-1-12 12:54
你用的内存映射模式吗

是的 ,有时工作几天都没有问题,有时工作一会会就会出现,现在是一头蒙逼啊
这个芯片是支持 xip 功能的
回复

使用道具 举报

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
 楼主| 发表于 2021-1-12 13:50:41 | 显示全部楼层
eric2013 发表于 2021-1-12 12:54
你用的内存映射模式吗

MT25QL512ABB(xip).pdf (1.76 MB, 下载次数: 3)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-12 15:26:01 | 显示全部楼层

关闭下QSPI的FIFO,增加内存映射的配置的Dummy空指令时间。
回复

使用道具 举报

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
 楼主| 发表于 2021-1-12 20:58:45 | 显示全部楼层
eric2013 发表于 2021-1-12 15:26
关闭下QSPI的FIFO,增加内存映射的配置的Dummy空指令时间。

内存映射在正常读取后,应该不会再进行映射操作了吧 ?
内存映射后,貌似也没有配置读取数据函数啊 ???
读取指令是 cm 内核根据需要发出的吧 ??
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-13 08:12:54 | 显示全部楼层
hpdell 发表于 2021-1-12 20:58
内存映射在正常读取后,应该不会再进行映射操作了吧 ?
内存映射后,貌似也没有配置读取数据函数啊 ? ...

我的意思是你配置内存映射的那个函数,那个里面有个参数成员是Dummy,加大此值
回复

使用道具 举报

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
 楼主| 发表于 2021-1-13 12:29:34 | 显示全部楼层
eric2013 发表于 2021-1-13 08:12
我的意思是你配置内存映射的那个函数,那个里面有个参数成员是Dummy,加大此值


#define  MT25QL512_DUMMY_CYCLES_READ_QUAD_DTR   6

/**
  * @brief  Configure the QSPI in memory-mapped mode
  * @retval QSPI memory status
  */
QSPI_StaticTypeDef QSPI_EnableMemoryMappedMode(void)
{
  /* Configure the command for the read instruction */
  s_command.InstructionMode   = QSPI_INSTRUCTION_4_LINES;
  s_command.Instruction       = QUAD_INOUT_FAST_READ_DTR_CMD; /* DTR QUAD INPUT/OUTPUT FAST READ and 4-BYTE DTR FAST READ commands */
  s_command.AddressMode       = QSPI_ADDRESS_4_LINES;
  s_command.AddressSize       = QSPI_ADDRESS_32_BITS;
  s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
  s_command.DataMode          = QSPI_DATA_4_LINES;
  s_command.DummyCycles       = MT25QL512_DUMMY_CYCLES_READ_QUAD_DTR - 1;  // 这个地方貌似多一个或者少一个都不行啊,只能是 6-1 才正常进入到内存映射模式工作

  s_command.DdrMode           = QSPI_DDR_MODE_ENABLE;
  s_command.DdrHoldHalfCycle  = QSPI_DDR_HHC_HALF_CLK_DELAY;
  s_command.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;

  /* Configure the memory mapped mode */
  s_mem_mapped_cfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
  s_mem_mapped_cfg.TimeOutPeriod     = 0;

  if (HAL_QSPI_MemoryMapped(&QSPI_Handle, &s_command, &s_mem_mapped_cfg) != HAL_OK)
  {
    return QSPI_ERROR;
  }

  return QSPI_OK;
}

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-1-13 13:28:33 | 显示全部楼层
hpdell 发表于 2021-1-13 12:29
#define  MT25QL512_DUMMY_CYCLES_READ_QUAD_DTR   6

/**

加大QSPI Flash时钟分频是否正常。
回复

使用道具 举报

681

主题

3487

回帖

5555

积分

论坛元老

积分
5555
 楼主| 发表于 2021-1-13 13:45:30 | 显示全部楼层
eric2013 发表于 2021-1-13 13:28
加大QSPI Flash时钟分频是否正常。

qspi 时钟分频,我分屏 67MHz 与 100MHz 都试过,结果都是差不多的
  /* System level initialization */
  BSP_QSPI_MspInit(&QSPI_Handle, NULL);

  /* QSPI initialization */
  /* ClockPrescaler set to 1, so QSPI clock = 200MHz / (1+2) = 66MHz //内存映射模式配置 */
  QSPI_Handle.Init.ClockPrescaler     = 2;    //内存映射模式配置,这个地方设置为 2或者1 ,结果都是一样的, ?
  QSPI_Handle.Init.FifoThreshold      = 1;
  QSPI_Handle.Init.SampleShifting     = QSPI_SAMPLE_SHIFTING_HALFCYCLE;
  QSPI_Handle.Init.FlashSize          = POSITION_VAL(QSPI_TOTAL_FLASH_SIZE); //内存映射模式配置




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-19 23:29 , Processed in 0.332349 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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