码迷,mamicode.com
首页 > 其他好文 > 详细

RVDS编译器

时间:2015-07-06 15:45:07      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

不同ARM的体系结构,使用的ARM RealView编译工具时的异同点。

1)ARM体系结构v6K首次引入对4个CPU的MPCore处理器支持,高效的多重处理系统与单CPU系统相比,功耗更低,散热量更少,响应速度更快,但是也更加

                     复杂,更难以调试。

  此时应注意使用LDREX和STREX进行同步,实现针对加载/储存操作的原子操作。

  强制高速缓冲一致性,以实现对称多重处理。

  将大任务拆分成多个并行执行的线程。

  设置主CPU,使用CP15 CPU ID寄存器执行初始化任务。

2)紧耦合存储器,TCM是一段始终有效的连续内存区域,用于向处理器提供低延时内存。但是消除了高速缓存的不可预测性。用来存放中断处理例程和需要避免

                    高速缓存不确定性的实时任务。

3)内存管理,MMU用于对内存系统进行细颗粒度控制,实现虚拟地址到物理地址的映射,内存访问权限控制等。

                 MPU比MMU更为简单,在不需要所有MMU功能的系统中,使用MPU可以简化硬件和软件。

4)Thumb-2,ARMv6T2及更高版本的体系结构提供更高的Thumb-2技术。其中新增加了32位的指令,可实现ARM指令集的所有功能。

                 大多数的32位Thumb指令是无条件的,而大多数ARM指令是有条件的,Thumb-2引入了条件执行指令IT,if-then-else操作。

5)浮点生成选项,softvfp,对于Thumb代码,因为Thumb指令集不包含VFP指令,无法访问VFP寄存器,编译器通过生成对库函数的调用来执行VFP操作。

                       vfpv2,针对ARMv6及更早版本的ARM代码的VFP选项。vfpv3,针对ARMv7及之后版本的ARM代码的VFP选项。

                       Thumb-2支持VFP指令,可以通过--thumb --fpu vfpv3选项使编译器为整个程序只生成Thumb-2代码。

                       --arm --fpu vfpv3,可使编译器只生成ARM代码。

                       --fpu  softvfp+vfpv3,可使编译器生成混合ARM/Thumb代码。

ARMv7A中的LDR和STR地址对齐方式,默认LDR和STR是字对齐,LDRH和STRH是半字对齐,LDRB和STRB是任意边界对齐,可以通过CP15寄存器c1中的A

                 位控制加载和存储指令的对齐要求。

 

关于嵌入式软件开发,必须考虑将嵌入式应用程序从依赖于开发工具或调试环境的系统移植到目标硬件上独立运行的系统所涉及的过程。

                 1)了解编译工具的缺省行为,以便从缺省转为完全独立的应用程序的工程。

                 2)某些C库功能是使用调试环境资源来实现的,这样必须在目标硬件中重新实现这些功能。

在ARM C库中,对部分ISO C功能的支持是由主机调试环境在设备驱动级提供的,提供此功能的机制称为半主机。如_sys_write()中的printf()。

                 缺省内存映射,默认在0x8000加载并运行。所有的只读(RO)字节放在最前边,其次是读写(RW)字节,最后是零初始化(ZI)字节。

                 其中RO是程序中的代码和常量;RW是程序中的已初始化的变量;ZI是程序中的非初始化变量。

 

ARM的映像文件image是指烧录到ROM中的bin文件或hex文件。image中只包含其中的RO段和RW段。

程序的加载时域是指程序烧录到ROM/FLASH中的状态;运行时域是指程序运行时的状态。

从加载时域到运行时域,ROM中的代码必须实现:1)将RW段从ROM搬到RAM中;2)将ZI段的RAM区域全部清零。

 

一个基于ARM体系结构的嵌入式系统的初始化序列,见相册。

 

参考rvct_developer_guide.pdf

RVDS编译器

标签:

原文地址:http://www.cnblogs.com/-9-8/p/4623941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!