资产跟踪设备开发中关于Bootloader实际方案设计
Posted 瑞奇Ricky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资产跟踪设备开发中关于Bootloader实际方案设计相关的知识,希望对你有一定的参考价值。
随着物联网的发展,企业开始尝试将物联网设备与资产保护目的相结合,在此背景下,资产跟踪设备为众多企业资产实时监测的方式提供了新思路。资产跟踪设备致力于为用户提供资产安全保障,其主要功能是帮助用户实时更新资产状况,保障资产安全。近期笔者在最近的资产跟踪解决方案项目中收到了关于bootloader实际方案设计的问题。
bootloader主要是通过串口升级设备的APP程序。这里使用的MCU主要是stm32f103cbt6(ROM128k,RAM20k),由于APP空间在60-70k左右,受限制于存储采用1个BL和1个APP的设计方案。BL主要用来执行APP的升级和APP跳转。流程如下:
//APP的升级
//appxaddr:应用程序的起始地址
//appbuf:应用程序CODE.
//appsize:应用程序大小(字节).
void iap_write_appbin(u32 appxaddr,u8 appbuf,u32 appsize)
{
u16 t;
u16 i=0;
u16 temp;
u32 fwaddr=appxaddr;//当前写入的地址
u8 dfu=appbuf;
u16 iapbuf[1024];
for(t=0;t<appsize;t+=2)
{
temp=(u16)dfu[1]<<8;
temp+=(u16)dfu[0];
dfu+=2;//偏移2个字节
iapbuf[i++]=temp;
if(i==1024)
{
i=0;
WriteAppToFlash(fwaddr,iapbuf,1024);
fwaddr+=2048;//偏移2048 16=28.所以要乘以2.
}
}
if(i)
WriteAppToFlash(fwaddr,iapbuf,i);//将最后的一些内容字节写进去.
}
//跳转到应用程序段
//appxaddr:用户代码起始地址.
void iap_load_app(u32 appxaddr)
{
iapfun jump2app;
if((((vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法.
{
jump2app=(iapfun)(vu32)(appxaddr+4);
MSR_MSP((vu32)appxaddr);
jump2app(); //跳转到APP.
}
}
Bootloader实际方案设计的妥善解决对于资产监测设备的使用具有重要意义。专业从事资产监测设备开发的通信公司,开发的资产监测设备中的实时定位、异常报警、状态监测等功能帮助众多企业解决了资产在移动或存储过程中的安全保障问题,受到了市场的广泛认可。
任何企业想要长期在一个行业发展下去还需要跟随时代趋势,不断更新解决问题的方式。作为物联网资产跟踪设备的开发公司,应当立足于用户的需求,无论是在Bootloader实际方案设计过程中还是其他问题,以帮助客户更快,更好的发展为目标。
以上是关于资产跟踪设备开发中关于Bootloader实际方案设计的主要内容,如果未能解决你的问题,请参考以下文章