MATLAB模拟动力系统:程序空间中的变量与常量管理
需积分: 49 42 浏览量
更新于2024-08-09
收藏 3.92MB PDF 举报
"MPLAB XC16 C 编译器用户指南 - 程序空间中的变量和常量处理"
MPLAB XC16 C 编译器支持在程序空间中处理变量,尤其是针对16位内核系列处理器,利用硬件特性程序空间可视性(PSV),允许从程序闪存内访问数据。这一功能通过特殊功能寄存器(SFR)如PSVPAG或DSRPAG实现,将32K闪存页映射到数据地址空间的高32K区域。默认情况下,编译器仅支持直接访问被称为auto_psv空间的一个PSV页,并且使用16位数据指针。
当启用选项`-mconst-in-code`时,编译器会将`const`限定的非auto类型变量放入程序存储器,而所有`const`限定的auto变量则与其他auto变量一同放在堆栈上。无论何时,尝试修改`const`限定的变量都会导致编译错误,因为这些变量是只读的。未初始化的`const`对象同样被视为只读,它们与其他未初始化的RAM变量一起分配空间,但不能被写入。
程序存储器中的对象分配和访问有多种方式。默认情况下,编译器自动将字符串和初始化的`const`变量放置在auto_psv段中,该段映射到PSV窗口。如果使用`-mconst-in-data`选项,编译器则不会使用PSV窗口,这些对象会被分配到基于RAM的变量一起。访问额外的闪存页面可以通过受管PSV访问技术实现,具体细节可在相关章节中找到。
对于程序存储器对象,主要分为字符串和常量对象。默认存储模型中,PSV页固定为1页,即auto_psv存储空间。访问单个自动PSV页非常高效,因为它不需要任何额外的页处理。当需要访问多个闪存页时,需要使用特定的访问方法。
这个用户指南还强调,虽然Microchip的产品通常具有良好的代码保护功能,但代码保护并不能保证100%的安全性,因为可能会有恶意尝试破坏这些保护措施。Microchip持续改进其产品的代码保护功能,并鼓励与重视代码完整性的客户合作。
MPLAB XC16 C 编译器提供了灵活的手段来处理程序空间中的变量和常量,允许开发者在不同存储区域优化常量数据的存放,同时注意保护代码的安全性。开发者应根据具体项目需求选择合适的编译选项和访问机制。
525 浏览量
2022-04-21 上传
2021-07-03 上传
2023-04-07 上传
2024-10-07 上传
2023-08-27 上传
2023-05-14 上传
2023-09-22 上传
2023-05-31 上传
Fesgrome
- 粉丝: 36
- 资源: 3871
最新资源
- BGP协议首选值(PrefVal)属性与模拟组网实验
- C#实现VS***单元测试coverage文件转xml工具
- NX二次开发:UF_DRF_ask_weld_symbol函数详解与应用
- 从机FIFO的Verilog代码实现分析
- C语言制作键盘反应力训练游戏源代码
- 简约风格毕业论文答辩演示模板
- Qt6 QML教程:动态创建与销毁对象的示例源码解析
- NX二次开发函数介绍:UF_DRF_count_text_substring
- 获取inspect.exe:Windows桌面元素查看与自动化工具
- C语言开发的大丰收游戏源代码及论文完整展示
- 掌握NX二次开发:UF_DRF_create_3pt_cline_fbolt函数应用指南
- MobaXterm:超越Xshell的远程连接利器
- 创新手绘粉笔效果在毕业答辩中的应用
- 学生管理系统源码压缩包下载
- 深入解析NX二次开发函数UF-DRF-create-3pt-cline-fcir
- LabVIEW用户登录管理程序:注册、密码、登录与安全