引导加载器支持产品固件的现场更新。引导加载器可使用UART、I2C、SPI或USB等常见通信接口更新固件,而引导加载器主机和目标之间通常采用有线连接方式。在蓝牙到串行适配器的帮助下,这个引导加载操作能通过无线方式实现。如果目标所处的位置难以物理地访问,或者目标位于密封设备内,那么这种无线连接功能就会特别有用。
使用引导加载器的步就是配置产品,让引导加载器(而不是应用)去执行。一旦引导加载器运行,主机就会通过通信通道发送“start bootload”命令。如果引导加载器发出“OK”回应,那么就会开始引导加载。在引导加载期间,主机读取新应用文件,将其解析为闪存写入命令,并发送命令到引导加载器。在整个文件发送后,引导加载器会确认文件完整性,并发送控制到新应用。
采用蓝牙到串行适配器的无线引导加载过程可在任何支持UART引导加载器的目标上进行,无需使用蓝牙串行端口配置文件(SPP)对运行在目标设备上的主机或引导加载器固件进行任何修改。蓝牙配置文件是指定蓝牙设备一般行为的蓝牙规范上额外的协议,可用于支持蓝牙设备与其它具有相同配置文件的设备进行通信。
SPP基于仿真RS-232串行端口的射频通信(RFCOMM)协议,它定义了如何设置两个设备之间的虚拟串行端口,如何利用蓝牙互联。支持蓝牙功能的PC能连接到目标侧的蓝牙串行适配器,并进行引导加载操作。引导加载命令可通过发送串行命令到当前运行在目标器件上的应用而实现无线触发。
引导加载器
引导加载过程会通过标准通信接口更新嵌入式系统的固件。主机可以是带引导加载器主机应用工具的PC,也可以是另一个微控制器。引导加载器是加电启动或系统重设后将要执行的行代码。引导加载器会预编程到微控制器中,与主机通信,并获得新的应用镜像,将其写入微控制器的内部闪存。在引导加载操作成功后,微控制器会开始执行新的应用固件。如果没有从主机接收到新的应用,那么引导加载器会执行微控制器中现有的应用。
应用固件镜像的格式取决于使用的微控制器。举例来说,PSoC控制器使用.cyacd(应用代码和数据)作为引导加载应用的格式。如果采用标准的蓝牙到串行适配器,那么我们可在支持UART引导加载器的目标器件上无线执行同样的引导加载操作。
在利用蓝牙到串行适配器进行无线引导加载的情况下,基本的引导加载操作保持不变。不过,我们需要在主机和目标器件之间建立虚拟串行连接,通过蓝牙无线发送应用镜像。SPP定义了如何设置虚拟串行端口和两个蓝牙设备的互联,随后允许设备进行RS232(或类似的)串行线缆仿真。这种配置文件涵盖的情境能支持传统应用,这里蓝牙作为线缆连接的替代,使用虚拟串行端口抽象。利用SPP,互联设备发送和接收数据就像互联的RX和TX线路一样。
图1显示了SPP中使用的协议和实体。基带、LMP和L2CAP是OSI 中的第1层和第2层蓝牙协议。RFCOMM是蓝牙版GSM TS 07.10标准,GSM手机用它在一个物理串行线缆上多路复用多个流,为串行端口仿真提供通信协议。SDP是蓝牙服务发现协议,支持蓝牙设备发现其它蓝牙设备提供的服务和相关参数。