This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

更改CC2640的bootloader的默认IO口之后,bootloader功能失败

Other Parts Discussed in Thread: CC2640, CC2640R2F, CC2650

一、大致情况介绍 
目前使用CC2640R2 launchpad ,如图1所示。目前需要对CC2640进行bootloader操作,使用DIO6和DIO7作为UART的TXD和RXD,使用DIO23作为back door enable的控制端口。但是bootloader功能便失败了。请问我 哪里出错了?

图1

在CC2640R2 LAUNCH PAD 上进行两个测试实验,实验内容为利用UART串口实现bootloader功能,进而实现程序升级。实验序号分别为1和2.其中实验1失败,实验2成功。两个实验的差别在于IO口的选择不同,如图 2所示。

图2

序号1的实验中,simple_peripheral 工程rebuild之后,生成的bin文件名称为“simple_peripheral_cc2640r2lp_app.bin”,该文件在附件中。

二、我的具体步骤如下:

1、使用SDK中的simple_peripheral工程。首先更改UART的IO口。在CC2640R2_LAUNCHXL.h中更改UART的IO口,如图3所示。同时注释掉CC2640R2_LAUNCHXL_PIN_RLED和CC2640R2_LAUNCHXL_PIN_GLED,如图4所示。

图3

图4

2、在CC2640R2_LAUNCHXL.c中注释掉GPIOCC26XX_DIO_07和GPIOCC26XX_DIO_06,如图5所示。

图5

3、然后更改back door enable的控制端口。在ccfg.c中更改SET_CCFG_BL_CONFIG_BL_PIN_NUMBER为DIO23,如图6所示。

图6

4、在CC2640R2_LAUNCHXL.h中,注释掉与DIO23相关的宏定义,如图7和图8所示。

图7

图8

5、在CC2640R2_LAUNCHXL.c中,注释掉与DIO23相关的参数,如图9和图10所示。

图9

图10

6、使用USB-TTL,将CC2640R2 LAUNCHPAD上的DIO6和DIO7与笔记本电脑连接,如图11所示。同时断开CC2640R2 LAUNCHPAD上的RXD和TXD,如图12所示。这样做是为了断开CC2640R2 LAUNCHPAD上的默认的UART端口。

图11

图12

7、将simple_peripheral project编译并下载到CC2640R2 LAUNCHPAD 中。在DIO23拉低的时候,按下reset,然后DIO23恢复悬空状态。最后使用sblAppEx.exe写入bin 文件,但是显示cc2640不处于bootloader状态, 如图13所示。

图13

三、关于bootloader的官方资料的链接
(1)bootloader说明文档
www.ti.com/.../swra466a.pdf

(2)sblAppEx.exe的下载链接
www.ti.com/.../getliterature.tsp


四、我的附件
(1)simple_peripheral_oad_onchip 工程在我的电脑上的位置
C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral_oad_onchip


(2)链接1:下载hex2bin 软件
sourceforge.net/.../


(3)simplelink_cc2640r2_sdk_1_40_00_45 可从如下路径下载:
dev.ti.com/.../


(4)CC2640R2 launchpad 可从这里购买:
www.ti.com/.../launchxl-cc2640r2

(5)源代码可从这里下载。(包含CC2640R2_LAUNCHXL.h 、 CC2640R2_LAUNCHXL.c 、 ccfg.c、序号1的实验中使用的“simple_peripheral_cc2640r2lp_app.bin”文件)

五、我的开发环境
CCS:Code Composer Studio 7.2.0
SDK:simplelink_cc2640r2_sdk_1_40_00_45
hardware:CC26640R2 launchpad develop kit
系统:win7 64 位

  • 1、问题已经解决
    实验1失败的原因是没有使用DIO2和DIO3作为UART的RXD和TXD。

    2、具体分析
    在《CC13x0, CC26x0 SimpleLink Wireless MCU Technical Reference Manual》中,已经明确说明bootloader模式仅支持DIO2和DIO3作为UART的RXD和TXD,这两个端口不允许更改。如图1所示。

    图1

    3、结论验证
    增加实验3和实验4,两个实验的端口配置如图2所示。且实验3和实验4均成功,证明推论正确。

    图2

  • 谢谢分享!附上CC13x0, CC26x0 SimpleLink™ Wireless MCU Technical Reference Manual的链接

    http://www.ti.com/lit/ug/swcu117h/swcu117h.pdf

  • 你在ccs环境中怎么生成的.bin文件?
  • 多谢了,问题已解决,但是串口下载总是失败
    #ifndef SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE
    //#define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0x00 // Disable ROM boot loader
    #define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5 // Enable ROM boot loader
    #endif

    #ifndef SET_CCFG_BL_CONFIG_BL_LEVEL
    //#define SET_CCFG_BL_CONFIG_BL_LEVEL 0x0 // Active low to open boot loader backdoor
    #define SET_CCFG_BL_CONFIG_BL_LEVEL 0x1 // Active high to open boot loader backdoor
    #endif

    #ifndef SET_CCFG_BL_CONFIG_BL_PIN_NUMBER
    #define SET_CCFG_BL_CONFIG_BL_PIN_NUMBER 0x0F // DIO number for boot loader backdoor
    #endif

    #ifndef SET_CCFG_BL_CONFIG_BL_ENABLE
    #define SET_CCFG_BL_CONFIG_BL_ENABLE 0xC5 // Enabled boot loader backdoor
    //#define SET_CCFG_BL_CONFIG_BL_ENABLE 0xFF // Disabled boot loader backdoor
    #endif
    这个地方我也改了。
  • 请问,你在哪里找到的bootloader源码,一直没找到?我这有CC2650的bootloader源码,如果移植到cc2640r2f上要花费些时间。

  • 你是要找BIM源碼還是Serial boot loader 源碼?如果是serial bootloader 是沒有源碼的
  • bootloader的源码以及源码的说明参见如下链接。sblAppEx.exe的源代码下载之后,是一个VC++2010的工程。在电脑上安装VC++2010,即可阅读bootloader的源码。该源码使用C++编写,并同时兼容CC2640 / CC2650等多种芯片。如果需要移植,只需要将C++转换成C即可。



    附件:关于bootloader的官方资料的链接
    (1)bootloader说明文档
    www.ti.com/.../swra466a.pdf

    (2)sblAppEx.exe的下载链接
    www.ti.com/.../getliterature.tsp