C程序启动与复位机制解析-Microchip技术
需积分: 16 56 浏览量
更新于2024-08-09
收藏 6.1MB PDF 举报
"MPLAB XC8_C 编译器用户指南-运行时启动与复位原理"
在嵌入式系统编程中,`main`函数扮演着至关重要的角色,它是程序执行的起点。然而,`main()`并非在硬件复位后立即执行的代码。在实际的程序流程中,编译器会添加一段称为运行时启动代码,它在`main()`之前运行,负责初始化必要的系统状态。
运行时启动代码是C程序启动阶段的一部分,它执行的任务包括但不限于:
1. 初始化带有初始值的全局变量。
2. 将未初始化的全局变量设置为零。
3. 设置芯片寄存器和设备状态到预期的初始配置。
MPLAB XC8编译器采用了一种高效的方法,根据用户程序的需求自动生成相应的运行时启动代码,而不是依赖固定的预编译程序。用户可以在第4.4.2节中找到更多关于启动和初始化过程的详细信息。
在启动过程中,有以下几个关键的汇编标号值得注意:
- `reset_vec`:位于复位向量单元(地址0x0),是硬件复位后程序执行的第一条指令。
- `powerup`:上电程序的起始位置,用于执行复位后的特殊初始化操作。
- `start`:在`startup.as`中的运行时启动代码开始的地方。
- `start_initialization`:C输出代码中C初始化启动代码的起点。
为了确保`main()`函数不会结束并导致程序退出,通常会在`main()`函数的末尾放置一个无限循环,如`while(1)`,这样可以保持程序持续运行,等待中断事件的发生。
需要注意的是,对于需要在上电或复位后立即执行的特定初始化,应该使用上电程序(powerup),这部分内容在第5.10.2节中详细阐述。
MPLAB XC8编译器的用户指南强调了使用中文版本的文档仅供参考,并提醒用户不应忽略英文原文中的信息,因为英文原文包含了关于Microchip产品性能和使用的重要细节。此外,Microchip不承担由于翻译错误或使用这些信息导致的任何责任,并明确指出在生命支持和/或生命安全应用中使用其器件的风险由购买者自行承担。
最后,Microchip提到了其产品的代码保护功能,强调代码保护是一个持续发展的领域,尽管他们致力于增强代码安全性,但不能保证绝对的代码安全性。任何尝试破坏代码保护功能的行为可能违反了相关法律法规。
2021-05-26 上传
2021-05-28 上传
2010-10-21 上传
2022-07-15 上传
2018-02-09 上传
Yu-Demon321
- 粉丝: 23
- 资源: 3963
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析