电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>可编程逻辑>Cortex-M3(M0)汇编-启动代码分析资料下载

Cortex-M3(M0)汇编-启动代码分析资料下载

2021-04-13 | pdf | 98.27KB | 次下载 | 免费

资料介绍

;先在RAM 中分配系统使用的栈,RAM 的起始地址为0x2000_0000 ;然后在RAM 中分配变量使用的堆 ;然后在CODE 区(flash)分配中断向量表,flash 的起始地址为0x0800_0000,该中断向量表就从这个起始地址开始分配 ;分配完成后,再定义和实现相应的中断函数, ;所有的中断函数全部带有[weak]特性,即弱定义,如果编译器发现在别处文件中定义了同名函数,在链接时用别处的地址进行链接。 ;中断函数仅仅实现了Reset_Handler,其他要么是死循环,要么仅仅定义了函数名称 ;STM32 被设置为从内部FLASH 启动时(这也是最常见的一种情况),当STM32 遇到复位信号后,CPU-M3 会自动 ;从0x0800_0000 处取出栈顶地址存放于MSP 寄存器,从0x0800_0004 处取出复位中断服务入口地址放入PC 寄存器, ;继而执行复位中断服务程序Reset_Handler, ;Reset_Handler 仅仅执行了两个函数调用,一个是SystemInit,另一个__main, ;SystemInit 定义在system_stm32f10x.c 中, 主要初始化了STM 的时钟系统:HSI,HSE,LSI,LSE,PLL,SYSCLK,USBCLK,APECLK 等等. ;__main 函数由编译器生成,负责初始化栈、堆等,并在最后跳转到用户自定义的main()函数,来到C 的世界。 Stack_Size EQU 0x00000400 ;//定义堆栈大小 AREA STACK, NOINIT, READWRITE, ALIGN=3 ;//定义一个数据段 按8 字节对齐;AREA 伪指令用于定义一个代码段或数据段NOINIT:指定此数据段仅仅保留了内存单元,而没有将各初始值写入内存单元,或者将各个内存单元值初始化为0 Stack_Mem SPACE Stack_Size ;//保留Stack_Size 大小的堆栈空间来分配连续 Stack_Size 字节的存储单元并初始化为0 __initial_sp ;//标号,代表堆栈顶部地址,后面有用, //此标号有一层隐含的意思那就是在M3 中堆栈是满递减堆栈, ; //因为它指定了堆栈指针位于堆栈的高地址(在//Stack_Mem 之后) ; Heap Configuration ; Heap Size (in Bytes) ; Heap_Size EQU 0x00000200 ;//定义堆空间大小 AREA HEAP, NOINIT, READWRITE, ALIGN=3 ;//定义一个数据段, 8 字节对齐 __heap_base ;//标号,代表堆末底部地址,后面有用 Heap_Mem SPACE Heap_Size ;//保留Heap_Size 的堆空间 __heap_limit ;//标号,代表堆界限地址,后面有用 ;PRESERVE8 指令指定当前文件保持堆栈八字节对齐。它设置PRES8 编译属性以通 知链接器。 ;链接器检查要求堆栈八字节对齐的任何代码是否仅由保持堆栈八字节对齐的代码直接 或间接地调用。 PRESERVE8 ;//指示编译器8 字节对齐 THUMB ;//指示编译器以后的指令为THUMB 指令 ;中断向量表定义, 在MDK 生成的分散加载文件中,RESET 被设置在flash 的0 地址处,这 样就规定了向量表的地址。 ; Vector Table Mapped to Address 0 at Reset AREA RESET, DATA, READONLY ;//定义只读数据段,其实放在 CODE 区,位于0 地址 EXPORT __Vectors ;EXPORT:在程序中声明一个全局的标号__Vectors,该标号可在其他的文件中引用 EXPORT __Vectors_End EXPORT __Vectors_Size __Vectors DCD __initial_sp ; Top of Stack ;给__initial_sp 分配 4 字节32 位的地址0x0 DCD Reset_Handler ; Reset Handler ; 给标号Reset Handler 分配地址为0x00000004 DCD NMI_Handler ; NMI Handler ; 给标号NMI Handler 分配地址0x00000008 DCD HardFault_Handler ; Hard Fault Handler DCD MemManage_Handler ; MPU Fault Handler DCD BusFault_Handler ; Bus Fault Handler
下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1491次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  95次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  11次下载  |  免费
  11. 6100W短波放大电路图
  12. 0.05 MB  |  4次下载  |  3 积分
  13. 7基于单片机和 SG3525的程控开关电源设计
  14. 0.23 MB  |  4次下载  |  免费
  15. 8基于AT89C2051/4051单片机编程器的实验
  16. 0.11 MB  |  4次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537793次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费