【原创】C28x DSC浮点单元fastRTS库解析
0赞TI公司的DSC(Digital signal controller,数字信号控制器)是一种面向高端嵌入式系统的最先进的单片控制处理器。基于浮点架构的DSC具有更快的处理速度,所需的程序储存容量更少,支持更高级的有助于节省功耗的计算算法,同时进一步扩展了系统的性能。浮点编程比定点编程的速度更快,SoC(system-on-a-chip,片上系统)的集成方式能够有效控制板级空间、元件数量和整体系统开销。F283x系列DSC的主要性能优势归因于它的数值计算格式,这种格式大大简化了编程,减少了代码执行时间,缩短了代码长度。在其他一些DSC和DSP芯片中普遍的采用定点格式只能够表示整数(没有小数点的正数和负数),因此涉及小数计算时必须采用其他表示方法。相反,浮点格式能够表示更大范围内的实数(带小数点的数)。内部表示小数以及较宽的数值范围意味着处理器能够更高效地执行定标运算(例如控制算法中常见的乘法、除法和三角函数运算)。(部分引自TI技术文章《浮点DSC使控制系统如虎添翼》与《TMS320C28x FPU Primer》)。
为了方便常用浮点函数的实现,TI还提供了专门的浮点单元库,叫做“fastRTS library”,ccs3.3需要使用此库,可以在TI网站下载;ccs4.x需要的内容则已经集成在control suite这个软件里面了。切换到:\tidcs\c28\C28x_FPU_fastRTS\V100文件夹,其结构与传统库的路径形式相同,仍然有doc、include、lib、source几个文件夹。功能上包含atan,atan2,cos,division,isqrt,sin,sincos,sqrt,sincos这些函数。
若想使用该FPU库,首先ccs的编译器的版本必须在C28x codegen tools V5.0.2及以上,并在ccs编译选项中启用-g -o3 -d"_DEBUG" -d"LARGE_MODEL" -ml -v28 --float_support=fpu32。库文件在lib文件夹下,与传统的添加文件到工程中的方式相同(Project->Add Files to Project)。在引用到浮点库的源程序里,均需要添加C28x_FPU_FastRTS.h这个头文件。在cmd文件里,需要对FPU进行分配,如下:
MEMORY
{
PAGE 0 :
…
FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0
…
}
SECTIONS
{
…
FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD
…
}
其调用方法也很简单。比如调用正弦函数,只需要如下代码。
Header File#include
Declarationfloat32 sin (float32 X)