本文解析一下如何通过STM32通过串口升级。
1,stm32的bootloader,网上有很多例程,官网也有。文章最后我也会附上源代码链接。
开发环境keil.
设置地址如下:
这里需要一个按键(根据自己使用的开发板调整)
STM_EVAL_PBInit();//按键初始化
if(STM_EVAL_PBGetState()) //判断按键是否进入bootloader.
......
Main_Menu ();//这部分主要是bootloader升级部分,要重点细看
......
/* 这里是跳转到应用程序部分*/
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
/* Jump to user application */
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
......
2,找一个支持Ymodem的串口工具,这个很重要。有很多都不能升级,然后我去secureCRT官网下载了个试用版本就可以IAP了。
Download - SecureCRT (vandyke.com)https://www.vandyke.com/download/securecrt/6.7/index.html
具体步骤不过多赘述了,有提示很简单的。
3,应用程序设置
设置地址如下:
int main (void)
{
NVIC_SetVectorTable( NVIC_VectTab_FLASH,0x3000);//设置向量表的位置和偏移
......
}
需要生成bin文件
fromelf --bin -o "$L@L.bin" "#L"
下一次解析Ymodem协议,想真正把bootloader为自己所用这个协议就得好好分析一下。
bootloader 源代码:
https://github.com/JohnLiu-cloud/STM32-IAP.githttps://github.com/JohnLiu-cloud/STM32-IAP.git