CC3200软件开发环境包括软件开发工具包(SDK)、集成开发环境(IDE)、实用程序和支持工具等。
CC3200软件开发工具包(SDK)目前有四个版本:用于试制器件的SDK v0.5.1和SDK v0.5.2,以及用于正式器件的SDK v1.0.0和SDK v1.1.0。下面以用于正式器件的SDK v1.1.0为例介绍SDK的安装和目录结构。
CC3200 SDK v1.1.0的安装文件是“CC3200SDK-1.1.0-windows-installer.exe”,该安装文件支持Windows XP、Windows 7和Windows 8,下面以Windows 7为例介绍CC3200 SDK v1.1.0的安装步骤。
(1)双击“CC3200SDK-1.1.0-windows-installer.exe”,显示图2.1所示安装向导。
图2.1 CC3200 SDK v1.1.0安装向导
(2)单击“Next”(下一步)按钮,显示如图2.2所示的许可协议。
图2.2 CC3200 SDK v1.1.0许可协议
(3)阅读许可协议,选中“I accept the agreement”(我接受此协议),单击“Next”(下一步)按钮,显示如图2.3所示的安装目录。
(4)接受默认安装目录或修改安装目录,单击“Next”(下一步)按钮两次,开始安装CC3200 SDK。安装完成后,显示如图2.4所示的对话框。
图2.3 CC3200 SDK v1.1.0安装目录
图2.4 安装FTDI驱动程序问题对话框
(5)单击“是(Y)”按钮,安装FTDI驱动程序。FTDI驱动程序安装完成后,显示如图2.5所示的界面。
图2.5 CC3200 SDK v1.1.0安装完成
(6)单击“Finish”(完成)按钮完成安装,显示Readme File(自述文件)和CC3200 Wiki Page(维基网页),维基网页中有CC3200的详细介绍。
CC3200 SDK目录结构及其内容说明如表2.1所示。
表2.1 CC3200 SDK目录结构及其内容说明
(1)外设驱动程序库。CC3200外设驱动程序库简要说明如表2.2所示。
表2.2 外设驱动程序库简要说明
CC3200外设驱动API参见附录A,详细信息和使用方法参见文档“docs\CC3200 Peripheral Driver Library User's Guide.chm”。
(2)网络驱动程序库。TI SimpleLink架构提供从基本设备管理到无线网络配置和BSD套接字服务等一系列功能,为了更好地进行设计,这些功能被分离成单独的模块,每个模块代表不同的SimpleLink架构功能。SimpleLink架构组件如表2.3所示。
表2.3 SimpleLink架构组件
CC3200网络驱动API参见附录B,详细信息和使用方法参见网页“docs\simplelink_api\programmers_guide.html”。
(3)电源模式。MCU电源管理架构库允许用户应用程序利用下列电源管理模式。
● 睡眠(Sleep)。
● 深睡眠(Deep Sleep)。
● 低功耗深睡眠(LPDS)。
● 休眠(Hibernate)。
Wi-Fi网络处理器(CC3100)支持下列低功耗策略。
● 正常(默认):数据传送时间和功耗性能的最佳折中。
● 低功耗:仅用于收发(Transceiver)模式。
● 长睡眠间隔:在配置睡眠间隔(最长2 s)后的下一个DTIM唤醒,仅用于客户端套接字(Client Socket)模式。
(4)示例程序。CC3200 SDK的example目录中包含62个示例程序目录,这些示例程序大致分为两类:22个MCU示例程序和40个网络示例程序,两类示例程序的目录名及其简要说明分别如表2.4和表2.5所示。
表2.4 MCU示例程序简要说明
表2.5 网络示例程序简要说明
本书将以这些示例程序为核心,在示例程序分析的基础上,介绍各部分的使用方法,并对部分示例程序进行修改和改进,增强程序功能。
CC3200的集成开发环境(IDE)可以使用CCS(v6.1.0)、IAR(v7.30)或GCC(Linux环境),下面以CCS(v6.1.0)为例介绍集成开发环境的安装和使用。
CCS有在线和离线两种安装方法,CCS v6.1.0的离线安装压缩文件是“CCS6.1.0.00104_win32.zip”,将压缩文件解压缩后得到“CCS6.1.0.00104_win32”目录,其中包含安装文件“ccs_setup_6.1.0.00104.exe”,安装步骤如下。
(1)双击ccs_setup_6.1.0.00104.exe,显示如图2.6所示的许可协议。
图2.6 CCS许可协议
(2)阅读许可协议,选中“I accept the terms of the license agreement”(我接受许可协议中的条款),单击“Next”(下一步)按钮,显示如图2.7所示的安装目录。
图2.7 CCS安装目录
(3)接受默认安装目录或单击“Browse”(浏览)按钮修改安装目录,单击“Next”(下一步)按钮,显示如图2.8所示的处理器支持。
图2.8 CCS处理器支持
(4)选择“SimpleLink Wireless MCUs”下的“CC32xx Device Support”和“TI ARM Compiler”,单击“Next”(下一步)按钮,显示如图2.9所示的选择调试探头对话框。
图2.9 CCS选择调试探头
(5)接受默认设置,单击“Finish”(完成)按钮开始安装,安装过程大约需要几分钟。安装完成后,显示如图2.10所示的安装成功对话框。
(6)单击“Finish”(完成)按钮完成安装,创建快捷方式并执行CCS,显示如图2.11所示的选择工作空间对话框。
图2.10 CCS安装成功
图2.11 CCS选择工作空间
(7)接受默认设置或修改工作空间目录,选择“Use this as the default and do not ask again”,单击“OK”按钮,显示如图2.12所示的CCS编辑界面。
图2.12 CCS编辑界面
正常使用时,单击“File”(文件)→“Switch Workspace”(更换工作空间)→“Other…”(其他),可以随时更换工作空间,更换工作空间后CCS将重新启动。
(8)单击“Getting Started”(开始)标签右上角的“App Center”(应用中心),打开应用中心标签,在搜索框中输入“cc3200”,在搜索框右边的下拉菜单中选择“All”,搜索出“CC3200 Add-On”和“TI-RTOS for SimpleLink”插件,单击插件右下角的“Select”选中插件进行更新,如图2.13所示。
图2.13 CCS应用中心
如果插件右下角显示“Up to Date”(最新),则不需要更新。
(9)单击应用中心左上角的“Install Software”(安装软件),安装选择的插件。安装过程中显示许可协议对话框时,单击“I accept the terms of the license agreement”(我接受许可协议中的条款),单击“OK”按钮。
(10)安装完成后,显示“Software Updates”(软件更新)对话框,单击“Yes”(是)按钮重新启动CCS,如图2.14所示。
图2.14 CCS软件更新对话框
CCS使用的主要内容是编辑源文件、生成和调试目标文件等,其中最主要的是调试目标文件。下面以导入项目为例,简单介绍CCS的使用。
(1)单击“Project”(项目)→“Import CCS Projects…”(导入CCS项目),打开如图2.15所示的导入CCS项目对话框。
(2)单击“Browse”(浏览)按钮,选择CC3200 SDK安装目录,其中的CCS项目显示在“Discovered projects”(发现项目)下。
图2.15 导入CCS项目对话框
选择“blinky”项目,选项“Copy projects into workspace”(复制项目到工作空间)自动选中,且变为灰色(不允许修改)。
单击“Finish”按钮,CCS在工作空间目录中创建blinky目录,并将SDK中的blinky项目文件复制到blinky目录,项目出现在CCS的“Project Explorer”(项目浏览器)视图中(单击项目名左边的三角符号可以展开项目),如图2.16所示。
(3)右击“Project Explorer”(项目浏览器)中的“blinky”项目,在弹出菜单中单击“Properties”(属性),打开“属性”对话框,确认“Device”(器件)选择“CC3200”,选择“Compiler version”(编译器版本)为“TI v5.2.2”,如图2.17所示。
图2.16 CCS项目浏览器
图2.17 CCS项目属性对话框
(4)右击“Project Explorer”(项目浏览器)中的“blinky”项目,在弹出菜单中单击“Build Project”(生成项目)生成项目目标文件“blinky.out”。
注意:第一次生成项目时,CCS需要生成编译库,因此生成时间大约需要几分钟。
为了调试目标文件,必须进行目标配置,步骤如下。
(1)单击“View”(视图)→“Target Configuration”(目标配置),打开如图2.18所示的目标配置视图。
(2)右击“User Defined”(用户定义),在弹出菜单中单击“Import Target Configuration”(导入目标配置),选择“CC3200 SDK”安装目录“tools\ccs_patch”目录中的“CC3200.ccxml”文件,在“File Operation”(文件操作)对话框中单击“OK”按钮复制文件,“CC3200.ccxml”出现在“User Defined”(用户定义)下,如图2.19所示。
图2.18 CCS目标配置1
图2.19 CCS目标配置2
(3)右击“CC3200.ccxml”,在弹出菜单中单击“Set as Default”(设为默认值),将“CC3200.ccxml”设为默认配置。
(4)用USB线将开发板连接到计算机,单击“Run”(运行)→“Debug”(调试)或按“F11”键,CCS将目标文件“blinky.out”下载到CC3200并进入调试界面,如图2.20所示。
图2.20 CCS调试界面
CCS调试界面主要包括调试工具栏、调试(Debug)视图、变量(Variables)/表达式(Expressions)/寄存器(Registers)视图、主程序(main.c)视图和控制台(Console)视图等,其中调试工具栏如图2.21所示。
图2.21 CCS调试工具栏
(5)单击“Run”(运行)→“Resume”(运行)或单击调试工具栏中的“Resume”(运行)按钮
或按“F8”键,运行程序,开发板上的3个用户LED首先全部熄灭,然后红LED、黄LED和绿LED依次循环闪烁。
(6)单击调试工具栏中的“Terminate”(结束)按钮
,结束调试返回编辑界面。
CCS调试界面的具体使用参见后续章节的详细介绍。
为了使CCS能在新的安装路径中找到SDK驱动程序,需要重建SDK驱动程序库,包括外设驱动程序库、网络驱动程序库、操作系统程序库和TI-RTOS配置等。
重建SDK驱动程序库的步骤如下。
(1)参考图2.15导入driverlib、oslib、simplelink、ti_rtos_config驱动程序库项目。
注意:在导入上述项目时,不要选择“Copy projects into workspace”(复制项目到工作空间)选项,否则编译程序将无法找到新生成的库文件。
(2)右击“Project Explorer”(项目浏览器)中的driverlib项目,在弹出菜单中单击“Properties”(属性),打开“属性”对话框,选择“Compiler version”(编译器版本)为TI v5.2.2,如图2.17所示。
(3)右击“Project Explorer”(项目浏览器)中的driverlib项目,在弹出菜单中单击“Build Project”(生成项目)重建外设驱动程序库。
(4)重复步骤(2)和步骤(3),用相同的方法重建SimpleLink。
注意:SimpleLink有4种配置(Configuration):NON_OS、NON_OS_PM、OS和PM_framework,这4种配置需要分别进行设置和重建,参见步骤(6)。
(5)重建ti_rtos_config项目时,除在“属性”对话框“main”标签选择“Compiler version”(编译器版本)为“TI v5.2.2”外,还需要在“RTSC”标签选择最新XDCtools和TI-RTOS版本,不选择bios和uia,确认“Target”(目标)是“ti.targets.arm.elf.M4”,选择“Platform”(平台)为“ti.platforms.simplelink:CC3200”,如图2.22所示。
(6)重建oslib项目时,需首先在“属性”对话框中选择“Configuration”(配置)为ti_rtos,单击“Manage Configurations…”(管理配置)按钮打开管理配置对话框进行配置管理,如图2.23所示,然后在“main”标签选择“Compiler version”(编译器版本)为“TI v5.2.2”。
注意:oslib项目使用了ti_rtos_config项目,因此必须先重建ti_rtos_config项目,再重建oslib项目。
图2.22 ti_rtos_config项目属性对话框
图2.23 oslib项目管理配置对话框
CC3200的实用工具主要有PinMux和UniFlash。
PinMux为通用引脚的个性化选择提供便利的接口,PinMux根据选择信息生成的源文件可直接包含在项目中。
PinMux v3.0的安装文件是“pinmux-3.0.334-setup.exe”,PinMux v3.0在Windows 7中的安装步骤如下。
(1)双击pinmux-3.0.334-setup.exe,显示如图2.24所示的安装向导。
图2.24 PinMux安装向导
(2)单击“Next”(下一步)按钮,显示如图2.25所示的许可协议。
图2.25 PinMux许可协议
(3)阅读许可协议,选中“I accept the agreement”(我接受此协议),单击“Next”(下一步)按钮,显示如图2.26所示的安装目录。
图2.26 PinMux安装目录
(4)接受默认安装目录或修改安装目录,单击“Next”(下一步)按钮两次,开始安装。安装完成后,显示如图2.27所示的安装完成对话框。
图2.27 PinMux安装完成
(5)单击“Finish”(完成)按钮,创建桌面快捷方式,并执行PinMux。
PinMux的使用请参考3.1.4节。
UniFlash用于将固件、应用程序和证书等编程到串行闪存。UniFlash v3.2的安装文件是“uniflash_cc3xxx_setup_3.2.0.00123.exe”,在Windows 7中的安装步骤如下。
(1)双击uniflash_cc3xxx_setup_3.2.0.00123.exe,显示如图2.28所示的安装向导。
图2.28 UniFlash安装向导
(2)单击“Next”(下一步)按钮,显示如图2.29所示的许可协议。
图2.29 UniFlash许可协议
(3)阅读许可协议,选中“I accept the agreement”(我接受此协议),单击“Next”(下一步)按钮,显示如图2.30所示的安装目录。
(4)接受默认安装目录或修改安装目录,单击“Next”(下一步)按钮两次,开始安装。安装完成后,显示如图2.31所示的安装完成对话框。
(5)单击“Finish”(完成),创建快捷方式,并执行UniFlash。
UniFlash的使用请参考2.2.2节和8.2节。
图2.30 UniFlash安装目录
图2.31 UniFlash安装完成
CC3200的支持工具主要有超级终端、Iperf和SmartConfig等。
超级终端是一个通用的串行交互软件,可以通过串口、调制解调器或以太网连接到其他计算机、Telnet站点、公告板系统(BBS)、联机服务和主机,以及嵌入式系统等。
Windows XP自带超级终端,而Windows 7中没有超级终端,可以将Windows XP自带的超级终端复制到Windows 7中使用,也可以使用其他的串口通信工具。
Windows XP自带的超级终端包含“C:\Program Files\Windows NT\hypertrm.exe”和“C:\WINDOWS\system32\hypertrm.dll”两个文件。
下面以Tera Term为例,介绍Windows 7中超级终端的安装和设置。Tera Term是一款简单但功能强大的开源终端仿真器,主要特性如下。
● 支持Telnet和SSH2。
● 内置Web服务。
● Tera Term宏语言。
● 免费。
Tera Term v4.85的安装文件是“teraterm485.exe”,Tera Term v4.85在Windows 7中的安装步骤如下。
(1)双击teraterm485.exe,显示如图2.32所示的安装向导。
图2.32 Tera Term安装向导
(2)单击“Next”(下一步)按钮,显示如图2.33所示的许可协议。
图2.33 Tera Term许可协议
(3)阅读许可协议,单击“I accept the agreement”(我接受此协议),单击“Next”(下一步)按钮,显示如图2.34所示的安装目录。
(4)接受默认安装目录或修改安装目录,单击“Next”(下一步)按钮,显示如图2.35所示的选择组件对话框。
(5)接受默认选择或选择其他安装方式,单击“Next”(下一步)按钮,显示如图2.36所示的选择语言对话框。
图2.34 Tera Term安装目录
图2.35 Tera Term选择组件
图2.36 Tera Term选择语言
(6)接受默认选择或选择Chinese(Simplified)(简体中文),单击“Next”(下一步)按钮,显示如图2.37所示的选择开始菜单文件夹对话框。
图2.37 Tera Term选择开始菜单文件夹
(7)单击“Next”(下一步)按钮接受默认选择,显示如图2.38所示的选择添加任务对话框。
图2.38 Tera Term选择添加任务
(8)单击“Next”(下一步)按钮接受默认选择,显示如图2.39所示的准备安装对话框。
图2.39 Tera Term准备安装
(9)单击“Install”(安装)按钮,开始安装Tera Term,安装完成后,显示如图2.40所示的安装完成对话框。
(10)选择“Launch Tera Term”(执行Tera Term),单击“Finish”(完成)按钮,完成安装并执行Tera Term,显示如图2.41所示的新建连接对话框。
图2.40 Tera Term安装完成
图2.41 Tera Term新建连接
(11)单击“串口”,如果已将CC3200 LaunchPad等硬件开发平台连接到PC,并且正确安装了FTDI驱动程序,则“端口”下拉列表中会出现USB-UART转换后的串行端口(如COM22),选择该串行端口,单击“确定”按钮,显示Tera Term窗口。
(12)单击Tera Term“设置”菜单下的“窗口”菜单项,打开如图2.42所示的窗口设置对话框。
图2.42 Tera Term“窗口设置”对话框
(13)选择“光标形状”为“横线”,单击“翻转”按钮,将黑底白字翻转为白底黑字,单击“确定”按钮关闭“窗口设置”对话框。
(14)单击Tera Term“设置”菜单下的“字体”菜单项,打开如图2.43所示的字体对话框。
(15)选择“字体”为Consolas,单击“确定”按钮关闭字体对话框。
(16)单击Tera Term“设置”菜单下的“串口”菜单项,打开如图2.44所示的串口设置的对话框。
图2.43 Tera Term“字体”对话框
图2.44 Tera Term“串口设置”对话框
(17)选择“波特率”为115200,单击“确定”按钮关闭串口设置对话框。
(18)单击Tera Term“设置”菜单下的“保存配置”菜单项,打开如图2.45所示的保存配置对话框。
图2.45 Tera Term“保存配置”对话框
(19)单击“保存”按钮保存配置,关闭保存配置对话框,完成Tera Term设置。
Iperf是一个网络性能测试工具,可以测试最大TCP和UDP带宽性能。Iperf具有多种参数,可以根据需要调整。Iperf可以报告带宽、延迟抖动和数据包丢失等。
Iperf有UNIX/Linux版、Windows版和Android版等多种版本。为了测试方便,可在Android手机上安装Android版,Android版的安装文件是Iperf.apk,其安装和一般Android手机软件的安装方法相同。
SmartConfig技术是TI独特的一步式Wi-Fi智能配置技术,允许多个CC3200设备快速高效地连接到Wi-Fi网络。
考虑到CC3200设备通常没有用于输入Wi-Fi网络名称和密码的显示屏或键盘,Smart Config技术为用户提供了将基于CC3200的设备轻松连接到接入点的能力。
SmartConfig Android版的安装文件是SmartConfigCC3X.apk,其安装和一般Android手机软件的安装方法相同。
CC3200 ROM中包含启动引导程序和外设驱动库。启动引导程序允许用户更新串行闪存中的应用程序映像和其他用户文件,同时还负责将串行闪存中的应用程序加载到应用MCU的RAM中。在ROM中提供外设驱动库可以减少应用程序占用RAM的容量。
启动引导程序驻留在应用MCU的ROM中,包括更新/下载和自举两项功能。
● 更新/下载:下载应用程序映像到CC3200,下载功能只有在CC3200的UART装载模式(LDfrUART:SoP[2:0]=100)时才能使用。
● 自举:负责扫描串行闪存中的有效应用程序映像,将有效应用程序映像加载到应用MCU的RAM中,并将运行控制交给应用程序。
(1)启动引导模式。CC3200有3个上电感知(SoP)引脚,可以设置下列三种操作模式。
① Fn4WJ(SoP[2:0]=000):4线JTAG功能开发模式,4个JTAG引脚TDI、TDO、TMS和TCK用于调试器连接,启动时将应用程序映像从串行闪存加载到RAM中运行。
② Fn2WJ(SoP[2:0]=001):2线SWD功能开发模式,2个SWD引脚TMS和TCK用于调试器连接,启动时将应用程序映像从串行闪存加载到RAM中运行。
③ LDfrUART(SoP[2:0]=100):UART下载模式,在开发和OEM装配时通过UART将应用程序映像下载到串行闪存。
与启动引导相关的是Fn4WJ(SoP[2:0]=000:4线JTAG功能开发模式)和LDfrUART(SoP[2:0]=100:UART下载模式)。
(2)启动引导程序和用户应用程序共享MCU RAM。在UART下载模式,启动引导程序需要内存资源,这些资源来自MCU RAM,启动引导程序使用的RAM容量是16 KB。对于256 KB的MCU RAM,用户应用程序映像需要限制在240 KB,因此开发者需要关注以下两个关键点。
① MCU RAM的地址范围0x2000 0000~0x2000 3FFF(16 KB)被启动引导程序和用户应用程序共享。当启动引导程序将应用程序映像从串行闪存加载到RAM时,该区域被启动引导程序独占,一旦启动引导程序将运行控制交给应用程序,该区域将作为应用程序的数据段使用。
② MCU RAM的地址范围0x2000 4000~0x2003 FFFF(240 KB)被用户应用程序独占,用户应用程序映像总是被加载到0x2000 4000开始的该区域。
应用MCU ROM中的外设驱动程序可以被用户应用程序调用,外设驱动程序的源代码可在SDK中使用,开发者可以选择生成从RAM直接使用设备驱动程序的应用程序。
ROM API使用“重定向”方法进行调用,以允许未来扩展时ROM中访问函数的位置向后兼容,未来版本的API位置可能改变,但API表不会变。
ROM中的主子两级表解决了API的访问入口问题,主表中每个外设对应一个指向各自子表的指针,子表中每个相关外设的API对应一个指向各自API的指针。
主表存放在ROM的开始地址为0x0000 040C,部分内容如表2.6所示,其中中断子表的部分内容如表2.7所示。
表2.6 ROM API主表部分内容
表2.7 ROM API中断子表部分内容
主表和各子表的详细内容参见“driverlib\rom.h”文件。
(1)用ROM API替代RAM API的步骤如下。
① 所有使用ROM API的.c文件都应该包含下列头文件。
② 所有项目文件应该添加全局预处理定义“TARGET_IS_CC3200”。
③ 所有API调用的API名称前应该添加“MAP_”。
④ 重建所有相关项目。
(2)用RAM API修补ROM API的步骤如下。
① 在“\driverlib\rom_patch.h”文件中为所有需要修补的API添加定义。
② 重建所有相关项目。
(3)重新用RAM API连接用户应用程序的步骤如下。
① 从所有使用API的项目文件中删除全局预处理定义“TARGET_IS_CC3200”。
② 重建所有相关项目。