历史上的今天
今天是:2025年08月19日(星期二)
2018年08月19日 | STM32单片机中FLASH空间的分配之bootloader
2018-08-19 来源:eefocus
根据程序运行流程:
正常的程序启动流程:从FLASH启动时,首先从闪存的物理地址入口0x08000000进入,然后是复位中断跳转到复位中断服务程序;复位中断服务程序执行完成后,再跳转到main函数入口,main函数一般为死循环;当外部中断发生时,跳转到中断向量查找表,通过查找表找到对应的中断服务程序地址,跳转到对应的中断服务程序;中断服务程序结束后再次跳转到main函数,这样不断的循环,这是我们的应用程序段;
当需要进行系统升级的时候,则需要在这个过程中添加一个bootloader程序段;
那么bootloader程序段存在什么位置呢?
一般是低地址区域存放bootloader程序段,紧接着的高地址区域存放应用程序段;
那么bootloader大小多少合适呢?
首先计算bootloader程序的大小,然后根据该大小设置区域;
设置为多少呢?如何设置bootloader程序的区域?
比如当bootloader程序的大小为40K,我们设置的区域为64KB,这样是作了一定预留的,预留空间根据个人喜好设定;
因为理论上要求应用程序的起始地址必须在BootLoader之后,且偏移必须是0x200的整数(详情参见http://www.openedv.com/posts/list/392.htm);
本实例是基于Keil,设置bootloader和应用程序区域具体如下,
实际上该图中的参数本身设置是对应用程序FLASH空间的设置,但其中也暗含了对bootloader空间区域的设置;
bootloader的空间为0x08000000~0x08010000即0x10000,换算10进制为65536B,除以1024即为64KB,预留的bootloader空间为64KB;
应用程序的空间大小实际为0xF0000,换算成10进制983040B,除以1024即为960kB,那么预留给应用程序的空间为960KB;
史海拾趣
|
遇到 VXworks 下 Intel 82541千兆网卡驱动的问题 在VXWORKS5.5下调试82541的网卡驱动,一开始VXWORKS加载时提示CHECK CAPBLE CONNECTION ! 如何修改了MIILIB.C中的MIIAUTONEGSTART与MIIAUTOPHYINIT函数? 就可以正常启动也可以PING通了,FTP也可以连上,但是无法通过FTP传输文件.请 ...… 查看全部问答> |
|
rom boot loader在wince 5.0的应用问题? 有人实现过rom boot loader吗? 我用的板子是研华的pcm3370 有谁能告知,rom boot loader怎么烧写到开发板上的? 它的程序与硬件相关,怎么改?   ...… 查看全部问答> |
|
请教大家, 泰文中, 由于主导字符是单独的一个字符, 随从字符也是单独的一个字符, 结加后如何显示.使用自造字吗?或者是GB18030字符集已经有了组合后的编码.… 查看全部问答> |
|
新手 spi和一块射频芯片通信 不知道该怎么解决了 希望论坛上的高手能够帮帮忙 1、我的初始化程序 //时钟 CLK_ICKR = (1 << HSIEN);//HSI ENABLE; while((CLK_ICKR & 0X02) == 0);//WAITE FOR HSI STEABLE CLK_CKDIVR = 0X10;//HS ...… 查看全部问答> |




