STM32F4xx 自举模式讲解---- 2020.4.23

知识点:

在这里插入图片描述
//借助总线矩阵,可以实现主控总线到被控总线的访问,这样即使在多个高速外设同时运行期间,系统也可以实现并发访问和高效运行。
//也就相当于区域1是可以通过如上图所示的方阵来访问区域二的数据,并且可以在其对应的空间中进行相应的操作。
//举个例子:I总线只能通过如上图所示的总线矩阵来访问FLASH、FSMC。

2.存储器结构:程序存储器、数据存储器、寄存器和 I/O 端口排列在同一个顺序的 4 GB 地址空间内。总的空间大小只有4GB,只是在使用各种外设时将这4GB的空间合理分配了。

3.存储器采用固定的存储器映射,代码区域起始地址为 0x0000 0000(通过 ICode/DCode 总 线访问),而数据区域起始地址为 0x2000 0000(通过系统总线访问)。Cortex™-M4F CPU 始终通过 ICode 总线获取复位向量,这意味着只有代码区域(通常为 Flash)可以提供 自举空间。STM32F4xx 微控制器实施一种特殊机制,可以从其它存储器(如内部 SRAM)进行自举。
对第三点解析如下:
//因为我们在学习硬件电路的时候可能都接触过自举电路,从字面意思就很容易看出,自举就是自己将自己举起来,由于代码区域起始地址为 0x0000 0000,这个地址已经在芯片出厂之前就被写好了,用户是不能修改的,又因为从总线矩阵图中得知,I总线只能访问FLASH、FSMC,所以这意味着只有代码区域(通常为 Flash)可以提供自举空间。之后程序会跳转到从ICode 总线获取的复位向量(指明程序下一个执行的位置),然后自举程序会跳转到自举程序的地方。由此可知,自举程序的功能主要是两个,一个是给flash和sram分配地址,也就是上面说的0x0000 0000和0x2000 0000,另一个重要功能就是引导执行应用程序,也就是main()函数。

4.在 STM32F4xx 中,可通过 BOOT[1:0] 引脚选择三种不同的自举模式
在这里插入图片描述//器件退出待机模式时,还会对 BOOT 引脚重新采样。因此,当器件处于待机模式时,这些引 脚必须保持所需的自举模式配置。这样的启动延迟结束后,CPU 将从地址 0x0000 0000 获取栈顶值,然后从始于 0x0000 0004 的自举存储器开始执行代码。
//这就是自举程序的作用!!!

5.嵌入式自举程序模式用于通过以下串行接口重新编程 Flash:
在这里插入图片描述6.选择自举引脚后,应用程序软件可以将某些存储器设定为从代码空间进行访问(这样,可通过ICode 总线而非系统总线执行代码)。
在这里插入图片描述在这里插入图片描述对应程序是这样编写的(位置:stm32f4xx.h)
在这里插入图片描述好了,以上就是我对STM32F4xx 自举模式的理解,可能会有理解不对的地方,如果有,希望大家批评指正,谢谢!!!

原创文章 44 获赞 88 访问量 8902

猜你喜欢

转载自blog.csdn.net/qq_40544107/article/details/105720106