大家好,我是程序小羊,因为最近需要用到Bootloader,所以我打算用STM32这块板子学习一下Bootloader, 众所周知,STM32的学习资料是很多的,所以我整理了一下我的学习过程,后续我的打算是这样的,我打算画一块中间板出来,具体思路如下草图:
接下来,我们先大概学习一下BootLoader吧:
一般情况下,STM32内部程序执行过程如下所示:
对于没有BootLoader的程序,STM32内部闪存(FLASH)地址起始于0x8000000,一般情况下,程序文件就从此地址写入。0x8000004开始存放中断向量表,当中断来临时,STM32的内部硬件机制亦会自动将PC指针定位到中断向量表位置,并且根据中断源取出对应的中断向量执行中断服务程序。
对于有BootLoader的程序,如下图:
为了能看懂,我将上图简化为下图所示:通过串口或者CAN等将APP程序包进行接收,将APP程序写到某一个区域,写完后需要进行跳转。
了解完后,我们来学习一下代码,代码我注释写的很清楚,大家可以看一看。首先是BootLoader里面的串口函数