最新要闻
- 展示大学生创新挑战精神, 2023 “共赋未来·创益大会”社会创新大赛总决赛落幕
- 日常营业!李月汝晒自拍视频:怕太显眼又怕看不见
- 361度(01361)拟于9月12日派中期息每股0.065港元
- 新疆青海等地多降水天气
- 尔康制药:柬埔寨工厂发生突发状况 少量污水流入马德望河
- 永辉超市部分调优门店二季度客流环比增加10%
- 遇水易燃物品
- 男子接完诈骗电话卡里多出14万民警:这是骗子帮你贷的款 具体是什么情况?
- 李想:理想汽车目前月产能极限3.4万辆 10月解决瓶颈
- 摄影师用自己照片被告侵权 索赔八万!视觉中国回应:我们有完整的销售权利
- 山东大哥小摊11元能炒3个菜:游客直呼不敢相信
- 眼组词二年级上_眼组词
- 7月全社会用电量同比增长6.5%
- IDC:二季度中国平板电脑市场同比降6.6% 商用市场增长现拐点
- 合肥拟优化公积金政策:买新建居住类绿色建筑最高贷款额度可上浮20%
- 气象部门提醒:新疆、青海等地有暴雨灾害风险
手机

欧洲杯淘汰赛对阵表(欧洲杯淘汰赛对阵规则)

怎样测试两台电脑网络之间的连通性
- 欧洲杯淘汰赛对阵表(欧洲杯淘汰赛对阵规则)
- 怎样测试两台电脑网络之间的连通性
- 网络诚信需共建共治
- WTI:原油探底回升、多头或再次上攻
- 河南南阳南召:三大主导产业加速“聚链成群”
- 德媒:拜仁还没确定门将引援的头号目标,目前正考虑德赫亚、布努
家电
STM32单片机实现固件在线升级(IAP)
(资料图片仅供参考)
固件升级方案综述
单片机的固件升级方式有很多种,1、ICP:In Circuit Programing,简单说就是在单片机开发时使用烧录器升级程序,比如使用J-Link烧录单片机程序。2、ISP:In System Programing,在单片机内部实现了基于通信接口(如串口、I2C、SPI等等)的FLASH引导程序,配合厂家提供的烧录软件工具或自行开发的软件实现程序烧录。3、IAP:In applicating Programing,是指单片机程序开发好之后在运行过程中由外部用户发起的在线升级,这种升级方式一般由用户自行设计升级方案,方案灵活性和自由度较高,在智能家居、汽车电子、物联网设备中常用的OTA(Over The Air)即空中下载技术原理也与之类似。本文以STM32单片机为例介绍了IAP的设计原理。
划分FALSH存储区域
在STM32系列单片机中,程序存储在内部FLASH中,按照不同的单片机型号FLASH大小有所不同,有64KB、128KB、512KB等等。以STM32F407VET6系列单片机为例,内置FLASH大小为512KB,存储地址为0x08000000-0x0807FFFF。单片机每次程序复位时从0x08000000的位置开始执行主程序,如果不做IAP则这512KB空间都可以用来存储用户编写的APP程序。若要实现IAP功能则必须将FLASH空间划分为几个部分,每部分都存储一个可以独立运行的程序文件(可以理解为几个独立的单片机工程):1、引导程序,每次复位时程序默认执行此程序,在接下来的执行过程中可以跳转到用户编写的程序,因此这部分程序是固化在以0x08000000为起始的区域中。在引导程序中可以对电路系统作出一些自检和初始化检查的工作,因此该程序又称为bootloader或boot程序,需要注意的是在设计bootloader时要提前规定好程序空间的大小,比如规定程序存储区域为0x08000000-0x8007FFF,则bootlader程序存储空间为32KB,编写boot程序时要注意这一点2、用户需要升级的新程序,这部分包含了用户的业务代码,复杂的运算逻辑和算法实现均在这一部分完成,称为APP程序,该部分程序一般存储在bootloader区域之后的FLASH中。用一个不是特别恰当的例子类比bootloader和APP:bootloader相当于电脑组装时的BIOS,APP则相当于操作系统,电脑开机时首先运行BIOS,完成后跳转运行到操作系统。3、升级之前的老版APP备份。这部分相当于电脑系统更新前对老系统的备份,一旦在升级过程中发生错误需要还原到备份系统,防止系统升级失败成砖。同样的APP与APP备份将剩余的FLASH平分,以上述booloader为例,APP程序及其备份所占区域为:(512-32)/2=240KB,因此编写的APP程序编译后的占用的FLASH空间不得超过240KB,这一点可以通过查验.map文件确认,对于不同FLASH大小的芯片可以类比以上计算方法确认自己的程序大小上限(在此插入一句,改变编译器的优化等级可以改变最后的程序大小,但是高的优化等级对程序编写规范要求更高,因此优化等级应该在一开始设计APP之前就确定好,中途变更会带来不可预测的问题)。以STM32F407VET6单片机为例划分后的FALSH存储框图如下所示:
bootlader设计
根据上面的描述,bootloader主要有完成以下功能:1、系统自检2、实现APP程序跳转3、升级过程中接收APP文件并存储到对应的FLASH区域功能1、3对于不同的系统要求不同,自检的内容以及实现文件传输的物理层接口和链路协议不同,不在此过多描述。下面主要给出APP跳转的部分代码:
#define APP_ADDR 0x08008000 //应用程序起始地址 typedef void (*pFunction)(void); //重定义pFunction为void(*)(void)函数指针类型void jump(void){uint32_t APP_ADDR_Buff=0; //缓存APP地址数值uint32_t APP_ADDR_Value=0; //APP地址的内容uint32_t Jump_ADDR; //跳转的目标地址pFunction Jump_APP; //跳转的目标函数指针APP_ADDR_Buff = APPLICATION_ADDRESS; //用户程序的首地址APP_ADDR_Value = (*(volatile uint32_t*)APP_ADDR_Buff);//取出首地址里面的值if (( APP_ADDR_Value & 0x2FFE0000 ) == 0x20000000) //判断APP首地址里面存的栈顶地址值是否合法{DISABLE_INTERRUPTS(); //关总中断,使用不同的库写法不同,不可直接复制RCC_DeInit();//将外设RCC寄存器重设为缺省值,使用不同的库写法不同,不可直接复制Jump_ADDR = *(volatile uint32_t*)(APP_ADDR_Buff + 4);//APP起始地址第二个字为程序开始地址(新程序复位地址) //指针函数指向用户程序地址,也就是PC指针goto到用户程序起始地址Jump_APP = (pFunction)Jump_ADDR; //取出程序地址给指针函数__set_MSP(*(volatile uint32_t*)APP_ADDR_Buff); //初始化APP的堆栈指针 Jump_APP(); //执行指针函数,实现程序跳转} else { ErrorHandle(); //抛出异常 }}int main(void){SystemInit();//系统时钟初始化SYSInit(); //系统初始化delay_ms(200); if(ReadProgramAPPFlag()) //如果需要更新APP { APP_FlashWrite(); //接收APP文件数据,并将APP程序存储到指定位置 if(APP_Check()) //APP文件校验通过,将新的APP程序更新到备份区域 APP_Backup(); else //否则恢复备份区 APP_Restore(); ResetProgramAPPFlag(); //对完成升级的标志复位 } jump(); //正常情况下运行到这一步时APP区域已经正确写入程序文件while(1); }
其中ReadProgramDoneFlag()是判断程序应该是先接收升级文件再跳转还是直接跳转的标志,在APP中如果有升级需求则对这个标志置位,在bootloader中完成文件接收之后对标志复位,需要注意的时这个标志位不是全局变量也不是局部变量,要保证程序跳转,初始化堆栈之后这个标志的值不受影响,因此该标志变量最佳选择是写在外部EEPROM或内置FLASH中,读写标志的操作其实是对EEPROM或FLASH的读写。
编写APP程序
APP程序中实现了用户的业务代码,和由APP跳转回bootloader的逻辑,实际的操作还是对上文中程序存储Flag的读写,这部分逻辑实现的流程图如下图所示:由于APP程序对应的是另外一个工程文件,因此在工程设置中要将FLASH的偏移地址向下移动,空出bootlader的区域,比如上文中bootloader区域是0x08000000-0x08008000,因此APP工程的FLASH起始地址是0x8008000,偏移量是0x8000,这一点非常重要。
关键词:
-
-
-
-
STM32单片机实现固件在线升级(IAP)
最新美黄金期货实时行情查询(2023年8月15日)
我国首次!划定约319万平方公里
娃娃鱼人工养殖方法:娃娃鱼怎样养殖最好?
光子嫩肤可以祛斑吗
美漫世界的弑神者(弑神者13集就完了不是说8个弑神者加主角才出了3个是不是有第二部)
欧洲杯淘汰赛对阵表(欧洲杯淘汰赛对阵规则)
怎样测试两台电脑网络之间的连通性
蜜雪冰城冰淇淋在家怎么做?
什么是淡奶油自己怎样做淡奶油?
金博股份:目前公司研发的Ⅳ型储氢瓶正在开展试制工作,预计2024年完成开发,
城乡融合康养应因村制宜因人制宜
现代投资(000900):8月14日北向资金增持54.72万股
商务部等九部门:到2025年在全国打造500个左右的县域商业“领跑县”
2023天津潮白湿地半程马拉松报名年龄要求
大同市云州区:“我为黄花代言”全民营销成果丰
网络诚信需共建共治
维科精密:8月11日融资买入3094.31万元,融资融券余额5870.37万元
一张图:2023/08/15黄金原油外汇股指"枢纽点+多空占比"一览
健康数据抬腕可见,记录每一次心跳,didoY60智能手表体验
九龙仓置业跌7.02% 股价创8个月新低
公司擅自销售薛之谦演唱会门票 被罚3000元
宜昌警方追凶24年不言弃 抢劫杀人悬案终告破
【我在国门一线】沈阳海关:走新路开新局 振兴发展当先锋
《节奏地牢》衍生作品《节奏裂隙》延期
河北平泉:宣传惠农政策 助力科学种田
全国生态日 | 秦岭的四季之美
极氪宣布部分门店延长营业时间至23:00
展示大学生创新挑战精神, 2023 “共赋未来·创益大会”社会创新大赛总决赛落幕
日常营业!李月汝晒自拍视频:怕太显眼又怕看不见
哈尔滨一栋危楼居民已搬走避险,却有人来粉刷外墙,社区:为了市容
大连银行:“云”力量赋能数字化转型升级
寓教于乐! 消防沙滩主题派对来啦~
组图 | 海南(省冷)公共冷链商贸城高标冷库一期主体结构有望9月底封顶
俄媒:乌克兰驻亚美尼亚临时代办溺水身亡
“三无产品”变身 “名牌”,汽车电池藏“隐患”!上海侦破一起销售假冒注册商标案
倪岳峰主持召开省2023年洪涝灾后重建领导小组第二次会议强调 全力推进抢险修复和灾后重建工作 把党和政府的温暖送到受灾群众心坎上 王正谱参加
科源制药(301281.SZ):目前没有为诺和诺德的司美格鲁肽提供原料药
883套法拍房仅售出97套!捡漏机会到?呼和浩特还是楼市危机大?
开的意思解释 开的意思
周冬雨、刘昊然、屈楚萧主演电影《燃冬》开启预售,终极预告曝光
葵夏(关于葵夏简述)
心通桥日报(8月14日):南阳路29号院未安装大门 回复:已告知施工方抓紧时间对大门进行安装
薛集(关于薛集简述)
小牛电动2023年第二季度营收8.288亿元 Non-Gaap净利润1440万元
台州银行业清廉金融文化建设系列报道三:多点“廉”续发力 打造亲清百晓
末日决战将启,黑暗领主再掀废土狂潮!
第二届宁夏极限飞盘分组赛在银举行
北京房山完成沿河82处水毁点位临时修复
7月消费同比增速降至2.5% 低于市场预期
8月15日起,苏州轨道交通11号线晚间加开唯亭站始发大站快车
2023年金华磐安县上调公积金最高可贷款额度政策
361度(01361)拟于9月12日派中期息每股0.065港元
营造风清气正的网络生态
青海青白玉的特点
新疆青海等地多降水天气
哈登怒了!大骂莫狗是骗子!这一次公开决裂
隔夜外盘:美股收高 纳指涨超1% 英伟达涨逾7%、市值重返万亿美元
iOS、Android、PC 最近值得关注的 10+ 个 App
尔康制药:柬埔寨工厂发生突发状况 少量污水流入马德望河
WTI:原油探底回升、多头或再次上攻
永辉超市部分调优门店二季度客流环比增加10%
33岁的“阿香”郑钤丹,戏里是八姑的养女,戏外家庭生活从不公开
与消费者共同探索无糖宇宙,这个品牌新品提供更多新选择
中新网评:医药反腐风暴下的三个追问
山水比德中标河北省张家口张北华润希望小镇项目
今年上半年冷链物流持续企稳回升 支持行业发展的积极因素不断增多
国防部:中国和泰国将举行“突击-2023”陆军联合训练
碧桂园事件有何影响?官方回应 基本情况讲解
创新药各方向稳步发展 交易量创新高并逐渐进入收获期
迅安科技接待21家机构的调研,公司未来技术发展主要是扩大个人防护用品的覆盖面
王晓东院士:科研合作不要事事计较
河南南阳南召:三大主导产业加速“聚链成群”
2023暑期档总票房已破170亿元 《消失的她》《八角笼中》《封神》列前三甲
德媒:拜仁还没确定门将引援的头号目标,目前正考虑德赫亚、布努
中旅酒店与华怡明都签订协议 将围绕会员资源共享等开展合作
吃什么对肝好怎么养(吃什么补肝养肝)
库尔勒市萨依巴格街道举办讲红色故事主题活动
水乳能天天用吗?
中国医学科学院皮肤病医院(研究所)正规吗?医院信息+技术优势查看!
小米平板 6 Max 14 图赏:史无前例的 14 英寸浩瀚巨屏
粤警在行动 做人民群众“守夜人”
天津2023年上半年数字人民币累计交易1496.65万笔
喝什么茶美容养颜 女人应该喝什么茶美容养颜
遇水易燃物品
又一家车企要造百万豪车,自主品牌支棱起来了
男子接完诈骗电话卡里多出14万民警:这是骗子帮你贷的款 具体是什么情况?
超值DELL 灵越15-3511 笔记本到手价2819元
旅客反响热烈,广深港高铁“灵活行”引领出行新潮流
李想:理想汽车目前月产能极限3.4万辆 10月解决瓶颈
摄影师用自己照片被告侵权 索赔八万!视觉中国回应:我们有完整的销售权利
山东大哥小摊11元能炒3个菜:游客直呼不敢相信
鸿福堂(01446.HK)盈警:预期中期净亏950万港元至990万港元
「世界说」美媒:美国政府严重低估工人价值,在相关国家法律和政策方面表现得很糟糕!
舟山嵊泗举办第二十届黄龙渔民开捕节
春能控股(08430.HK)中期净亏214万新加坡元
长埫口镇“户户走到”全覆盖
坚决斩断虚拟货币洗钱产业链
固收专题分析报告:银行二永债投资三部曲
美容护理行业周报:行业调整期逢低布局