DSP代码搬运至RAM运行
程序运行过程中,有些函数或程序段和数据等经常调用,正常情况下在FLASH中运行处理消耗时间和资源较大,通常将其移植至RAM中运行,可提高运行效率。
如:
1 #pragma CODE_SECTION(InitFlash, "ramfuncs")
解释:
  将InitFlash函数存在ramfuncs中。该语句功能是将InitFlash函数写入RAM中,因为InitFlash经常被调用,这样省得每次都从flash中写入RAM。如果还有经常反复调用的函数,也可自行添加类似语句,需注意#pragma CODE_SECTION (InitFlash, "ramfuncs") 应该写在函数Initflash()所在的C文件中,并且在函数之前声明;在CCS中,如果我们不指定变量的存放位置,编译器会自动给变量分配一个位置,但有的时候我们想要把变量放在一个特定的空间里,那应该怎么办呢?
  CCS提供了以下两个指令:#pragma CODE_SECTION和#pragma DATA_SECTION,其中data_section是针对数据空间的,code_section是针对程序空间的。
CODE_SECTION Pragma命令格式:
1 #pragma CODE_SECTION (func, "section name") 
为函数func分配一个段空间,且该空间不在.text段(一般程序),段名为"section name。
DATA_SECTION pragma命令格式:
1 #pragma DATA_SECTION (symbol, "section name")
将数据对象symbol分配在不同于.bss(一般数据)的空间内,生成一个数据段,段名为"section name“.
例如:
1 #pragma DATA_SECTION (AdcRegs,"AdcRegsFile")
2 volatile struct ADC_REGS AdcRegs;
将一个结构体AdcRegs与F2812的外设AD转换寄存器相对应。使得对结构体的操作作用于寄存器。
DSP代码搬运至RAM运行的更多相关文章
- KEIL MDK编译后的代码量和RAM使用详解
		
一般 MCU 包含的存储空间有:片内 Flash 与片内 RAM,RAM 相当于内存,Flash 相当于硬盘.编译器会将一个程序分为好几个部分,分别存储在 MCU 不同的存储区.Keil 工程在编译完 ...
 - KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释(转)
		
源:KEIL MDK 查看代码量.RAM使用情况--RO-data.RW-data.ZI-data的解释 KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-da ...
 - Maven配置插件跳过测试代码的编译和运行
		
Maven配置插件跳过测试代码的编译和运行: <!-- 编译插件 --> <plugin> <groupId>org.apache.maven.plugins< ...
 - Python NLTK——代码重用,F5运行py文件cmd闪退,invalid syntax
		
打开IDLE,对代码进行保存(Ctrl+S)后,代码都是可以运行的. 但是打开文件就会弹出cmd并闪退,截了好几次图发现报的是Invalid syntax的错. 后来发现应该在IDLE中新建一个fil ...
 - Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果
		
Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果 一.详细说明及代码 tc.py =============================================== ...
 - java中成员变量、代码块、构造函数运行顺序
		
1.java虚拟机执行程序,首先须要装载类,安装现装载父类,初始化父类的静态代码块和静态成员变量 再load子类. 初始化子类静态代码块和成员变量 2.load完成父类与子类后,从main函数入口运行 ...
 - Sublime Text 3 实现C++代码的编译和运行
		
在数据结构代码的编写中,我选用了优秀的编辑器 Sublime Text 3,但是在实现C++代码的编译和运行上费了一番周折,接下来我贴出 C++ 编译系统的代码,供各位参考. 编译后是在弹出的CMD命 ...
 - C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现【可运行】
		
C中二叉排序树的非递归和递归插入操作以及中序遍历代码实现[可运行] #include <stdio.h> #include <stdlib.h> typedef int Key ...
 - KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data
		
KEIL RVMDK编译后的信息 Code是代码占用的空间, RO-data是 Read Only 只读常量的大小,如const型, RW-data是(Read Write) 初始化了的可读写变量的大 ...
 
随机推荐
- IM & WebSockets
			
IM & WebSockets WebSocket API https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API ht ...
 - 下载com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
			
看别人都说在repo.maven.com下载,没想到竟然要登录 索性我直接在国内阿里云的镜像仓库下载好了,速度又快又方便 搜索aspectj 下载地址:https://maven.aliyun.com ...
 - 【OI向】快速傅里叶变换(Fast Fourier Transform)
			
[OI向]快速傅里叶变换(Fast Fourier Transform) FFT的作用  在学习一项算法之前,我们总该关心这个算法究竟是为了干什么.  (以下应用只针对OI)  一句话:求多项式 ...
 - 五大自动化测试的Python框架
			
1.Robot Framework 作为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-driven)类型的开发与验收中.虽然是由Python开发而来,但 ...
 - GetQueuedCompletionStatus客户端前端和server之间的通信
			
项目中遇到了这个东西,怎么都调试不到.记录下. 一.完成端口IOCP https://www.cnblogs.com/yuanchenhui/p/iocp_windows.html
 - Qstring和String的区别
			
QString qTest; std::string sTest = qTest.toStdString(); qTest = QString::fromStdString(sTest); //进入两 ...
 - JUnit5学习之七:参数化测试(Parameterized Tests)进阶
			
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
 - 模式识别Pattern Recognition
			
双目摄像头,单目摄像头缺少深度 Train->test->train->test->predicive
 - JDBC概要
			
JDBC基础应用 JDBC是Java连接数据库的一套接口,可以让我们方便的在Java中使用数据库.掌握JDBC的使用是Java开发的基本功. 预备工作 导入jar包.根据使用的数据库软件导入相应的ja ...
 - 通达OA任意文件上传+文件包含GetShell/包含日志文件Getshell
			
0x01 简介 通达OA采用基于WEB的企业计算,主HTTP服务器采用了世界上最先进的Apache服务器,性能稳定可靠.数据存取集中控制,避免了数据泄漏的可能.提供数据备份工具,保护系统数据安全.多级 ...