ARM 中main()和__main() 的区别

发布者:声慢慢最新更新时间:2016-03-23 来源: eefocus关键字:ARM  main()  __main() 手机看文章 扫描二维码
随时随地手机看文章
当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序,即呼叫主应用程序。最简单的一种情况是:
    IMPORT main
    main
    直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户随便定义。
 
    在ARM ADS环境中,还另外提供了一套系统级的呼叫机制。
    IMPORT __main
    __main
    __main()是编译系统提供的一个函数,负责完成库函数的初始化和初始化应用程序执行环境,最后自动跳转到main()。所以说,前者是库函数,后者就是我们自己编写的main()主函数;
    因此我们用的B __main其实是执行库函数,然后该库函数再调用我们的main() 函数,因此在单步调试时会看到先要跑一段程序(其实是库函数),然后再单步到我们自己的main函数(这个同时也说明如果有B __main 则就对应必须有main函数,否则编译出错),如果我们用 main来进入我们的主函数的话,那在单步调试时就看到直接进入到我们自己的main函数了,中间不会看到其他程序;

 

    那么用B __main和用B main 这两这进入我们的main函数方式有什么不同呢?
    如果采用前者则会由编译器加入一段"段拷贝"程序,即我们说的从加载域到执行域转化程序;而采用后者就没有这个了,因此如果要进行 "段拷贝"只能自己动手编写程序来实现了,完成段拷贝后就可以进入我们的主函数了,当然这个主函数不一定是叫做main(),可以起个其他好听的名字,这个有别于使用B __main方式;不管采用哪种方式进入我们的程序,都要有一段"段拷贝"程序,跑完了段拷贝后才能可以进入我们主程序了!(顺便提一下:startup.s这个文件并没有所谓的"段拷贝"功能,再看也无益!)
 
    对含有启动程序来说,"执行地址与加载地址相同"不容易实现:
    如果执行地址与加载地址相同哪当然不需要做"段拷贝",但是个人理解编译器还会加入"段拷贝"程序(如果用B __main的话),只是因为条件不满足而不执行而已;但是对含有启动程序来说,"执行地址与加载地址相同"就不容易了.因为启动程序是要烧到非易失存储器里,用来在上电执行的,而这个程序必定会有RW段,如果RW放在非易失存储器,如FLASH,那就不好实现RW功能了,因此要给RW移动到能够实现RW功能的存储器,如SRAM等.因此,对含有启动程序来说,"执行地址与加载地址相同"就不容易实现;程序的入口点在C 库中的__main 处,在该点,库代码执行以下操作:

1. 将非零(只读和读写)运行区域从其载入地址复制到运行地址。
2. 清零ZI 区域。
3. 跳转到__rt_entry。


关键字:ARM  main()  __main() 引用地址:ARM 中main()和__main() 的区别

上一篇:STM32F103ZET6系统框图
下一篇:ARM汇编中的LDR指令总结

推荐阅读最新更新时间:2024-03-16 14:47

基于ARM的剪切生产线数控系统
0 引言   随着我国制造业的飞速发展,对机加配件的加工精度和生产效率的要求越来越高,对企业生产过程的自动化程度也提出了很高的要求。棒料是各种模锻件、辊锻件、辗压件生产用的主要原料,而棒料剪断机就是为这些锻压工艺准备坯料的剪切下料设备。早期的剪切系统电气控制普遍采用交流接触器和继电器进行控制,经过长年使用,部件老化,设备故障频发。在维护中由于分立元件众多,集成度差,许多故障不能及时处理,给企业生产带来诸多不便。   由于PLC伺服控制系统具有定位精度高、响应速度快、抗干扰能力强、运行平稳等特性,采用可编程序控制器(PLC)控制系统的高精度自动剪切生产线的应用越来越广泛。但PLC还是软PLC技术,都有实时性不强的缺点,很难实现复
[单片机]
基于<font color='red'>ARM</font>的剪切生产线数控系统
研华引领嵌入式ARM平台之标准化
研华科技---2014年4月16-17日,全球智能系统领导厂商研华科技在协同创新研发中心(Advantech Plus Technology Campus,简称A+TC)举办“ARM-Based嵌入式技术论坛暨伙伴会议”,在为期两天的会议中,研华与嵌入式产业内知名厂商Freescale、Oracle和ARM等以及重要客户、渠道伙伴共同探讨RISC精简型计算机未来商机与应用, 以及如何联盟产业链伙伴加速RISC架构系统更加智能化,助力智慧城市发展。 强大的在地化Ecosystem Partner协作 在物连网的发展趋势下, 嵌入式领域蕴藏着巨大商机。此次FPC,研华也邀请到了业内产业链上下的重要合作伙伴。ARM公
[嵌入式]
研华引领嵌入式<font color='red'>ARM</font>平台之标准化
ARM9的快速对星装置原理及设计实现
1 系统概述 该装置通过GPS采集地理信息、电子罗盘采集姿态信息,根据GPS采集的地理信息,结合通信卫星位置,计算出对星所需要的标准方位、俯仰、极化参数,同时计算出当地、当年磁偏角数据;通过采集电子罗盘数据,得到初步方位、俯仰、极化数据,其中俯仰和极化均为天线实际指向值,但是方位值是以磁北为标准测量值;通过GPS得到的磁偏角数据,对从电子罗盘得到的以磁北为标准的方位值进行修正,得到比较准确的、以真北为标准的真实方位数据。其系统结构如图1所示,其中基于EVC4平台的多线程应用程序流程结构如图2所示。 2 硬件设计 本装置在设计上,选择S3C2440作为主控制器构成硬件平台,利用其丰富的外部接口和高速处理能力,达到实时采集数
[单片机]
<font color='red'>ARM</font>9的快速对星装置原理及设计实现
基于ARM的扩散/氧化控制系统的设计
    随着信息化、智能化、网络化的发展,嵌入式系统得到了前所未有的发展。由于嵌入式系统具有体积小、性能强、可靠性高等特点,目前广泛应用于工业控制、控制仪表、通信等各个领域。扩散/氧化控制系统是为扩散氧化炉设计的控制系统。扩散/氧化炉是集成电路制造的重要的工艺设备之一。本系统主要由高精度的温度控制系统、推拉舟控制系统、气路控制系统组成。本系统为扩散/氧化炉提供高精度的扩散氧化环境,以生产出高质量的半导体产品。    本文采用的是ARM处理器S3C2440,它具有工作频率高、片上资源丰富等特点,可以良好地应用于本系统。且系统设计中移植了嵌入式WinCE,使得控制系统具有实时性强、编程方便、可扩展性强等特点。 1 扩散/氧化控
[嵌入式]
采用ARM芯片和LINUX嵌入式系统实现自主避障机器鱼的设计
随着科技的发展与进步,出现了具有特殊功能的智能机器,如索尼公司生产的能够以自我“意识”来“感觉”“学习”和“饲养”的宠物机器狗,以弗吉尼亚理工大学研制的CHARLI-L1机器人为基础进行升级改造的SAFFIR的消防机器人等。机器鱼作为一项比较新的产品,涉及到机器鱼的智能开发并不深,因此机器鱼的智能化程度并不高,但随着机器鱼研究的加深,相信机器鱼的智能度会大大提高,功能也会更趋完善。目前的机器鱼类型主要有遥控机器鱼和语音控制机器鱼,例如曾在德国汉诺威电子展上展现的通过机器鱼体内收缩来提供动力的遥控式机器鱼和在西南民族大学诞生的国内首个的声控机器鱼等。 据调查显示同内涉及到具有自主避障与自主视觉功能的智能机器鱼的研究与开发并不多。
[单片机]
采用<font color='red'>ARM</font>芯片和LINUX嵌入式系统实现自主避障机器鱼的设计
痞子衡嵌入式:ARM Cortex-M文件那些事(1)- 源文件(.c/.h/.s)
  众所周知,嵌入式开发属于偏底层的开发,主要编程语言是C和汇编。所以本文要讲的source文件主要指的就是c文件和汇编文件。   尽管在平常开发中,我们都只会关注自己创建的.c/.h/.s源文件,但实际上我们不知不觉中也跟很多不是我们创建的源文件在打交道,那么问题来了,一个完整的嵌入式工程(以基于ARM Cortex-M控制器的工程为例)到底会包含哪些source文件呢?   现在就到了痞子衡的show time了,痞子衡将这些文件按来源分为五类十种,下面痞子衡按类别逐一分析这些文件: 第一类:Provided by Committee   第一类文件由C标准委员会提供,该类文件伴随着标准的发布而逐渐壮大。该类文件主
[单片机]
ARM落地深圳,中国自主芯片的春天来了
  5月14日,一件传言很久的大新闻终于尘埃落定:一家主导了世界上几乎所有芯片架构的公司要落户中国了。这家公司就是ARM,它将和厚安创新基金合资成立公司,然后提供芯片设计所需的知识产权、技术支持和培训。       ARM可以说是承包了地球上几乎所有的芯片架构,不管是你的手机还是kindle、系统是iOS还是Android。这样一家公司如今进入了中国这个芯片消费大国,中国的芯片厂商很开心,而芯片霸主高通可能此时正哭晕在厕所。    目前,绝大部分手机处理器架构都基于ARM架构,不论是高通、三星、华为,但ARM不亲手去做芯片,而是通过对外开放授权的方式,出售说明书,厂商自己设计生产。你可以把ARM的架构理解为一份秘制基础菜谱,它
[半导体设计/制造]
<font color='red'>ARM</font>落地深圳,中国自主芯片的春天来了
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能
IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能 瑞典乌普萨拉,2024年2月20日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR宣布 :推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强了IAR支持开发人员创建安全、可靠和符合标准的嵌入式应用程序的承诺,涵盖了汽车、医疗设备、工业自动化和消费电子等多个行业。该版本中最重要的新功能是经过认证的C-STAT,这是专为安全关键应用程序设计的静态代码分析工具。 IAR Embedded Workbench for Ar
[嵌入式]
IAR推出新版IAR Embedded Workbench for <font color='red'>Arm</font>功能安全版,该版本配备经过认证的静态代码分析功能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved