
第一个是nrf52840_xxaa是项目程序,第二个flash_s140_nrf52_7.2.0_softdevice是协议栈。
协议栈(SoftDevice)只需要烧录一次,之后更新应用程序时不需要再重新烧录它。
断电后不需要重新烧录协议栈,只要芯片没有被整片擦除,协议栈会一直保留在 Flash 中。
协议栈(SoftDevice)到底是什么?
SoftDevice 是 Nordic 半导体为 nRF5 系列芯片提供的预编译蓝牙协议栈二进制文件,它运行在芯片的 Flash 低地址区域(例如从 0x0 开始)。它负责:
-
蓝牙 LE 协议的底层实现(链路层、HCI、GAP、GATT 等)
-
射频硬件的驱动和管理
-
中断处理、时间片调度、安全连接等功能
你的应用程序 运行在 Flash 的高地址区域(例如从 0x26000 开始),通过 SoftDevice 提供的 API 函数(如 sd_ble_gap_adv_start)来使用蓝牙功能,而不需要自己实现复杂的蓝牙协议。
这种架构类似于计算机的操作系统(SoftDevice)与应用程序的关系:操作系统负责底层硬件管理,应用程序通过系统调用与之交互。
原理:协议栈与应用程序是分离的
Nordic的芯片采用双分区存储架构,可以理解为:
-
协议栈(SoftDevice) :相当于电脑的"操作系统",安装在Flash的低地址区域
-
应用程序 :相当于电脑的"应用软件",安装在Flash的高地址区域
这两个区域在烧录时是独立且互不覆盖的。只要不执行整片擦除,协议栈就会一直保留在芯片里。
