VS GDB 数据内存地址指定

首先在GCC链接是加入下面指令就可以输出map文件

--Map=rtthread-stm32.map
Paste_Image.png

下面代码就是将 mem3base定位到内存my_malloc段

u8 mem3base[MEM3_MAX_SIZE] __attribute__ ((section (".ccm"), used));    //内部CCM内存池

malloc段的设置在 *.lds文件中

MEMORY
{
    FLASH (RX)   : ORIGIN = 0x08000000, LENGTH = 1M
    SRAM (RWX)   : ORIGIN = 0x20000000, LENGTH = 128K
    CCMRAM (RWX) : ORIGIN = 0x10000000, LENGTH = 64K
}
SECTIONS
{
    ...
        ...

    .ccm :
    {
        . = ALIGN(4);
        *(.ccm)
    } > CCMRAM
    
  ...
          ...
}

最后查看map文件,就可以看到mem3_base的地址在CCRAM区了。(CCRAM内存是单片机中的一块专用内存,只有CPU没访问,DMA等外设不能访问,访问速度比一般内存块)。

.ccm            0x10000000     0x6400
                0x10000000                . = ALIGN (0x4)
 *(.ccm)
 .ccm           0x10000000     0x6400 Debug/my_malloc.o
                0x10000000                mem3base
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 简介 STM32F10x标准外设库是一个完整的包,包含了所有标准外设的设备驱动,适用于STM32价值系列(高、...
    hackvilin阅读 6,910评论 0 13
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,908评论 0 27
  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 1,213评论 0 2
  • 内存 I/O# 内存管理单元## MMU辅助操作系统进行内存管理,提供虚拟地址和物理地址的映射、内存访问权限保护和...
    henry_zeng阅读 1,857评论 0 2
  • 作者:桐子树下 无忧,无虑,敢想,敢干一股冲动就能把你冲向对岸这就是我们年少的样子 迷茫,彷徨,焦虑一句话就能激怒...
    桐子树下阅读 346评论 7 23