- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在main()之前,IAR都做了啥
在main()之前,IAR都做了啥 [原创]在main()之前,IAR都做了啥? 收藏 最近要在Cortex-M3上写一个简单的操作系统,打算使用IAR,为了写好启动代码,花了一些时间了解了IAR在main()以前做了些什么事。 首先系统复位时,Cortex-M3从代码区偏移0获取栈顶地址,用来初始化MSP寄存器的值。 接下来从代码区偏移0取第一个指令的跳转地址。这些地址,是CM3要求放置中断向量表的地方。 这里是一个程序的启动区的反汇编: __vector_table: 2600 2000 7E1D 0800 这个程序是由IAP程序来启动的,IAP程序获取0的MSP值(0,并设置为MSP的值,即主堆栈最大范围是00x200025FF。接下来IAP程序获取0的Reset_Handler的地址 (0x08007E1D),并跳转到Reset_Handler()执行。 IAP在这里完全是模仿了Cortex-M3的复位序列,也就是说,在没有IAP的系统上,CM3只能从0取MSP,从 0取第一条指令所处地址。而IAP就存在在0个地址上,IAP的启动,已经消耗掉了这个复位序列,所以 IAP要启动UserApp程序的时候,也是完全模仿Cortex-M3的复位序列的。 接下来我们看看复位后第一句指令——Reset_Handler()函数里有什么。 若我们使用的是ST公司标准外设库,那么已经有了现成的Reset_Handler,不过他是弱定义——PUBWEAK,可以被我们重写的同名函数覆盖。一般来说,我们使用的都是ST提供的Reset_Handler,在V3.4版本的库中,可以在startup_stm32f10x_xx.s中找到这个函数: PUBWEAK Reset_Handler SECTION .text:CODE:REORDER(2) Reset_Handler LDR R0, =SystemInit BLX R0 LDR R0, =__iar_program_start BX R0 看来ST没有做太多的事,他只调用了自家库提供的SystemInit函数进行系统时钟、Flash读取的初始化,并把大权交给了 __iar_program_start这个IAR提供的“内部函数”了,我们就跟紧这个__iar_program_start跳转,看看IAR做了什么,上面一段代码的反汇编如下: Reset_Handler: __iar_section$$root: 08007E1C 4801 LDR R0, [PC, #0x4]; LDR R0, =SystemInit 08007E1E 4780 BLX R0;BLX R0 08007E20 4801 LDR R0, [PC, #0x4];LDR R0, =__iar_program_start 08007E22 4700 BX R0;BX R0 08007E24 6C69 08007E26 0800 08007E28 7D8D 08007E2A 0800 细心的观众会发现地址是0x08007E1C,比我们查到的0x08007E1D差了1,这是ARM家族的遗留问题,因为ARM处理器的指令至少是半字对齐的(16位THUMB指令集 or 32位ARM指令集),所以PC指针的LSB是常为0的,为了充分利用寄存器,ARM公司给PC的LSB了一个重要的使命,那就是在执行分支跳转时,PC 的LSB=1,表示使用THUMB模式,LSB=0,表示使用ARM模式,但在必威体育精装版的Cortex-M3内核上,只使用了THUMB-2指令集挑大梁,所以这一位要常保持1,所以我们查到的地址是0x08007E1D(C=1100,D=1101),放心,我们的CM3内核会忽略掉LSB(除非为0,那么会引起一个fault),从而正确跳转到0x08007E1C。 从0x08007E20处的加载指令,我们可以算出__iar_program_start所处
您可能关注的文档
- 剧情片悬疑片惊悚片推荐.doc
- 动员机制与现代化建设.doc
- 动态规划入门25.doc
- 劳动者权益保障折射“企业培训以人为本”法律体系.doc
- 劳资谈判破裂 美国数万通用员工全国大罢工.doc
- 勇气传说.doc
- 包含-"剑"-字的成语.doc
- 包含-"南"-字的成语.doc
- 包含-"孤"-字的成语.doc
- 包含-"腹"-字的成语.doc
- 【虾皮】2025年第4季度女装品类选品参考报告(下).pdf
- 2025企业创新前沿趋势报告+Enterprise+Innovation+Futures+Report+2025.pdf
- 南京顶豪长江万里大平层项目整体思考方案.pdf
- 2025年AI时代公关白皮书.pdf
- 2025智慧工厂智能制造解决方案-门窗生产.pdf
- AI时代投资机构的核心应用场景与趋势洞察 Top Al Use Cases for Investment Firms.pdf
- 2025保险和化学、生物、放射和核风险报告 Insurance and Chemical, Biological, Radiological, and Nuclear Risks.pdf
- 高盛-特斯拉在美国推出Model 3和Y的标准版,并发布FSD V14 Tesla Inc. (TSLA) Tesla unveils Standard variants of Models 3 and Y in the US, and releases FSD V14-20251007【10页】.pdf
- 2025生成式AI对人才、技术与人力资本的影响研究报告 The Impact of Generative AI on Talent, Technology, and Human Capital.pdf
- 埃森哲 -定制狂热经典 普拉达抓住个性化的力量 Customizing a cult classic - Prada seizes on the power of personalization.pdf
最近下载
- 2025年黑龙江省大庆市中考数学试卷真题(含答案详解).docx
- 6.2交友的智慧(教学课件)道德与法治统编版2025七年级上册.pptx
- 苏教版 小学数学六年级上册全册教案 第一学期全套教学设计.doc VIP
- Shimano禧玛诺渔具 电动轮PLEMIO 3000(03424)说明书.pdf
- 2025年国考白皮书.pdf VIP
- 病例书写规范.ppt VIP
- 变压器试验技术.ppt VIP
- DB34T 5128-2025健康体检机构 体检服务质量控制规范.docx VIP
- 庆祝新疆维吾尔自治区成立70周年讲话精神.ppt VIP
- 一种蛋白磷酸酶OsPP74在提高水稻磷吸收中的应用.pdf VIP
文档评论(0)