您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页ARM嵌入式系统开发综述.

ARM嵌入式系统开发综述.

来源:宝玛科技网


视听研究所

主页:论坛:

所有资料均收集于各网站。

若您认为有关资料不适合公开,请联系newvideo@gmail.com 我们会第一时间删除。

感谢各位网友的无私奉献和支持!

加密时间:2008-2-1

获取更多权威电子书 请登录

ARM 嵌入式系统开发综述

ARM 开发工程师入门宝典

获取更多权威电子书 请登录

前 言

嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供人机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU 或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。

嵌入式系统开发的每一个环节都可以地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。希望通过本文,能帮助初学者了解有关ARM 嵌入式系统开发流程。

获取更多权威电子书 请登录

目 录

前 言..........................................................................................2

1 嵌入式开发平台......................................................................4

1.1 ARM的开发平台:.........................................................4

1.2 器件选型.........................................................................7

2 工具选择...............................................................................11

3 编译和连接............................................................................13

3.1 RVCT的优化级别与优化方向.......................................16

3.2 Multifile compilation......................................................21

3.3调试...............................................................................22

4 操作系统...............................................................................23

4.1 哪里可以得到os 软件包 (Open Source and Linux

Kernel ................................................................................25

4.2 安装镜像.......................................................................26

4.3 交叉编译.......................................................................26

总结..........................................................................................27

获取更多权威电子书 请登录

1 嵌入式开发平台

通常嵌入式开发的平台主要包括基于SoC 或MCU 开发板,板上提供常用的外设、接口和其他功能模块,开发者一般根据自己的应用需要选择适合自己板级开发平台。在这样的平台上开发者可以进行硬件的扩展,操作系统移植和应用软件的开发、调试及固化,并最终形成自己的产品推向市场。但是基于该平台的软件开发工作往往需要等到硬件平台完成后才能开展,这显然不利于缩短TTM (Time to Market),同时调试的过程也是需要反复迭代和修改设计的过程,因此硬件方案的变动在所难免。因此在系统方案没有最终定型前,急于搭建硬件平台不仅费时费力,而且也会造成系统开发成本的提高。因此在进行方案设计的时候,利用CPU 或者其他外设的模型进行早期的评估是非常必要的。

1.1 ARM的开发平台:

! ARMulator 仿真平台

这是一套最基础的ARM 指令集仿真器,内嵌于ADS 和RVDS 中,是每一位ARM 开发者的很好的起点。ARMulator 可以模拟执行开发人员编写的C 或汇编程序,支持源代码调试,帮助开发者确定代码编写的正确性。另一方面,ARMulator 还能大致统计出,诸如:代码执行周期数,Cache 命中率,存储器访问等利于我们优化代码的信息。但ARMulator 是基于CPU 的模拟,缺点在于比较难于模拟整个芯片系统的行为。

! RealView Integrator-CP平台

获取更多权威电子书 请登录

http://www.arm.com/products/DevTools/IntegratorFamily.html

RealView Integrator-CP平台(RealView Integrator Compact Platform)可以整合Core Module。Core Module FPGA 还整合了ARM PrimeCell 系列周边器件和内存控制器,包括LCD ,MMC 卡,音频解码,以及客户自己开发AHB 接口器件。

! Versatile PB/AB平台

http://www.arm.com/products/DevTools/VersatileFamily.html

Versatile Platform Baseboard(Versatile PB)是一个可以开发软硬件的PCB 平台,可以用LogicTile ,AnalyzerTile 进行扩展,用来连接用户开发的器件,逻辑分析仪等。而Versatile Application Baseboard(Versatile AB)主要区别是硬件扩展功能有限,因而主要用来进行软件应用开发。

! Emulation Baseboard(EB )

http://www.arm.com/products/DevTools/EB.html

EB 平台有一块相对大的FPGA (Xilinx Virtex2 XC2V6000)可以放下用户设计的周边器件,EB 可以通过CoreTile 和LogicTile 进行扩展,使用户做原型验证更加方便。

! ESL 虚拟平台

http://www.arm.com/products/DevTools/RealViewCREATE_Family.html

ARM ESL虚拟平台利用SystemC 模型构建整个SoC 系统,可以基于两种模型构建:时钟精确型(CA )和时钟近似型(CX ),CA 模型提供了和实际硬件时钟节拍一直的精确度,利用ESL SoC Designer工具在ESL CA模型构建虚拟

获取更多权威电子书 请登录

仿真平台上,SoC 硬件工程师利用ESL 工具提供的强大的诸如Core 运行状态监视、Bus Profiling、Cache 工作状态和Memory Mapping等可视化插件对系统性能观测和分析,定位系统性能的瓶颈,实现硬件的性能优化和功能划分。

此外,对于嵌入式软件开发工程师而言,ESL 虚拟平台带来的最大好处是让软件开发在更早的阶段开展,而不必等到在硬件平台上进行此工作。这样以来软硬件开发工作可以并行提高,缩短产品上市时间,软硬件的协同开发还可以尽早发现系统bug ,降低开发

风险和成本。同时该虚拟平台还提供了ARM 软件开发调试工具接口同步进行软件调试,在ESL 虚拟平台上实现软硬件的协同仿真,可以实现优化软件的目的。

从图1看,传统流程中容易引起反复的环节,而对引入ESL 的开发流程,可将诸如驱动开发调试等,提前放置到虚拟开发平台上进行,实现系统设计的优化、

缩短开发周期等。而且仿真环境所能提供的调试手段,是FPGA 平台所无法比拟的。

图1 传统和引入ESL 工具的SoC 开发流程

获取更多权威电子书 请登录

! RTSM

http://www.arm.com/products/DevTools/RealTimeSystemModel1176.html

RTSM (实时系统模型)是对整个芯片系统在指令集层面上的仿真,它能提供快速、准确的指令仿真,以及与RealView Debugger的无缝连接。大型应用程序的开发可以使用 RTSM模拟技术来完成。 RTSM模拟包括LCD 显示器、键盘和鼠标等外设的仿真。不到5s ,就可以利用PC 在ARM 处理器上对OS 的启动过程进行模拟,用户可以在ARM 提供的RTSM 上进行快速的软件仿真。这是OEM 在开发软件系统时成本最低的方法。想象一下,芯片公司不用等到芯片生产出来,也不用把缓慢的FPGA 板交给方案厂商或OEM ;只需要将整个芯片的模型交付,下游厂家就可以尽早尽快地将软件方案开发完毕。最终产品几乎可以从芯片生产出来就准备上市。

1.2 器件选型

器件的选择归根结底是为嵌入式系统选择合适的处理器芯片。ARM 处理器是最常见的嵌入式处理器之一,它以低功耗、低成本和高性能而深受业界的青睐。而且ARM 是目前产业中资源最为广泛的嵌入式处理器,基于广大的ARM 合作伙伴计划,开发者可以在这个联盟里寻求到各种自己意想不到的帮助。从图2给出了常见的ARM 处理器的架构和支持的操作系统。目前在业内广为人知的ARM 处理器主要有ARM7系列和ARM9系列,同时为了关注今后嵌入式系统的发展,也有必要了解一下最新的ARM11和ARM Cotex系列处理器。

获取更多权威电子书 请登录

图2 ARM体系结构

ARM7系列

ARM7TDMI 是ARM7系列中使用最广泛的,它是从最早实现32位地址空间编程模式的ARM6内核发展而来的,并增加了位乘法指令,支持片上调试、16位Thumb 指令集和EmbeddedICE 观察点硬件。ARM7TDMI 属于ARM v4体系结构,采用冯诺伊曼结构,3级流水处理,平均0.9DMIPs/Mhz性能。不过ARM7TDMI 没有MMU (Memory Management Unit)和Cache ,所以仅支持那些不需要MMU 和Cahce 的小型实时操作系统,如VxWorks 、uC/OS-II和uLinux 等RTOS 。其他的ARM7系

列内核还有ARM720T 和ARM7E-S 等。

ARM9系列

ARM9TDMI 相比ARM7TDMI ,将流水级数提高到5级从而增加了处理器的

获取更多权威电子书 请登录

时钟频率,并使用指令和数据存储器分开的哈佛结构以改善CPI 和提高处理器性能,平均可达1.1DMIPs/Mhz,但是ARM9TDMI 仍属于ARM v4T体系结构。在ARM9TDMI 基础上又有ARM920T 、ARM940T 和ARM922T ,其中ARM940T 增加了MPU (Memory Protect Unit)和Cache ;ARM920T 和ARM922T 加入了MMU 、Cache 和ETM9(方便进行CPU 实时trace ),从而更好的支持象Linux 和WinCE 这样的多线程、多任务操作系统。

ARM9E 系列

ARM9E 系列属于ARM v5TE,在ARM9TDMI 的基础上增加了DSP 扩展指令,是可综合内核,主要有ARM968E-S 、ARM966E-S 、ARM946E-S 和

ARM926EJ-S (v5TEJ 指令体系,增加了Java 指令扩展),其中ARM926EJ-S 是最具代表性的。通过DSP 和Java 的指令扩展,可获得70%的DSP 处理能力和8x 的Java 处理性能提升。另外分开的指令和数据Cache 结构进一步提升了软件性能;指令和数据TCM (Tightly Couple Memory:紧耦合存储器)接口支持零等待访问存储器;双

AMBA AHB总线接口等。ARM926EJ-S 可达250Mhz 以上的处理速度,很好地支持Symbian OS、Linux 、Windows CE和Palm OS等主流操作系统。

ARM11系列

ARM11系列主要有ARM1136、ARM1156、ARM1176和ARM11 MP-Core等,它们都是v6体系结构,相比v5系列增加了SIMD 多媒体指令,获得1.75x 多媒体处理能力的提升。另外,除了ARM1136外,其他的处理器都支持AMBA 3.0-AXI 总线。ARM11系列内核最高的处理速度可达500Mhz 以上(其中90nm

获取更多权威电子书 请登录

工艺下,ARM1176可达到

750Mhz )以及600DMIPS 的性能,请参考和图3相关描述。

图3 ARM11系列内核

基于ARMv6架构的ARM11系列处理器是根据下一代的消费类电子、无线设备、网络应用和汽车电子产品等需求而制定的。其的媒体处理能力和低功耗特点使它特别适合于无线和消费类电子产品;其高数据吞吐量和高性能的结合非常适合网络处理应用;另外,在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。

ARM Cotex系列

Cortex 系列是ARM 公司目前最新内核系列,属于v7架构,主要有

Cortex-A8、Cortex-R4、Cortex-M3和Cortex-M1等处理器,其中A8是面向高性能的应用处理器,最高可达1Ghz 的处理速度,更好的支持多媒体及其他高性能要求,最高可达2000DMIPS ;R4主要面向嵌入式实时应用领域(Real-Time ),7级流水结构,相对于上代ARM1156内核,R4在性能、功耗和面积(PPA :Performance ,Power and Area)取得更好的平衡,>1.5DMIPS/Mhz和高于400Mhz 的处理速度。而M3主要是面向低成本和高性能的MCU 应用领域,相比ARM7TDMI ,M3面积更小,功耗更低,性能更高。Cortex-M3处理器的核心

获取更多权威电子书 请登录

是基于哈佛架构的3级流水线内核,该内核集成了分支预测,单周期乘法,硬件除法等众多功能强大的特性,使其在Dhrystone benchmark上具有出色的表现(1.25 DMIPS/MHz)。根据Dhrystone benchmark的测评结果,采用新的Thumb ®-2指

令集架构的Cortex-M3处理器,与执行Thumb 指令的

ARM7TDMI-S ®处理器相比,每兆赫的效率提高了70%,与执行ARM 指令的ARM7TDMI-S 处理器相比,效率提高了35%。

目前已经有Cortex 系列内嵌的产品问世,如TI 公司推出的基于Cortex-A8内核的OMAP3430,TI 、ST 和Luminary 也推出了基于Cortex-M3内核的低成本高性能32位MCU ,更多详情请登陆这些公司的主页查询。

2 工具选择

根据开发目标平台的不同,ARM 提供不同的工具解决方案。

MDK-ARM

RealView Microcontroller Development Kit(MDK 支持基于ARM7,

ARM9,Cortex-M3微控制处理器,例如Atmel ,Freescale ,Luminary ,NXP ,OKI ,Samsung ,Sharp ,ST ,TI 等厂家的产品。MDK 提供工业标准的编译工具和强大的调试支持。MDK 是专为MCU 的用户开发嵌入式软件而设计的一套开发工具。包括根据器件定制的调试仿真支持,丰富的项目模版,固件示例以及为内存优化的RTOS 库。MDK 上手容易,功能强大,适合微控制器应用程序开发。

RVDS

获取更多权威电子书 请登录

正如前面所介绍RVDS 是专为SOC ,FPGA 以及ASIC 用户开发复杂嵌入式应用程序或者和操作系统平台组件接口而设计的开发工具。RVDS 支持器件设计,支持多核调试,支持基于所有ARM

和Cortex 系列CPU 的程序开发。RVDS 还可以和第三方软件进行很好的连接。

图4 RVDS和RV-MDK

如上图表示:MDK 主要是为终端客户提供价格低廉,功能强大的开发工具。集成了RealView 编译工具,Keil uVision开发环境,支持基于

ARM7,ARM9,Cortex-M1,Cortex-M3产品的仿真,提供非常高效的RTOS

Kernel ,除此,提供的Real-Time 库还有TCP/IP网络套件,Flash 文件系统,USB 器件接口,CAN 总线接口等,方便终端用户进行应用开发。因此对于MDK 用户来说,他们得到的就是可以对MCU 进行仿真和调试,容易使用又没有冗余的功能,关键是价格实惠,而且用户可以先试用再购买。

对于芯片设计公司以及相关解决方案提供商来说,需要的是更加强大的工具,可以进行多核调试,需要更加先进的调试和分析功能,可以支持多种操作系

获取更多权威电子书 请登录

统,可以进行IP 整合开发,可以结合ESL 工具进行架构评估,系统软硬件划分等,那么选择RVDS 可以提供完整解决方案。

3 编译和连接

ARM RealView 编译工具已经发展了16年,一直致力于为客户提供最好的编译器。RVDS 是ARM 公司继SDT 与ADS1.2之后主推的新一代开发工具,目前最高版本是3.1。它由RealView 编译器(RVCT )、RealView 汇编器(armasm )、RealView 连接器(armlinker ),以及RealView 调试器

(RVDebugger )三部分组成。

RVDS对代码密度的提升、代码执行速度的提高,都可以由ARM 开发工具自动实现,而不需要软件开发人员花费过多的时间手动优化高级语言代码。这是RVDS 的优势所在。

先前版本中的编译器armcc ,tcc ,armcpp ,tcpp 已经整合成一个编译器armcc ,可以将标准的C 或C++语言源程序编译成32位ARM 指令代码或者16位Thumb 指令代码或者Thumb-2指令代码。

编译器输出的ELF 格式的目标文件,包含调试信息。除此之外,编译器可以输出所生成的汇编语言列表文件。

RVDS的编译器根据最新的ARM 架构进行特别的优化,针对每个ARM 架构都提供最好的代码执行性能,最优的代码密度。可以根据需要选择调试信息级别,以及不同的代码优化方向和优化级别。

RVCT中C 和RogueWaveC++库包括

获取更多权威电子书 请登录

! 完整ISO 标准C 语言库

标准C 语言函数集,C 语言库需要的支持函数以及在Semihosted 执行环境中需要的目标相关的函数。

ARM C 语言库结构使用户很容易定义目标相关函数,以适应特定的目标环境。

! 浮点函数库使用ARM 在IEEE754标准(二进制浮点算法)上实现的浮点环

境。

! RogueWaveC++库

RogueWaveC++库包含标准C++函数,编译器需要的支持函数。

各种源文件经过ARM 编译器编译后生成ELF 格式的目标文件。这些目标文件和相应的C/C++运行时库经过ARM 连接器处理后,生成ELF 格式映像文件。 ARM连接器可以去除使用不到的代码段和函数,这样可以减少内存的使用。 ARM连接器可以将不同的指令代码和数据代码放置到不同的内存地址范围。 (http://www.arm.com/support/faqdev/1245.html)

通常在嵌入式系统中,指令和数据代码会固化在非易失性存储器中(ROM 或Flash ),可以从这些地方上电启动。从运行速度方面考虑,部分指令和数据代码会在启动后搬运到易失性存储器(RAM中,因此连接器可以使用一些方法机制来配置调度。

这种分散装载(scatterloading )的机制可以让把不同的指令和数据分散的放到不同的地址,而且这些地址在系统启动和系统运行可以是不同的映射。

获取更多权威电子书 请登录

详细的地址分配可以是用参数来指定,或者用一个描述文件来作为连接器的参数。使用描述文件会使维护起来非常简单,而且如果要改变地址分配,不需要把整个项目完全重新来做,只要把项目中需要的目标重新连接即可。

一个scatterloading 文件的示例:

LOAD_FLASH 0x04000000 0x80000 ; 启动地址和长度

{

EXE_FLASH 0x04000000 0x80000

{

init.o (Init, +First ;

* (+RO ;

}

32bitRAM 0x0000 0x2000

{

vectors.o (Vect, +First ;

int_handler.o (+RO

}

16bitRAM 0x2000 0x80000

{

* (+RW,+ZI ;

}

}

获取更多权威电子书 请登录

! 本文件定义了启动区域和三个执行区域。在大括号外面定义了启动区域

(LOAD_FLASH),里面三个定义了执行区域

(EXEC_FLASH,32bitRAM,16bitRAM。

! 为了提高运行速度,异常向量(在vectors.s )和异常句柄(在

int_handler.c)被重新放置到32bitRAM 的零地址开始的地方。

! 可以读写的变量被复制到16bitRAM 的0x2000地址开始的地方。

! 零初始化的数据和可读写数据放在16bitRAM 内。

! 其他不需要搬运的代码只需要还放在Flash 里就好。

3.1 RVCT的优化级别与优化方向

提到RVCT 就不能不提armcc 的四个优化级别和两个编译选项,-O1、-O2、-O3、-O4,以及-Otime 、-Ospace 。

-Ospace 与-Otime 负责给编译器提供代码优化的大方向,告知编译器编译任务的主要目标是代码密度(-Ospace )还是代码性能(-Otime )。而-O1、-O2、-O3、-O4则分别代表4种逐次递进的不同优化级别。

OSpace 还是OTime ?

显然代码密度与代码执行速度在很多情况下是一对矛盾。以下面的代码为例。例1中左右两段代码可以完成相同的任务,但是左边的有较高的代码密度,右边的则有较高的执行速度。因为当expr = 0时,标志循环结束时,右边的代码可以顺序执行下去;而左边

代码必须先跳转至循环体首部判断expr 的值,随

获取更多权威电子书 请登录

后再跳转道循环体尾,继续执行下一条指令。

例1 代码速度与尺寸的对比

while (expr if (expr do

{ { do

body; { body; }

}

那么我们什么时候使用Otime 什么时候使用Ospace 呢?Otime 与Ospace 需要开发人员根据系统实际需求来决定,最好的情况是在两者之间找到一个合适的平衡点,而不是单纯的追求速度或者代码尺寸的缩小。即,将不同的代码模块根据其特性分别使用不同的编译选项。

此外,RVCT 编译器支持很多非常有用的编译选项,如--no_inline(取消所有代码的内联函数)、--split_ldm(LDM/STM指令的最大操作寄存器数目)、--split_sections(将每个函数,而不是源文件,作为一个编译单元进行操作)等等。

编译器的所有这一切都可以严格根据开发者的要求,帮助开发人员得到系统真正需要的优化过了的代码。

O3还是O2?

} while (expr;

获取更多权威电子书 请登录

老的开发工具,如ADS1.2中,只有3种递进的代码优化级别,对应3种编译选项,即-O0(Minimum optimization)、-O1(Restricted optimization)、-O2(High optimization )。

使用-O0编译选项时,RVCT 编译器只对代码作最基本的优化操作,编译结束后用户得到的代码与用户手写源代码之间的差距很小,这种特性的主要作用是为了方便用户在程序开发阶段的调试工作,避免由于优化而产生的调试屏障。此外,很多资深软件工程师偏向于手写优化代码,在这种情况下,由于代码已经被优化过,可以使用-O0编译选项减少RVCT 的工作量,节省编译链接的时间。

-O1与-O2则分别是相对于-O0更加高级别的编译优化选项,前者提供有限的优化;后者则会对代码进行较大程度的优化改进操作。

RVDS 中新增加了-O3(Maximum optimization)编译选项,它可以最大程度的发挥RVCT 编译器的优势,将代码编译成最优。O3与O2都是较高级别的编译优化选项,

但-O3相比较于-O2,主要优势有以下几点。当用户使用-O3选项时:

――编译器会自动对代码进行髙阶标量优化。所谓的高阶标量优化就是编译器对根据代码特点,针对循环、指针等进行髙阶优化。

――编译器会把尽可能多函数的编译为内联(inline )函数;

――Multifile compilation功能被自动使能。

对于循环与指针的髙阶优化(High-level scalar optimizations)

当编译选项为-O3 –Otime 时,RVCT 会根据代码的具体情况,针对循环、

获取更多权威电子书 请登录

指针等部分作髙阶优化工作:循环解开(Loop unrolling)、融合(fusion )、位置调整(interchange )、指针优化等等。以例2的函数为例。例2是一段简单的C 循环函数,在循环中含有数组指针调用。

例2

CodeA

void increment(int *restrict b, int *restrict c

{ int i;

for (i = 0; i < 100; i++

{

c[i] = b[i] + 1;

}

}

CodeB

void increment(int *b, int *c

{

int i;

int *pb, *pc;

int b3, b4;

pb = b - 1;

pc = c - 1;

b3 = pb[1];

获取更多权威电子书 请登录

for (i = (100 / 2; i != 0; i--

{

b4 = *(pb += 2;

pc[1] = b3 + 1;

b3 = pb[1];

*(pc += 2 = b4 + 1;

}

}

仔细观察可以发现,CodeA 与CodeB 可以完成同样的功能,即将数组b 的每个成员加1赋值给数组c 对应成员。但是CodeB 与CodeA 相比,有较高的执行速度。主要体现在以下几点:

――循环100次变成了循环50次(loop unrolling),减少了跳转次数;

――数组变成了指针,减少每次计算数组偏移量的指令;

――微调了不同代码操作的执行顺序,减少了流水线stall 的情况;

――循环从++循环变成了――循环。这样可以使用ARM 指令的条件位,为每次循环减少了一条判断指令。

很多程序员就是这样,通过这种手写不同的C 代码,再实现相同任务的情况下,提高了代码执行效率。

在RVDS 中,使用-O3 –Otime 编译选项,RVCT 会自动帮助程序员进行这些髙阶标量优化,即,RVCT 会直接将CodeA 优化成以前由CodeB 才能得到的汇编代码。虽然优化之后函数的代码尺寸大于原先的函数,但是执行速度却有大

获取更多权威电子书 请登录

大的提高,

经过统计,使用EEMBC benchmarking, -O3编译选项编译得到的最终代码平均性能相对于-O1可以有10%的提升,而总体代码尺寸只增加了1%。

3.2 Multifile compilation

按照传统的编译方式,我们先把各个C 或C++文件单独编译成.obj 文件,再将这些目标文件链接在一起。考虑到虽然在编译单独的C 或C++文件时,编译器会充分发挥它的优化特性;但此时,编译器无法关注到大量的C 或C++文件接口之间可以优化的部分。所以在传统的编译结果里,还有许多优化的余地。如何才能让编译器同时关注和编译所有的源代码呢?

Multifile compilation是RVDS 一个较新的特性,它可以帮助开发人员将所有的源文件作为一个compilation unit进行编译,并最终生成一个大的目标文件(如图3中的file1.o )。Mutifile compilation给软件开发人员带来的直接优势有以下几点:

――增加inline 的可能性。由于inline 只能发生在一个compilation unit中,所以在没有使用mutifile compilation时,inline 只能发生在一个源文件范围内。Multifile Compilation将一个compilation unit扩大到了所有源文件的范围上,所以直接增加了inline 发生的几率。

――增加了基地址与函数间优化的可能性。同inline 一样,所有的基地址与函数间的优化也必须在一个compilation unit中,随着conpilation unit的扩大这种优化的可能性也增加了。

获取更多权威电子书 请登录

――减少了scatter file的复杂性。

图3 Mutifile compilation 工作原理

3.3调试

由前面的介绍已经知道RealView Debugger(RVD ) 是RVDS 的重要组件之一。RealView Debugger可以更好的帮助客户在复杂SoC 设计中方便直观的调试软硬件。

! 方便协调的开发软硬件

RVD 可以和RealView SoC Designer一起调试,这样软硬件开发人员可以更早的进行合作开发,而且双方都是使用各自熟悉的工具,这样可以有效地缩短开发周期。

! 单核或多核调试

RVD 使用同步机制进行多核调试,使用RVD 在一个处理器上设置的断点,可以停止整个系统,这样可以观测复杂的多核系统的各种关键状态信息。

获取更多权威电子书 请登录

! 调试操作系统和中间件

RVD 支持调试业内各种流行的操作系统,正如操作系统一章所述,RVD 可以直观的观测操作系统的执行文本和各种资源。

! 调试跟踪,性能评估

RVD 可以对基于ARM 处理器的设计进行非插入式的实时地捕捉数据/指令和显示,从而实现调试,跟踪以及性能评估。目前业内其他的调试工具还不能达到有如RVD 这样出色的性能。RVD 可以对RealView ESL对系统模型进行调试,也可以使用RealView ICE以及RealView Trace对真实的硬件系统进行调试跟踪和性能评估。

! 调试目标设备

无论是开发一个新的软硬件架构,一个操作系统还是一个应用程序,RVD 可以连接到SoC 模型,指令集仿真模型,实时系统模型或者真实的硬件处理器来帮助完成开发。如此广泛的支持,使得RVD 在整个开发周期中成为一个不可或缺的得力的开发工具。

4 操作系统

随着高端电子消费类产品的广泛普及,实时嵌入式操作系统使用越来越广泛。而基于ARM 的嵌入式操作系统在各个领域都得到了广泛的应用,利用ARM 系列产品的强大功能可以完成各种应用程序的开发。

ARM 对操作系统以及系统开发执行环境提供最广泛的选择,客户可以根据需要来选择最适应市场要求的基于ARM 的嵌入式操作系统。可供选择的嵌入式

获取更多权威电子书 请登录

操作系统有几十种,使用较多的有Linux,WinCE,Palm,Symbian 等等。采用WinCE 更多的是OEM ,以及按需进行特定的嵌入式器件开发的,例如GPS 导航设备。采用Palm 操作系统的厂家有联想 三星 索尼,他们的出货量都非常巨大。Symbian 操作系统是先进的全球公开工业标准操作系统,基于Symbian 操作系统的手机有:BenQ ,DoCoMo ,Motorola ,Nokia ,Panasonic ,三星,索尼爱立信等。Linux 是源代码开放的操作系统,可以运行在包括ARM 等多种主流处理器架构上。由于有一大批的工程师在开发开放源代码以及相关开发工具,Linux 可以更方便快捷的进行移植。

以Linux 为例,选择基于ARM 的Linux ,可以得到更多的开发源代码的应用,可以

利用ARM 处理器的高性能开发出更广阔的网络和无线应用,ARM 的Jazelle 技术带来Linux 平台下Java 程序更好的性能表现。ARM 公司的系列开发工具和开发板,以及各种开坛的可利用信息带来更快的产品上市时间。

获取更多权威电子书 请登录 www.eetchina.com 4.1 哪里可以得到 os 软件包 (Open Source and Linux Kernel Development Architecture & Platforms Silicon Partners www.kernel.org Linux Vendors etc... 图5 ARM 网站上可以下载到基于 RealView Itegrator 和 RealView Versatile 平台 的 Linux Kernel 镜像文件,补丁以及实用工具。我们都知道 Linux 是需要进行虚 拟地址管理的,因此需要处理器整合有 MMU。并不是所有的处理器都整合有 MMU,因此可以在不具备 MMU 的处理器上运行的修改过的 Linux 又叫做 uClinux,uClinux 同样可以从 ARM 网站上下载。 可以以基于 ARM926 的 Linux 开发为例,浏览一下整个开发流程: 需要的相关软件: ! Boot Loader:U-Boot。 ! 预编译的 Linux kenel,包括源文件和镜像文件。 硬件工程师必读攻略----如何通过仿真有效提高数模混合设计性能(上 25 / 28

获取更多权威电子书 请登录 www.eetchina.com ! 配置文件。 ! 文件系统以及预编译

http://www.arm.com/linux/linux_download.html 下载 U-Boot 和 Linux 的镜像文件,相关开发平台有 RealView Integrator-CP 平台,Versatile PB/AB 平台,EB 平台。 4.2 安装镜像 可以使用与主板相连的调试器,通过 JTAG 运行控制设备(如 ARM RealView ICE 单元)将映像安装到闪存中。 以 PB926EJ-S 为例,使用从调试器运行主板随附的 BootMonitor.axf 程序 来编写映像。Flash 菜单提供一些编写 ELF 或二进制映像的选项。RealView Versatile 系列还提供一个闪存编程实用工具,即“网络闪存实用工

具”(NFU)。 该程序可以通过以太网连接将映像编写到闪存中。 使用 U-Boot 完成对闪存中的镜像引导。 可以通过 U-Boot 完成对 Linux 的一 些设置以及将一些环境保存到闪存中。 Linux Kernel 可以从 www.kernel.org 上得到。 4.3 交叉编译 主机系统上必需安装 ARM 交叉编译工具链来生成 Linux 内核或应用程 序。(系统中需安装 Glibc library 2.3 或更高版本)。 可从 www.codesourcery.com 或 GCC CVS 主存储库下载用于构建 硬件工程师必读攻略----如何通过仿真有效提高数模混合设计性能(上 26 / 28

获取更多权威电子书 请登录 www.eetchina.com GCC 工具的源文件。该网站还提供讨论组,供用户讨论 ARM GNU 工具的相 关技术问题 开发人员可以从 www.codesourcery.com 下载用于构建 GCC 工具的源文 件。该网站还提供讨论组,供用户讨论 ARM GNU 工具的相关技术问题。 arm-elf 生成与任何操作系统无关的平坦或二进制文件。 arm-elf 会选择 ELF 支持,其大部分代码与 arm-linux 共享。 arm-none-linux-gnueabi 是 Linux 所需的目标,它生成 Linux/ARM 的 ELF 支持。 ARM RealView 开发工具 总结 本文概略的介绍了 ARM 公司的开发工具,如何选择您需要的器件,从一个 SoC 设计者或者软件开发者的角度如何选择开发工具,RealView 开发工具中的 编译工具、 连接工具以及调试工具。 简单描述了开发操作系统以及相关应用程序 的步骤。 无论是硬件系统开发还是软件开发,调试都是最重要也是需要时间最多的环 节,软硬件开发人员的沟通也是缩短产品上市时间的关键。强大的 RealView Debugger 成为不同的开发团队之间沟通最好媒介。RealView 开发工具使得调 试环境保持一致, 软硬件开发人员更加协调。而后续开发人员或者第三方开发者 可以更好继承这一调试环境,包括操作系统以及应用程序库,配以 RealView 系 列工具的支持,可以更迅速的完成新的设计。 硬件工程师必读攻略----如何通过仿真有效提高数模混合设计性能(上 27 / 28

获取更多权威电子书 请登录 www.eetchina.com 电子工程专辑优秀电子书 # 电子工程师必备手册(上)--GPS 设计全攻略(HOT # 电子工程师必备手册(下)--运算放大器设计与应用(HOT # TD-SCDMA 射频系统发射部分性能监测方法(HOT # LTC 四输出负载点 DC/DC μModule 系统设计要点 # D 类音频放大器设计:概念、原理和方法 # 车用电容传感器的新契机 # LCDTV(欧洲机型AV 输入设计 # PolySwitch LVR/LVRL 器件有助于家用和专业电器的电机保护 # OFDM 原理 # 视觉人体工程学设计要点 硬件工程师必读攻略----如何通过仿真有效提高数模混合设计性能(上 28 / 28

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务