硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 836|回复: 16
收起左侧

[MPU] 请教下各位大佬, h7 sdram mpu 要如何配置才能够对非地址对齐进行读写而不会出现错误 ?

  [复制链接]

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
发表于 2026-6-24 16:13:26 | 显示全部楼层 |阅读模式




请教下各位大佬, h7 sdram mpu 要如何配置才能够对非地址对齐进行读写而不会出现错误 ?

配置a:


                MPU_InitStruct.Enable           = MPU_REGION_ENABLE;
                MPU_InitStruct.BaseAddress      = SDRAM_BASE_ADDR;
                MPU_InitStruct.Size             = MPU_REGION_SIZE;
                MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
                MPU_InitStruct.IsBufferable     = MPU_ACCESS_NOT_BUFFERABLE;
                MPU_InitStruct.IsCacheable      = MPU_ACCESS_CACHEABLE;
                MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
                MPU_InitStruct.Number           = MPU_REGION_NUMBER5;
                MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL0;
                MPU_InitStruct.SubRegionDisable = 0x00;
                MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;
                HAL_MPU_ConfigRegion(&MPU_InitStruct);





配置b:
                MPU_InitStruct.Enable           = MPU_REGION_ENABLE;
                MPU_InitStruct.BaseAddress      = SDRAM_BASE_ADDR;
                MPU_InitStruct.Size             = MPU_REGION_SIZE;
                MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
                MPU_InitStruct.IsBufferable     = MPU_ACCESS_BUFFERABLE;
                MPU_InitStruct.IsCacheable      = MPU_ACCESS_CACHEABLE;
                MPU_InitStruct.IsShareable      = MPU_ACCESS_NOT_SHAREABLE;
                MPU_InitStruct.Number           = MPU_REGION_NUMBER5;
                MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL1;
                MPU_InitStruct.SubRegionDisable = 0x00;
                MPU_InitStruct.DisableExec      = MPU_INSTRUCTION_ACCESS_ENABLE;
                HAL_MPU_ConfigRegion(&MPU_InitStruct);





那套配置 能够正常对非对齐地址进行读写而不会出现错误  ???















回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123904
QQ
发表于 2026-6-24 16:33:51 | 显示全部楼层
只要不是Device或者Strongly order模式就没问题

石锤内存访问不支持非对齐是否STM32H7的硬件bug
https://forum.anfulai.cn/forum.p ... 4562&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2026-6-26 00:32:07 | 显示全部楼层
这个问题移植LVGL9.5,我也碰到了,后来发现是因为我的有的内存区域没有完整的配置,比如用的DTCM是默认背景配置,不是normal,所以一直出错
回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-6-26 11:34:28 | 显示全部楼层
本帖最后由 hpdell 于 2026-6-26 11:38 编辑
akikyoua 发表于 2026-6-26 00:32
这个问题移植LVGL9.5,我也碰到了,后来发现是因为我的有的内存区域没有完整的配置,比如用的DTCM是默认背 ...

你目前 关于 sdram 这块 mpu 是怎么配置的 呀  ?


关于这个 配置貌似各种说法的都有呀,

    _mpu_region_cfg(
        MPU_REGION_SDRAM,
        0xC0000000U,
        MPU_REGION_SIZE_128MB,
        MPU_TEX_LEVEL0,                  /* TEX=0,S=1,C=1,B=0 → Normal WT Shareable */
//                MPU_ACCESS_SHAREABLE,                /* S=1:DMA/CPU 均可访问 读取速度太慢了, 32bit 测试读只有 70MB/S 左右 FMC==80MHz */
        MPU_ACCESS_NOT_SHAREABLE,        /* S=0: 读取速度还阔以, 32bit 测试读只有 170MB/S 左右 FMC==80MHz */
        MPU_ACCESS_CACHEABLE,            /* C=1 */
        MPU_ACCESS_NOT_BUFFERABLE,       /* B=0  → Write-Through */
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_ENABLE,   /* XN=0(按需改 DISABLE)*/
        0x00U
    );   我目前采用这样的配置 ,这个配置 sdram 读写支持非对齐读写


另外请教下, 我目前的这个 fmc 驱动 sdram 如果吧 fmc 时钟频率配置到 120MHz 测试 sdram 会失败 ? 100MHz 偶尔也会出错 ?   <=80MHz 工作就稳定 这是不是说明 我这边的 pcb 走线 没有搞好还是买到了 假货 sdram 的片子呀 ??
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2026-6-26 11:52:13 | 显示全部楼层
第一个问题,你只贴出了SDRAM的MPU配置,其他部分的内存是如何配置的呢?我是stm32h7B0,用的内部AXIram做显存的,当时只配置了AXI的,实际程序运行使用的0x20000000区域的没有没有配置,非对齐访问的问题出现在0x20000000区域,反而屏幕缓存部分没有出现。所以可以贴出完整的配置看看。
第二个:以前使用F429有碰到过,SDRAM引脚的速度不要配置为最高那一档,稍微降一档试试看。当时我们的SDRAM都没做等长,不过速度也跑的慢,这个仅作参考
回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-6-26 16:11:09 | 显示全部楼层
akikyoua 发表于 2026-6-26 11:52
第一个问题,你只贴出了SDRAM的MPU配置,其他部分的内存是如何配置的呢?我是stm32h7B0,用的内部AXIram做 ...





static void _mpu_region_cfg(uint8_t  region,
                             uint32_t base_addr,
                             uint8_t  size,
                             uint8_t  tex,
                             uint8_t  shareable,
                             uint8_t  cacheable,
                             uint8_t  bufferable,
                             uint8_t  ap,
                             uint8_t  xn,
                             uint8_t  srd)
{
    MPU_Region_InitTypeDef r = {0};
    r.Enable           = MPU_REGION_ENABLE;
    r.Number           = region;
    r.BaseAddress      = base_addr;
    r.Size             = size;
    r.SubRegionDisable = srd;
    r.TypeExtField     = tex;
    r.AccessPermission = ap;
    r.DisableExec      = xn;
    r.IsShareable      = shareable;
    r.IsCacheable      = cacheable;
    r.IsBufferable     = bufferable;
    HAL_MPU_ConfigRegion(&r);
}




/* =========================================================================
*  MPU_Config — 完整 11 区域配置
* ========================================================================= */

/**
* @brief  配置并使能 MPU(共 11 个区域)
* @note   必须在 SCB_EnableICache() / SCB_EnableDCache() 之前调用。
*         启动模式:PRIVDEFENA=1(特权背景访问强序,非特权未覆盖区域 Fault)。
*/
static void MPU_ConfigAI(void)
{
    HAL_MPU_Disable();

    /* ------------------------------------------------------------------
     * Region 0 — 背景保护区
     * 地址/大小 : 0x00000000 / 4GB(覆盖整个地址空间)
     * 属性      : Strongly-Ordered,仅特权 R/W,XN=1
     * 目的      : 未被后续区域覆盖的访问触发 MemManage Fault,
     *             防止野指针静默访问保留/外设空间。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_BG,
        0x00000000U,
        MPU_REGION_SIZE_4GB,
        MPU_TEX_LEVEL0,                  /* TEX=0,S=0,C=0,B=0 → Strongly-Ordered */
        MPU_ACCESS_SHAREABLE,
        MPU_ACCESS_NOT_CACHEABLE,
        MPU_ACCESS_NOT_BUFFERABLE,
        MPU_REGION_PRIV_RW,              /* AP=001:仅特权 R/W */
        MPU_INSTRUCTION_ACCESS_DISABLE,  /* XN=1 */
        0x87U
    );

    /* ------------------------------------------------------------------
     * Region 1 — DTCM(D1 域 Tightly Coupled Memory)
     * 地址/大小 : 0x20000000 / 128KB
     * 属性      : Normal WB-WA,S=0(TCM 不经 AHB 总线,无 DMA 路径)
     * 目的      : 零等待时延 RAM,存放中断处理函数/实时任务栈。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_DTCM,
        0x20000000U,
        MPU_REGION_SIZE_128KB,
        MPU_TEX_LEVEL1,                  /* TEX=1,C=1,B=1 → Normal WB-WA */
        MPU_ACCESS_NOT_SHAREABLE,        /* S=0:DTCM 不可 DMA */
        MPU_ACCESS_CACHEABLE,
        MPU_ACCESS_BUFFERABLE,
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_ENABLE,
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 2 — AXI SRAM(D1 域)
     * 地址/大小 : 0x24000000 / 512KB
     * 属性      : Normal WB-WA,S=1(DMA1/DMA2/MDMA 可访问)
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_AXI_SRAM,
        0x24000000U,
        MPU_REGION_SIZE_512KB,
        MPU_TEX_LEVEL1,                  /* TEX=1,C=1,B=1 → Normal WB-WA */
        MPU_ACCESS_SHAREABLE,            /* S=1 */
        MPU_ACCESS_CACHEABLE,
        MPU_ACCESS_BUFFERABLE,
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_ENABLE,
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 3 — D2 SRAM1 + SRAM2
     * 地址/大小 : 0x30000000 / 256KB(SRAM1 128KB + SRAM2 128KB 连续)
     * 属性      : Normal WB-WA,S=1(DMA1/DMA2 可访问)
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_D2_SRAM12,
        0x30000000U,
        MPU_REGION_SIZE_256KB,
        MPU_TEX_LEVEL1,
        MPU_ACCESS_SHAREABLE,
        MPU_ACCESS_CACHEABLE,
        MPU_ACCESS_BUFFERABLE,
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_ENABLE,
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 4 — ETH DMA 区(SRAM3,D2 域)
     * 地址/大小 : 0x30040000 / 32KB
     * 属性      : Normal Non-Cacheable,S=1
     * 目的      : ETH DMA 数据缓冲区,Non-Cacheable 保证 CPU/ETH-DMA 数据一致,
     *             无需 Cache Flush 操作。
     * 注意      : 用户要求的 0x30040100 偏移起始地址不满足 MPU 32KB 对齐约束
     *             (需 0x8000=32KB 倍数对齐),统一从 0x30040000 起始配置。
     *             Region 5(更高编号)将以 Device 属性覆盖首 256B 描述符区域。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_ETH_DMA,
        0x30040000U,
        MPU_REGION_SIZE_32KB,
        MPU_TEX_LEVEL1,                  /* TEX=1,C=0,B=0 → Normal Non-Cacheable */
        MPU_ACCESS_SHAREABLE,            /* S=1:ETH-DMA 访问 */
        MPU_ACCESS_NOT_CACHEABLE,
        MPU_ACCESS_NOT_BUFFERABLE,
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_DISABLE,  /* XN=1:数据区不执行 */
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 5 — ETH DMA 描述符(覆盖 Region 4 首 256B)
     * 地址/大小 : 0x30040000 / 256B
     * 属性      : Device Shareable(TEX=0,S=1,C=0,B=0),XN=1
     * 目的      : ETH MAC 硬件直接读写 DMA 描述符环,需要严格的强序语义;
     *             Device Shareable 保证访问顺序与 ETH MAC 硬件可见性。
     *             编号 5 > 编号 4,Cortex-M7 以高编号区域属性为准。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_ETH_DESC,
        0x30040000U,
        MPU_REGION_SIZE_256B,
        MPU_TEX_LEVEL0,                  /* TEX=0,S=1,C=0,B=0 → Device Shareable */
        MPU_ACCESS_SHAREABLE,            /* S=1 */
        MPU_ACCESS_NOT_CACHEABLE,        /* C=0 */
        MPU_ACCESS_NOT_BUFFERABLE,       /* B=0 */
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_DISABLE,  /* XN=1 */
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 6 — SRAM4(D3 域)
     * 地址/大小 : 0x38000000 / 64KB
     * 属性      : Normal WB-WA,S=1(BDMA 可访问)
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_SRAM4,
        0x38000000U,
        MPU_REGION_SIZE_64KB,
        MPU_TEX_LEVEL1,
        MPU_ACCESS_SHAREABLE,
        MPU_ACCESS_CACHEABLE,
        MPU_ACCESS_BUFFERABLE,
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_ENABLE,
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 7 — FMC SRAM / 外设设备区(RA8889 / AD7606 等)
     * 地址/大小 : 0x6C000000 / 128MB
     * 属性      : Device Non-Shareable(TEX=2,S=0,C=0,B=0),XN=1
     * 目的      : FMC Bank1 Sub-bank4 外挂设备寄存器空间:
     *               - RA8889 LCD 控制器(内存映射寄存器)
     *               - AD7606 ADC(内存映射 CS/RD/WR 控制)
     *             Device 属性保证写操作不被缓冲/重排序,寄存器访问时序正确。
     *             S=0(Non-Shareable):这些设备仅由 CPU 访问,无 DMA 共享。
     * ? 非对齐访问:Device 类型不支持非对齐,驱动请确保寄存器访问地址对齐。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_FMC_DEV,
        0x6C000000U,
        MPU_REGION_SIZE_128MB,
        MPU_TEX_LEVEL2,                  /* TEX=2,S=0,C=0,B=0 → Device Non-Shareable */
        MPU_ACCESS_NOT_SHAREABLE,        /* S=0 */
        MPU_ACCESS_NOT_CACHEABLE,        /* C=0 */
        MPU_ACCESS_NOT_BUFFERABLE,       /* B=0 */
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_DISABLE,  /* XN=1 */
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 8 — FMC NAND Flash
     * 地址/大小 : 0x80000000 / 512MB(FMC Bank3)
     * 属性      : Device Non-Shareable(TEX=2,S=0,C=0,B=0),XN=1
     * 目的      : FMC NAND 命令/地址/数据寄存器区,访问时序严格有序。
     *             CPU 通过 FMC 状态机控制 NAND,无 DMA 直接访问此区域。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_NAND,
        0x80000000U,
        MPU_REGION_SIZE_512MB,
        MPU_TEX_LEVEL2,                  /* TEX=2,S=0,C=0,B=0 → Device Non-Shareable */
        MPU_ACCESS_NOT_SHAREABLE,
        MPU_ACCESS_NOT_CACHEABLE,
        MPU_ACCESS_NOT_BUFFERABLE,
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_DISABLE,  /* XN=1 */
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 9 — QSPI Flash XIP(OCTOSPI/QUADSPI 内存映射模式)
     * 地址/大小 : 0x90000000 / 128MB
     * 属性      : Normal Write-Through,S=0,XN=0
     * 目的      : QSPI XIP 执行区域,CPU I-Cache 直接缓存指令/常量数据;
     *             Write-Through 保证读命中一致,S=0(单 Master CPU 访问);
     *             XN=0 允许从此区域取指(正常读写 + XIP 执行)。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_QSPI,
        0x90000000U,
        MPU_REGION_SIZE_128MB,
        MPU_TEX_LEVEL0,                  /* TEX=0,S=0,C=1,B=0 → Normal WT */
        MPU_ACCESS_NOT_SHAREABLE,        /* S=0:仅 CPU 访问 */
        MPU_ACCESS_CACHEABLE,            /* C=1 */
        MPU_ACCESS_NOT_BUFFERABLE,       /* B=0  → Write-Through */
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_ENABLE,   /* XN=0:允许 XIP 执行 */
        0x00U
    );

    /* ------------------------------------------------------------------
     * Region 10 — 外部 SDRAM(FMC Bank5,0xC0000000)
     * 地址/大小 : 0xC0000000 / 128MB
     * 属性      : Normal Write-Through,S=1,XN=0
     *
     * ★ 非对齐读写支持(用户需求):
     *   必须使用 Normal 内存类型(本例 TEX=0,C=1,B=0)。
     *   Cortex-M7 CCR.UNALIGN_TRP 默认为 0,Normal 类型非对齐访问由硬件
     *   自动拆分为多次对齐传输,应用层代码无需特殊处理。
     *   Device / Strongly-Ordered 类型非对齐访问将触发 UsageFault(硬件强制)。
     *
     * Write-Through 选择理由:
     *   SDRAM 常被 DMA(MDMA/DMA2D)并发访问;WT 模式写操作同步回写
     *   SDRAM,CPU 读已缓存行不会返回 DMA 写入前的脏数据,无需 Cache Flush。
     *   若应用全部由 CPU 独占访问且追求极致写性能,可改 B=1(WB No-WA)
     *   并在 DMA 传输前后手动执行 SCB_CleanInvalidateDCache_by_Addr()。
     * ------------------------------------------------------------------ */
    _mpu_region_cfg(
        MPU_REGION_SDRAM,
        0xC0000000U,
        MPU_REGION_SIZE_128MB,
        MPU_TEX_LEVEL0,                  /* TEX=0,S=1,C=1,B=0 → Normal WT Shareable */
//                MPU_ACCESS_SHAREABLE,                /* S=1:DMA/CPU 均可访问 读取速度太慢了, 32bit 测试读只有 70MB/S 左右 FMC==80MHz */
        MPU_ACCESS_NOT_SHAREABLE,        /* S=0: 读取速度还阔以, 32bit 测试读只有 170MB/S 左右 FMC==80MHz */
        MPU_ACCESS_CACHEABLE,            /* C=1 */
        MPU_ACCESS_NOT_BUFFERABLE,       /* B=0  → Write-Through */
        MPU_REGION_FULL_ACCESS,
        MPU_INSTRUCTION_ACCESS_ENABLE,   /* XN=0(按需改 DISABLE)*/
        0x00U
    );

    /* PRIVDEFENA=1:特权模式访问未覆盖区域使用强序背景属性;
     *               非特权模式访问未覆盖区域触发 MemManage Fault。  */
    HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
}




我吧 fmc  io 口速度降低一档试试看  

我是使用时 h743 axi 区域最大只有 512KB

回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-6-27 11:09:44 | 显示全部楼层
现在终于搞清楚了 sdram 为何只能跑 80MHz 了, 是因为解码 lodepng 2026 版本  (其他低版本也是一样的)的缘故, 如果是 解码 bmp, jpg 跑 120MHz 完全没有问题, 但是 解码 lodepng 跑 120MHz 解码 png 就会出错 有大神遇到过的吗 ??
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123904
QQ
发表于 2026-6-29 09:59:14 | 显示全部楼层
hpdell 发表于 2026-6-27 11:09
现在终于搞清楚了 sdram 为何只能跑 80MHz 了, 是因为解码 lodepng 2026 版本  (其他低版本也是一样的) ...

跑emWin的png解密没用遇到这个问题。
回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-6-29 17:26:07 | 显示全部楼层
eric2013 发表于 2026-6-29 09:59
跑emWin的png解密没用遇到这个问题。

emwin 的  png 我还没有用过呀, 估计看是不是他们魔改过的呀 ?

据说 lodepng 是专业级级别的
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123904
QQ
发表于 2026-7-1 10:39:59 | 显示全部楼层
hpdell 发表于 2026-6-29 17:26
emwin 的  png 我还没有用过呀, 估计看是不是他们魔改过的呀 ?

据说 lodepng 是专业级级别的

emWin的png是用的开源库,这个是以源码形式添加的,你可以直接使用
回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-7-5 12:11:08 | 显示全部楼层
eric2013 发表于 2026-7-1 10:39
emWin的png是用的开源库,这个是以源码形式添加的,你可以直接使用

我现在已经把 fmc sdram 时钟频率降到了 80MHz , 读写完全没有问题, 解析 png 也都完全正常, 对 sdram 读写 使用 非字节对齐也都没有问题,


问题的根源是在 sdram 上, 之前跑 120MHz 是在核心板单独测试读写是没有任何问题的, 现在 核心板与底板对接一起使用 fmc sdram 跑 120MHz 就不行, 估计是 底板与核心板上的 fmc 造成了某种不可预知的错误导致 sdram 工作异常,

现在只能牺牲一些读写性能了 FMC SDRAM ,

120MHz   写:450MB
              读: 220MB

与地板对接 跑 80MHz 稳的一批
80MHz     写:300MB
              读: 170MB

这个问题大佬有没有什么比较好的方法解决呀 ?

点评

请教下了:是把 fmc sdram 时钟频率降到了 80MHz ,读写 使用 非字节对齐也都没有问题吗?还是其他解决方法呢?  详情 回复 发表于 2026-7-13 15:33
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123904
QQ
发表于 2026-7-6 15:40:16 | 显示全部楼层
hpdell 发表于 2026-7-5 12:11
我现在已经把 fmc sdram 时钟频率降到了 80MHz , 读写完全没有问题, 解析 png 也都完全正常, 对 sdram ...

没遇到过这种情况,这种情况要排查下布线了。100M测试过正常不。
回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-7-7 11:44:39 | 显示全部楼层
本帖最后由 hpdell 于 2026-7-7 11:45 编辑
eric2013 发表于 2026-7-6 15:40
没遇到过这种情况,这种情况要排查下布线了。100M测试过正常不。


单独核心板跑 100 - 120MHz 都是可以的, 但是与底板对接后 要想稳定就只能 跑 80MHz , 如果跑 100-120 MHz 这个 SDRAM_MODEREG_BURST_LENGTH_1 只能配置为 1 , 如果跑 80Mhz 这个可以配置为 SDRAM_MODEREG_BURST_LENGTH_1 - 8 都没有问题

fmc 接口有从核心板上引出 做其他用途
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
123904
QQ
发表于 2026-7-7 17:54:20 | 显示全部楼层
hpdell 发表于 2026-7-7 11:44
单独核心板跑 100 - 120MHz 都是可以的, 但是与底板对接后 要想稳定就只能 跑 80MHz , 如果跑 100-12 ...

硬件上可能确实有点问题,估计有干扰吧
回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-7-10 15:24:36 | 显示全部楼层
eric2013 发表于 2026-7-7 17:54
硬件上可能确实有点问题,估计有干扰吧

现在只能降频这洋使用了, 改版又太麻烦而且还费钱,
回复

使用道具 举报

0

主题

9

回帖

9

积分

新手上路

积分
9
发表于 2026-7-13 15:33:37 | 显示全部楼层
hpdell 发表于 2026-7-5 12:11
我现在已经把 fmc sdram 时钟频率降到了 80MHz , 读写完全没有问题, 解析 png 也都完全正常, 对 sdram ...

请教下了:是把 fmc sdram 时钟频率降到了 80MHz ,读写 使用 非字节对齐也都没有问题吗?还是其他解决方法呢?
回复

使用道具 举报

739

主题

3918

回帖

6160

积分

论坛元老

自定义头衔

积分
6160
 楼主| 发表于 2026-7-14 17:15:47 | 显示全部楼层
sklli 发表于 2026-7-13 15:33
请教下了:是把 fmc sdram 时钟频率降到了 80MHz ,读写 使用 非字节对齐也都没有问题吗?还是其他解决方 ...

把 fmc sdram 时钟频率降到了 80MHz ,读写 使用 非字节对齐也都没有问题   你理解的是对地 的  ,

我的核心板 上对外引出了 fmc 的接口共底板其他设备使用 可能这样造成了某种延时速度提不上,

现在只要稳定就这样使用了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-26 02:14 , Processed in 1.215623 second(s), 6 queries , File On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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