单片机物联网升级方案

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

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

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

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

BootLoader
 app
在这里插入图片描述

**跳转程序,校验栈顶指针,正确则跳转程序**
			/* 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)
{
}
}

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值