【BLE-CC2640】CC2640之bootloader

本篇博文最后修改时间:2017年03月01日,18:26。


一、简介

本文介绍CC2640芯片内部的bootloader


二、实验平台

协议栈版本:ble_cc26xx_2_01_00_44423

编译软件:IAR Embedded Workbench for ARM Version 7.40

硬件平台:CC26xxDK开发板

仿真器:XDS100V3(香瓜)


版权声明

博主:甜甜的大香瓜

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.NET/feilusia

联系方式:897503845@qq.com

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

香瓜单片机之STM8/STM32群:164311667
香瓜单片机之Linux群:512598061
香瓜单片机之职场交流群:450154342
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

四、 实验前提
1、在进行本文步骤前,请先 阅读 以下博文:
1)《 CC26XX技术参考手册 》下载地址:http://www.amomcu.com/forum.php?mod=forumdisplay&fid=2

2、在进行本文步骤前,请先 实现以下博文:

暂无


五、基础知识

1、什么是bootloader?

答:bootloader是一个小程序,它包含下载所需的外设驱动(如串口)及下载指令,这样即可通过bootloader的串口来下载我们编写的应用程序。

有些芯片内部的ROM中固化了芯片厂商的bootloader,例如CC2640。

有了bootloader,就可以使用串口等接口进行下载代码,当一个下载器支持多个串口时,即可大大提高生产效率。


2、CC2640的bootloader是如何的?

答:

注:请看《CC26XX技术参考手册》的第八章节Bootloader。

1)提供接口

异步串行接口(Universal Asynchronous Receivers and Transmitters,简称UART):两线,串口。

同步串行接口(Synchronous Serial Interface,简称SSI):四线,SPI。

2)可禁止bootloader

可通过操作寄存器来禁止对bootloader的操作,以达到高安全性。

3)有后门(backdoor)

如果后门开启了,则可通过复位时按住某个IO口(可设置)来启动bootloader。类似于重启电脑时按住F10进入BIOS。


3、什么是FCFG和CCFG

答:

注:请看《CC26XX技术参考手册》的第九章节Device Configuration。

1)FCFG(Factory Configuration,厂家配置,不可修改

对于用户来说,较为关心的参数为第一MAC地址(不可修改的MAC),如下图:



2)CCFG(Customer Configuration,用户配置,可修改


如上图,CCFG配置一共有22个,特别注意上面三个红框的寄存器。

①IEEE_MAC_n Register

第二MAC地址的寄存器,也就是可修改的MAC寄存器。

②BL_CONFG Register

bootloader配置寄存器。下文详细介绍。

③IMAGE VALID CONF Regster

该寄存器数值为0x00000000时,芯片上电启动后会跳转到应用层;

该寄存器数值不为0x00000000时,芯片上电启动后会跳转到bootloader层。(当芯片下载过应用层代码之后,该数值会自动被修改为0xFFFFFFFF)


4、BL_CONFG Register(bootloader配置寄存器)的介绍

答:


该寄存器一共四个字节,每个字节功能介绍如下:

1)BOOTLOADER_ENABLE(偏移地址为 FDBh)

bootloader功能的总开关。

当该值为0xC5时,bootloader相关功能是使能的,安全等级低,下面的三个配置字节有效;

当该值不为0xC5时,bootloader相关功能是禁止的,安全等级高,下面的三个配置字节无效

2)BL_ENABLE (偏移地址为 FD8h)

bootloader后门的开关。

当该值为0xC5时,bootloader的后门功能是使能的,下面的两个配置字节有效;

当该值不为0xC5时,bootloader的后门功能是禁止的,下面的两个配置字节无效

3)BL_PIN_NUMBER(偏移地址为 FD9h)和BL_LEVEL(偏移地址为 FDAh的最高位

①假设我们需要实现:芯片复位时拉低DIO15引脚,即进入bootloader状态。

则我们需要将BL_PIN_NUMBER配置为0x0F(15),BL_LEVEL配置为0(低电平触发)。

假设我们需要实现:芯片复位时拉高DIO6引脚,即进入bootloader状态。

则我们需要将BL_PIN_NUMBER配置为0x06(6),BL_LEVEL配置为1(高电平触发)。


5、如何使用某mcu的SPI接口,与bootloader状态下的CC2640进行指令通信?

答:

1)硬件连接

将某mcu的SPI接线分别接到CC2640的如下引脚(实测不需要上拉电阻)


2)用flash programmer 2使CC2640进入bootloader模式(一次性的修改,在代码中修改方式见下文)

①修改bootloader配置



将上图中的配置,修改为“C5、0F、FE、C5”,每个字节含义依次为:后门使能、DIO15为启动后门引脚、低电平触发、bootloader功能使能。

修改后如下图:


②通过后门进入bootloader模式

先将DIO15接跳线至地(上方配置了DIO15触发、低电平触发),再按一下板子上的复位键。(不是拔插电源,是复位!)

此时即已进入bootloader模式。

③某mcu按指令格式要求发送指令

指令格式如下图:


第一个字节为数据长度,数值为:data段+2。

第二个字节为校验和,数值为:data段的数据和的低8位。

第三个字节及之后的字节为数据。

某mcu通过SPI将该指令发送给CC2640之后,不停地发送0x00去查询CC2640的应答,直到CC2640返回一个非零数值(0xCC为正确应答,0x33为错误应答)。

注意一:实测CC2640的返回应答时长需要38ms。

注意二:串口通信波特率不能超过3M,SPI通信波特率不能超过4M。


6、如果在工程中修改CCFG的bootloader的配置?

答:

1)打开Ccfg.c

①在工程中的调用路径(实际上只有一个头文件,在工程中看不到内容)


②在文件夹中的路径

C:\ti\tirtos_simplelink_2_13_00_06\products\cc26xxware_2_21_01_15600\startup_files

2)修改位置如下


依次修改为0xC5、0x0、0x0F、0xC5,即表示:bootloader功能使能、低电平触发、DIO15为启动后门引脚、后门使能。

注:该文件修改之后,将导致所有工程的CCFG配置被修改。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值