
KEIL底层__main函数深入解析

"深入KEIL底层之__main函数详解"
__main函数是KEIL开发环境中一个非常重要的函数,它负责初始化程序运行环境,做一些底层工作。下面我们将深入探讨__main函数的作用、KEIL启动过程、__main函数的实现等方面的知识点。
**__main函数的主要作用**
__main函数的主要作用是初始化程序运行环境,做一些底层工作。这些底层工作包括全局变量初始化、函数代码拷贝、堆栈指针初始化等。全局变量初始化和函数代码拷贝的加载地址不是执行地址,需要将加载地址拷贝到执行地址(RAM的.data段)。
**KEIL启动过程**
KEIL启动过程主要包括两个步骤:分散加载文件和启动文件。
**1.2.1 分散加载文件**
如果使用KEIL的__main函数或者微库(【Options for Target】->【Target】->【Use MicroLIB】),则分散加载文件中必须将__main和微库函数放在root region,如图1.2所示。其中ER_IROM1的起始地址必须与LR_IROM1的起始地址相同,这样就保证了__main和微库函数在root region中。KEIL工程已经默认为我们做好,所以无需自己操作。
**1.2.2 启动文件**
程序上电后,首先加载SP和PC,ARM规定从0地址处加载SP,从偏移为4的地址(0X00000004)处加载PC。然后将程序控制权交给程序。中断向量表放在程序的0地址处,第一个字存放SP,第二个字存放PC(复位中断函数入口地址),如图1.4所示。
**__main函数的实现**
__main函数的实现主要包括工程配置和函数实现两个方面。
**2.1 工程配置**
在KEIL工程配置中,如果勾选了【Use MicroLIB】,宏__MICROLIB会被定义,第275~277行会被编译,如图1.3所示。微库会使用这些“EXPORT”声明的标号,例如malloc函数会用到__heap_base(堆地址)。如果不勾选【Use MicroLIB】,使用ARMC library,则图1.3中的第281~289行会被编译,以提供ARMC library中的函数使用。
**2.2 函数实现**
__main函数的实现还需要注意堆栈的设置一般在汇编启动文件中,如图1.5所示。根据启动文件的设置,程序才能正确地启动和运行。
__main函数在KEIL开发环境中扮演着非常重要的角色,它负责初始化程序运行环境,做一些底层工作。理解__main函数的作用、KEIL启动过程和__main函数的实现对KEIL开发环境的使用和应用非常重要。
相关推荐









damonyun
- 粉丝: 0
最新资源
- C#利用三层架构实现运行时反射机制
- C语言教程课件:全面学习编程基础
- 探索八皇后问题的92解集动画展示
- C# 实现自动网络时间同步的关键类
- VC++图像处理实例:阈值变换代码详解
- 13款经典Flash菜单素材压缩包下载
- .NET日期控件的ASP.NET实现与应用
- 介绍Microsoft SQL Server 2005 JDBC驱动程序
- VC++6.0环境下的高效人脸识别程序
- 基于ExtJS实现仿QQ的网页聊天应用
- VS2005集成开发环境高效使用技巧
- eMule0.49b-Sources: P2P资源分享软件的最新C++源码
- 软件测试工程师面试必备题库大汇总
- VB打造的元搜索引擎:整合四大搜索巨头
- Struts框架教程:全面解析Struts结构与配置
- 小鸭五笔输入法2.5版发布:极致精简体验
- Spring框架必备jar包清单解析
- ASP网页设计的实用指南
- PC硬件功耗计算器:快速电脑功耗评估工具
- DotNet实现SQL 2005 Express自动化安装与数据库恢复方案
- Sybase SQL Anywhere数据库修复工具使用指南
- 网络嗅探工具Sniffer中文使用全攻略
- Supesite奥运官方网站模板发布
- 利用LPT端口通过ZPLII指令实现Zebra打印机条码打印