完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
串口Bootloader两个问题:
1.APP和Bootloader中对于串口的初始化以及中断处理函数的定义是否需要保持一致,特别是有关接收和发送的缓冲区? 2.Bootloader中定义的变量和申请的内存,在Bootloader运行结束,进入APP程序之后是否还存在,并且依旧占据着内存空间? |
|
相关推荐
3个回答
|
|
|
通常,我们做IAP设计时使用 两个相对 独立的工程,分别是BOOTLOADER和APPLICATION区。
前者重点是接收固件代码、完成Flash编程。后者通常是实际的用户功能性应用程序代码。 显然,很多外设,比方UART/TIMER/GPIO以及核外设NVIC,可能在BOOT区和APP区都会用到。 但各用各的,配置及初始化也是根据当前工程需要具体配置,外设配置、变量定义跟在另外一个运行区没有关联。 具体点说,即使同一个UART,BOOT区可以配置8bit 115200,APP区可以配置为7位 9600。两个代码区的UART收发 缓冲定义其实也是各自定义、各不相干。 一般来讲,中断矢量表位置也是各定义各的。即不同代码区的中断矢量入口地址都是相互独立的。以UART中断服务程序为例, 即使服务程序代码一样,发生中断事件时,中断服务程序的入口是不一样 的。其中,Cortex-M0核芯片稍微特殊点,另当别论。 Bootloader中的全局变量和静态变量在跳转到APP后不再有效,因为APP会重新初始化自己的全局变量和静态变量。反之亦然。 不过,如果说在当前代码区使用了动态内存分配(例如malloc),跳转到另一代码区后,这些内存估计仍然占据着内存 空间,我们可以在跳转前先行释放这些内存。 |
|
|
|
|
|
APP和Bootloader中对于串口的初始化以及中断处理函数的定义通常需要保持一致。
在Bootloader运行结束后,进入APP程序之前,通常会进行一次内存的重新分配。这意味着Bootloader中定义的变量和申请的内存在APP启动后通常不会继续存在,除非APP明确地保留了这些变量或内存区域。 |
|
|
|
|
|
关于STM32串口Bootloader的两个问题,以下是详细的解答: 1. APP和Bootloader中对于串口的初始化以及中断处理函数的定义是否需要保持一致,特别是有关接收和发送的缓冲区?在STM32的Bootloader和APP程序中,串口的初始化和中断处理函数的定义不一定需要完全一致,但需要确保以下几点:
2. Bootloader中定义的变量和申请的内存,在Bootloader运行结束,进入APP程序之后是否还存在,并且依旧占据着内存空间?在Bootloader中定义的变量和申请的内存,在Bootloader运行结束并跳转到APP程序后,不会自动释放,它们仍然占据着内存空间。具体原因如下:
总结:
希望这些解答对你有帮助! |
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1453 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1502 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3649 浏览 1 评论
3842 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2461 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
727浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
661浏览 5评论
710浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
940浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
745浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 21:29 , Processed in 0.502628 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1239