插画师个人网站是怎么做的wordpress博客备份
插画师个人网站是怎么做的,wordpress博客备份,成都网站建设找重庆最佳科技,中国建设银行个人网上登录入口最近做了IAP U盘升级模块开发#xff0c;总结下IAP基本开发流程#xff0c;不深入讨论原理。 详细原理参考 首先需要知道我们需要把之前的APP区域拆一块出来做BOOT升级程序区域。 以STM32F103为例#xff0c;0x08000000到0x0807FFFF为FLASH空间#xff0c;即上图代码区域…最近做了IAP U盘升级模块开发总结下IAP基本开发流程不深入讨论原理。 详细原理参考 首先需要知道我们需要把之前的APP区域拆一块出来做BOOT升级程序区域。 以STM32F103为例0x08000000到0x0807FFFF为FLASH空间即上图代码区域。那么可以以此划分APP区域和BOOT区域
而具体怎么划分可以用JLINK读取当前芯片BOOT程序占用了多少空间比如占用了0x8960字节后面都是FF 即 空。
那么我们可以给BOOT划分0x08000000~0x0800C000的地址空间(方便举例可以不用余这么多) 这里好像需要注意得是4的整数倍 部分芯片如LPC177X会涉及到扇区与地址对应但思路是一样的参考这篇 这里用了1K即0x400做校验地址空间0X0800C000~0X0800C3FF但这不是必须的,也可以不要
#define APP_START_ADDR 0x0800C400UL //业务程序起始地址
#define APP_END_ADDR 0x0807FFFFUL //业务程序结束地址
#define CRC_SAVE_START_ADD 0X0800C000UL //CRC程序校验码存放开始地址
#define CRC_SAVE_END_ADD 0X0800C3FFL //CRC程序校验码存放结束地址共1k现在0x08000000~0x0800C000放boot 0X0800C000~0X0800C3FF放校验 那么剩下的都可以做APP空间啦
0X0800C400~0X0807FFFF爽用注意ROM右边是SIZE不是截止地址这个做个十六进制减法就好了。 那么地址配置现在做完了接下来就是跳转。
由BOOT跳转到APP区域有以下两个即可jumpToApp是在main里跳如果用了Freertos在任务中跳就用jumpToAppInTask
void jumpToApp(uint32_t appBaseAddr)
{void (*firmwareFunc)(void);uint32_t fwStackVal *((uint32_t *)(appBaseAddr)); /* the first word is for the stack pointer. */uint32_t fwEntryVal *((uint32_t *)(appBaseAddr4U)); /* the second works is for the boot function. */firmwareFunc (void (*)(void))fwEntryVal;SCB-VTOR appBaseAddr; /* The stack address is also the start address of vector. */__set_MSP(fwStackVal);__set_PSP(fwStackVal);firmwareFunc();
}
void jumpToAppInTask(uint32_t appBaseAddr)
{void (*firmwareFunc)(void);SysTick-CTRL 0X00;//禁止SysTickSysTick-LOAD 0;SysTick-VAL 0;__disable_irq();uint32_t fwStackVal *((uint32_t *)(appBaseAddr)); /* the first word is for the stack pointer. */uint32_t fwEntryVal *((uint32_t *)(appBaseAddr4U)); /* the second works is for the boot function. */firmwareFunc (void (*)(void))fwEntryVal;SCB-VTOR appBaseAddr; /* The stack address is also the start address of vector. */__set_MSP(fwStackVal);__set_PSP(fwStackVal);firmwareFunc();
}
需要注意在APP main开头加上SCB-VTOR APP_START_ADDR;以保证正确跳转 APP跳BOOT只需要NVIC_SystemReset();即可 跳转逻辑可以参考
地址配置跳转都完成后就是升级数据接收Flash擦除与写入了 主要逻辑是在BOOT程序中擦除APP空间的FLASH,然后再可以1K 1K的写入当然擦1K写1K也可以
具体接收逻辑就自己定义就可以了比如收一包回一包加序号都可以的
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89599.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!