STM32定义变量到指定内存位置

rt thread, 怎么定义变量到指定内存位置?

OpenCat是由未来可编程机器人宠物制造商Petoi开发的基于Arduino和Raspberry Pi的开源四足机器人宠物框架。

非 gcc 版

  • 定义一个宏
  #ifndef      __MEMORY_AT    #if     (defined (__CC_ARM))      #define  __MEMORY_AT(x)     __attribute__((at(x)))    #elif   (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))      #define  __MEMORY_AT__(x)   __attribute__((section(".ARM.__AT_"#x)))      #define  __MEMORY_AT(x)     __MEMORY_AT__(x)    #else      #define  __MEMORY_AT(x)      #warning Position memory containing __MEMORY_AT macro at absolute address!    #endif  
#endif
  • 使用
uint8_t blended_address_buffer[480*272*2] __MEMORY_AT(0xC0000000);

gcc 版

  • 修改链接文件
  /* Program Entry, set to mark it as "used" and avoid gc */MEMORY{CODE (rx) : ORIGIN = 0x08000000, LENGTH = 1024k /* 1024KB flash */RAM1 (rw) : ORIGIN = 0x20000000, LENGTH =  192k /* 192K sram */RAM2 (rw) : ORIGIN = 0x10000000, LENGTH =   64k /* 64K sram */SDRAM (rw): ORIGIN = 0xC0000000, LENGTH = 8092k /* 1024KB sdram */}SECTIONS{... /* 忽略其它内容 */.sdram : {KEEP(*(.sdram_section))} >SDRAM}
  • 定义一个宏
  #ifndef      __MEMORY_AT#define  __MEMORY_AT(x)     __attribute__((section(".#x")))#endif
  • 使用

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue--》打造个性化医疗服务的医院预约系统(一)

今天开始使用 vue3 ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运…

Win11 设置FTP服务详细教程

起因: 因测试需要,本机建立FTP服务测试使用,此文章用于记录使用! 操作步骤: 1、配置FTP功能 ①、"winR" > 在运行窗口输入"control" 回车; ②、打开"控制面板" > 点击…

【专题速递】传输网络优化(长专题)

// RTC如何助力远程医疗?5G的差异化体现在哪?SMT如何将远程做到极致?7月29日LiveVideoStackCon2023上海站传输网络优化专场,为您解答。 传输网络优化 为应对互联网日益增长的加速需求、复杂的网络环境以及多种多样的视频业务&am…

Linux常见命令

这里写目录标题 Linux 背景知识Linux环境搭建方式使用终端软件连接到 LinuxLinux 常用命令特殊的目录:绝对路径 与 相对路径vim Linux 背景知识 Linux 是一个操作系统. 和 Windows 是 “并列” 的关系. 安卓系统本质上就是 Linux. 一个完整的操作系统 操作系统内核 配套的…

ylb-接口7注册发送短信

总览: 在common模块下引入短信验证码的依赖项(生成4位随机数): 在web模块下的resources/application.yml,添加配置信息(京东万象): #短信配置 jdwx:sms:url: https://way.jd.com…

ORB-SLAM2学习笔记2之TUM开源数据运行ORB-SLAM2生成轨迹并用evo工具评估轨迹

文章目录 0 引言1 evo工具1.1 简介1.2 常用命令1.3 安装 2 TUM数据3 单目ORB-SLAM23.1 运行ORB-SLAM23.2 evo评估轨迹3.2.1 载入和对比轨迹3.2.2 计算绝对位姿误差 4 RGB-D ORB-SLAM24.1 运行ORB-SLAM24.2 evo评估轨迹4.2.1 载入和对比轨迹4.2.2 计算绝对轨迹误差 ORB-SLAM2学习…

2003-Can‘t connect to Mysql server on ‘xxx‘ (10060 “Unknown error“)

Navicat连接 阿里云 服务器MySQL5.7数据库报错 解决办法: 进入数据库执行以下sql 1.允许root用户远程连接 GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY 数据库密码 WITH GRANT OPTION; 2.刷新权限 FLUSH PRIVILEGES;3.执行quit退出数据库 quit; 4.…

uniapp连接到微信小程序

第一次使用uniapp连接到微信小程序,但是出现了define is not defined问题,让人头疼,出现这个问题的原因是 调试基础库 版本过高导致的! 解决办法: 点击设置,选择项目设置。,会进入到如下界面&a…

mac M1 安装nacos

背景 m1不支持本地安装,只能用docker : “由于 rocksdb 暂不支持 M1 平台,所以使用 Zulu JDK 的小伙伴们运行 Nacos 2.x 版本会报错,网上通用的解决方案是使用 Oracle JDK 来运行 Nacos 2.x 版本,但对于强迫症的我来说…

Windows VScode如何配置与使用git?

当我们在VScode中编写代码后,需要提交到git仓库时,但是我们又不想切换到git的命令行窗口,我们可以在VScode中配置git,然后就可以很方便快捷的把代码提交到仓库中。 1. 官网下载安装Git命令行工具 根据自己的电脑系统&#xff0c…

选择正确的负载均衡器:LVS还是Nginx?

选择正确的负载均衡器:LVS还是Nginx? 博主简介一、前言二、什么是LVS?2.1、LVS的架构 三、什么是Nginx?3.1、Nginx 特性3.2、Nginx 架构 四、LVS和Nginx的区别五、总结 博主简介 💡一个热爱分享高性能服务器后台开发知…

高级测试工程师求职之路:从笔试到面试,我经历了什么?

最近行业里有个苦涩的笑话:公司扛过了之前的三年,没扛过摘下最近的一年,真是让人想笑又笑不出来。年前听说政策的变化,大家都满怀希望觉得年后行情一片大好,工作岗位激增,至少能有更多的机会拥抱未来。然而…