应用报告
ZHCA533A – April 2013 – Revised May 2013
将½件项目从
StellarisWare
®
迁移到
TivaWare™
上
David Wilson
.................................................................................................
Stellaris® Microcontrollers
摘要
由于德州仪器
(TI)
发布了
Tiva™
系列
32
½
ARM
®
Cortex™-M4
微控制器
(MCU), StellarisWare
®
综合½
件工具套件也迁移到
TivaWare™上。
这个全新的½件平台提供了与之前版本中一样的特性,½是在迁移过
程中做出了几处改动,需要对现有的
StellarisWare
应用进行简单修改,以½它们½够在全新的针对
C
系列
的
TivaWare½件树内建立并运行。
本文档详述了用于
LM3S
和
LM4F MCU
的
StellarisWare
与用于
C
系
列
MCU
的
TivaWare
之间的差异,并且对将现有用户代码从之前的平台迁移到全新平台所需做出的改动提
供指导。
除非另外注明,术语TivaWare与针对
C
系列的
TivaWare是同义词。
内容
1
2
3
4
背景情况
......................................................................................................................
2
快速入门指南
................................................................................................................
2
特定
API
和源代码变化
.....................................................................................................
3
结论
..........................................................................................................................
16
图表列表
1
2
3
4
5
........................................................................................................................
针对struct
tm和tTime的字段名映射
......................................................................................
StellarisWare
和
TivaWare
中½用的数据类型
..........................................................................
TivaWare
中被改变的匈牙利前缀表示法
.................................................................................
LM4F
部件号的
Tiva C
系列替代部件号
.................................................................................
库½名
4
5
5
6
7
Tiva, TivaWare are trademarks of Texas Instruments.
StellarisWare is a registered trademark of Texas Instruments.
Cortex is a trademark of ARM Limited.
ARM is a registered trademark of ARM Limited.
All other trademarks are the property of their respective owners.
ZHCA533A – April 2013 – Revised May 2013
将½件项目从
StellarisWare
®
迁移到
TivaWare™
上
版权
© 2013, Texas Instruments Incorporated
1
SPMA050 — http://www-s.ti.com/sc/techlit/SPMA050
背景情况
www.ti.com.cn
1
背景情况
自从在
2006
年被引入以来,StellarisWare ½件开发平台一直为德州仪器
(TI)
的
Stellaris ARM Cortex-M3
和
Cortex-M4F
微控制器提供很½的服务。 随着德州仪器
(TI)
微控制器产品的发展壮大,现在的微控制器产
品包括多个基于
ARM Cortex
的部件系列,此系列产品支持不同的市场划分和目标应用,然
而,StellarisWare 正在成为
TivaWare。
这个迁移要求对平台架构和执行做出一些简单改动。 由于以下几
个原因,已经做出了这些细小改动:
•
为了实现对同一
TivaWare
系列项下多个,不同
MCU
系列的支持;
•
为了提高不同处理器平台上的源代码可移植性;以及
•
为了纠正
StellarisWare
代码中已知架构缺陷和不一致的地方。
在针对
C
系列的
TivaWare
中保留了全部现有
StellarisWare
特性和功½性,并且外设驱动程序库、图½库
以及
USB
库中适用于
Tiva
部件的应用程序接口
(API)
也被保留下来。 所需的改动并不全是向后兼容的,所
以为了½之前用
StellarisWare
建立的应用½够移植成可由
TivaWare
建立的应用,某些源代码和项目文件
修改是必须的。
程序设计工具值向后兼容性。 德州仪器
(TI)
一直设法平衡这些改动所带来的长期效益与迁移过程中,由于
某些应用源代码修改所导致的不便之处之间的关系。 我们相信,迁移过程并不是一个困难的挑战,并且您的
大多数应用可以与
TivaWare
一起运½正常,而无需大量的工½或昂贵的½件开发。
每个
Tiva
部件系列有其自身的½件安装,其内容已按照特定系列功½的需要进行了调整。 本文档主要解决
将一个
StellarisWare
应用迁移至针对
C
系列环境的
TivaWare
中。
Tiva
系列½件新方法的一个目的就是在
所有
Tiva
系列上提供一致的
API
和环境;因此,½其它
TivaWare
系列版本可用时,此处所介绍的信息也
广泛适用于它们。
2
快速入门指南
由于
StellarisWare
与
TivaWare
之间的以下这些差异,需要对应用源代码进行改变:
•
目½结构和库½名规则已经发生变化。
• C99
数据类型现在已用于整个
TivaWare
中。
•
匈牙利前缀表示法已经发生变化,这导致很多结构字段的名称变化。
•
现有
Stellaris LM4F
器件部件号已经发生变化。
• USB
器件初始化已经被简化。
• StellarisWare
中过时不用的½数和标签已经从
TivaWare
中删除。
为了½您½够开始对您的项目进行改动,以下的步骤提供了在全新
TivaWare
树中建立并连接一个典型
StellarisWare
项目所需工½的概述。 不½用
USB
库的用户也许会发现,这个列表中描述的改动不足以½他
们在全新的
TivaWare
树中建立并运行应用。 对于启用
USB
的应用,需要其它几个小改动;这些改变在
一
个之后的部分中进行了描述。
1.
将您现有的项目目½复制到全新
TivaWare
树中相应的½½中。 例如,如果您的应用½
于C:\StellarisWare\boards\<您的电路板
>\<
您的应用
>中,将其复制
到C:\ti\TivaWare_C_Series_1.0\boards\<您的电路板
>\<
您的应用
>中。
请注意:确保您复制已开发的任一与电路板相关的驱动程序代码,通常½于
C:\StellarisWare\boards\<您
的电路板>\drivers 中,并且已经知道您必须在
TivaWare
树中创建电路板目½。 预先建立的电路板示例
已经移动到新½½。
在所有包含
StellarisWare
或
TivaWare
头文件的源文件顶部的
<stdint.h>
和
<stdbool.h>
中添加
#includes。
这些头文件定义现在在
TivaWare
中½用的标准数据类型。
如果您的源文件包括utils/ustdlib.h,在文件顶部的
<time.h>
内添加一个
#include。
这个添加的内容被要
求用来获取struct
tm的标准定义,现在它被用来替代私有的tTime类型
在您源代码的全局范围内,用标准bool类型替代tBoolean。
在全局范围内,用struct
tm替代tTime。
如果您的应用½用tTime,那么您重新编写代码以½用
C
标
ZHCA533A – April 2013 – Revised May 2013
2.
3.
4.
5.
2
将½件项目从
StellarisWare
®
迁移到
TivaWare™
上
版权
© 2013, Texas Instruments Incorporated
SPMA050 — http://www-s.ti.com/sc/techlit/SPMA050
www.ti.com.cn
特定
API
和源代码变化
6.
7.
8.
9.
准struct
tm的等值字段。
这个修改是名称的直接替换,例如将ucMon或ucYear替换为tm_mon
或tm_year。
如果应用½用的
StellarisWare API
需要从其中一个
StellarisWare
头文件中获得一个结构,那么请检查
您的源代码中所½用的字段名称,这是因为这些名称中的很多名称已经发生变化以符合匈牙利前缀表示
法规范以及
C99
数据类型的½用。
如果½用GPIOPinConfigure½数,请修改您的项目设½或
Makefile
来将现有的PART_LM4Fxxx标签替
换为替代部件号(请参考表
5)。
如果应用½用格式inc/lm4f*.h的任一特定部件头文件,将这个名称替换为等值的tm4c部件头文件,方法
如3.4
节中所述。
修改您的项目设½或
Makefile
来连接至
TivaWare
树内新½½上的驱动程序库、图½库和/或
USB
库。
TivaWare
库的放½½½与它们在
StellarisWare
树中的½½一致,½是从
toolchain
目½名称和库名称中
删除了-cm3和-cm4后缀。 更多信息请参阅
库½名部分。
3
3.1
特定
API
和源代码变化
目½结构变化
TivaWare
目½结构除了以下两个例外情况,几乎完全映射至
StellarisWare
发布版本内½用的结构:
•
缺省安装目½已经从C:\StellarisWare变成了C:\ti\TivaWare_C_Series_<version>。
•
特定电路板示例应用已经从boards子目½移动至examples\boards子目½中。
½½用多个
TivaWare
安装或者针对不同
TivaWare MCU
系列的安装时,第一个改动可实现更加整½干净的
总½目½结构。 如果在安装过程中选择了缺省目½,这个全新的缺省目½还可确保不同的版本½够并排安
装,而不会相互写覆盖。 ½然,在安装过程中可½松写覆盖安装目½;用户可以随意选择将
TivaWare
树安
装在特定应用所需的任一目½中。
TivaWare
内的½件或目½节点不会假定根目½的名称或½½。
第二个改动减少了因代码示例的½½所造成的混淆。 在
StellarisWare
中,可在两个不同的子目½中找到代
码示例:boards针对特定代码示例应用,而examples针对特定外设示例。 现在,所有示例源代码可在单
个examples目½中找到,这一目½中的更½级子目½用于电路板和外设。
StellarisWare
用户已经可以在他们各自文件系统中的任一½½创建他们自己的应用项目。
TivaWare
内也提
供了这个灵活性。 例如,如果您的项目驻留在C:\StellarisWare目½中,将其移动到C:\TI\TivaWare-C-
Series-<
版本
>下的同一½½可对其进行编译,而无需包含任½与路径相关的改动,这是因为所有头文件的相
对路径保持不变。 一个被存储在C:\StellarisWare\boards\<½的电路板
>\<
您的应用
>中的之前的项目可被移
动至C:\TI\TivaWare-C-Series\boards\<½的电路板
>\<
您的应用
>(即½基本
TivaWare
发布版本在这个级别
上不包含boards目½也是如此)并且仍½够被编译,而无需在代码中进行任½路径改变。
对于存储在C:\StellarisWare子树之外的项目,或者那些存储在树内,½是引用树外条目的项目,有必要对
toolchain
项目或
makefile
进行修改以解决这样一个事实,那就是由于缺省安装目½发生改变,TivaWare 库
和头文件现在处于不同的½½。
ZHCA533A – April 2013 – Revised May 2013
将½件项目从
StellarisWare
®
迁移到
TivaWare™
上
版权
© 2013, Texas Instruments Incorporated
3
SPMA050 — http://www-s.ti.com/sc/techlit/SPMA050
特定
API
和源代码变化
www.ti.com.cn
3.2
库½名
基于
Cortex-M3
和
Cortex-M4F
架构的
MCU
在内的
Stellaris
系列;所有
Tiva
器件是基于
M4F
的。 因
此,TivaWare 内库的名称已经被简化以删除最近
StellarisWare
建立内½用的特定内核后缀。表
1列出了
TivaWare
和
StellarisWare
库的名称。
表
1.
库½名
说明
Toolchain
CCS
Keil RVMDK
外设驱动程序库
IAR EWARM
gcc
和
Code Bench
StellarisWare
文件
driverlib/ccs-m3/Debug/driverlib-cm3.lib
driverlib/ccs-m4f/Debug/driverlib-cm4f.lib
driverlib/rvmdk-cm3/driverlib-cm3.lib
driverlib/rvmdk-cm4f/driverlib-cm4f.lib
driverlib/ewarm-cm3/Exe/driverlib-cm3.a
driverlib/ewarm-cm4f/Exe/driverlib-cm4f.a
driverlib/gcc-cm3/libdriver-cm3.a
driverlib/gcc-cm4f/libdriver-cm4f.a
grlib/ccs-m3/Debug/ grlib-cm3.lib
grlib /ccs-m4f/Debug/ grlib-cm4f.lib
grlib /rvmdk-cm3/grlib-cm3.lib
grlib /rvmdk-cm4f/grlib-cm4f.lib
grlib /ewarm-cm3/Exe/grlib-cm3.a
grlib /ewarm-cm4f/Exe/grlib-cm4f.a
grlib /gcc-cm3/libgr-cm3.a
grlib /gcc-cm4f/libgr-cm4f.a
usblib/ccs-m3/Debug/ usblib-cm3.lib
usblib/ccs-m4f/Debug/usblib-cm4f.lib
usblib/rvmdk-cm3/usblib-cm3.lib
usblib/rvmdk-cm4f/ usblib-cm4f.lib
usblib/ewarm-cm3/Exe/ usblib-cm3.a
usblib/ewarm-cm4f/Exe/ usblib-cm4f.a
usblib/gcc-cm3/libusb-cm3.a
usblib/gcc-cm4f/libusb-cm4f.a
TivaWare
文件
driverlib/ccs/Debug/driverlib.lib
driverlib/rvmdk/driverlib.lib
driverlib/ewarm/Exe/driverlib.a
driverlib/gcc/libdriver.a
CCS
Keil RVMDK
图½库
IAR EWARM
gcc
和
Code Bench
grlib/ccs/Debug/grlib.lib
grlib/rvmdk/grlib.lib
grlib/ewarm/Exe/grlib.a
grlib/gcc/libgr.a
CCS
Keil RVMDK
USB
库
IAR EWARM
gcc
和
Code Bench
usblib/ccs/Debug/usblib.lib
usblib/rvmdk/usblib.lib
usblib/ewarm/Exe/usblib.a
usblib/gcc/libusb.a
3.3
C99
类型和匈牙利前缀表示法变化
从
StellarisWare
移动至
TivaWare
½我们½够更正一个几年前就希望解决的
StellarisWare
架构问题。
StellarisWare API
½用诸如无符号长整型
(unsigned long)的简单
C
数据类型;然而,这些数据类型通常会
产生严重的问题:每个类型的大小会因它们所½用的
CPU
的不同而不同。 ½然½把
StellarisWare
用在简
单微处理器系列上这个差别不是什么大问题,它仍然会产生几个移植性问题并且½得
API
会发生更多的问
题,这是因为基本微处理器架构会随着时间的推移而不断发展。
为了解决这一½在问题,并且½得½够被移植到其它架构中,而又无需重大的源代码重新编写工½,现在
TivaWare
½用标准的、明确尺寸的
C99
数据类型。 通过½用这些数据类型,例如,一个
32
½实½类型可
保证保持在
32
½,而与代码运行的处理器无关。
4
将½件项目从
StellarisWare
®
迁移到
TivaWare™
上
版权
© 2013, Texas Instruments Incorporated
ZHCA533A – April 2013 – Revised May 2013
SPMA050 — http://www-s.ti.com/sc/techlit/SPMA050
www.ti.com.cn
特定
API
和源代码变化
½然
StellarisWare API
已经迁移至
TivaWare,½是,如果应用之前½用 StellarisWare API,而现在½用
TivaWare
的话,那么这个数据类型变化要求重写现有应用。 首先,C99 类型不是编译器所固有的;反之,
这些类型通过标准
C
运行时间头文件进行定义:stdint.h针对基本类型,而stdbool.h针对bool布尔数据类
型。
StellarisWare
和
TivaWare
头文件不嵌套其它头文件,所以这两个标准头文件现在必须被添加到所有
源文件中,这些源文件包含所有
TivaWare
头文件以确保所需的基本数据类型可用。
#include
<stdbool.h>
#include
<stdint.h>
在进行此改动时,我们还决定不½用私有数据类型,tTime,来代表数据和时间值。 此外,utils/ustdlib 文件
中的½数已经被重写以½用标准struct
tm结构,而非tTime。
因此,包含
utils/ustdlib.h
的源文件也必须包含
标准time.h头文件。
#include
<time.h>
½然由于struct
tm的½用而要求进行源代码修改,struct tm内的字段名几乎完全映射至tTime中的字段名,这
½得这些修改变得简单直接。
struct tmhetTime内的字段名的映射方式如表
2中所示。
表
2.
针对
struct tm和tTime的
字段名映射
和
的
tTime
字段名
usYear
ucMon
ucMday
ucWdat
ucHour
ucMin
ucSec
struct tm
字段名
tm_year
tm_mon
tm_mday
tm_wday
tm_hour
tm_min
tm_sec
注释
tm_year被定义为“1900
年之后的
年½”,而usYear包含实际年½。
½重写包含此字段的代码时,必须
将这个差异考虑在内。
C99
数据类型变化的第二个结果-更有可½需要进行源代码更新的结果-是匈牙利前缀表示法的相关改变。 ½
然这个改变不会对参数½名产生½响,½是它的确改变了大多数字段的名称,并因此½响了
USBLib
和
GrLib
的½用。 除了因全新的数据类型而改变所½用的前缀外,德州仪器
(TI)
已经½可½地确保整个代码库
中匈牙利前缀表示法½用的一致性。 这一改变已经½得某些附加结构文件名发生变化,这些文件名在之前并
未采用正确的前缀。
在表
3中给出了
StellarisWare
中½用的数据类型列表连同它们的匈牙利前缀表示法以及全新的
TivaWare
替
代。
表
3. StellarisWare
和
TivaWare
中½用的数据类型
StellarisWare
类型
tBoolean
字符型
(1)
之前的前缀
b
c
c
s
l
ll
uc
us
ul
TivaWare
类型
bool
字符型
int8_t
int16_t
int32_t
int64_t
uint8_t
uint16_t
uint32_t
新前缀
b
c
i8
i16
i32
i64
ui8
ui16
ui32
示例
bFoo
cFoo
i8Foo
i16Foo
i32Foo
i64Foo
ui8Foo
ui16Foo
ui32Foo
字符型
(2)
短整型
长整型
超长整型
无符号字符
(unsigned char)
无符号短整型
无符号长整型
(1)
(2)
½时被用来代表一个文本字符型编码。
½时被用来代表一个
8
½有符号数。
ZHCA533A – April 2013 – Revised May 2013
将½件项目从
StellarisWare
®
迁移到
TivaWare™
上
版权
© 2013, Texas Instruments Incorporated
5
SPMA050 — http://www-s.ti.com/sc/techlit/SPMA050
评论