参考链接
-
- BLE :Bluetooth Low Energy
- BR/EDR: Basic Rate/Enhanced Data Rate
- GAP: Generic Access Protocol
- HCI: Host Control Interface
- BIM: Boot Image Manager, the software bootloader
- CCFG: Customer Configuration Area, contains lock-bits on flash page 31 and the Customer Configuration Table (.ccfg)
- OAD: Over the Air Download
- SNP: Simple Network Processor, a BLE network processor implementation that supports the peripheral and broadcaster GAP Roles.
- AP: Application Processor, the host MCU that implements the user application. Connected to a network processor via a serial interface such as NPI
- SC: Sensor Controller
- SCS: Sensor Controller Studio
硬件简介
硬件架构
- CC2640R2F器件是一款无线微控制器
(MCU)
,主要适用于Bluetooth® 4.2
和Bluetooth 5
低功耗 应用.cc2640r2f数据手册. - 下面笔记是参照
simplelink_cc2640r2_sdk_1_50_00_58/docs/blestack/ble_user_guide
文档,验证总结的.建议有问题查看官方SDK各种文档.
BLE软件架构
CC2640R2
F蓝牙软件环境包含两个部分:APP应用程序,蓝牙协议栈.应用程序中包含TI RTOS
内核,驱动,蓝牙Profie三部.它们两部分之间消息通信是通过ICall
来实现.- 蓝牙栈的SDK中有是
exe
的安装包,如果是Linux系统需要从exe
里复制出来使用,也可以使用WineHQ来安装本用户目录下.
开箱测试
蓝牙主机测试(Host_test)
- Academy教程是在
simplelink_academy_cc2640r2sdk_3_40_02_00/modules/projects/ble_hosttest/information.html
导入工程
- 从本地
simplelink_cc2640r2_sdk_3_40_00_10
SDK里的examples
导入工程examples/rtos/CC2640R2_LAUNCHXL/blestack/host_test/tirtos/host_test_cc2640r2lp_app
,导入成功后. - 会看到两个工程
host_test_cc2640r2lp_app
与host_test_cc2640r2lp_stack_library
,这个_app
工程是要依赖_stack_library
工程,所以只编译与Debug
这个_app
工程时,它会先去调动编译_stack_library
工程,该工程会生成一个库文件_stack_library/FlashROM_Library/host_test_cc2640r2lp_stack_library.lib
去给到_app
工程链接的,这里不像是之前的版本把stack
编译成独立的hex
或bin
文件,而是做为一个库去给app
链接调用.
编译工程
- 编译工程,如果想知道
IDE
在编译工程时的细节,可以这样操作,把Window-->Preferences-->Build-->Console verbosity level
选择Verbose
. - 下面是
_app
工程的编译与链接以及最终生成hex
文件的细节.注意${SDK_DIR}
与${CCS_DIR}
,${WORKSPACE}
是替换过的实际绝对路径的变量.
1 | [...] |
- 连接
TI-CC2640R2-LaunchPad
板子,查看板子上的XDS110
串号.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16~$ ti/ccs920/ccs/ccs_base/common/uscif/xds110/xdsdfu -e
USB Device Firmware Upgrade Utility
Copyright (c) 2008-2019 Texas Instruments Incorporated. All rights reserved.
Scanning USB buses for supported XDS110 devices...
<<<< Device 0 >>>>
VID: 0x0451 PID: 0xbef3
Device Name: XDS110 Embed with CMSIS-DAP
Version: 3.0.0.11
Manufacturer: Texas Instruments
Serial Num: L50012VN
Mode: Runtime
Configuration: Standard
Found 1 device. - 修改
host_test_cc2640r2lp_app
工程文件的targetConfigs/CC2640R2F.ccxml
,打开后会显示Basic
界面如下图: - 把串号
L50012VN
写入上图的Enter the serial number
栏中,并保存.现在可以调试或加载host_test_cc2640r2lp_app
工程到TI-CC2640R2-LaunchPad
板子.
BTool测试
BTool
是一个PC工具,可以单独下载,SimpleLink SDK
里带有最新版本,它在${SIMPLELINK_CORE_SDK_INSTALL_DIR}/simplelink_cc2640r2_sdk_1_50_00_58/tools/blestack/btool
.它的使用说明在
${SIMPLELINK_CORE_SDK_INSTALL_DIR}/simplelink_cc2640r2_sdk_3_40_00_10/docs/ble5stack/btool_user_guide/BTool_Users_Guide/index.html
.在Linux下使用
btool.exe
需要安装mono
支持.1
2
3~$ sudo apt-get install mono -y
~$ cd simplelink_cc2640r2_sdk_1_50_00_58/tools/blestack/
~$ mono btool.exeSerial Bootloader (SBL)串口启动,Over-the-Air Download(OAD)空中下载.
Bootloader
- 参照官方文档《CC13x0, CC26x0 SimpleLinkTM Wireless MCU Technical Reference Manual.pdf》第8章描述,swcu117h.pdf,
ROM bootlaoder
主要功能是为了下载固件的,也可以通过它读取固件.安全起见可以关闭Bootloader
功能,也可以设置”后门(8.1.2 Bootloader Backdoor)”.与bootloader
的通信接口可以是2-pin UART
与SSI
.
反向工程
dump ROM
- 删除flash内存
1 | ti/uniflash_7.1.0$ ./dslite.sh --mode cc13xx-cc26xx-mass-erase -d XDS110 |
安装GHIDRA
[Gradle 6.8+ or 7.x](Gradle 6.8+ or 7.x)
这里是从它的源码去编译的,需要
JDK 11
的支持.
1 | ~$ export JAVA_HOME=~/IDE_DIR/jdk-11.0.14.1+1/ |
1 | ~$ git clone https://github.com/NationalSecurityAgency/ghidra.git |
安装SVD
插件
- 克隆https://github.com/leveldown-security/SVD-Loader-Ghidra到
$USER_HOME/ghidra_scripts
目录下。或者放到安装目录的$GHIDRA_HOME/Ghidra/Features
目录下都可以。或者打开Windows-> Script Manager -> Manage Script directories
的菜单项,靠近右上角关闭按钮的位置。打开脚本扫描路径的列表,添加一个目录路径,选择SVD-Loader-Ghidra
所在位置,再刷新所有的脚本列表. 就会在左边栏里,多了一行leveldown security
的目录。
设备配置
厂家配置 Factory Configuration(FCFG)
用户配置 Customer Configuration(CCFG)
CCFG
片区是在FLASH
的尾部(0x1fff=128*1024)它是用来设置硬件功能的,而且是与驱动程序版本是相关联的,CCFG
的修改必需与相应驱动程序一致.具体详情可以查看SDK里的示例工程源码.- 如:
simplelink_cc2640r2_sdk_3_40_00_10/examples/rtos/CC2640R2_LAUNCHXL/ble5stack/host_test/src/ccfg_app_blc.c
.它是包含一个设备启动文件simplelink_cc2640r2_sdk_3_40_00_10/source/ti/devices/cc26x0r2/startup_files/ccfg.c
. - 看文件内的描述,是通过宏把这些定义位(bit)值拼接成字节,再附加到
FLASH
的尾端,官方建议如果要修改参数,肯定是不要去改动原SDK内的文件,可以自定义一个文件如<customer_ccfg.c>:覆盖原来的参数值如:
1 | #define SET_CCFG_BL_CONFIG_BOOTLOADER_ENABLE 0xC5 // Enable ROM boot loader |
OAD下载
CC1352R1
Links:
Github OS:
谢谢支持
- 微信二维码: