OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5939|回复: 1

关于boot和引导程序的问题

[复制链接]

3

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-5-3
在线时间
3 小时
发表于 2021-5-15 14:46:35 | 显示全部楼层 |阅读模式
1金钱
本人有一些关于学习boot的理解,希望朋友们给看看是否正确。
boot和bootloader的概念是不同的。boot就是引导(引导某个过程)的意思,而bootloader是专指引导程序下载的意思。不知我的理解是否正确?只有有了引导程序下载的程序,才能向单片机下载程序,而这个程序就是bootloader。通过设置不同的boot模式,也就是引导模式。单片机可以从不同的memory中启动代码。在BOOT0为0的时候,从flash中启动代码。在BOOT0为1,BOOT1为0的时候,从SRAM加载程序,这两个地方的程序就是用户写的程序。而如果想下载程序,就必须是BOOT0为1,BOOT1为0,从系统代码段启动引导下载程序的程序,也就是bootloader。
启动了这个bootloader之后,代码就可以被下载进去,而至于是下载到SRAM或FLASH,就是下载文件或者其他某一些设置做的工作了对吗?不知我的理解对吗?
由此我又产生了两个疑问,第一个是如jlink,stlink等下载器下载程序的时候他是自己完成的对BOOT0拉高和BOOT1设置为0这两个操作的吗?
第二个是,这个bootloader可以引导将程序下载到system memory来重新编写bootloader程序吗,还是bootloader保存在ROM中,用户无法更改,即bootloader不能引导程序覆盖bootloader代码段本身。
如果是这样的话,bootloader程序还有别的办法修改吗?
另外我想问一下,STM32运行中不需要将flash中的代码拷贝到SRAM中运行吗,如果需要的话,这一步是在startup code中执行的吗?



最佳答案

查看完整内容[请看2#楼]

我懂了。BOOT设置只是改变了启动代码的空间,即从FLASH、SRAM或者system memory启动。前两个只是启动你烧录的代码,而启动system memory会加载bootloader,bootloader帮助你利用串口将程序下载到flash当中,下载不到RAM中。在STM32开发板上,虽然是BOOT1:0=0:0,但是软件在烧录代码的时候将BOOT1拉高了,才能启动bootloader下载程序。至于利用仿真器烧录程序是走通讯协议的,和bootloader没关系。bootloader所在的system memory是 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-5-3
在线时间
3 小时
 楼主| 发表于 2021-5-15 14:46:36 | 显示全部楼层
我懂了。BOOT设置只是改变了启动代码的空间,即从FLASH、SRAM或者system memory启动。前两个只是启动你烧录的代码,而启动system memory会加载bootloader,bootloader帮助你利用串口将程序下载到flash当中,下载不到RAM中。在STM32开发板上,虽然是BOOT1:0=0:0,但是软件在烧录代码的时候将BOOT1拉高了,才能启动bootloader下载程序。至于利用仿真器烧录程序是走通讯协议的,和bootloader没关系。bootloader所在的system memory是ROM,不能重新烧写的那种,所以没有办法覆盖这一部分。利用仿真器烧录的时候烧录到RAM还是flash是在烧录相关的文件中设置的。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 21:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表