4400|7

12

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

嵌入式程序的入口不是main而是——复位 [复制链接]

      提问做嵌入式系统开发的同志们一个问题,程序开始执行的地方是main()函数吗?大学里我的老师都是这么说的,程序的入口就是main函数还有很多参考书也这么说,于是乎在这种main来main去的日子里写着代码——有一天突然停下啦思考了一下,豁然开朗,原来所有芯片的入口地址是PC指针在上电后的第一个值,也就是——复位!
       没想到这么多年被一些人和书给误导了,机器就是机器它总是有起始位置的,那个位置就是上电那一刻的复位。
      为了帮助大家理解,下边我举几个例子,比如MSP430系列的单片机,复位后的PC地址一般是0xFF这是8位地址的,还有16位地址的0xFFFE;
32位地址的0xFFFFFFFC,这些是与地址相关系的所以大家可以通过思考更清楚一下复位地址与地址位数的关系;
      通过复位后,要经过启动文件,启动文件一般使用汇编编写,通过一些设置堆栈和中断等最后引导至我们所说的main函数,NND绕了一大圈,害得他爷爷我思考了半个多世纪!MSP430F149的启动文件在IAR环境中可以看到lnk430f149.xcl引入到main函数的入口,philip的LPC21xx用的启动文件是Startup.s,stm32F10x系列的大家更熟悉了用到的是startup_stm32f10x_ld.s;startup_stm32f10x_md.s;startup_stm32f10x_hd.s中的一个。
      好了这次先写到这里,领导这里走来走去的,一会还要开会——妈了个巴子的——就是没时间呀,苦逼的嵌入式开发!时间、时间、时间,不是道什么时候才有呀……
      有前辈、高手或者嵌入式开发的爱好者可以加我的QQ:744148994,大家一起讨论,一起研究!

495f98ca3fbffb9fc91768b6.jpg.jpg (134.13 KB, 下载次数: 0)

复位

复位
此帖出自NXP MCU论坛

最新回复

main是程序入口都是谭浩强教的吧,入口应该是启动文件,那个用汇编写的东西,可能一般都不关心  详情 回复 发表于 2017-12-28 21:22
点赞 关注
 

回复
举报

12

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
广告做的挺好啊,我帮你修正一下:
嵌入式程序的入口不是main而是——复位中断向量

main只是C语言程序的入口,程序的入口肯定不是main,不管是不是嵌入式
此帖出自NXP MCU论坛
 
 
 

回复

6069

帖子

4

TA的资源

版主

板凳
 
复位中断向量地址
此帖出自NXP MCU论坛
 
 
 

回复

2146

帖子

8

TA的资源

五彩晶圆(初级)

4
 
其实简单的8051在keil  c51环境下,加入的startup.a51也是类似的功能,初始化了一些堆栈等操作,最后调用了main。当然也可以不要startup.a51,但可能会出现某些异常的问题。

查看汇编代码,一步一步运行也能看到,并不是一开始就调用main的。
实践出真知
此帖出自NXP MCU论坛
 
个人签名坐而言不如起而行
 
 

回复

113

帖子

0

TA的资源

一粒金砂(中级)

5
 
如果是科普也沒有什麽,打廣告的話,需要把問題說清楚。

不管什麽程序都有入口地址的概念,這個才是程序的運行起點。
系統級的應用會被操作系統加載到入口地址處開始執行。
而沒有系統的MCU的軟件,入口地址受廠商的控制,ARM是從000H開始來執行的。

stm32的startup_stm32f10x_md.s文件寫的很清楚:
This module performs:
       - Set the initial SP
       - Set the initial PC == Reset_Handler  //你指的是這個位置?
       - Set the vector table entries with the exceptions ISR
       - Branches to __main in the C library
此帖出自NXP MCU论坛
 
 
 

回复

424

帖子

7

TA的资源

一粒金砂(高级)

6
 
main函数是c语言定义的入口。
它只是人为取名的,你在BootLoader中把它命名改为a,b都可以。反正要进入c语言编写的程序都要有一个入口地址,这地址叫main则是大家公认的
此帖出自NXP MCU论坛
 
 
 

回复

110

帖子

0

TA的资源

一粒金砂(中级)

7
 
我理解的main函数相当于应用层的入口
此帖出自NXP MCU论坛
 
 
 

回复

6423

帖子

16

TA的资源

版主

8
 
main是程序入口都是谭浩强教的吧,入口应该是启动文件,那个用汇编写的东西,可能一般都不关心
此帖出自NXP MCU论坛
 
个人签名training
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表