你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于 stm32f10x_cl 启动汇编代码的问题

[复制链接]
glzhang 提问时间:2013-11-12 17:57 /
 在 gcc 分支下的 startup_stm32f10x_cl.s 文件中,有几处代码看不懂,向大家请教一下:
 (1)一个是在定义中断向量表项的地方:
.section  .isr_vector,"a",%progbits
  .type  g_pfnVectors, %object
  .size  g_pfnVectors, .-g_pfnVectors



g_pfnVectors:
  .word  _estack
  .word  Reset_Handler
  .word  NMI_Handler
  .word  HardFault_Handler
 其中的 .size 指令中,句点 '.' 表示的当前地址与 g_pfnVectors 标号代表的地址应该是一个地址吧?如果是这样的话、这条指令岂不是设置 g_pfnVectors 对象的大小为 0? 这条指令的作用体现在哪里?
 
(2)在向量表的最后一项:
 .word  BootRAM     /* @0x1E0. This is for boot in RAM mode for 
                         STM32F10x Connectivity line Devices. */
在文件中定义的 BootRAM 值为:.equ  BootRAM, 0xF1E0F85F。向量表的最后一项为什么要放这个值,其作用是什么?
 
收藏 评论2 发布时间:2013-11-12 17:57

举报

2个回答
勒布朗 回答时间:2013-11-29 21:19:00

RE:关于 stm32f10x_cl 启动汇编代码的问题

貌似是RAM启动的意思
wkuang 回答时间:2013-12-1 22:41:40

回复:关于 stm32f10x_cl 启动汇编代码的问题

 (1)一个是在定义中断向量表项的地方:
.section  .isr_vector,"a",%progbits    执行域
  .type  g_pfnVectors, %object
  .size  g_pfnVectors, .-g_pfnVectors



g_pfnVectors:
  .word  _estack
  .word  Reset_Handler
  .word  NMI_Handler
  .word  HardFault_Handler
 其中的 .size 指令中,句点 '.' 表示的当前地址与 g_pfnVectors 标号代表的地址应该是一个地址吧?如果是这样的话、这条指令岂不是设置 g_pfnVectors 对象的大小为 0? 这条指令的作用体现在哪里?
首先明确下ARM的软件编译出来分为:代码段(存在ROM/Flash)和数据段(存在RAM)。 因此程序下载到芯片Flash中,然后在开工的时候从Flash取出来放到RAM中来运行。程序存放的地址叫做加载域,程序执行的地址叫做执行域。ARM通过分散加载文件(scatter)制定加载域和执行域的地址。   你的工程中有一个分散加载文件 .scf   或者类似的文件。 这个文件与汇编文件对应。  你在加载文件中肯定能看到Reset_Handler等。
 
 
 
 
(2)在向量表的最后一项:
 .word  BootRAM     /* @0x1E0. This is for boot in RAM mode for 
                         STM32F10x Connectivity line Devices. */
在文件中定义的 BootRAM 值为:.equ  BootRAM, 0xF1E0F85F。向量表的最后一项为什么要放这个值,其作用是什么?
 
这个也是与分散加载相关。你讲BOOTRAM指定一个地址,代码运行的时候直接跳转到这个地址。 因此需要在加载文件中将代码加载到这个地址。 所谓的BOOTLoad就是用来干这个的。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版