20950|12

659

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

【一起来玩ble+zigbee+6lowpan!】——TI CC26xx开发环境搭建_IAR+KEIL+GCC+CCS [复制链接]

 


TI CC26xx开发环境搭建
文档编号
DN2000-0001-A0
关键字
C26xx, Wireless MCU, BLE, Zigbee
摘要
本文介绍了TI公司的CC26xx系列无线MCU的开发环境,包括IARKEILGCCCCS等四个IDE开发环境,以及下载软件SmartRF Flash Programmer,对编译、连接、下载、调试进行了简单介绍。
Mars4zhu

目  录

插图索引

表格索引
错误!未找到目录项。


1 概述
CC26xx具有低功耗、高性能、统一的芯片架构、支持多种无线标准,用户只需要应用不同的协议栈,就可以在同样的硬件资源下,实现不同的无线通讯连接。
CC2620支持RF4CE
CC2630支持Zigbee6LowPan802.15.4.
CC2640支持BLE和私有无线协议
CC2650支持以上所有。
为了对CC26xx进行学习,对不同的IDE开发环境进行了尝试,并编译下载最简单的测试程序。
由于CC26xx主要面向2.4GHz的无线通讯连接应用,必须采用协议栈,从而建议采用TI官方支持的开发环境即IARCCS。其他开发环境比如KEILGCC则不具备无线通讯协议栈的开发,只能把CC26xx当做普通的单片机来开发。


2 CC26xxWareEmuPack安装
要使用CC26xx开发,首先要安装CC26xxWare,无线协议栈(BLEZigbee等)都自带包含了CC26xxWare,同时TI网站也提供了单独的最新的CC26xxWare的安装包,该版本一般都比无线协议栈自带包含的版本要高,因此可以直接从TI官网下载CC26xxWare,并安装。安装过程略过。
EmuPackXDS调试器的驱动、调试接口dllGDB调试器中间服务器等功能。在TI网站下载后安装即可。建议安装到CCS的目录下。或者直接用CCS自带的EmuPack


3 IAR
IAR以编译快、效率高、生成代码少、优化程度高以及开发环境应用广泛而著称。
3.1. IAR安装
IAR可以从官方网站下载评估版,www.iar.com,截至目前(2015-09-02),最新版的IAR for ARM7.40.3,此版本开始支持TIXDS系列调试器。下载安装后,可以通过“hexie”方式得到全功能版本。具体安装与“hexie”过程略过。
图 31  CC26xx开发环境IAR产品
3.2. 从零开始利用IAR搭建CC26xx开发项目
(1)IAR新建一个工程 Menu->Project->Create New Project,在Tool Chain下拉框选择ARMProject Template选择Empty project,最后点击OK,选择保存Project的文件夹,命名为test_iar
图 32  IAR新建项目
2)然后选择File->Save Workspace保存工作空间。
3)在Tool->Configure Custom Argument Variables中,点击Add Variable,增加名为CC26XXWARE的工作空间变量,并且变量值为CC26xxWare的安装路径。
图 33  IAR增加CC26XXWARE的工作空间变量
4)项目设置
在左侧的工作空间的项目名上右键单击“Options”,选择Target为芯片CC2650F128
C/C++ CompilerPreprocessorinclude directories中增加$CC26XXWARE$,即把之前增加的工作空间变量代表的CC26xxWare安装目录加入到编译器的头文件包含目录中。在Linker中加入$CC26XXWARE$\driverlib\bin\iar\driverlib.lib
设置调试为对应的调试器,并且下载选项、调试器设置选项等如下:
图 34  IAR设置工程选项
图 35  IAR设置工程选项
在Project右键,点击Add->Add File,把CC26xxWareccfg.cstartup_iar.c增加到项目中。
然后新建一个main.c的文件,输入最简单的main函数代码:
void main(void)
{
    return ;
}
加入工程后,编译后,下载
图 36  IAR下载后调试


4 KEILTO DEBUG
Keil是老牌的嵌入式编译器,现在被ARM公司收购后,针对ARM编译器做了许多优化。应用广泛。
4.1. Keil安装
www.keil.com网站上下载Keil软件安装,目前(2015-09-02)最新版本是V5.16a,通过“hexie”方式获得全功能版本。
现在Keil通过Pack方式,将各厂家芯片的支持包如头文件、库、以及各类中间件比如GUICMSIS,可以独立于Keil主程序安装,降低了软件安装后占用的空间大小和痈肿度。TICC26xx系列芯片由于协议栈不采用Keil编译,因此较少使用Keil进行开发,不过TI还是自己提供了KeilPack,但是只有寄存器定义的头文件、连接设置文件、启动文件、调试用的寄存器定义文件等。可从以下地址下载Pack
Keil无法利用无线通讯协议栈,并且只能采用Jlink下载,因此Keil只能结合CC26xxWareCC26xx当做普通单片机来使用。
4.2. 从零开始利用KEIL搭建CC26xx开发项目
1)在Keil软件中,选择Project->New uVision Project,选择项目保存的目录,并输入项目名称,本实验项目名称为“test_keil”。在弹出的选择运行环境(即软件中间件)窗口中不需要选,直接点击OK即可。
图 41  Keil新建项目
2)在左侧的工作空间中右键选择项目的Target1,点击Options,进入Keil项目设置。
主要需要设置的是C/C++的头文件、C99模式、
LinkerScatter File,库文件。
调试的调试器选择与选项、以及Flash下载。
如下图:
图 42  Keil项目设置
3)在Source Group 1增加CC26xxWare目录下的Startup_keil.sccfg.c,同时可重命名Source Group 1Startup
增加AppGroup,然后新建一个main.c的文件,输入最简单的main函数代码:
void main(void)
{
    return ;
}
图 43  Keil项目源文件结构
加入工程后,编译后,利用Jlink下载(暂未实现,TODO


5 GCCTO DEBUG
Gcc为开源编译器,已经成为编译器的开源标准,已经移植到ARM架构。GCC采用命令行进行编译,可以使用Makefile进行批量处理。
5.1. GCC安装
Launchpad.net网站提供编译好的arm-none-eabi-gcc编译器,可以直接下载后安装。然后将bin目录加入PATH环境变量,同时可增加一个mingw32-make的工具,也同样将mingw32-make的目录加入PATH环境变量中,即可使用Makefile进行条件比较、批量编译等工作。
5.2. 从零开始利用GCC搭建CC26xx开发的Makefile
TI的应用笔记及其对应的例程提供了BlinkLedGCC例程,采用Eclipse开发。本节主要借鉴其中的Makfilemakedefs,来进行开发。
Makedefs类似于Makefile的头文件,其中定义了一些常量比如CC编译器名称、不同操作系统平台的编译命令等,本节对TI的例程中的makedefs进行了稍微修改,把Makefile里面的CC26XXWARE加入到makedefs里面,从而所有的Makefile都能引用同一个目录。
Makedefs文件如下:
#
# Define Variables
#
CC = arm-none-eabi-gcc
LD = arm-none-eabi-ld
AR = arm-none-eabi-ar
OBJCOPY = arm-none-eabi-objcopy
CHIP_ID = CC2650F128RGZ
LIBS = CC26xxWare_Lib/Output/CC26xxWare_Lib_GCC.a
# Directory of CC26xxware
CC26XXWARE_DIR = E:/software/ti/simplelink/cc26xxware_2_21_03_15980
#
# Uncomment the following lines, if linux cannot find arm-none-eabi-gcc
# Update the COMPILERPATH variable to your installation of GNU Tools.
#
#COMPILERPATH = /home/ti/gcc-arm-none-eabi-x_x-xxxxxx/bin
#CC = $(COMPILERPATH)/arm-none-eabi-gcc
#OBJCOPY = $(COMPILERPATH)/arm-none-eabi-objcopy
#
# Do not alter anything below this line
#
ifeq ("$(SHELL)","sh.exe")
        #Specify variables for windows
        RMDIR = rmdir /S /Q
        RM = del /F /Q
        SLASH = \\
else
        #Specify variables for linux
        RMDIR = rm -f -r
        RM = rm -f
        SLASH = /
endif
Makefile文件如下,定义了生成文件与目标文件、目标文件与源文件的依赖关系,以及头文件目录、编译器选项、连接器选项、清理项目的步骤等。其中SOURCE_FILES定义了需要的源文件,包括startup_gcc.c, ccfg.c, main.c
include ../../makedefs
#Paths where source files are located
vpath %.c $(CC26XXWARE_DIR)/driverlib \
        %.c $(CC26XXWARE_DIR)/startup_files \
        %.c ../src
#
# Define variables
#
PROJECT = CC26xxWare_chipinfo
# Directory to place executable files
OUT_DIR = ..$(SLASH)Output
# Diretory to place object files
OBJ_DIR = obj
# Start-up files
SOURCE_FILES += startup_gcc.c ccfg.c
# Add other source files needed for project
SOURCE_FILES += main.c
# Add all driverlib files to the source file array
SOURCE_FILES += $(notdir $(wildcard $(CC26XXWARE_DIR)/driverlib/*.c))
# Linker file
LINKERFILE = $(CC26XXWARE_DIR)/linker_files/cc26x0f128.lds
# Include directories
INCLUDES = -I$(CC26XXWARE_DIR)
# Options for compiler and linker
OBJGENOPTIONS = -Dgcc=1 -D$(CHIP_ID)=1 -O0 -mcpu=cortex-m3 -gdwarf-2 -mthumb -fomit-frame-pointer -Wall -Wstrict-prototypes
OUTGENOPTIONS = -mcpu=cortex-m3 -nostartfiles -T $(LINKERFILE) -Wl,-Map=$(PROJECT).map,--cref,--no-warn-mismatch
LIBGENOPTIONS = -r
# List of object files made from the list of source file
OBJECTFILES = $(patsubst %.c, $(OBJ_DIR)/%.o, $(SOURCE_FILES))
.PHONY : all
all: $(OBJECTFILES) $(PROJECT).elf
clean:
        -$(RM) $(PROJECT).map
        -$(RM) $(OUT_DIR)$(SLASH)$(PROJECT).a
        -$(RMDIR) $(OBJ_DIR)
# Rule for creating object directory
$(OBJ_DIR):
        @mkdir $@
# Rule for creating output directory
$(OUT_DIR):
        @mkdir $@
# If any $(OBJECTFILES) must be built then $(OBJ_DIR) must be built first, but if $(OBJ_DIR) is out of date (or doesn't exist),
# that does not force $(OBJECTFILES) to be built.
$(OBJECTFILES): | $(OBJ_DIR)
# If any output files must be built then $(OUT_DIR) must be built first, but if $(OUT_DIR) is out of date (or doesn't exist),
# that does not force output files to be built.
$(PROJECT).elf : | $(OUT_DIR)
# Rule for building object files
$(OBJ_DIR)/%.o : %.c
        $(CC) $(INCLUDES) $(OBJGENOPTIONS) -c $< -o $@
# Rules for building output files
$(PROJECT).elf:
        $(CC)  $(OUTGENOPTIONS) -o $(OUT_DIR)/$@ $(OBJECTFILES)
图 51  使用GCC编译CC26xx项目
6
EclipseTODO


7 CCSTODO


版本历史(Revision History
版本号
发布时间
内容
A0
2015-09-02
初次发布。
DN2000-0001-A0_TI CC26xx开发环境搭建_IAR KEIL GCC CCS.pdf (1.36 MB, 下载次数: 885)

此帖出自无线连接论坛

最新回复

谢谢分享!  详情 回复 发表于 2017-3-29 15:24
点赞 关注(2)
 

回复
举报

1891

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
我只是来看看,不说话。。。。
此帖出自无线连接论坛
个人签名
分享铸就美好未来。。。




 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

板凳
 
谢谢分享
此帖出自无线连接论坛
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

4
 
多谢!
此帖出自无线连接论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

5
 
多谢分享~~
此帖出自无线连接论坛
 
 
 

回复

119

帖子

0

TA的资源

一粒金砂(中级)

6
 
多谢!!!
此帖出自无线连接论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

7
 
很好,期待继续
此帖出自无线连接论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
此帖出自无线连接论坛
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

9
 
CC26XXWARE 单独的包  我找了很久没找到  能给个链接吗  谢谢
此帖出自无线连接论坛
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

10
 
此帖出自无线连接论坛
 
 
 

回复

1

帖子

1

TA的资源

一粒金砂(初级)

11
 
谢谢楼主的吐血分享雪中送炭
此帖出自无线连接论坛
 
 
 

回复

29

帖子

2

TA的资源

一粒金砂(初级)

12
 
感谢分享
此帖出自无线连接论坛
 
 
 

回复

6107

帖子

4

TA的资源

版主

13
 
谢谢分享!
此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表