RVDS编译器
不同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编译器的更多相关文章
- 6410在rvds下编译启动代码报错分析
contains invalid call from '~PRES8' function to 'REQ8' function main RVDS编译出现contains invalid call f ...
- C语言编译器
我们分两部分介绍C语言的编译器,分别是桌面操作系统和嵌入式操作系统. 桌面操作系统 对于当前主流桌面操作系统而言,可使用 Visual C++.GCC 以及 LLVM Clang 这三大编译器. Vi ...
- 【转】arm 开发工具比较(ADS vs RealviewMDK vs RVDS)
ADS REALVIEW MDK RVDS 公司 ARM Keil(后被ARM收购) ARM 版本 最新1.2 ,被RVDS取代 最新4.0 是否免费 破解情况 有 有 工程管理 CodeWarr ...
- C/C++的编译器|编译环境(非常全面的比较)
C/C++编译器的一些易混淆概念,总结一下. 关于什么是Unix-like操作系统,常见操作系统间差异,什么是操作系统接口等等,请参考<操作系统宝鉴>. C/C++编译器有哪些? 首先是如 ...
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch – 体系架构,如ARM,MIPSvendor – 工具链提供商os – 目标操作系统 ...
- 【转】arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
原文网址:http://www.veryarm.com/296.html 命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架 ...
- RVCT的Linux环境变量配置 ARM® RVDS™ 4.1(b713)
下载解压 armrvds.tar.gz到/opt 下 在自己的build.sh下导入RVCT的环境变量配置ARM® RVDS™4.1(b713): export ARMROOT=/opt/armrvd ...
- arm交叉编译器科普
交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如ARM,MIPS vendor - 工具链提供商 os - 目标操作系统 ea ...
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf等的区别【转】
转自:https://www.cnblogs.com/deng-tao/p/6432578.html 博客来之于: http://www.veryarm.com/296.html 交叉编译工具链的命 ...
随机推荐
- 链表的基础题目学习(EPI)
链表的题目总体来说细节比较多,因为链表的题目在操作链表的过程中本身有些复杂,所以如果链表作为编程题出现的时候,多数情况下题目本身的思路可能不是很复杂,不要把题目往复杂的方向去思考就好了~这里的链表只是 ...
- DragonBones龙骨骨骼中的自定义事件(另有声音、动画事件)
参考: DragonBones骨骼动画事件系统详解 一.在DragonBones中添加自定义事件帧 动画制作时 时间轴拉到最下面有一个事件层,添加一个事件帧 左边属性面板定义自定义事件 二.Egret ...
- 【咸鱼教程】TextureMerger1.6.6 二:Sprite Sheet的制作和使用
Sprite Sheet主要用于将零碎的小图合并成一张整图.减少加载图片时http的请求次数. 1 打开TextureMerger,选择Sprite Sheet 2 添加纹理(未创建项目时,会先弹出 ...
- Linux系统java环境jdk的安装
在linux环境中jdk的安装有两种方式,一为rpm安装机制,另一种为源码安装(已编译好)因此在ORACLE官网提供两种安装文件,一为rpm格式,另一种为gz格式,两种的安装方式都大同小异的. 1.r ...
- Kafka在Linux上安装部署及样例测试
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...
- 密码强度demo(弱中强)
<!doctype html> <html> <head> <script src="http://ajax.microsoft.com/ajax/ ...
- 浅析JSONP
什么是JSONP? JSONP是JSON with Padding的略称.它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式 ...
- Centos清除IP
要把配置好的ip清除掉,可以使用以下命令: ip addr flush dev eth0 如果系统中没有ip这个命令,可以使用更简单的: ifconfig eth0 0.0.0.0 可以用于PPTP拨 ...
- HDU 1243 反恐训练营(最长公共序列)
反恐训练营 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- PAT天梯赛L2-003 月饼【贪心】
L2-003. 月饼 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不 ...