在嵌入式产品开发中,难以避免地会因为各种原因导致最后出货的产品存在各种各样的BUG,通常会给产品进行固件升级来解决问题。
记得之前在公司维护一款BLE产品的时候,由于前期平台预研不足,OTA参数设置不当,导致少数产品出现不能OTA的情况,经过分析只需改变代码中的某个参数数值即可,但产品在用户手里,OTA是唯一能更新代码的方式,否则只能给用户重发产品。
(资料图片)
后来再想,是否可以提前做好一个接口,支持动态地传输少量代码到产品中临时运行,通过修改特定位置的Flash代码数据来修复产品的棘手BUG?多留一个后门,有时候令产品出棘手问题的往往是那么一两行代码或者几个初始化的参数不对,那么这种方法也可以应应急,虽然操作比较骚。
本文以STM32F103C8T6单片机为例创建演示工程,分为app和bootloader两个工程。即将mcu的Flash分为“app”和“bootloader”两个区域, bootloader放在0x8000000为起始的24KB区域内,app放在0x8006000为起始的后续区域。bootloader完成对app的Flash数据修改。
1、app工程
注意app的工程需要在keil上修改ROM起始地址。
为什么要在bootloader运行时篡改app的数据?按理说在app运行时接收到error_process函数的更新数据后可以立刻运行,但是由于涉及到对app自身代码的修改,涉及Flash修改的一些相关函数有可能会被暂时破坏而导致代码运行崩溃。
如果想跳过“led_blings_1”函数,有2种方法:
1、函数内部跳过
即将以下汇编语句0x0800655a:2400.$MOVSr4,#0修改为0x0800655a:e013.$B0x08006584
在“led_blings_1”函数入口处指令修改直接跳转到函数出口处。至于汇编的机器码和用法文末有相关资料可以查阅。
因为修改处的字节偏移为0x55a,是pageBuf下标为342元素的高2Byte,需要在error_process函数中做如下修改:
pageBuf[342]=(pageBuf[342]&0x0000FFFF)|0xe0130000;
main函数汇编如下:
$ti.mainmain0x080065f8:f44f41c0O..AMOVr1,#0x60000x080065fc:f04f6000O..`MOVr0,#0x80000000x08006600:f7fffe5c..\.BLNVIC_SetVectorTable;0x80062bc0x08006604:2048HMOVSr0,#0x480x08006606:f7ffff01....BLSysTick_Init;0x800640c0x0800660a:f7ffff85....BLinit_led;0x80065180x0800660e:f7ffffa3....BLled_blings_1;0x80065580x08006612:f7ffffbb....BLled_blings_2;0x800658c0x08006616:f7ffffd3....BLled_blings_3;0x80065c00x0800661a:e011..B0x8006640;main+720x0800661c:f44f6180O..aMOVr1,#0x4000x08006620:4808.HLDRr0,[pc,#32];[0x8006644]=0x40010c000x08006622:f7fffe43..C.BLGPIO_SetBits;0x80062ac0x08006626:f44f707aO.zpMOVr0,#0x3e80x0800662a:f7ffff4f..O.BLdelay_ms;0x80064cc0x0800662e:f44f6180O..aMOVr1,#0x4000x08006632:4804.HLDRr0,[pc,#16];[0x8006644]=0x40010c000x08006634:f7fffe38..8.BLGPIO_ResetBits;0x80062a80x08006638:f44f707aO.zpMOVr0,#0x3e80x0800663c:f7ffff46..F.BLdelay_ms;0x80064cc0x08006640:e7ec..B0x800661c;main+36$d0x08006642:0000..DCW00x08006644:40010c00...@DCD1073810432
下面是调用语句:
0x0800660e:f7ffffa3....BLled_blings_1;0x8006558
直接将此语句改为空语句nop(0xbf00)即可跳过调用,由于该命令占用4个字节,nop是两个字节的命令,所以替换为两个nop命令。
0x0800660e:bf00bf00....NOP
因为修改处的字节偏移为0x60e,是pageBuf下标为387元素的高2Byte和下标为388元素的低2Byte,需要在error_process函数中做如下修改:
pageBuf[387]=(pageBuf[387]&0x0000FFFF)|0xbf000000;pageBuf[388]=(pageBuf[388]&0xFFFF0000)|0x0000bf00;
标签:
精彩推荐
4月27日消息,嘉兴市经开区成功出让1宗宅地。仅2轮报价,嘉兴悦盛商业管理有限公司、浙江苏嘉房地产实业股
为有效提升企业劳动者法治素养,促进劳动关系和谐,护航企业高质量发展,“五一”前夕,高淳区固城街道...
延安市气象台继续发布大风蓝色预警【Ⅳ级 一般】【2023-04-27】
1、这个百度一下满大街都是。2、给你个地址吧!什么系统都可用:实达BP-690KPRO驱动。本文到此分享完毕,希
1、水养富贵竹的时候,经常会出现叶子发黄的现象,那么该怎么办呢,下面小编为大家介绍水养富贵竹叶子发黄
原标题:专家谈HPV“疫苗犹豫”:二价HPV疫苗已能预防大多数宫颈癌中新网上海4月26日电(记者陈静)近期记...
北京时间4月27日消息,根据Gartner的最新预测,2023年全球终端用户在公有云服务上的支出,将从2022年的4910
4月25日,2023年柳州市青年演说家宣讲大赛决赛在柳州铁道职业技术学院举行。经层层选拔后,来自全市各行各
警方发布提示至少提前半小时进站乘车最近,南京铁路警方也发布了安全提示,因客流量持续高位运行,旅客需预
同花顺数据中心显示,晶盛机电4月26日获融资买入4854 76万元,占当日买入金额的14 49%,当前融资余额7 75亿
五一前夕,民宿毁约现象频出,理由更是千奇百怪,有装修、倒闭、老板换人等。如近期杭州游客邓女士通过旅游
4月25日,大悦城2022年年报出炉。报告期内,大悦城实现全口径签约金额568亿元,营业收入395 79亿元,全年综
我记得当我第一次在布料店看到预抽烟的布料面板时,我心想,“这到底是什么东西?”答案是,“这是今年...
2023年世锦赛激战正酣,一夜之间,斯诺克格局大变。布雷切尔打赢伟大逆战,13-10翻盘卫冕冠军奥沙利文,首
黄昏时分的苍山洱海。朱金宜摄大理市双廊镇水天相映,白云悠悠,风景如画。张洪科摄(人民图片)春光渐浓,
1、石少麟,副导演 助理导演、演员,1987年执导电影《倩女幽魂》,1987年执导电影《灵幻先生》,1988年执导电
1、《贤良》是苏阳乐队于2006年12月2日发行的音乐专辑,共收录10首歌曲,由苏阳乐队担任制作人。2、2007年6月3
五一假期临近。记者从市气象部门了解到,五一假期天气,前期有雷雨,后期多云为主。预计27到28日白天,全市
玉屏侗族自治县气象台发布雷电黄色预警信号【Ⅲ 较重】【2023-04-27】
多年来,国内期货公司响应行业发展要求,以实际行动积极主动融入国家战略,已成为期货服务实体经济的重要纽
欢迎观看本篇文章,小升来为大家解答以上问题。含有然的成语,你知道吗很多人还不知道,现在让我们一起来看
4月26日,国办印发《关于优化调整稳就业政策措施全力促发展惠民生的通知》(下称《通知》)。《通知》从激
启动仪式上发布了2022年“玫瑰书香”全国女职工主题阅读活动成果、2023年“玫瑰书香”全国女职工主题阅...
醉酒男子想“方便”却“失足落水”……幸好消防来得快!
【【中矿资源(002738)、股吧】:一季度净利润同比增长41 41%】中矿资源公告,一季度营业收入20 72亿元,同
资讯News
06-20
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
聚焦Policy
当好农民工的“护薪人” 近日,罗某等7名农民工在收到被拖欠的工资后,纷纷打电话向江西省南昌市...
“通讯录里所有人都知道我欠钱了” □ 本报记者 韩丹东 □ 本报见习记者 张守坤 ...
大连宝马车撞人案肇事司机被判死刑 本报讯 记者韩宇 10月29日,辽宁省大连市中级人民法院一审...
医院财务迷上网络赌博输光5000万元公款 □ 本报记者 马维博 □ 本报通讯员 汪宇堂 曹...
辊环车削 雕琢毫厘(工匠绝活) 【绝活看点】 23年来,雷虎始终扎根一线,改进钢材轧制工艺...
交警严查超标电动自行车挪用“白牌” 截至昨晚6时,处罚电动自行车违法行为共计6585笔;下一步将...
明起寒潮来袭 北方气温普降10℃以上 中央气象台预计,本周日北京平原地区最低气温降至-4℃左右...
多种蔬菜价格降幅达五成 包括菠菜、蒿子秆等 预计本月中旬蔬菜恢复供需平衡 本报讯(记者...
北京周日最低气温或达-4℃ 本报讯(记者 赵婷婷)北京青年报记者昨天从中央气象台获悉,新一股...
昌平一家四口确诊新冠肺炎 天通北苑第二社区升级为中风险地区 朝阳两涉疫校区及16所学校停课 ...