打印
[STM32H7]

不能用RAM的不同部分

[复制链接]
61|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
唐纳德d|  楼主 | 2025-6-25 22:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RAM, AMD, ck, or, ig
用STM32H7和STM32 Cube IDE在linker script中添加了这个:
/* Memories definition */MEMORY{  DTCMRAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 128K  ITCMRAM    (xrw)    : ORIGIN = 0x00000000,   LENGTH = 64K  RAM_D1    (xrw)    : ORIGIN = 0x24000000,   LENGTH = 512K  RAM_D2    (xrw)    : ORIGIN = 0x30000000,   LENGTH = 288K  RAM_D3    (xrw)    : ORIGIN = 0x38000000,   LENGTH = 64K  FLASH    (rx)    : ORIGIN = 0x8000000,   LENGTH = 1024K} /* Sections */SECTIONS{  .ramd2block :  {    . = ALIGN(4);    _sramd2block = .;       /* create a global symbol at ccmram start */    *(.ramd2block)    *(.ramd2block*)        . = ALIGN(4);    _eramd2block = .;       /* create a global symbol at ccmram end */  } > RAM_D2    .ramd3block (NOLOAD) :  {    KEEP(*(.ramd3section))  } > RAM_D3
但它会一直在DTCM RAM中定位此缓冲区:
uint8_t  SPI1_TxBuffer[READBACK_LENGTH] __attribute__(( section(".ramd2block") )); // SPI Tx
当我看.map:
.ramd2block     0x00000000200001f8       0x1b load address 0x000000000800e2f4 .ramd2block    0x00000000200001f8       0x1b Core/Src/main.o                0x00000000200001f8                SPI1_TxBuffer                0x0000000020000214                . = ALIGN (0x4)
0x2000000在DTCM RAM中,为什么链接器没有在RAM_D2中定位缓冲区

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

24

帖子

0

粉丝