NB-IOT远程升级第1弹:BootLoader编写及软件包制作

在物联网项目的开发过程中,必不可少的一项功能就是远程升级OTA(Over-the-Air),即使用WIFI、蓝牙、4G、NB-IOT等方式将升级包传输到MCU,MCU进行代码存储,完成升级

本系列文章将介绍基于电信AEP平台进行NB-IOT设备的远程升级,包含stm32内部flash分区、BootLoader代码编写,平台软件升级包制作,平台软件升级协议对接等内容,后续几篇文章将陆续介绍

该系列文章目录大纲如下:

image

在文章开始之前,若还不熟悉NB-IOT模块与电信AEP平台的通信过程,可以先看之前介绍NB-IOT通信的一篇文章:《还不会NB-IOT通信,这篇文章打通NB-IOT通信的任督二脉》

1 STM32 FLASH分区

要进行远程升级的设备,需要将设备的内部flash进行分区,分别存储Bootloader代码及APP应用区代码及APP备份区等

以我使用的256k的stm32为例,南风将flash分为6个区,分别为:Boot(引导区)、Boot Data(引导数据)、APP BIN Main(APP应用区)、APP BIN Bak(APP备份区)、Config(配置区)、Reserve(保留区),并按需求给每个区域分配合适的大小

image
  • Boot(引导区):存放BootLoader代码

  • Boot Data(引导数据):存放APP备份区代码的标志位,代码大小、校验码等;运行BootLoader时读取该区域数据,若读取到有标志位,则认为APP备份区域有待升级的代码

  • APP BIN Main(APP应用区):存放主代码块

  • APP BIN Back(APP备份区):存放备份代码,从云端接收的代码块即存储在该区域

  • Config(配置区):用于存放项目的一些配置信息

  • Reserve(保留区);预留区域

2 STM32 BootLoader编写分析

BootLoader网上很多开源的代码,但功能流程都大同小异,主要完成以下三个功能:

  • 检查APP备份区域是否待升级的软件包
  • 若检测APP备份区域有待升级软件包,则拷贝软件包到APP应用区
  • 跳转到APP应用区

BootLoader的运行流程图如下:

image

3 制作软件升级包

3.1 生成bin文件

可使用MDK自带的fromelf 工具,先点击KEIL5的options for target(魔术棒),再选择user选项,勾选其中After Buil/Rebuil下面的Run #1,并在后面的输入框里输入:

<pre class="custom" data-tool="mdnice编辑器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;">fromelf --bin -o "$L@L.bin" "#L" </pre>

image
  • fromelf --bin意思是使用fromelf.exe来生成bin文件:
  • “–bin”该选项设置输出bin文件,
  • "-o"即“–output”,该选项设置输出文件名和输出文件路径,
  • L是指.axf文件的绝对地址,$ @ #这些符号都是指截取L中的一部分来使用
  • “$L@L.bin”就是指在.axf文件的目录下生成一个与.axf文件名称相同的bin文件

链接文件名(.axf)可以在KEIL5的options for target(魔术棒)Output选项下Name of Executable处修改

image

3.2 软件包制作

电信AEP平台对升级的软件有格式要求,所以我们需要根据软件包制作规范制作软件包,并上传到平台。

要求:需要将所有要在升级时传给设备的软件版本文件都打成一个升级文件;软件包文件名称不支持包含中文字符

软件升级包制作步骤如下:

  • 步骤1:新建文件夹命名为"DM",在DM文件夹下创建设备系统类型文件夹,例如嵌入式设备通常采用"linux",将厂商发布的软件包描述文件"UpgradeDesc.json"文件至于"linux"目录下,参见下图:
    image

UpgradeDesc.json文件即升级包的配置文件,文件内字段说明参见下表,文件编码格式为UTF-8无BOM

image
  • 步骤2:在与"DM"同级目录下创建平台类型文件夹,例如"linux",该文件夹名称必须同步骤1中的平台类型文件夹一致,将待升级的bin文件置于该目录,参见下图
image

UpgradeDesc.json文件模板如下:

<pre class="custom" data-tool="mdnice编辑器" style="margin-top: 10px; margin-bottom: 10px; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;">{ "specVersion": "1.0", "fileName": "ParkingDetect.bin", "packageType": "softwarePackage", "version": "V1.0", "deviceType": "test", "manufacturerName": "quectel", "model": "ParkingDetect", "protocolType":"CoAP", "description":"Test software package", "versionCheckCode":"e4", "deviceShard":"256", "date":"2020-02-22" } </pre>

  • 步骤3:选中"DM"和"linux"文件夹,使用压缩工具打包成ZIP格式的压缩包package.zip(注意package.zip下不能包含package这层目录,如下图所示。不能压缩成其他格式例如rar然后在手动修改文件类型为zip)
image
  • 步骤4:选中“package.zip”再次使用等压缩工具打包成ZIP格式的压缩包V1.0.zip(注意,这里是将package.zip再次压缩打包,形成双层zip文件包,“V1.0”这个名称可自定义)
image

注:若是未双层压缩,后续在AEP平台上传升级包时会出错

我是南风,一个爱折腾的程序袁,工作之余,写写公众号,玩玩视频号,分享我的工作、我的生活

分享是一种博爱的心境,学会分享,就学会了生活

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容