单片机物联网升级方案

单片机物联网远程升级方案,直接上干货

一般消费级产品,为了性价比,选用的mcu,一般资源很有限,以stm32103c6t6为例 ram 20k rom64k,主要功能实现如下

MCU通过BOOT程序跳转到App主程序。BOOT程序实现引导跳转功能,App实现主程序业务功能。BOOT和App程序均存储在MCU内部Flash里面。

在keil中地址设置例如下图,地址必须连续,boot地址的结束是app程序的起始地址,必须预先规划好程序空间大小,比如boot
0x8000,32768字节,为32k,以此类推。

BootLoader
单片机物联网升级方案_第1张图片app
单片机物联网升级方案_第2张图片

**跳转程序,校验栈顶指针,正确则跳转程序**
			/* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
			if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
			{ 
				/* Jump to user application */
				JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
				Jump_To_Application = (pFunction) JumpAddress;
				
				/* Initialize user application's Stack Pointer */
				__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
				
				/* Jump to application */
				Jump_To_Application();
			}

app中需要设置栈指针
int main(void)
{
SCB->VTOR = FLASH_BASE | 0x4000;
HAL_Init();
while(1)
{
}
}

防止升级错误卡死,上看门即可,按时喂狗…

你可能感兴趣的:(STM32,C语言,单片机,物联网,嵌入式硬件)