ARM开发基础知识.docx
《ARM开发基础知识.docx》由会员分享,可在线阅读,更多相关《ARM开发基础知识.docx(7页珍藏版)》请在冰豆网上搜索。
ARM开发基础知识
ARM开发基础知识
ARM开发基础知识
1ARM概述
1.1ARM简介
ARM(AdvancedRISCMachines)有三种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称。
ARM公司是微处理器行业的一家知名企业,设计了大量高性能、廉价、低耗能的RISC(ReducedInstructionSetComputing,精简指令集计算机处理器)芯片,并开发了相关技术和软件。
ARM处理器具有性能高、成本低和能耗低的特点,适用于嵌入式控制、消费/教育类多媒体、DSP和移动式应用等领域。
ARM公司本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。
ARM这种商业模式的强大之处在于其价格合理,它在全世界范围的合作伙伴超过100个,其中包括许多著名的半导体公司。
ARM公司专注于设计,设计的芯片内核耗电少,成本低,功能强,特有16/32位双指令集。
ARM已成为移动通信、手持计算和多媒体数字消费等嵌入式解决方案的RISC实际标准。
1.2ARM微处理器特点
采用RISC架构的ARM微处理器具有如下特点:
1、体积小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;
3、大量使用寄存器,指令执行速度更快;
4、大多数数据操作都在寄存器中完成;
5、寻址方式灵活简单,执行效率高;
6、指令长度固定;
1.3ARM应用领域
到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域:
1、工业控制领域:
作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
2、无线通讯领域:
目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。
3、网络应用:
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。
4、消费类电子产品:
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
5、成像和安全产品:
现在流行的数码相机和打印机中绝大部分采用ARM技术。
手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来
取得更加广泛的应用。
1.4ARM内核
ARM内核当前有6个产品系列:
ARM7、ARM9、ARM9E、ARM10E、
ARM11和SecurCore,其中ARM11为最近推出的产品。
进一步的产品来自于合作伙伴,例如IntelXscale。
ARM7、ARM9、ARM9E、ARM10E是4个通用处理器系列。
每个系列提供一套特定的性能来满足设计者对功耗、性能、体积的需求。
SecurCore是专门为安全设备而设计的。
ARM7内核采用冯·诺伊曼体系结构,数据和指令使用同一条总线。
内核有一条3级流水线,执行ARMv4指令集,主频最高可达130MIPS。
ARM7系列处理器主要用于对功耗和成本要求比较苛刻的消费类产品。
其最高主频可以到达130MIPS(MIPS指每秒执行的百万条指令数)。
ARM7系列包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T4种类型,主要用于适应不同的市场需求。
值得注意的是ARM7没有MMU单元。
ARM7系列微处理器的主要应用领域为:
工业控制、Internet设备、网络和调制解调器设备、移动等多种多媒体和嵌入式应用。
ARM9系列于1997年问世。
由于采用了5级指令流水线,ARM9处理器能够运行在比ARM7更高的时钟频率上,改善了处理器的整体性能;存储器系统根据哈佛体系结构(程序和数据空间独立的体系结构)重新设计,区分了数据总线和指令总线。
ARM9系列的第一个处理器是ARM920T,包含独立的数据指令Cache和MMU。
此处理器能够被用在要求有虚拟存储器支持的操作系统上。
此系列的ARM922T是ARM920T的变种,只有一半大小的数据指令Cache。
ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。
ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。
ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。
主频高达300MIPS。
ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。
ARM1136J-S发布于2003年,是针对高性能和高能效应而设计的。
主频高达800MIPS。
ARM1136J-S是第一个执行ARMv6架构指令的处理器。
它集成了一条具有独立的Load/Stroe和算术流水线的8级流水线。
ARMv6指令包含了针对媒体处理的单指令流多数据流扩展,采用特殊的设计改善视频处理能力。
SecurCore系列处理器提供了基于高性能的32位RISC技术的安全解决方案。
SecurCore系列处理器除了具有体积小、功耗低、代码密度高等特点外,还具有它自己特别优势,即提供了安全解决方案支持。
主要特点:
1、支持ARM指令集和Thumb指令集,以提高代码密度和系统性能;
2、采用软内核技术以提供最大限度的灵活性,可以防止外部对其进行扫描探测;
3、提供了安全特性,可以抵制攻击;
4、提供面向智能卡和低成本的存储保护单元MPU;
5、可以集成用户自己的安全特性和其他的协处理器。
2开发工具
2.1集成开发环境
ARMADS是ARM公司推出的取代ARMSDT的集成开发环境,目前版本为ARMADS1.2。
ARMADS起源于ARMSDT,对一些SDT的模块进行了增强,并替换了一些SDT的组成部分,现代集成开发环境的一些基本特征在ARMADS中都有体现,ARMADS支持所有的ARM处理器。
ARMADS可能是目前最常用的ARM集成开发环境,通过简单实惠的JTAG板可实现ARM处理器仿真调试功能。
RealViewMDK是ARM公司主推的ARM处理器集成开发环境,界面友好,功能强大,配合ARM公司的ULINK2仿真器可以进行ARM处理器的仿真调试功能。
MDK提供某些ARM处理器的外设模拟器,通过外设模拟器,可以直接在MDK下进行外设行为的模拟,方便的进行开发。
随着ARM公司和英蓓特的大力推广,MDK无疑会成为主流的ARM集成开发环境。
Multi2000是美国GreenHills软件公司开发的集成开发环境,支持C/C++、EmbededC++等编程语言的开发和调试,可运行于Windows平台和Unix平台,支持各类设备的远程调试,同时Multi2000支持众多流行的16位、32位和64位的处理器(包括DSP,并支持多处理器调试。
Multi2000包含一个软件工程所需要的所有工具。
2.2ARM仿真器
J-LINK支持IAREWARM,ADS,KEIL,WINARM,RealView等集成开发环境,支持所有ARM7/ARM9/Cortex内核芯片的仿真,通过USB接口连接PC,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。
ULINKUSB-JTAG转换器将PC机的USB端口与用户的目标硬件相连(通过JTAG或OCD,使用户可在目标硬件上调试代码。
通过使用KeilμVisionIDE/调试器和ULINKUSB-JTAG转换器,用户可以很方便地编辑、下载和在实际的目标硬件上测试嵌入的程序。
2.3嵌入式Linux
嵌入式linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。
嵌入式linux既继承了Interlnet上无限的开放源代码资源,又具有嵌入式操作系统的特性。
嵌入式Linux的特点是版权费免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux,HardhatLinux等嵌入式Linux支持,实时性能稳定性好安全性好。
Freescalei.MX系列使用的linux是在linux内核小组的发布的linux版本上添加了i.MX系列芯片的支持,使用方便。
2.4Bootloader
Bootloader即引导加载程序,是系统加电后运行的第一段软件代码。
PC机中的引导加载程序由BIOS(其本质就是一段固件程序和位于硬盘MBR中的OSBootloader(比如,LILO和GRUB等)一起组成。
BIOS在完成硬件检测和资源分配后,将硬盘MBR中的Bootloader读到系统的RAM中,然后将控制权交给OSBootloader。
Bootloader的主要运行任务就是将内核映象从硬盘上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。
而在嵌入式系统中,通常并没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由Bootloader来完成。
简单地说,Bootloader就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
Bootloader有两种工作模式,正常引导模式和操作系统下载模式。
Bootloader通常提供多种方式下载操作系统镜像,如串口,TFTP,USB。
Bootloader首先将操作系统镜像下载到芯片RAM中,然后将其写入到制定的空间中。
Bootloader提供丰富的命令进行各种操作。
常见的嵌入式开发中的Bootloader有U-boot,vivi,Redboot。
Freescale提供的BSP中是Redboot。
2.5ATK
通常Bootloader是通过ARM仿真器写入到Nandflash或Norfalsh中,但freescale提供了一个特殊的工具ATK(AdvancedToolKit)来烧写Bootloader。
ATK运行在Windows机器上,通过串口连接目标板下载Bootloader,支持i.MX系列所有芯片。
这种方式不需要ARM仿真器。
2.6超级终端,Minicom,SecureCRT
这三个工具都是用来目标板与目标板进行通讯的,硬件连接方式都是串口,其中Minicom运行与linux机器。
他们通过串口将命令或文件发给目标板,并接收回显目标板的返回数据。
其中SecureCRT支持多种协议,其中有安全外壳协议SSH(SecureShell),通过SSH可以通过网络远程访问linux机器,这样可以实现多个人使用同一台linux机器进行开发。
3开发流程
3.1没有操作系统
对于开发人员,完全可以将ARM芯片当作普通MCU使用,此时开发流程与MCU开发流程一致。
采用这种开发方式时,软件系统一般没有操作系统,或者操作系统是非常小,如μCOS等,这些非常小的操作系统通常只具备简单的任务切换功能。
这种开发方式常用于没有MMU(MemoryManagementUnit)模块的ARM7系列芯片中。
没有操作系统的开发流程见图1。
图1没有操作系统时开发流程
ARM开发基础知识201001253.2有操作系统当有操作系统时(后均以linux为例),开发流程将完全不同。
对于没有操作系统的空的开发板,要进行Bootloader,操作系统和rootfs的烧写,步骤如下:
1、Bootloader下载到芯片Flash中2、使用交叉编译环境生成目标板的linux操作系统镜像和根文件系统镜像3、WindowsPC机通过串口连接目标板,运行超级终端或SecureCRT连接目标板4、启动目标板;Bootloader启动5、PC机启动TFTP6、PC输入Bootloader命令下载操作系统和Rootfs镜像。
到此,操作系统已经在目标板成功建立,重启目标板,在超级终端中可以看到启动信息。
当操作系统成功建立以后,程序的编写流程如下:
1、在装有Linux的PC机上利用文本编辑工具编写源程序2、使用gccforarm编译源程序得到目标板可执行文件3、通过超级终端或其他方式将可执行文件下载到目标板中4、通过超级终端输入命令执行可执行文件4FreescalePDK-6-