nRF5 SDK Bootloader and DFU moudles(3)】的更多相关文章

在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境. 在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成.在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就…
镜像的验证 在执行设备固件更新之前,应验证新映像. 在传输实际固件(预验证)之前,可以检查某些信息(例如,兼容性). 其他信息,例如图像的散列,应在传输(验证后)后进行验证. Init packet 执行DFU时,必须提供包含固件映像的包(zip格式),init数据包和指示包格式的清单文件. init数据包包含有关用于验证映像的固件映像的信息,必须对其进行签名以确保更新来自受信任的源. init数据包的所需内容在协议缓冲文件dfu-cc.proto中定义. 在验证init数据包期间,将检查ini…
DFU控制点特性用于控制DFU过程的状态. 通过写入该特征来请求所有DFU程序. 标记过程结束的响应将作为通知收到. BLE传输 Transfer of an init packet DFU控制器首先检查init数据包是否已成功传输. 如果没有,DFU控制器检查它是否已部分转移. 如果已经传输了一些数据,则继续传输. 否则,DFU控制器发送Create命令以创建新数据对象,然后传输init数据包. 当init数据包可用时,DFU控制器发出Execute命令以启动init数据包的验证. Trans…
Installing the mesh toolchain To build the example applications, a toolchain based on either CMake or SEGGER Embedded Studio is required. Install instructions are provided for Windows and Debian/Ubuntu. The steps should be similar for other platforms…
Getting started To get started, take a look at the Light switch demo. It shows how a simple application can use the mesh stack and serves as an introduction to the Bluetooth Mesh concepts and nRF5 SDK for Mesh features and APIs. Bluetooth Mesh introd…
本文将介绍Nordic nRF5 SDK软件架构以及softdevice工作原理,以加深大家对Nordic产品开发的理解,这样开发过程中碰到问题时,大家也知道如何去调试. 如果你刚开始接触nRF5 SDK,建议先看一下这篇文章“Nordic nRF5 SDK和softdevice介绍”,以建立Nordic nRF5 SDK的一些基本知识. 首先说明一下,Nordic nRF5系列产品都是使用Flash存储器的,确切说,是嵌入式可执行代码的Flash存储器,也就是说,代码是可以直接在上面运行的,这…
SDK和Softdevice的区别是什么?怎么选择SDK和softdevice版本?芯片,SDK和softdevice有没有版本兼容问题?怎么理解SDK目录结构?SDK帮助文档在哪里?Softdevice帮助文档在哪里?如何选择某个SDK例子 (example) 以开始我们的BLE开发之旅?本文将对以上问题进行解答. Nordic目前有2套完全独立的SDK:nRF5 SDK和nRF Connect SDK.一般来说,开发nRF51/52产品推荐使用nRF5 SDK,开发nRF91/nRF53等新…
官方文档教程编译源码: http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk%2Fdita%2Fsdk%2Fmesh_sdk.html&cp=4_1 Building the mesh stack The mesh library and example applications can be built using either CMake or SEGGER Embedded Studio.…
一: 官网介绍地址:http://www.nordicsemi.com/Products/Bluetooth-low-energy/nRF5-SDK-for-Mesh Nordic offers a complete solution for the Bluetooth mesh specification with the nRF5 SDK for Mesh and the nRF51 and nRF52 Series SoCs. It provides a powerful solution…
本文将讲述Nordic nRF5 SDK的主要调试手段,以帮助大家快速定位问题,并解决问题.一般来说,你可以通过打log方式,IDE的debug模式,SDK自带的app_error_check函数,以及命令行方式等多种手段来调试你的代码. 1. 通过打log方式进行调试 nRF5 SDK支持UART和SWD J-Link(RTT)两种底层通信方式来打印日志,SDK14之后日志也可以通过蓝牙或者Flash进行输出和存储打印,一般来说,UART和SWD用得比较多,其中UART使用串口助手来查看日志,…
nRF5 SDK for Mesh(六) BLE MESH 的 基础概念 Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile specification developed and published by the Bluetooth SIG. This document explains the basic concepts of the Bluetooth Mesh and gives an overview of th…
The mesh architecture   The mesh stack consists of a number of subsystems that are interfaced through a set of API modules. The API modules hide the complexity of their subsystems. The functionality provided in the API is sufficient to make a functio…
FDS,全称Flash Data Storage,用来访问芯片内部Flash的.当你需要把数据存储在Flash中,或者读取Flash中的用户数据,或者更新或者删除Flash中的数据,那么FDS模块是你最好的选择.FDS采用文件和记录方式来组织Flash数据,也就是说,真正的数据是放在一条记录中,而多条记录组成一个文件.根据应用的需要,整个系统可以只有一个文件,也可以包含多个文件.文件采用文件ID来标示,文件ID为2个字节(注:不能取值为0xFFFF).一个文件下面可以放一条记录,也可以放多条记录…
Light switch demo  灯开demo   Purpose This demo project consists of four sub examples - The light switch server with and without GATT proxy support, the light switch client and a provisioner example. It demonstrates the mesh eco system containing devic…
Exploring Mesh APIs using light switch example The light switch example is meant to showcase the APIs for the provisioner and provisionee roles and how a simple Bluetooth Mesh network may be set up and configured. The network consists of one static p…
Basic Bluetooth Mesh concepts The Bluetooth Mesh is a profile specification developed and published by the Bluetooth SIG. This document explains the basic concepts of the Bluetooth Mesh and gives an overview of the operation and capabilities of the p…
app_timer是大家经常用到的一个库,app_timer的功能就是定时,也就是说,你在某一时刻启动一个app timer并设定超时时间,超时时间一到,app_timer就会回调timeout handler,然后执行你需要的工作.使用app_timer时有如下几点需要注意: app_timer底层使用的是RTC1,而不是timer1/2/3/4,所以app_timer的功耗非常低:0.1uA左右. app_timer计时精度为1ms,也就是说,app_timer只能计时毫秒的倍数,如果你的计…
如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编码如何解读?NCS可不可以进行单bank升级?可不可以把一个nRF5 SDK应用升级到NCS应用?MCUboot拷贝操作中的swap和overwrite有什么区别?为什么说MCUboot升级永远都不可能变砖?本文将对以上问题进行阐述. 目录 1.概述 先讲一下DFU和OTA的概念.DFU(Devic…
摘要:在前面的nrf52--DFU升级OTA升级方式详解(基于SDK开发例程)一文中我测试了基于蓝牙的OTA,本文将开始基于UART和USB(USB_CDC_)进行升级测试. 整体升级流程: 整个过程希望你和我一样采用有log的bootloader进行.可以看到执行流程,也能在出错时进行检查. 1.生成秘钥(一定要保留好) 2.生成USB或者UART的BootLoader程序(需要算法库和秘钥) 3.生成APP工程 4.合成初始的固件.并下载到相应的硬件 5.生成需要更新的APP固件 6.合成升…
在我们开始前,默认你已经安装好了一些基础工具,如nrfutil,如果你没有安装过请根据官方中文博客去安装好这些基础工具,连接如下:Nordic nRF5 SDK开发环境搭建(nRF51/nRF52芯片平台) - iini - 博客园 (cnblogs.com) 本文只是对整个升级过程进行一次完整操作,以及其中可能出错的地方进行记录,如果你想知道具体原理,那么请你看官方中文博客的两篇文章,如果仅仅只是基于SDK,那么你参考第一篇即可,如果你需要在NCS上进行请参考第二篇,相信你在看了该博客后会对D…
这是嵌入式开发中常用的几个专业术语,其诞生的背景和其具体作用大概如下   在很久很久以前,那是8051单片机流行的时代,做单片机开发都需要一个专用工具,就是单片机的编程器,或者叫烧写器.说“烧”写一点不为过,当年的经典芯片AT89C51在编程时需要十几伏的高电压,加在一个特定的引脚上,才能进入编程.对于某款芯片的编程,都有一个特定的时序,这个时序通常在芯片的datasheet里进行描述并以硬件实现.另外在编程器里的也有一个MCU,这其中使用软件产生这个时序,从而对目标芯片进行编程.电脑通过串口把…
nRF51/nRF52同时包含GPIO和GPIOTE两种外设,经常有人将两者搞混,今天我们就来介绍一下这2种外设有什么不同,及使用注意事项. GPIO和GPIOTE都属于芯片外设,但两者功能完全不一样,使用过程中不要将两者混淆.GPIO就大家通常理解的普通IO口,用来对IO口进行读写等操作.因此,如果你需要读某个IO口状态,或者将某个IO口置1,那么请使用nrf_gpio.h里面的API,比如 nrf_gpio_cfg_input用来将IO设为输入模式 nrf_gpio_pin_set用来输出1…
准备需要加入DFU功能的工程 在工程main文件services_init函数中加入DFU服务 uint32_t err_code; // Initialize the async SVCI interface to bootloader. err_code = ble_dfu_buttonless_async_svci_init(); //APP_ERROR_CHECK(err_code); if(NRF_ERROR_NO_MEM != err_code) { ble_dfu_buttonle…
如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双备份(dual bank)DFU?什么叫单备份(single bank)DFU?什么叫后台式(background)DFU?本文将对上述问题进行探讨. 1.概述 所谓DFU(Device Firmware Update),就是设备固件升级的意思,而OTA是DFU的一种类型,准确说,OTA的全称应该是OTA DFU,只不过大家为了方便起见,直接用OTA来指代固件空中升级(…
NRF52832 SDK15.3.0 概述: 所谓DFU(Device Firmware Update),就是设备固件升级的意思,而OTA是DFU的一种类型,准确说,OTA的全称应该是OTA DFU,只不过大家为了方便起见,直接用OTA来指代固件空中升级(有时候大家也将OTA称为FOTA).DFU除了可以通过无线方式(OTA)进行升级,也可以通过有线方式进行升级,比如通过UART,USB或者SPI通信接口来升级设备固件. 不管采用OTA方式还是有线通信方式,DFU包括后台式(background…
如何开发BLE数据透传应用程序?什么是BLE service和characteristic?如何开发自己的service和characteristic?如何区分ATT和GATT?有没有什么工具可以对BLE设备进行压力测试?如何提高BLE设备的数据上传速度?本文将对以上问题进行解答. 在很多应用场合,BLE只是作为一个数据透传模块,即将设备端数据上传给手机,同时接收手机端下发的数据.本文将和大家一起,一步一步演示如何开发一个BLE透传应用程序.按照本文的说明,大家可以很快就实现一个BLE透传应用,…
相比TI的CC254X.DIALOG的DA1458X,nordic推出的nrf51822和nrf52832在架构和开发商都有自己独特的地方.这几颗产品都是蓝牙低功耗芯片.DA1458X使用OTP硬件架构,功耗低,成本也低,但软件开发难度是个门槛,大团队才能做到量产,当然掌握了也是竞争力(想学习开发就参考博主之前的分享吧).如果对三种架构都很熟悉,然后从开发的角度做个比较,相信对nrf52832的架构和开发会更新青睐. 1. nrf52832有64K的ram和512K的flash,开发人员应该很喜…
nRF52820是功耗超低的低功耗蓝牙 (Bluetooth Low Energy /Bluetooth LE).蓝牙mesh.Thread.Zigbee和2.4 GHz专有低端无线连接解决方案.nRF52820具有蓝牙5.5.1和5.2的全部功能,包括长距离传输和2 Mbps高吞吐量.寻向.低功耗功率控制和低功耗同步通道.该器件还包括一个全速(12 Mbps) USB 2.0接口.   nRF52820 SoC提供高级的多协议支持—连同12 Mbps USB,功能齐全的+8 dBm输出功率无线…
Nordic有2套并存的SDK:老的nRF5 SDK和新的NCS SDK,两套SDK相互独立,大家选择其中一套进行开发即可.一般而言,如果你选择的芯片是nRF51或者nRF52系列,那么推荐使用nRF5 SDK.如果你选择的是Nordic最新产品系列,比如nRF53或者nRF9160,那么请选择NCS SDK.还有一种特殊情况,虽然你选择的是nRF52芯片,但需要使用最新的一些射频技术,比如蓝牙测向,蓝牙Mesh v1.1,低功耗蓝牙音频,那么也需要使用NCS SDK,换句话说,最新的射频技术,…
本文将和大家一起编写我们的第一个BLE应用程序:Blinky(闪灯程序),哪怕你之前没有任何BLE开发经验,也不用担心,只要跟着文中所述步骤,你就可以一步步搭建自己的第一个BLE应用程序.通过这个Blinky程序的搭建,你将体会到BLE的一些基本概念,对BLE将会有一个非常直观的认识,为后续自己的BLE应用程序开发打下一个坚实的基础. 1. 开发准备 1)     nRF52或者nRF51开发板1块.请参考"Nordic nRF51/nRF52开发流程说明",购买相应开发板(DK).…