RAM不够?CUBEIDE使用CCMRAM

news2024/11/25 18:43:52

RAM不够?使用CCMRAM


文章目录

  • RAM不够?使用CCMRAM
  • 打开连接LD文件:
  • 添加代码
  • 添加标识宏
  • 使用


打开连接LD文件:

在这里插入图片描述

添加代码

在SECTIONS段最后加上下面代码:

 _siccmram = LOADADDR(.ccmram);	
	  /* CCM-RAM section 
	  * 
	  * IMPORTANT NOTE! 
	  * If initialized variables will be placed in this section,
	  * the startup code needs to be modified to copy the init-values.  
	  */
	  .ccmram (NOLOAD) :
	  {
	    . = ALIGN(4);
	    _sccmram = .;       /* create a global symbol at ccmram start */
	    *(.ccmram)
	    *(.ccmram*)
	    
	    . = ALIGN(4);
	    _eccmram = .;       /* create a global symbol at ccmram end */
	  } >CCMRAM

代码解释:
这段代码是针对 ARM Cortex-M 系列处理器的链接脚本代码,用于描述内存布局中的 .ccmram(Core Coupled Memory RAM)段。这段代码告诉链接器如何将程序的各个部分放置在 .ccmram 段中。下面我会对每个部分进行详细解释:

_siccmram = LOADADDR(.ccmram);

这一行代码将 .ccmram 段的加载地址(LOADADDR)赋值给 _siccmram 符号。_siccmram 是一个全局符号,它将指向 .ccmram 段的起始地址。

.ccmram (NOLOAD) :
{
    . = ALIGN(4);
    _sccmram = .;       /* create a global symbol at ccmram start */
    *(.ccmram)
    *(.ccmram*)
    
    . = ALIGN(4);
    _eccmram = .;       /* create a global symbol at ccmram end */
} >CCMRAM

这段代码定义了 .ccmram 段的内容。以下是对各个部分的解释:

. = ALIGN(4);:这是一个地址对齐操作,确保接下来的数据在 4 字节边界上对齐。ALIGN(4) 意味着数据将按照 4 字节对齐。

_sccmram = .;:这一行代码创建一个全局符号 _sccmram,它将指向此时的地址,即 .ccmram 段的起始地址。

*(.ccmram) 和 (.ccmram):这两行代码表示将所有放置在 .ccmram 段的标准和重定位代码(包括初始化数据、代码等)都添加到此处。

. = ALIGN(4);:再次执行地址对齐操作,确保 .ccmram 段的大小是 4 的倍数。

_eccmram = .;:这一行代码创建另一个全局符号 _eccmram,它将指向此时的地址,即 .ccmram 段的结束地址。

最后,>CCMRAM 指示链接器将这些内容放置在名为 CCMRAM 的特定内存区域中。

综合来看,这段代码的作用是定义了一个名为 .ccmram 的段,该段将位于指定的 CCMRAM 内存区域中。这段代码也提供了起始地址 _sccmram 和结束地址 _eccmram 的全局符号,以便在程序中可以引用这些地址。

添加标识宏

然后在main.h中添加使用CCMRAM的宏标识:

#define CCMRAM __attribute__((section(".ccmram")))

使用

使用:在你想让变量使用CCMRAM的变量的前面加上标识CCMRAM
在这里插入图片描述
结果:成功使用CCMRAM
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/867951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++11语法笔记

文章目录 一.类中新增的默认成员函数:移动赋值和移动构造二.lambda表达式三.包装器bind函数 一.类中新增的默认成员函数:移动赋值和移动构造 二.lambda表达式 三.包装器 bind函数

spss数据分析--相关性分析与酷炫图

相关性分析与酷炫图 今天就来说说R语言怎么进行相关性分析。 首先,安装两个R包,其中“corrplot”包就能画出好多酷炫的相关性矩阵图。“pheatmap”包是用来画热力图的。 我们调用R里自带的数据集,今天调用的这个是关于汽车道路测试的各项指标…

【力扣每日一题】2023.8.12 合并K个升序链表

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一个链表数组,数组里的链表都是升序的,让我们合并这些链表,要求合并之后还是升序的。 最简…

倒数纪念日-生日提醒事项时间管理倒计时软件

倒数纪念日​​​​​​​是一款功能强大的时间管理、事项提醒软件。帮你更好的管理倒数日、纪念日、生日、节假日、还款日等各种重要日子,通知提醒,让你不再错过生命中的每一个重要日子。 【功能简介】 分类管理:倒数日、纪念日、自定义分类…

aardio 调用 python pickle load 数据

aardio 调用 python pickle load 词典数据 dump_pickle.py import os import sys import time import pickle from readmdict import MDX, MDDos.chdir("/mdict")mdxfile "your.mdx" if not os.path.exists(mdxfile):print("{mdxfile} not found!&…

uniapp 自定义手机顶部状态栏不生效问题

想要的效果想淘宝一样,底色覆盖到手机顶部,找了两天都没找到原因,过程很艰苦,直接上结果吧 项目是后来接手的,最终原因出在这, "immersed" : false>设置为 true 就可以了,沉浸式样…

学习pytorch1环境安装

学习pytorch 1. 环境安装配置镜像源conda命令记录图像相关代码遇到的问题1. torch.cuda.is_available() False 1. 环境安装 B站小土堆视频 配置镜像源 conda config --show channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main…

刷题记录(2023-08-12)

1. 小美的排列询问 AC代码&#xff1a; #include <iostream> #include <vector> using namespace std;int main() {int n;cin >> n;vector<int> nums(n);int a, b;for (int i 0; i < n; i) {cin >> nums[i];}cin >> a >> b;for…

javaScript:for循环的认识与使用,以及奇葩for循环

目录 前言 基本的 for 循环通常有三个关键组成部分 一.javaScript中的循环都有那些&#xff08;补充&#xff09; 二.for循环​ 语法/理解​ 执行过程&#xff08;重点&#xff09;​ 注意 三. 基本for循环小练习 1.求1-100的偶数和&#xff0c;包含1和100 2.求1-100中…

DOM的节点操作+事件高级+DOM事件流+事件对象

一.节点操作 1.父节点: node.parentNode 得到的是离元素最近的父级节点 2.子节点: parentNode.childNodes 所有的子节点 包含元素节点 文本节点等等parentNode.children (非标准) 获取所有的子元素节点,实际开发常用 parentNode.firstChild 获取…

JAVA基础补充(Comparable排序接口的实现)

JAVA基础补充&#xff08;Comparable排序接口的实现&#xff09; Comparable接口的实现&#xff1a;没有实现Comparable接口时&#xff0c;取出来的值无法排序如果进行排序&#xff1a;实现接口进行排序&#xff1a;Controller层的实现实体类的实现 复习时间&#xff1a;2023/0…

Spring Cloud面试突击班1

Spring Cloud面试突击班1 1.Spring Cloud 中有哪些组件&#xff0c;整个项目架构中我们的重点又有哪些&#xff1f; Spring Cloud 是一套基于Spring Boot的微服务解决方案。 Spring Cloud生态在国内主流的分为两套&#xff0c;一套是以奈飞开源的Spring Cloud Netfilx 20%&a…

Fiddler抓包工具详细使用教程

各位做测试的同学想必对抓包工具fiddler并不陌生&#xff0c;但是很多同学可能没有总结过它的用法&#xff0c;下面我总结了fiddler一些常用的用法。 Web端抓包配置 打开Fiddler&#xff0c;Tools -> Fiddler Options -> HTTPS 配置完后记得要重启Fiddler 选中Decrpt …

阿里云服务器搭建WordPress建站教程基于Windows系统

本教程是使用阿里云服务器镜像系统选择的是Windows操作系统&#xff0c;手动安装WordPress博客网站全过程。本教程介绍如何在Windows操作系统的ECS实例上搭建WordPress网站。 目录 准备工作 搭建WordPress网站 解析WordPress网站域名 准备工作 创建Windows操作系统的ECS实…

OpenCV实例(八)车牌字符识别技术(三)汉字识别

车牌字符识别技术&#xff08;三&#xff09;汉字识别 1.代码实例2.遇到问题3.汉字识别代码实例 相较于数字和英文字符的识别&#xff0c;汽车牌照中的汉字字符识别的难度更大&#xff0c;主要原因有以下4个方面&#xff1a; (1)字符笔画因切分误差导致非笔画或笔画流失。 (2…

VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR

文章目录 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIORABSTRACT1 INTRODUCTION2 COMPRESSION WITH VARIATIONAL MODELS3 INTRODUCTION OF A SCALE HYPERPRIOR 个人总结动机流程思路 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR ABSTRACT We describe …

【单片机】DS2431,STM32,EEPROM读取与写入

芯片介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/132164189 接线 串口结果&#xff1a; 部分代码&#xff1a; #include "sys.h" #include "DS2431.h"unsigned char serialNb[8]; unsigned char write_data[128]; unsigned cha…

服务器安装JDK

三种方法 方法一&#xff1a; 方法二&#xff1a; 首先登录到Oracle官网下载JDK JDK上传到服务器中&#xff0c;记住文件上传的位置是在哪里&#xff08;我放的位置在/www/java&#xff09;&#xff0c;然后看下面指示进行安装 方法三&#xff1a; 首先登录到Oracle官网下载…

线性回归学习总结

一 、引文 1 回归分析 回归是统计学上用来分析数据的方法&#xff0c;以了解两个或多个变量之前的关系。通常是建立被解释变量Y和解释变量X之间关系的模型。回归分析的最早形式是最小二乘法。 勒让德和高斯都将该方法应用于从天文观测中确定关于太阳的物体的轨道&#xff08;…

SpringBoot复习:(34)@EnableWebMvc注解为什么让@WebMvcAutoconfiguration失效?

它导入了DelegatingWebMvcConfiguration 它会把容器中的类型为WebMvcConfigurer的bean注入到类型为WebMvcConfigurerComposite的成员变量configurers中。 可以看到它继承了WebMvcConfigurerSupport类 而WebMvcConfigureAutoConfiguration类定义如下 可以看到一个Conditional…