这是描述信息

低功耗蓝牙wifi芯片乐鑫科技芯片代理商RISC-V程序开发工具链

低功耗蓝牙wifi芯片乐鑫科技芯片代理商RISC-V程序开发工具链

低功耗蓝牙wifi芯片乐鑫科技芯片代理商RISC-V程序开发工具链

低功耗蓝牙wifi芯片乐鑫科技芯片代理商RISC-V程序开发工具链

低功耗蓝牙wifi芯片乐鑫科技芯片代理商RISC-V程序开发工具链

低功耗蓝牙wifi芯片乐鑫科技芯片代理商RISC-V程序开发工具链,C/C++、Python 和Java 等语言以及汇编语言是开发嵌人式系统应用程序常用的编程语言。其中,使用多的是 C语言。C 语言历史悠久,低功耗蓝牙wifi芯片乐鑫科技芯片代理商应用领域广,访问内存方便,生成的可执行程序性能高。另外,由于与处理器架构紧密关联,一些关程序的开发仍然离不开汇编语言,例如,用汇编语言编写系统引导程序和优化计算复杂度高的程序段。


RISC-V C语言应用程序的开发过程。应用程序开发过程可分为编(Editing)、生成(Building)和调试(Debugging)三个阶段。低功耗蓝牙wifi芯片乐鑫科技芯片代理商编辑阶段编写C语育源序;生成阶段将源程序转换成可执行的二进制可执行程序;调试阶段通过运行二世程序,发现并改正程序设计和编写中的错误,后得到能够稳定运行的可执行程序。生成和调试阶段需要使用面向特定处理器的工具链。


生成可执行程序

将生成可执行程序过程进一步分为编译、汇编和链接 3 个步骤,如图 5.3所示为从C语言源程序到生成二进制可执行程序的详细过程。

在图5.3中,项目包括 main.c和 app.c 两个 C语言文件,以及一个 start.s 汇编语言程序文件,共 3 个输入源程序文件。

编译器(Compiler)编译 C语言源程序 main.c 和 app.c,转换成汇编语言程序main,s和app.s。低功耗蓝牙wifi芯片乐鑫科技芯片代理商汇编器(Assembler)将汇编语言程序 main.s、app.s 和 start.s 转换成二进制程序模块文件(目标文件)main.o、app.o和 start.o。

链接器(Linker)将 main.o、app.o和 start.o 以及二进制库 lib,o 文件中定义和川用的符号相关联,并为文件中的指令、变量和数据分配存储空间,生成处理器可以执行的二进制程序main.out。

GCC(GNU Complier Collection)是常用的 RISC-V 序开发工具链,包括 gc(CNU C Complier)、C 运行库、二进制程序管理工具(Binutils)和调试了具 gbd 等报行程序生成工具gee 的核心是编译器(Complier)、汇编器Assembler)和链接器(Linker) 。

编译器

GNCC编译器将C语言源文件转换成汇编语育文件。编译器先对源程序文件进行预处理,转换成标准C语言格式,然后再将标准 C 句翻译成特定处理器的汇编语言。

处理器架构“-march”是编译器的重要选项。RISC-V C 编译器不仅需要选择指令集架构 RV32 或者 RV64,而且要选择指令集模块及其组合,例如“RV32I”、“RV32IMAC”或者“RV32IMAFDC”等。所选择的架构和指令集组合必须与目标处理器相符。

RISC-V gce 通过“-mabi”选项指定数据模型和浮点参数传递规则。有效的选项包括 ilp32、ilp32f,ilp32d、lp64、lp64f 和 p64d。前半部分“ilp32”或“lp64”,指定数据模型;后半部分“f”或“d”,指定浮点参数传递规则。其中,“i”指 int、“”指 long、"p”指pointer 即指针,32/64 说明数据模型中数据类型的宽度。例如,“ilp32”表示整数、长整数和指针的宽度都是 32 位,“lp64”表示长整数和指针的宽度是 64 位。“f”表示float,float 型浮点数参数通过浮点数寄存器传递。“d”指 double,double 型浮点数参数也通过浮点数寄存器传递。

RV32 和 RV64 架构支持的数据类型如表 5.1 所列,不同选项所对应的浮点数参数传递规则如表 5.2 所列。

编译在 BumbleBee 内核运行的程序时,这两个选项分别为:-march=rv32imac,-mabi=ilp32。


表5.1 RV32和 RV64 架构数据类型表

C数据类型    描 述    字节数(RV32)    字节数(RV64)
char    字符/字节    1    1
short    短整数    2    2
int    整数    4    4
long    长整数    4    8
long long    长长整数    8    8
void*    指针    4    8
float    单精度浮点数    4    4
double    双精度浮点数    8    8
long double    扩展精度浮点数    16    16


表 5.2 浮点数参数传递规则

选项参数    是否需要浮点扩展指令    float 参数    double 参数
ilp32/lp64    不需要    整数寄存器(a0~al)    整数寄存器(a0~a3)
ilp32f/lp64f    需要下扩展    浮点寄存器(fao~fal)    整数寄存器(a0~a3)
ilp32d/lp64d    需要F扩展和 D扩展    浮点寄存器(fao~fal)    浮点寄存器(fao~fa3)


gcc 编译器提供了多种优化选项,用来对编译时间、目标文件长度和执行效率进行不同的取舍和平衡。低功耗蓝牙wifi芯片乐鑫科技芯片代理商gcc 提供了-00、01、-02 和-03 四个优化等级。-00 不做任何优化,是默认的编译选项;-O1 对程序做部分编译优化,编译器尝试用较短的优化时间减小生成代码的尺寸,以及缩短执行时间;-O2 增加优化时间,执行几平所有的时间或空间优化手段。-03 在包含-02 所有优化的基础上增加更多优化方法。


另外,RISC-V 选项(-mcmodel)设置内存寻址范围,有低地址(medlow)和任意位置(medany)两种模式。低功耗蓝牙wifi芯片乐鑫科技芯片代理商低地址模式寻址范围只能在-2 GB~+2 GB 的空间内其中,-2 GB是指整个 64 位地址空间中高 2 GB 地址区间。任意位置模式指示该程序的寻址范围在任意的一个 4 GB 空间内。

地址:深圳市宝安区西乡街道麻布社区宝安互联网产业基地A区6栋7栋7706

邮箱:Sales@ferry-semi.com

版权所有©2020  深圳市飞睿科技有限公司  粤ICP备2020098907号    飞睿科技微波雷达wifi模块网站地图

 

免责声明:本网站部分图片和文字内容可能来源于网络,转载目的在于传递更多信息,并不代表本网站赞同其观点或证实其内容的真实性。如涉及作品内容、版权和其它问题,请在30日内与本网站联系,我们将在第一时间删除内容!本站拥有对此声明的最终解释权。