德州仪器Tiva C ARM Cortex-M4和嵌入式有啥关系

德州仪器Tiva C ARM Cortex-M4和嵌入式有啥关系,第1张

1、嵌入式与 ARM Cortex-M4的关系。嵌入式计算机系统简称为嵌入式系统,其概念最初源于传统测控系统对计算机的需求。随着以微处理器MPU为内核的为内核的微控制器MCU制造技术的不uanjinb,计算机领域在通用计算机系统与嵌入式计算机系统这两大分支分别得以发展。通用计算机已经在科学计算、通信、日常生活等各个领域产生了重要的影响。在后PC时代,嵌入式系统的广阔应用是计算机发展的重要特征。一般说来,嵌入式系统的应用范围可以粗略分为两大类,:一类是电子系统的智能化(如工业控制、汽车电子、数据采集、测控系统、家用电器等),这类应用也被称为微控制器领域;另一类是计算机应用的延伸(如平板电脑、手机、电子图书等),这类应用也被称为应用处理器领域。在 ARM产品系列中,ARM Cortex-M系列与ARM Cortex-R系列适用于电子系统的智能化类应用,即微控制器领域;ARM Cortex-A系列适用于计算机应用的延伸,即应用处理器领域。不论如何分类,嵌入式系统的技术基础是不变的,即要完成一个嵌入式系统产品额设计,需要有硬件、软件及行业领域相关知识。但是,随着嵌入式系统中软件规模日益增大,对嵌入式底层驱动软件的封装提出了更高的要求,可复用性和可移植性受到特别的关注,嵌入式软、硬件构件化开发方法逐步被业界所重视。

2、Tiva C是TI公司推出的一个系列,ARM Cortex-M4是这个系列所用的一个微控制器内核。

3、API函数是application program interface的缩写,叫做函数接口。开发者可调用这些函数接口来配置寄存器,使开发人员得以脱离最底层的寄存器 *** 作,有开发快速,易于阅读,维护成本低等优点。当我们调用库的API的时候可以不用挖空心思去了解库底层的寄存器 *** 作,更直观,程序运行占用资源少。

4、可以到一些论坛去找一些关于TI该系列控制器的信息(建议2lic网站),目前关于M4的资料还是相对较少的,不如M3的多。

希望可以帮到你

VFP (vector floating-point)从ARMv5开始,就有可选的 Vector Floating Point (VFP)模块,当然最新的如 Cortex-A8, Cortex-A9 和 Cortex-A5 可以配置成不带VFP的模式供芯片厂商选择。VFP经过若干年的发展,有VFPv2 (一些 ARM9 / ARM11)、 VFPv3-D16(只使用16个浮点寄存器,默认为32个)和VFPv3+NEON (如大多数的Cortex-A8芯片)。对于包含NEON的ARM芯片,NEON一般和VFP公用寄存器。硬浮点Hard-float 编译器将代码直接编译成发射给硬件浮点协处理器(浮点运算单元FPU)去执行。FPU通常有一套额外的寄存器来完成浮点参数传递和运算。使用实际的硬件浮点运算单元FPU当然会带来性能的提升。因为往往一个浮点的函数调用需要几个或者几十个时钟周期。软浮点 Soft-float编译器把浮点运算转换成浮点运算的函数调用和库函数调用,没有FPU的指令调用,也没有浮点寄存器的参数传递。浮点参数的传递也是通过ARM寄存器或者堆栈完成。 现在的Linux系统默认编译选择使用hard-float,即使系统没有任何浮点处理器单元,这就会产生非法指令和异常。因而一般的系统镜像都采用软浮点以兼容没有VFP的处理器。armel和armhf ABI在armel中,关于浮点数计算的约定有三种。以gcc为例,对应的-mfloat-abi参数值有三个:soft,softfp,hard。soft是指所有浮点运算全部在层实现,效率当然不高,会存在不必要的浮点到整数、整数到浮点的转换,只适合于早期没有浮点计算单元的ARM处理器;softfp是目前armel的默认设置,它将浮点计算交给FPU处理,但函数参数的传递使用通用的整型寄存器而不是FPU寄存器;hard则使用FPU浮点寄存器将函数参数传递给FPU处理。需要注意的是,在兼容性上,soft与后两者是兼容的,但softfp和hard两种模式不兼容。默认情况下,armel使用softfp,因此将hard模式的armel单独作为一个abi,称之为armhf。而使用hard模式,在每次浮点相关函数调用时,平均能节省20个CPU周期。对ARM这样每个周期都很重要的体系结构来说,这样的提升无疑是巨大的。在完全不改变源码和配置的情况下,在一些应用程序上,使用armhf能得到20%——25%的性能提升。对一些严重依赖于浮点运算的程序,更是可以达到300%的性能提升。Soft-float和hard-float的编译选项在CodeSourcery gcc的编译参数上,使用-mfloat-abi=name来指定浮点运算处理方式。-mfpu=name来指定浮点协处理的类型。可选类型如fpa,fpe2,fpe3,maverick,vfp,vfpv3,vfpv3-fp16,vfpv3-d16,vfpv3-d16-fp16,vfpv3xd,vfpv3xd-fp16,neon,neon-fp16,vfpv4,vfpv4-d16,fpv4-sp-d16,neon-vfpv4等。使用-mfloat-abi=hard (等价于-mhard-float) -mfpu=vfp来选择编译成硬浮点。使用-mfloat-abi=softfp就能兼容带VFP的硬件以及soft-float的实现,运行时的连接器ld.so会在执行浮点运算时对于运算单元的选择,是直接的硬件调用还是库函数调用,是执行/lib还是/lib/vfp下的libm。-mfloat-abi=soft (等价于-msoft-float)直接调用软浮点实现库。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8468371.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存