首页 > 其他分享 >蓝牙AppLoader BootLoader升级指南

蓝牙AppLoader BootLoader升级指南

时间:2022-11-30 10:45:54浏览次数:39  
标签:bootloader apploader gbl 蓝牙 AppLoader Bootloader BootLoader

一 新旧Bootloader的区别

在Silicon Labs的Gecko SDK v4.0版本之前,AppLoader是放在Gecko BootLoader和应用程序App之间的一个独立的程序。

在Gecko SDK v4.1中,对于2系列的芯片(xG21,xG22,xG24等),AppLoader变成了Gecko BootLoader项目的一部分,并作为通信插件组件提供,而不是单独的应用程序。

这意味着:

因为AppLoader是BootLoader的一部分,不需要再单独刷新AppLoader。

AppLoader不能再自行升级。要升级AppLoader,必须升级Gecko BootLoader。

新的BootLoader比老的BootLoader大得多,而且它不适合老的BootLoader区域。

因此,应用程序App的起始地址和BootLoader升级映像的基址都必须更改。

 

二 新Bootloader的好处和缺点

将Apploader与Bootloader合并有以下好处:

1.每个蓝牙协议栈都支持通过蓝牙更新应用程序

2.由于代码重用和flash页面对齐需求而减少的代码大小将得到改善

3.蓝牙协议栈将遵循标准的开发流程(AppLoader步骤仅在蓝牙协议栈中使用,且仅在独立模式下使用)

4.合并将使客户能够修改Apploader(它现在是作为二进制blob交付的)。亚马逊等公司也提出了这一要求。

5.这将为一些客户所要求的小型蓝牙协议栈铺平道路。

它也有以下缺点:

1. 因为位置地址信息存储在阶段1引导加载程序中,所以该解决方案不适用于系列1设备(xG12,xG13等)。

2. 升级过程并不简单,需要多个步骤来确保设备的功能。

 

三 升级步骤

出于安全考虑,升级过程分为多个步骤:

 

 

 四 如何操作

第一步

1. 使用GSDK 4.1或更高版本创建一个新的Bootloader - SoC Internal Storage程序

 

 

 2. 更新“Platform→bootloader→Core→bootloader Core→Configure”中bootloader升级镜像的Base address,设置值为0x18000 (98304) 

 

 

 3. 安装Bluetooth→OTA→Bluetooth AppLoader migration utility

 

 

4. 点击“小锤子”按钮进行程序编译

5. 通过在apploader目录级别的菜单中打开命令行,并运行以下命令,生成迁移GBL文件

 

 

 

在CMD命令行中

Windows电脑输入:

create_apploader_migration_gbl.bat "../GNU ARM v10.2.1 - Default/bootloader-storage-internal-single-512k.s37" ./migration.gbl

苹果电脑输入:

./create_apploader_migration_gbl.sh "../GNU ARM v10.2.1 - Default/bootloader-storage-internal-single-1536k_fe_presentation.s37" ./migration.gbl

 

 

第二步:

1. 使用GSDK 4.1或更高版本创建一个新的Bootloader - SoC Bluetooth AppLoader OTA DFU项目

 

 2. 在Platform→Bootloader→Core→Bootloader Core→配置并将值设置为2

 

 

 

 

 

 

 

3. 点击“小锤子”按钮进行程序编译

4. 定位到在Binaries文件夹生成的bootloader-apploader.s37文件

5. 通过在s37文件右键打开命令行,并运行以下命令,生成bootloader-apploader GBL文件

Windows电脑使用:  

"commander" gbl create bootloader-apploader.gbl --bootloader bootloader-apploader.s37

苹果电脑使用:  

./"${PATH_SCMD}/commander" gbl create bootloader-apploader.gbl --bootloader bootloader-apploader.s37

 

 

 

 第三步:

1. 使用GSDK 4.1或更高版本创建一个新的Bluetooth - SoC Empty项目

2. 使用“小锤子”编译

3. 通过在./create_bl_files.sh文件菜单中打开命令行,并运行以下命令,生成应用程序的GBL文件

Windows电脑输入:

create_bl_files.bat

苹果电脑输入:

./ create_bl_files.sh

 

 

 

 

 

第四步:

将生成的3个GBL文件复制到您的智能手机上

步骤1→./apploader/migration.gbl

步骤2→./Binaries/bootloader-apploader.gbl

步骤3→./output_gbl/application.gbl

打开手机上的EFR Connect App,完成升级步骤:

1. 连接到您的WSTK开发板(确保之前的程序可以OTA升级)

2. 在下拉菜单中找到“OTA DFU”,选择“PARTIAL OTA”,上传migration.gbl

 

 

3. 断开连接后,使用EFR Connect,找到广告为OTA的设备,并再次连接

在下拉菜单中找到OTA DFU,选择FULL OTA,并使用application.gbl和bootloader-apploader.gbl文件升级到新的Bootloader(包含Apploader的Bootloader)

 

标签:bootloader,apploader,gbl,蓝牙,AppLoader,Bootloader,BootLoader
From: https://www.cnblogs.com/jdub/p/16937325.html

相关文章

  • iOS关于蓝牙连接的简单介绍与使用
    下面是两台iPhone6连接同一台蓝牙设备的结果:**成功连接****peripheral:<CBPeripheral:0x1700f4500,identifier=50084F69-BA5A-34AC-8A6E-6F0CEADB21CD,name=555555......
  • 集WIFI、蓝牙连接的2.4寸串口屏智能烤箱应用方案
    近年来由于烹饪潮的持续风靡,烹饪行业正展现出强大的市场潜力。中国饮食文化源远流长,烹调技艺各具风韵,其中,煎、烤、炸类美食广受人们的欢迎。酥香松脆的煎烤美食,能够让身体......
  • #盲盒+码# #跟着小白一起学鸿蒙#编写一个蓝牙性能Stage HAP
    作者:王石,胡瑞涛上节回顾在#跟着小白一起学鸿蒙#[八]蓝牙应用章节,我们学习了在OpenHarmony下如何编写一个简单的蓝牙应用以及需要用到的相关蓝牙接口,接下来我们来编写可以......
  • ios小程序蓝牙发送信息失败,报10004
    安卓小程序正常,ios监听和发送消息报错errCode:10004,errno:1500103,errMsg:"writeBLECharacteristicValue:failwriteValueToCharacteristicserror10004"已有服......
  • 自制操作系统 Step 2 —— Bootloader(一)
    部分内容来源于《一个60位操作系统的设计与实现》此博客仅记录学习过程。一、BIOS引导原理BIOS自检结束后会根据启动选项设置选择启动设备,即检测软盘的第0磁头-第......
  • 蓝牙mesh组网实战(智能家居应用)
    蓝牙mesh组网目前存在有入门门槛高的问题,比如,嵌入式工程师需要考虑到标准mesh模型的兼容,app开发工程师需要了解mesh协议栈才能直接走mesh与芯片通信。而沁恒官方提供的透传......
  • 【转】Android 12.0蓝牙适配
    原文网址:Android12.0蓝牙适配-掘金(juejin.cn)前言  在我的申请下,公司终于购买了一台基于Android12.0的手机,然后我就开心的拿去安装测试了,发现程序崩溃了,于是我......
  • 详解蓝牙模块的分类
        摘要:蓝牙模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通讯,蓝牙模块将芯片和外围硬件电路集成到一个PCB上,开发出所需的内置程序实现蓝牙功能的设备。可以通过......
  • 蓝牙实战(二)
    一.概述这是蓝牙实战的第二篇,今天讲讲基本的操作,打开蓝牙可见性,查找设备,显示已绑定设备,先看效果图由于模拟器不支持蓝牙,所以没办法进行相应操作,大家下来可以到真机上测试一......
  • 蓝牙实战(一)
    一.概述在前面的三篇文章讲解蓝牙开发,写的比较详细,篇幅比较长,后面这几篇来点简单实用的,先看效果图二.代码代码如下:BlueToothController控制蓝牙操作publicclassBlueToot......