用户工具

站点工具


cc2640r2f:software_architecture

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
cc2640r2f:software_architecture [2017/09/01 17:46]
long
cc2640r2f:software_architecture [2021/06/22 23:14] (当前版本)
行 1: 行 1:
 <markdown> <markdown>
 +
 # 软件架构 # # 软件架构 #
 +
 ## 开发模型 ## ## 开发模型 ##
-下图展示CC2640R2F支持的两种开发模型,本文讲解都集中在图一,也就是整个ble协议栈和应用都工作在一个CC2640R2F的单SOC解决方案。 
  
-![4. 单设备处理器网络处理器配置](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/image7.jpeg)+展示 CC2640R2F 支持的两种开发模型。本文讲解都集中在左图,也就是整个 ble 协议栈应用都工作在一个 CC2640R2F 的单 SOC 解决方案。
  
-* 单一设备:Controller、Host、Profile、应用程序都在CC2640R2F上实现作为真正意义的单芯片解决方案这种模型是使用CC2640R2F时最简单和最常见的。TI的大部分示例项目都使用此模型这种模型是最具成本效益,并提供最低功耗的能。+![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/image7.jpeg) 
 + 
 +* 单一设备:Controller 、 Host 、 Profile 、应用程序都在 CC2640R2F 上实现作为真正意义的单芯片解决方案这种模型是最简单和最常见的。TI 的大部分示例项目都使用此模型这种模型是最具成本效益最低功耗的。 
 + 
 +* 简单网络处理器:简单网络处理器( SNP )实现了 BLE5-Stack 的 Controller 和 Host 。此外,SNP 公开了一种用于调度协议栈和外部 MCU 之间通信的接口。这样的设计促进了双 MCU 实现,应用处理器(AP)只需负责管理自定义配置文件和应用程序代码,协议栈相关功(如安全性)都在 SNP 上实现。SNP 目前支持外设和广播设备的 GAPRole 。通过 SNP API 与 SNP 进行通信。SNP API 是基于统一网络处理器接口( UNPI )的,支持 UART 和 SPI 传输层。了解更多信息, 请参考[Unified Network Processor Interface wiki页面](http://processors.wiki.ti.com/index.php/Unified_Network_Processor_Interface)。TI 还提供了 SAP 库,它实现了一个 UNPI 主数据库和 SNP API 。SAP 库可以移植到任何支持 TI-RTOS 的处理器,也可以作为开发定制双 MCU 解决方案的参考。有关 SNP 的描述,请参阅 simple_np 文件夹中的 `README.html` 页面,高级用户可以阅读 `SNP API Reference`,了解支持命令的概要
  
-* 简单网络处理器:简单网络处理器(SNP)实现了BLE5-Stack的Controller和Host。此外,SNP公开了一种用于调度协议栈和外部MCU之间的通信的接口。这样的设计促进了双MCU实现,因为应用处理器(AP)只负责管理自定义配置文件和应用程序代码。协议栈相关功能(如安全性)都在SNP上实现。SNP目前支持外设和广播设备的GAPRole。通过SNP API与SNP进行通信。SNP API是基于统一网络处理器接口(UNPI)的,支持UART和SPI传输层。了解更多信息, 请参考[Unified Network Processor Interface wiki页面](http://processors.wiki.ti.com/index.php/Unified_Network_Processor_Interface)。TI还提供了SAP库,它实现了一个UNPI主数据库和SNP API。SAP库可以移植到任何支持TI-RTOS的处理器,也可以作为开发定制双MCU解决方案的参考。有关SNP的描述,请参阅simple_np文件夹中的`README.html`页面,高级用户可以阅读`SNP API Reference`,了解支持命令的概要。 
 ## SDK 平台 ## ## SDK 平台 ##
-在<a href ="http://docs.leconiot.com/doku.php?id=cc2640r2f:get_started:development_environment_set_up:development_environment_set_up">CC2640R2 BLE5.0 开发环境搭建</a>我们详细讲解了SDK的下载、安装。整个SDK包含了我们蓝牙协议、CC2640R2F外设、TI-RTOS环境、编译链接组件等一系列软件工具集,如下图: 
  
-![图5低功耗蓝牙协议栈开发](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/image8.jpeg)+在<a href ="http://docs.leconiot.com/doku.php?id=cc2640r2f:get_started:development_environment_set_up:development_environment_set_up"> CC2640R2 BLE5.0 开发环境搭建</a>详细讲解了 SDK 的下载、安装。整个 SDK 包含了蓝牙协议、CC2640R2外设、TI-RTO环境、编译链接组件等一列软件工具集,如下图: 
 + 
 +![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/image8.jpeg)
  
 其中: 其中:
-* **TI的实时操作系统(TI-RTOS)**,包含TI-RTOS内核优化的电源管理和外设驱动程序(SPIUART等) +* ** TI 的实时操作系统( TI-RTOS )**,包含 TI-RTOS 内核优化的电源管理和外设驱动程序( SPIUART 等) 
-* **CC26xxware DriverLib**提供了一个寄存器抽象层,由软件和驱动程序用来控制CC2640R2F SoC。 +* ** CC26xxware DriverLib **提供了一个寄存器抽象层,由软件和驱动程序控制 CC2640R2F SoC。 
-* **Bluetooth low energy protocol stack**将CC2640R2F ROM中协议栈以库的形式提供。 +* ** Bluetooth low energy protocol stack **将 CC2640R2F ROM 中协议栈以库的形式提供。 
-* **Sample applications and profiles**方便各种解决方案开始开发。+* ** Sample applications and profiles **方便各种解决方案开始开发。 
 + 
 +### BLE 软件架构 ###
  
-### BLE软件架构 ### +CC2640R2F 低功耗蓝牙软件环境由以下部分组成:
-CC2640R2F低功耗蓝牙软件环境由以下部分组成:+
  
-* 具有TI-RTOS内核,驱动程序和蓝牙配置文件的应用程序镜像+* 具有 TI-RTOS 内核,驱动程序和蓝牙配置文件的应用程序镜像
 * 实现低功耗蓝牙协议的协议栈镜像或库 * 实现低功耗蓝牙协议的协议栈镜像或库
  
  
-TI-RTOS是一个实时的抢占型的多线程操作系统,利用任务同步运行程序。应用程序和低功耗蓝牙协议栈在RTOS中都作为单独的任务实现。低功耗蓝牙协议栈任务具有最高优先级。ICALL的消息传递机制用于应用程序和协议栈之间的消息交互。 +TI-RTOS 是一个实时的抢占型的多线程操作系统,利用任务同步运行程序。应用程序和低功耗蓝牙协议栈在 RTOS 中都作为单独的任务实现。低功耗蓝牙协议栈任务具有最高优先级。ICALL 的消息传递机制用于应用程序和协议栈之间的消息交互。
-![图6. 软件架构示例](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/image43.jpeg)+
  
 +![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/image43.jpeg)
 +
 +
 +* 协议栈镜像包括低功耗蓝牙协议栈的底层,从 LL 到 GAP 和 GATT 层。协议栈虽然可以作为单独的项目镜像提供,但大多数情况下低功耗蓝牙协议栈都以库的形式提供给应用程序链接使用。
 +* 应用程序镜像包括 RTOS、配置文件、应用程序代码、驱动程序和 ICall 模块。
  
-* 协议栈镜像包括低功耗蓝牙协议栈的底层,从LL到GAP和GATT层。协议栈虽然可以作为单独的项目镜像提供,但大多数情况下低功耗蓝牙协议栈都以库的形式提供给应用程序链接使用。 
-* 应用程序镜像包括RTOS,配置文件,应用程序代码,驱动程序和ICall模块。 
 ### 目录结构 ### ### 目录结构 ###
-默认SDK安装位置为:`C:\ti\simplelink_cc2640r2_sdk_x_xx_xx_xx`。+ 
 +默认 SDK 安装位置为: `C:\ti\simplelink_cc2640r2_sdk_x_xx_xx_xx` 。
  
 |BLE5.0SDK 路径|描述| |BLE5.0SDK 路径|描述|
 |--------------|---| |--------------|---|
-|docs|以上SDK平台所TI-RTOS、蓝牙开发、DriveLib全部相关的文档| +|docs|以上 SDK 平台所有 TI-RTOS、蓝牙开发、DriveLib 全部相关的文档| 
-|examples|BLE5.0、BLE4.2、TI-RTOS操作系统Sys/bios相关驱动、CC2640R2F外设驱动相关例程| +|examples|BLE5.0、BLE4.2、TI-RTOS 操作系统 Sys/bios 相关驱动、CC2640R2F 外设驱动相关例程| 
-|Kernel|TI-RTOS内核源码、组件| +|Kernel|TI-RTOS 内核源码、组件| 
-|source|BLE4.2.BLE5.0协议栈相关代码、库文件,TI-RTOS相关驱动,软件中间件| +|source|BLE4.2.BLE5.0 协议栈相关代码、库文件,TI-RTOS 相关驱动,软件中间件| 
-|tools|类似BTool相关的工具|+|tools|类似 BTool 相关的工具|
  
 ### Examples ### ### Examples ###
-examples\floder包含BLE5-Stack、TI-RTOS内核和TI-RTOS驱动程序的示例源文件。支持SimpleLink CC2640R2 SDK示例的所有源代码可以在` examples\rtos\CC2640R2_LAUNCHXL\`中找到。每个产品的示例可以在其各自的文件夹中找到。+ 
 +examples\floder 包含 BLE5-Stack、TI-RTOS 内核和 TI-RTOS 驱动程序的示例源文件。支持 SimpleLink CC2640R2 SDK 示例的所有源代码可以在 ` examples\rtos\CC2640R2_LAUNCHXL\` 中找到。每个产品的示例可以在其各自的文件夹中找到。
  
 |Exampls|描述| |Exampls|描述|
 |-------|----| |-------|----|
-|ble5stack|BLE5.0相关全部例程 例如工作外设相关的simple_peripherl| +|ble5stack|BLE5.0 相关全部例程 例如工作外设相关的 simple_peripherl| 
-|blestack|BLE4.2相关全部例程 例如工作外设相关的simple_peripherl|+|blestack|BLE4.2 相关全部例程 例如工作外设相关的 simple_peripherl|
 |demos|工程模板,参考它实现你的产品工程| |demos|工程模板,参考它实现你的产品工程|
-|drivers|CC2640R2F IO、Uart、SPI、ADC等常用外设编程|+|drivers|CC2640R2F IO、Uart、SPI、ADC 等常用外设编程|
 |sysbios|内核相关的时钟、信号量、内存管理等例程| |sysbios|内核相关的时钟、信号量、内存管理等例程|
  
-IAR示例作为.eww项目文件直接双击使用的,而CCS项目是导入的。+IAR 示例作为 .eww 项目文件直接双击使用的,而 CCS 项目是导入的。
  
 ### 源码 ### ### 源码 ###
-`source\ti\ folder`包含着BLE5-Stack,TI-RTOS驱动程序和各种共享模块的库和源文件。它们如`CC2640R2F SDK’s source\ti\ directory`所示,可以在各自的文件夹中找到。 
  
-![表5.CC2640R2F SDK’s source\ti\directory](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/CC2640R2F_SDK_source_ti_directory.png)+`source\ti\ folder` 包含着 BLE5-Stack、TI-RTOS 驱动程序和各种共享模块的库和源文件。它们如 `CC2640R2F SDK’s source\ti\ directory` 所示,可以在各自的文件夹中找到。 
 + 
 +![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/CC2640R2F_SDK_source_ti_directory.png)
  
 ## 工程管理和编译选项 ## ## 工程管理和编译选项 ##
  
-熟悉TI早期的 BLE4.0/4.1 CC254x系列蓝牙协议栈的开发者,对<a href = "http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:osal:osal">OSAL</a>一定不陌生一个简单任务管理的操作系统抽象层完成8051内核对整个蓝牙协议栈的裸机实现。升级Cortex-M3 的 CC2640R2F和基于TI-RTOS实时操作系统环境,TI保留了原来的OSAL对协议栈分层任务管理,保持了CC254x/CC2640蓝牙协议栈的统一维护。基于这种兼容设计,所以TI从工程管理区分了OSAL管理的Stack以及基于TI-RTOS的App。+熟悉TI早期的 BLE4.0/4.1 CC254x 系列蓝牙协议栈的开发者,对<a href = "http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:osal:osal"> OSAL </a>一定不陌生一个简单任务管理的操作系统抽象层完成 8051 内核对整个蓝牙协议栈的裸机实现。对于升级 Cortex-M3 的 CC2640R2F 和基于 TI-RTOS 实时操作系统环境,TI 保留了原来的 OSAL 对协议栈分层任务管理,保持了 CC254x/CC2640 蓝牙协议栈的统一维护。基于这种兼容设计, TI 从工程管理区分了 OSAL 管理的 Stack 以及基于 TI-RTOS 的 App。
  
 ![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/Workspace.png) ![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/Workspace.png)
  
-如上图所示打开 `simple_peripheral` 工作空间,cc264042lp_app和cc2640lp_stack分别对应基于TI-RTOS的应用工程和基于OSAL的协议栈工程。+如上图所示打开 `simple_peripheral` 工作空间,cc264042lp_app 和 cc2640lp_stack 分别对应基于 TI-RTOS 的应用工程和基于 OSAL 的协议栈工程。
  
-App和Stack下面又对应着不同的编译置选项,这些编译选项对应着不同的编译、链接命令等。接下来我们详细理解对应 `FlashROM`和`FlashROM_StackLibrary`。选项,FlashROM很好理解,前面的<a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:cc2640r2f_architecture:memroy_map:flash_map">软件架构->存储系统</a>我们已经详细了解过了,128KBFlash和128KBROM都服务于我们的应用和协议栈。FLASH_ROM表示一部分代码在Flash,一部分链接ROM里面,同样我们可以不链接ROM代码,直接将整整个代码发FLash方便调试,但是这里的`_StackLibrary` 要晦涩难懂的多, 该选项对应着TI对优化Flash空间的努力+App 和 Stack 下面又对应着不同的编译置选项,这些编译选项对应着不同的编译、链接命令等。
  
-区别于CC2640CC2640R2F的SDK,CC2640通过将App和Stack分别编译成两个可执行文件(FLash镜像文件)分别放在FLash首尾区域 +接下来详细理解对应 `FlashROM` 和 `FlashROM_StackLibrary`FlashROM 很好理解,前面的<a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:cc2640r2f_architecture:memroy_map:flash_map">软件架构->存储系统</a>已经详细了解过了。128KB Flash 和 128KB ROM 都服务于应用和协议栈。FLASH_ROM 表示一部分代码在 Flash,另一部分链接 ROM 里面。可以不链接 ROM 代码直接将整个代码发 FLash 方便调试,但是这里的 `_StackLibrary` 要晦涩难懂的多, 该选项是 TI 优化 Flash 空间的结果。
-![SplitImage FLash映射图](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/SplitImage.png)+
  
->**注意**:注意以上FLash映射图,App和Stack的代码空间并不连续,分别在128KBFlash的首尾。+区别于 CC2640 和 CC2640R2F 的 SDKCC2640 通过将 App 和 Stack 分别编译成两个可执行文件( FLash 镜像文件)分别放在 FLash 首尾区域
  
-CC2640R2F增加配置选项尝试把Stack编译生成驱动库文件供App链接,也就是Stack编译后不再单独生成一个Flash镜像,而是一个`*.a`的库文件供App工程链接。最后生成一个可执行文件。+![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/SplitImage.png)
  
-![Lirary  FLash映射图](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/Lirary.png)+>**注意**:注意以上 FLash 映射图,App 和 Stack 的代码空间并不连续,分别在 128KB Flash 的首尾。
  
-下来我们详细对比这两种方式编译选项+CC2640R2F 增加配置选项尝试把 Stack 编译生成驱动库文件供 App 链接,也就是 Stack 编译后不再单独生成一个 Flash 镜像,而是一个 `*.a` 的库文件供 App 工程链接,最后生成一个可执行文件
  
-### 分离镜像配置 (FlashROM) ###+![](http://www.leconiot.com/md_res/cc2640r2f/cc2640r2f_architecture/software_and_hardware/software/images/Lirary.png)
  
-与之前CC2640的BLE-Stack版本一样,应用程序和协议栈以两个单独的项目分别生成两个单独的镜像。这两个镜像文件占据单独的不重叠的Flash页面。分离镜像的配置在某些场景中是有意义的,例如在OAD中独立管理应用程序或协议栈镜像下载。分离镜像项目具有以下特性:+接下来详细对比这两种方式编译选项。 
 + 
 +### 分离镜像配置 ( FlashROM ) ### 
 + 
 +与之前 CC2640 的 BLE-Stack 版本一样,应用程序和协议栈以两个单独的项目分别生成两个单独的镜像。这两个镜像文件占据单独的不重叠的 Flash 页面。分离镜像的配置在某些场景中是有意义的,例如在 OAD 中独立管理应用程序或协议栈镜像下载。 
 + 
 +分离镜像项目具有以下特性:
  
 * 固定的协议栈入口地址 * 固定的协议栈入口地址
 * 协议栈项目生成一个单独的可执行文件(*.hex、*.out、*.bin) * 协议栈项目生成一个单独的可执行文件(*.hex、*.out、*.bin)
-* 应用程序和协议栈之间有显式的Flash/RAM边界 +* 应用程序和协议栈之间有显式的 Flash/RAM 边界 
-* 协议栈/应用程序能够独立更新(用户必须确保API兼容性)+* 协议栈/应用程序能够独立更新(用户必须确保 API 兼容性)
  
-### 协议栈编译成库文件配置(FlashROM_StackLibrary) ### +### 协议栈编译成库文件配置( FlashROM_StackLibrary ) ### 
-协议栈可以编译成静态库方式链接到应用程序编译成库的协议栈可在编译选项上加`StackLibrary`来标识。编译成静态链接库的协议栈和应用程序可以共享连续的Flash页面,因此使用此编译选项可以为链接器提供更多的Flash空间优化。尽管这种编译配置节省了Flash空间,但是应用程序和协议栈的镜像文件不会分离。协议栈库选项具有以下属性:+协议栈可以编译成静态库方式链接到应用程序编译成库的协议栈可在编译选项上加 `StackLibrary` 来标识。编译成静态链接库的协议栈和应用程序可以共享连续的 Flash 页面,因此使用此编译选项可以为链接器提供更多的 Flash 空间优化。尽管这种编译配置节省了 Flash 空间,但是应用程序和协议栈的镜像文件不会分离。 
 + 
 +协议栈库选项具有以下属性:
  
 * 协议栈项目生成一个静态库(*.a) * 协议栈项目生成一个静态库(*.a)
 * 应用程序工程将以库的方式链接协议栈 * 应用程序工程将以库的方式链接协议栈
-* 没有明确的应用程序/协议栈边界。应用程序的链接步骤决定了StackLibrary中代码的内存位置。有一些例外,如SNV。 +* 没有明确的应用程序/协议栈边界。应用程序的链接步骤决定了 StackLibrary 中代码的内存位置。有一些例外,如 SNV。 
-* 该架构通过链接器更有效地工作来节省Flash。 +* 该架构通过链接器更有效地工作来节省 Flash。 
-* 这些项目使用了改进后的ICall架构+* 这些项目使用了改进后的 ICall 架构
  
->**注意**:可能还是很多童鞋不能理解为什么这里节约了FLash空间这个和Flash的Page 擦出写入有关系,如果编译成两个可执行文件方式,协议栈烧写到FLash后占据了某个Page(4KB)的1KB,应用程序的镜像文件再次烧写的时候剩下的3KB是不能再利用的。+>**注意**:可能还是很多童鞋不能理解为什么这里节约了 FLash 空间这个和 Flash 的 Page 擦出写入有关系,如果编译成两个可执行文件方式,协议栈烧写到 FLash 后占据了某个 Page (4KB)的 1KB,应用程序的镜像文件再次烧写的时候剩下的 3KB 是不能再利用的。
  
  
 ### 项目的编译配置 ### ### 项目的编译配置 ###
-SimpleLink CC2640R2 SDK的BLE5-Stack中的示例应用程序支持多个编译配置,支持使用上述协议栈的编译类型。其他编译配置的创建是来支持开箱即用的RCOSC或OAD等功能。下表给出了BLE5-Stack中发现的编译配置及其彼此兼容性的摘要。+SimpleLink CC2640R2 SDK 的 BLE5-Stack 中的示例应用程序支持多个编译配置,方便支持使用上述协议栈的编译类型。其他编译配置的创建是来支持开箱即用的 RCOSC 或 OAD 等功能。下表给出了 BLE5-Stack 中发现的编译配置及其彼此兼容性的摘要。
  
 |工程类型|工程编译配置|描述| |工程类型|工程编译配置|描述|
 |-------|----------|----| |-------|----------|----|
-|App|FlashROM|将应用独立编译成一个可执行文件,该配置选型下对应的Stack工程也只能选择FlashRom方式,并且需要先下载Stack再下载App| +|App|FlashROM|将应用独立编译成一个可执行文件,该配置选型下对应的Stack工程也只能选择 FlashRom 方式,并且需要先下载 Stack 再下载 App | 
-|App|FlashROM_StackLibrary|配合使用Stack的FlashROM_Library方式,同样需要先将Stack编译成一个静态库,然后再编译App连接协议栈库文件| +|App|FlashROM_StackLibrary|配合使用 Stack 的 FlashROM_Library 方式,同样需要先将 Stack 编译成一个静态库,然后再编译 App 连接协议栈库文件| 
-|App|FlashROM_StackLibrary_RCOSC|基于FlashROM_Library方式,使用内部RC代替外部低速晶振| +|App|FlashROM_StackLibrary_RCOSC|基于 FlashROM_Library 方式,使用内部 RC 代替外部低速晶振| 
-|App|FlashROM_OAD_Offchip|基于FlashROM配置选型方式的外部Flash无线固件升级| +|App|FlashROM_OAD_Offchip|基于 FlashROM 配置选型方式的外部 Flash 无线固件升级| 
-|Stack|FlashROM|配合App的FalshROM编译选项,将Stack独立编译成一个可执行文件下载到Flash,需要先下载Stack再下载App| +|Stack|FlashROM|配合 App 的 FalshROM 编译选项,将 Stack 独立编译成一个可执行文件下载到 Flash,需要先下载 Stack 再下载 App | 
-|Stack|FlashROM_Library|配合App的FlashROM_Library编译选项,将协议栈编译生成一个库文件。|+|Stack|FlashROM_Library|配合 App 的 FlashROM_Library 编译选项,将协议栈编译生成一个库文件。|
  
  
-BLE5.0的项目工程还并不完整,默认都支持了库文件编译方式,如果你需要更改工作空间到独立镜像编译方式,可以按照以下方式分别将协议栈和应用程序更改到独立镜像编译方式。+BLE5.0 的项目工程还并不完整,默认都支持了库文件编译方式,如果你需要更改工作空间到独立镜像编译方式,可以按照以下方式分别将协议栈和应用程序更改到独立镜像编译方式。
  
 #### 更改协议栈工程从库文件选项编译到独立镜像选项(IAR) #### #### 更改协议栈工程从库文件选项编译到独立镜像选项(IAR) ####
  
-1. 选择需要编译的Stack Project +1. 选择需要编译的 Stack Project 
-  * 建议创建一个新的工程编译配置:Project–>Edit Configurations–>选择 New 并为编译配置提供一个新的名称。+  * 建议创建一个新的工程编译配置:Project –> Edit Configurations –>选择 New 并为编译配置提供一个新的名称。
 2. 打开项目属性 2. 打开项目属性
-  * 右键单击Project–>Options +  * 右键单击 Project –> Options 
-3. 选择Options–>Output选项 +3. 选择 Options –> Output 选项 
-  * Output File选项选择Executable+  * Output File 选项选择 Executable
  
-    >**注意**:这将启用调试器设置,并且成为模拟器的默认设置。+    >**注意**:这将启用调试器设置并且成为模拟器的默认设置。
  
-4. 转到C/C++ Compiler Options–>Preprocessor选项 +4. 转到 C/C++ Compiler Options –> Preprocessor 选项 
-  * 从Defined symbols列表中删除**STACK_LIBRARY**符号。 +  * 从 Defined symbols 列表中删除** STACK_LIBRARY **符号。 
-5. 转到Build Actions +5. 转到 Build Actions 
-  * 在Post Build步骤中添加Frontier作为边界工具: +  * 在 Post Build 步骤中添加 Frontier 作为边界工具: 
-   `$TOOLS_BLE_DIR$/frontier/frontier.exeiar "$PROJ_DIR$/$CONFIG_NAME$/List/$TARGET_BNAME$.map" "$PROJ_DIR$/../config/iar_boundary.bdef" "$PROJ_DIR$/../config/iar_boundary.xcl`+   `$TOOLS_BLE_DIR$/frontier/frontier.exe iar "$PROJ_DIR$/$CONFIG_NAME$/List/$TARGET_BNAME$.map" "$PROJ_DIR$/../config/iar_boundary.bdef" "$PROJ_DIR$/../config/iar_boundary.xcl`
  
     >**注意**:该工具会将协议栈入口地址的信息交给应用程序。     >**注意**:该工具会将协议栈入口地址的信息交给应用程序。
  
-6. 转到Linker Options–>Extra Options选项 +6. 转到 Linker Options –> Extra Options 选项 
-  * 选择**Use command line options** +  * 选择** Use command line options ** 
-  * 将以下内容添加到**Command line options**:(每行一个)窗口: +  * 将以下内容添加到** Command line options **:(每行一个)窗口: 
-    `-f $PROJ_DIR$/../config/lib_linker.cmd`+     `-f $PROJ_DIR$/../config/lib_linker.cmd`
  
-7. 转到Debugger选项 +7. 转到 Debugger 选项 
-根据您使用的调试器重新配置调试器设置TI的开发板通常使用TI XDS110仿真器调试器。+根据您使用的调试器重新配置调试器设置TI 的开发板通常使用 TI XDS110 仿真器调试器。
  
 #### 更改应用程序工程从库链接方式到独立镜像选项 #### #### 更改应用程序工程从库链接方式到独立镜像选项 ####
-1. 选择需要编译的Application Project+1. 选择需要编译的 Application Project
   * 建议创建一个新的工程编译配置:   * 建议创建一个新的工程编译配置:
-   Project–>Edit Configurations –>选择New并为编译配置起一个新的名称。+   Project –> Edit Configurations –>选择 New 并为编译配置起一个新的名称。
  
-2. 编译时去掉StackLibrary IDE文件夹。 +2. 编译时去掉 StackLibrary IDE 文件夹。 
-  * 右键单击StackLibrary->Options... +  * 右键单击 StackLibrary -> Options... 
-  * 勾选Exclude from build然后选择OK+  * 勾选 Exclude from build 然后选择 OK
  
 3. 打开工程属性 3. 打开工程属性
-  * 右键单击Project–>Options+  * 右键单击 Project –> Options
  
-4. 转到 C/C++ Compiler Options–>Preprocessor选项 +4. 转到 C/C++ Compiler Options –> Preprocessor 选项 
-  * 从**Defined symbols**列表中删除定义的`STACK_LIBRARY`符号。+  * 从** Defined symbols **列表中删除定义的 `STACK_LIBRARY` 符号。
  
-5. 转到Linker Options–>Config选项卡 +5. 转到 Linker Options –> Config 选项卡 
-  * 使用**Linker configuration file**这个.icf链接器文件:+  * 使用** Linker configuration file **这个 .icf 链接器文件:
    `$SRC_BLE_DIR$/common/cc26xx/iar/cc26xx_app.icf`    `$SRC_BLE_DIR$/common/cc26xx/iar/cc26xx_app.icf`
-  * **Configuration file symbol definitions**中删除**FLASH_ROM_BUILD = 2**:(每行一个)+  * ** Configuration file symbol definitions **中删除** FLASH_ROM_BUILD = 2 **:(每行一个)
  
-6. 转到Linker Options –> Library选项卡 +6. 转到 Linker Options –> Library 选项卡 
-  * 从**Additional libraries**中删除以下内容:(每行一个)窗口:+  * 从** Additional libraries **中删除以下内容:(每行一个)窗口:
   `$PROJ_DIR$\..\config\ble_r2.symbols`   `$PROJ_DIR$\..\config\ble_r2.symbols`
-  * 将以下内容添加到**Additional libraries**中:(每行一个)窗口:+  * 将以下内容添加到** Additional libraries **中:(每行一个)窗口:
   `$ROM_DIR$\ble_rom_releases\cc26xx_r2\Final_Release\common_r2.symbols`   `$ROM_DIR$\ble_rom_releases\cc26xx_r2\Final_Release\common_r2.symbols`
  
-7. 转到Linker Options–>Extra Options选项卡 +7. 转到 Linker Options –> Extra Options 选项卡 
-  * 从**Command line options**中删除以下选项:(每行一个)窗口:+  * 从** Command line options **中删除以下选项:(每行一个)窗口:
   `-f $PROJ_DIR$/../config/lib_linker.cmd`   `-f $PROJ_DIR$/../config/lib_linker.cmd`
  
 ## 加入我们 ## ## 加入我们 ##
 +
 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http://shang.qq.com/wpa/qunwpa?idkey=d94f12d37c3b37892af4b757c6dc34bea140f3f3128a8d68e556a3d728148e85)获取更多支持,共同研究CC2640R2F&BLE5.0。 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http://shang.qq.com/wpa/qunwpa?idkey=d94f12d37c3b37892af4b757c6dc34bea140f3f3128a8d68e556a3d728148e85)获取更多支持,共同研究CC2640R2F&BLE5.0。
 <div> <div>
行 185: 行 204:
 </div> </div>
 </markdown> </markdown>
- 
cc2640r2f/software_architecture.1504259197.txt.gz · 最后更改: 2021/06/22 23:14 (外部编辑)