arm 订阅
英国ARM公司是全球领先的半导体知识产权(IP)提供商。全世界超过95%的智能手机和平板电脑都采用ARM架构 [1]  。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。2014年基于ARM技术的全年全球出货量是120亿颗,从诞生到现在为止基于ARM技术的芯片有600亿颗 [2]  。技术具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。2016年7月18日消息,日本软银已经同意以234亿英镑(约合310亿美元)的价格收购英国芯片设计公司ARM。软银认为,凭借这笔收购,ARM将让软银成为下一个潜力巨大的科技市场(即物联网)的领导者。这笔交易将在周一早晨宣布。软银和ARM暂时都未对此发表评论。 [3] 展开全文
英国ARM公司是全球领先的半导体知识产权(IP)提供商。全世界超过95%的智能手机和平板电脑都采用ARM架构 [1]  。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。2014年基于ARM技术的全年全球出货量是120亿颗,从诞生到现在为止基于ARM技术的芯片有600亿颗 [2]  。技术具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。2016年7月18日消息,日本软银已经同意以234亿英镑(约合310亿美元)的价格收购英国芯片设计公司ARM。软银认为,凭借这笔收购,ARM将让软银成为下一个潜力巨大的科技市场(即物联网)的领导者。这笔交易将在周一早晨宣布。软银和ARM暂时都未对此发表评论。 [3]
信息
员工数
3300 (2014年)
CEO
沃伦·伊斯特
总部地点
英国剑桥
外文名称
Advanced RISC Machines
经营范围
电子半导体微处理器智能手机
公司名称
ARM
ARM企业简介
ARM Holdings 是全球领先的半导体知识产权(IP)提供商,并因此在数字电子产品的开发中处于核心地位。ARM 公司的总部位于英国剑桥,它拥有 1700 多名员工,在全球设立了多个办事处,其中包括比利时、法国、印度、瑞典和美国的设计中心。 [4] 
收起全文
精华内容
参与话题
问答
  • arm

    千次阅读 2011-02-25 21:37:00
    ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类...

    ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

    ARM公司

    ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

     

      ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的

    ARM公司(6张)

    都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者

     

      目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括IntelIBM、LG半导体、NECSONY飞利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。

     

      1991 年 ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用 ARM技术知识产权( IP )核的微处理器,即我们通常所说的 ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于 ARM 技术的微处理器应用约占据了 32 位 RISC 微处理器 75 %以上的市场份额, ARM 技术正在逐步渗入到我们生活的各个方面。

     

      20世纪90年代,ARM公司的业绩平平,处理器的出货量徘徊不前。由于缺乏资金,ARM做出了一个意义深远的决定:自己不制造芯片,只将芯片的设计方案授权(licensing)给其他公司,由它们来生产。正是这个模式,最终使得ARM芯片遍地开花,将封闭设计的Intel公司置于"人民战争"的汪洋大海。

     

      。但是进入21世纪之后,由于手机的快速发展,出货量呈现爆炸式增长,ARM处理器占领了全球手机市场。2006年,全球ARM芯片出货量为20亿片,2010年预计将达到45亿片。

     

      ARM 公司是专门从事基于 RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的 ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的 ARM 微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用 ARM 公司的授权,因此既使得 ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。

     

      ARM商品模式的强大之处在于它在世界范围有超过100个的合作伙伴(Partners)。ARM 是设计公司,本身不生产芯片。采用转让许可证制度,由合作伙伴生产芯片。

     

      2007年底,ARM的雇员总数为1728人,持有专利700项(另有900项正在申请批准中),全球分支机构31家,合作伙伴200家,年收入2.6亿英镑。

    ARM 授权方

      ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 内核的整合硬件叙述,包含完整的软件开发工具(编译器、debugger、SDK),以及针对内含 ARM CPU 硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 内核整合到他们自行研发的芯片设计中,,通常就仅针对取得一份生产就绪的智财核心技术(IP Core)认证。对这些客户来说,ARM 会释出所选的 ARM 核心的闸极电路图,连同抽象模拟模型和测试程式,以协助设计整合和验证。需求更多的客户,包括整合元件制造商(IDM)和晶圆厂家,就选择可合成的RTL(暂存器转移层级,如 Verilog)形式来取得处理器的智财权(IP)。藉著可整合的 RTL,客户就有能力能进行架构上的最佳化与加强。这个方式能让设计者完成额外的设计目标(如高震荡频率、低能量耗损、指令集延伸等)而不会受限于无法更动的电路图。虽然 ARM 并不授予受权方再次出售 ARM 架构本身,但受权方可以任意地出售制品(如芯片元件、评估板、完整系统等)。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 内核的硅晶成品,对其它客户来讲,他们通常也保留重制 ARM 内核的权利。

     

      就像大多数 IP 出售方,ARM 依照使用价值来决定 IP 的售价。在架构上而言,更低效能的 ARM 内核比更高效能的内核拥有较低的授权费。以硅芯片实作而言,一颗可整合的内核要比一颗硬件宏(黑箱)内核要来得贵。更复杂的价位问题来讲,持有 ARM 授权的商用晶圆厂(例如韩国三星和日本富士通)可以提供更低的授权价格给他们的晶圆厂客户。透过晶圆厂自有的设计技术,客户可以更低或是免费的ARM预付授权费来取得 ARM 内核。相较于不具备自有设计技术的专门半导体晶圆厂(如台积电联电),富士通/三星对每片晶圆多收取了两至三倍的费用。对中少量的应用而言,具备设计部门的晶圆厂提供较低的整体价格(透过授权费用的补助)。对于量产而言,由于长期的成本缩减可借由更低的晶圆价格,减少ARM的NRE成本,使得专门的晶圆厂也成了一个更好的选择。

     

      许多半导体公司持有 ARM 授权:AtmelBroadcomCirrus LogicFreescale(于2004从摩托罗拉公司独立出来)、富士通、英特尔(借由和Digital的控诉调停)、IBM,英飞凌科技任天堂,恩智浦半导体(于2006年从飞利浦独立出来)、OKI电气工业,三星电子Sharp,STMicroelectronics,德州仪器VLSI等许多这些公司均拥有各个不同形式的ARM授权。虽然ARM的授权项目由保密合约所涵盖,在智慧财产权工业,ARM是广为人知最昂贵的CPU内核之一。单一的客户产品包含一个基本的 ARM 内核可能就需索取一次高达美金20万的授权费用。而若是牵涉到大量架构上修改,则费用就可能超过千万美元。

     

      ARM(Asynchronous Resbonse Mode)异步响应方式异步响应方式ARM(Asynchronous Responses Mode)也是一种非平衡数据链路操作方式,与NRM不同的是,ARM下的传输过程由从站启动。从站主动发送给主站的一个或一组帧中可包含有信息,也可以是仅以控制为目的而发的帧。在这种操作方式下,由从站来控制超时和重发。该方式对采用轮询方式的多站链路来说是必不可少的。

    ARM处理器

    ARM(Advanced RISC Machines)处理器是Acorn计算机有限公司面向低预算市场设计的第一款RISC微处理器。更早称作Acorn RISC Machine)。   ARM处理器本身是32位设计,但也配备16位指令集。一般来讲比等价32位代码节省达35%,却能保留32位系统的所有优势。   ARM的Jazelle技术使Java加速得到比基于软件的Java虚拟机(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。CPU功能上增加DSP指令集提供增强的16位和32位算术运算能力,提高了性能和灵活性。ARM还提供两个前沿特性来辅助带深嵌入处理器的高集成SoC器件的调试,它们是嵌入式ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列。

    体系结构扩充

      当前ARM体系结构的扩充包括:   ·Thumb 16位指令集,为了改善代码密度;   ·DSP DSP应用的算术运算指令集;   ·Jazeller 允许直接执行Java字节码。   ARM处理器系列提供的解决方案有:   ·无线、消费类电子和图像应用的开放平台;   ·存储、自动化、工业和网络应用的嵌入式实时系统;   ·智能卡和SIM卡的安全应用。

    ARM处理器特点

      ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和合作伙伴众多。   1、体积小、低功耗、低成本、高性能;   2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;   3、大量使用寄存器,指令执行速度更快;   4、大多数数据操作都在寄存器中完成;   5、寻址方式灵活简单,执行效率高;   6、指令长度固定。

    ARM处理器的历史

      1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。1979年,CPU公司改名为Acorn计算机公司。   起初,Acorn公司打算使用摩托罗拉公司的16位芯片,但是发现这种芯片太慢也太贵。"一台售价500英镑的机器,不可能使用价格100英镑的CPU!"他们转而向Intel公司索要80286芯片的设计资料,但是遭到拒绝,于是被迫自行研发。   1985年,Roger Wilson和Steve Furber设计了他们自己的第一代32位、6M Hz的处理器,
      

    Roger Wilson和Steve Furber

    [1]
    用它做出了一台RISC指令集的计算机,简称ARM(Acorn RISC Machine)。这就是ARM这个名字的由来。   RISC的全称是"精简指令集计算机"(reduced instruction set computer),它支持的指令比较简单,所以功耗小、价格便宜,特别合适移动设备。早期使用ARM芯片的典型设备,就是苹果公司的牛顿PDA。   20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。   1990年11月27日,Acorn公司正式改组为ARM计算机公司。苹果公司出资150万英镑,芯片厂商VLSI出资25万英镑,Acorn本身则以150万英镑的知识产权和12名工程师入股。公司的办公地点非常简陋,就是一个谷仓。 20世纪90年代,ARM 32位嵌入式RISC(Reduced lnstruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。

    市场前景

      微软公司(2011年)宣布,下一版Windows将正式支持ARM处理器。这是计算机工业 发展历史上的一件大事,标识着x86处理器的主导地位发生动摇。目前在移动设备市场,ARM处理器的市场份额超过90%;在服务器市场,今年(2011年)就会有2.5GHz的服务器上市;在桌面电脑市场,现在又有了微软的支持。ARM成为主流,恐怕指日可待。难怪有人惊呼,Intel公司将被击败!   与这场轰轰烈烈的变革相比,它的主角ARM公司却没有受到太多的关注,显得不太起眼。这家远离硅谷、位于剑桥大学的英国公司,到底是怎么走到今天的,居然能将芯片巨人Intel拉下马?   展望未来,即使Intel成功地实施了Atom战略,将x86芯片的功耗和价格大大降低,它与ARM竞争也将非常吃力。因为ARM的商业模式是开放的,任何厂商都可以购买授权,所以未来并不是Intel vs. ARM,而是Intel vs. 世界上所有其他半导体公司。那样的话,Intel的胜算能有多少呢?

    ARM处理器结构

      体系结构   1 CISC(Complex Instruction Set Computer,复杂指令集计算机)   在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。   2 RISC(Reduced Instruction Set Computer,精简指令集计算机)   RISC结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等   RISC体系结构应具有如下特点:   1 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。   2 使用单周期指令,便于流水线操作执行。   3 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高指令的执行效率。   除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:   4 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。   5 可用加载/存储指令批量传输数据,以提高数据的传输效率。   6 可在一条数据处理指令中同时完成逻辑处理和移位处理。   7 在循环处理中使用地址的自动增减来提高运行效率。   寄存器结构   ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:   1 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。   2 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。   指令结构   ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的   ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。

    使用ARM处理器的手机

    欧洲诺基亚

      诺基亚 N86 诺基亚 N97 诺基亚 N8 诺基亚 N96 诺基亚 N95 诺基亚 N78 诺基亚 N900 诺基亚 N81 诺基亚 N85 诺基亚 X6 诺基亚 E72 诺基亚 E71 诺基亚 E66 诺基亚 E63 诺基亚 E52 诺基亚 E51 诺基亚 E50 诺基亚 5530XM 诺基亚 5800XM 诺基亚 5320XM 诺基亚 5630XM 诺基亚 5730XM 诺基亚 5230等

    美国摩托罗拉

      摩托罗拉 XT711 摩托罗拉 XT800 摩托罗拉 XT702 摩托罗拉 XT701 摩托罗拉 ME600 摩托罗拉 ME501 摩托罗拉ME500 摩托罗拉 Milestone 摩托罗拉 RAZR V8 摩托罗拉 VE66 摩托罗拉 A1200E 摩托罗拉 A1210 摩托罗拉 A1600 摩托罗拉 A1800 摩托罗拉 A1890 摩托罗拉 U9 摩托罗拉 A810 摩托罗拉 ROKR EM30 摩托罗拉 EM35 摩托罗拉 ROKR E6 摩托罗拉 ROKR E8

    英国索爱

      索爱 X1 索爱 X2 索爱 M1i 索爱 X10 索爱 Satio 索爱 U8i等

    韩国三星

      三星 i8910 三星 i8510等

    美国奔迈

      palm pre palm pixi palm pre plus

    ARM处理器系列

      ARM7系列 ARM9系列 ARM9E系列 ARM10E系列    SecurCore系列 Inter的Xscale Inter的StrongARM ARM11系列   其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。   ARM内核
    家族 架构 内核 特色 高速缓存 (I/D)/MMU 常规 MIPS 于 MHz 应用
    ARM1 ARMv1 ARM1


    ARM2 ARMv2 ARM2 Architecture 2 加入了MUL(乘法)指令 4 MIPS @ 8MHz Acorn Archimedes,Chessmachine
    ARMv2a ARM250 Integrated (完整的)MEMC (MMU),图像与IO处理器。Architecture 2a 加入了SWP和SWPB(置换)指令。 无,MEMC1a 7 MIPS @ 12MHz Acorn Archimedes
    ARM3 ARMv2a ARM2a 首次在ARM架构上使用处理器高速缓存 均为4K 12 MIPS @ 25MHz Acorn Archimedes
    ARM6 ARMv3 ARM610 v3 架构首创支援寻址32位的内存(针对26位) 均为4K 28 MIPS @ 33MHz Acorn Risc PC 600,Apple Newton
    ARM7TDMI ARMv4T ARM7TDMI(-S) 三级流水线 15 MIPS @ 16.8 MHz Game Boy Advance,Nintendo DS,iPod


    ARM710T
    均为8KB, MMU 36 MIPS @ 40 MHz Acorn Risc PC 700,Psion 5 series,Apple eMate 300


    ARM720T
    均为8KB, MMU 60 MIPS @ 59.8 MHz Zipit


    ARM740T
    MPU


    ARMv5TEJ ARM7EJ-S Jazelle DBX

    ARM9TDMI ARMv4T ARM9TDMI 五级流水线



    ARM920T
    16KB/16KB, MMU 200 MIPS @ 180 MHz ArmadilloGP32GP2X(第一颗内核), Tapwave Zodiac(Motorola i. MX1)


    ARM922T
    8KB/8KB, MMU



    ARM940T
    4KB/4KB, MPU
    GP2X(第二颗内核)
    ARM9E ARMv5TE ARM946E-S
    可变动,tightly coupled memories, MPU
    Nintendo DS,Nokia N-GageConexant 802.11 chips


    ARM966E-S
    无高速缓存,TCMs
    ST Micro STR91xF,包含Ethernet [2]


    ARM968E-S
    无高速缓存,TCMs


    ARMv5TEJ ARM926EJ-S Jazelle DBX 可变动,TCMs, MMU 220 MIPS @ 200 MHz 移动电话:Sony Ericsson(K, W系列),Siemens 和 Benq(x65 系列和新版的)

    ARMv5TE ARM996HS 无振荡器处理器 无高速缓存,TCMs, MPU

    ARM10E ARMv5TE ARM1020E (VFP),六级流水线 32KB/32KB, MMU



    ARM1022E (VFP) 16KB/16KB, MMU


    ARMv5TEJ ARM1026EJ-S Jazelle DBX 可变动,MMU or MPU

    XScale ARMv5TE 80200/IOP310/IOP315 I/O处理器




    80219

    400/600MHz Thecus N2100


    IOP321

    600 BogoMips @ 600 MHz Iyonix


    IOP33x





    IOP34x 1-2核,RAID加速器 32K/32K L1, 512K L2, MMU



    PXA210/PXA250 应用处理器,七级流水线

    Zaurus SL-5600


    PXA255
    32KB/32KB, MMU 400 BogoMips @ 400 MHz Gumstix,Palm Tungsten E2


    PXA26x

    可达 400 MHz Palm Tungsten T3


    PXA27x

    800 MIPS @ 624 MHz HTC Universal, Zaurus SL-C1000,3000,3100,3200, Dell Axim x30, x50,和 x51 系列


    PXA800(E)F





    Monahans

    1000 MIPS @ 1.25 GHz


    PXA900


    Blackberry 8700, Blackberry Pearl (8100)


    IXC1100 Control Plane Processor




    IXP2400/IXP2800





    IXP2850





    IXP2325/IXP2350





    IXP42x


    NSLU2


    IXP460/IXP465



    ARM11 ARMv6 ARM1136J(F)-S SIMD, Jazelle DBX, (VFP),八级流水线 可变动,MMU ?? @ 532-665MHz (i.MX31 SoC) Nokia N93ZuneNokia N800
    ARMv6T2 ARM1156T2(F)-S SIMD, Thumb-2, (VFP),九级流水线 可变动,MPU

    ARMv6KZ ARM1176JZ(F)-S SIMD, Jazelle DBX, (VFP) 可变动,MMU+TrustZone

    ARMv6K ARM11 MPCore 1-4核对称多处理器,SIMD, Jazelle DBX, (VFP) 可变动,MMU

    Cortex ARMv7-A Cortex-A8 Application profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage pipeline 可变动 (L1+L2), MMU+TrustZone up to 2000(2.0 DMIPS/MHz 从600 MHz到超过1 GHz的速度) Texas Instruments OMAP3

    ARMv7-R Cortex-R4(F) Embedded profile, (FPU) 可变动高速缓存,MMU可选配 600 DMIPS Broadcom is a user

    ARMv7-M Cortex-M3 Microcontroller profile 无高速缓存,(MPU) 120 DMIPS @ 100MHz Luminary Micro[3] 微控制器家族

    ARM内核的设计文件

      设计文件讲求精简又快速的设计方式,整体电路化却又不采用微码,就像早期使用在Acorn微电脑的8位6502处理器。   ARM架构包含了下述RISC特性:   读取/储存 架构不支援地址不对齐内存存取(ARMv6内核现已支援)正交指令集(任意存取指令可以任意的寻址方式存取数据Orthogonal instruction set)大量的16 × 32-bit 寄存器阵列(register file)固定的32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。大多均为一个CPU周期执行。为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola 68020,还多加了一些特殊设计:   大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch predictor)的不足。算数指令只会在要求时更改条件编码(condition code)32-bit筒型位移器(barrel shifter)可用来执行大部分的算数指令和寻址计算而不会损失效能强大的索引寻址模式(addressing mode)精简但快速的双优先级中断子系统,具有可切换的暂存器组有个附加在ARM设计中好玩的东西,就是使用一个4-bit 条件编码 在每个指令前头,表示每支指令的执行是否为有条件式的   这大大的减低了在内存存取指令时用到的编码位,换句话说,它避免在对小型叙述如if做分支指令。有个标准的范例引用欧几里德最大公因子算法:   在C编程语言中,循环为:   int gcd (int i, int j) { while (i != j) if (i > j) i -= j; else j -= i; return i;} 在ARM 汇编语言中,循环为:   loop CMP Ri, Rj ; 设定条件为 "NE"(不等於) if (i != j) ; "GT"(大於) if (i > j), ; or "LT"(小於) if (i < j) SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j; SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i; BNE loop ; 若 "NE"(不等於),则继续回圈这避开了then和else子句之间的分支。   另一项指令集的特色是,能将位移(shift)和回转(rotate)等功能并成"资料处理"型的指令(算数、逻辑、和暂存器之间的搬移),因此举例来说,一个C语言的叙述   a += (j << 2);在ARM之下,可简化成只需一个word和一个cycle即可完成的指令   ADD Ra, Ra, Rj, LSL #2这结果可让一般的ARM程式变得更加紧密,而不需经常使用内存存取,流水线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下执行,与更复杂的CPU设计相比它仍能执行得不错。   ARM处理器还有一些在其他RISC的架构所不常见到的特色,例如PC-相对寻址(的确在ARM上PC为16个暂存器的其中一个)以及 前递加或后递加的寻址模式。   另外一些注意事项是 ARM 处理器会随着时间,不断地增加它的指令集。某些早期的 ARM 处理器(比ARM7TDMI更早),譬如可能并未具备指令可以读取两 Bytes 的数量,因此,严格来讲,对这些处理器产生程式码时,就不可能处理如 C 语言物件中使用 "volatile short" 的资料型态。   ARM7 和大多数较早的设计具备三阶段的流水线化(Pipeline):提取指令、解码,并执行。较高效能的设计,如 ARM9,则有五阶段的流水线化。提高效能的额外方式,包含一颗较快的加法器,和更广的分支预测逻辑线路。   这个架构使用“协处理器”提供一种非侵入式的方法来延伸指令集,可透过软件下 MCR、MRC、MRRC和MCRR 等指令来对协处理器寻址。协处理器空间逻辑上通常分成16个协处理器,编号分别从 0 至 15 ,而第15号协处理器(CP15)是保留用作某些常用的控制功能,像是使用高速缓存和记忆管理单元运算(若包含于处理器时)。   在 ARM 架构的机器中,周边装置连接处理器的方式,通常透过将装置的实体暂存器对应到 ARM 的内存空间、协处理器空间,或是连接到另外依序接上处理器的装置(如总线)。协处理器的存取延迟较低,所以有些周边装置(例如 XScale 中断控制器)会设计成可透过不同方式存取(透过内存和协处理器)。Thumb    较新的ARM处理器有一种16-bit指令模式,叫做Thumb,也许跟每个条件式执行指令均耗用4位的情形有关。在Thumb模式下,较小的opcode有更少的功能性。例如,只有分支可以是条件式的,且许多opcode无法存取所有CPU的暂存器。然而,较短的opcode提供整体更佳的编码密度(注:意指程式码在内存中占的空间),即使有些运算需要更多的指令。特别在内存埠或总线宽度限制在32 以下的情形时,更短的Thumb opcode能更有效地使用有限的内存带宽,因而提供比32位程式码更佳的效能。典型的嵌入式硬件仅具有较小的32-bit datapath寻址范围以及其他更窄的16 bits寻址(例如Game Boy Advance)。在这种情形下,通常可行的方案是编译成 Thumb 程式码,并自行最佳化一些使用(非Thumb)32位指令集的CPU相关程式区,因而能将它们置入受限的32-bit总线宽度的内存中。   首颗具备 Thumb 技术的处理器是 ARM7TDMI。所有 ARM9 和后来的家族,包括 XScale 都纳入了 Thumb 技术。   Jazelle    ARM 还开发出一项技术,Jazelle DBX (Direct Bytecode eXecution),允许它们在某些架构的硬件上加速执行Java bytecode,就如其他执行模式般,当呼叫一些无法支援bytecodes的特殊软件时,能提供某些bytecodes的加速执行。它能在现存的ARM与Thumb模式之间互相执行。   首颗具备Jazelle技术的处理器是ARM926EJ-S:Jazelle以一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速执行Java ME的游戏和应用程式,也因此促使了这项技术不断地开发。   Thumb-2     Thumb-2 技术首见于 ARM1156 核心 ,并于2003年发表。Thumb-2 扩充了受限的 16-bit Thumb 指令集,以额外的 32-bit 指令让指令集的使用更广泛。因此 Thumb-2 的预期目标是要达到近乎 Thumb 的编码密度,但能表现出近乎 ARM 指令集在 32-bit 内存下的效能。   Thumb-2 至今也从 ARM 和 Thumb 指令集中派生出多种指令,包含位栏(bit-field)操作、分支建表(table branches),和条件执行等功能。   Thumb Execution Environment (ThumbEE)     ThumbEE,也就是所谓的Thumb-2EE,,业界称为Jazelle RCT技术,于2005年发表,首见于 Cortex-A8 处理器。ThumbEE 提供从 Thumb-2 而来的一些扩充性,在所处的执行环境(Execution Environment)下,使得指令集能特别适用于执行阶段(Runtime)的编码产生(例如即时编译)。Thumb-2EE 是专为一些语言如 LimboJavaC#PerlPython,并能让 即时编译器 能够输出更小的编译码却不会影响到效能。   ThumbEE 所提供的新功能,包括在每次存取指令时自动检查是否有无效指标,以及一种可以执行阵列范围检查的指令,并能够分支到分类器(handlers),其包含一小部份经常呼叫的编码,通常用于高阶语言功能的实作,例如对一个新物件做内存配置。   进阶 SIMD (NEON)    进阶 SIMD 延伸集,业界称为NEON技术,它是一个结合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 单指令多重数据)指令集,其针对多媒体和讯号处理程式具备标准化加速的能力。NEON 可以在 10 MHz 的 CPU 上执行 MP3 音效解码,且可以执行 13 MHz 频率以下的 GSM AMR (Adaptive Multi-Rate) 语音编码。NEON具有一组广泛的指令集、各自的寄存器阵列,以及独立执行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整数及单精度浮点数据,并以SIMD 的方式运算,执行图形和游戏处理中关于语音/视讯的部分。SIMD 在 向量超级处理机 中是个决定性的要素,它具备同时多项处理功能。在 NEON 技术中,SIMD 最高可支援到同时 16 个运算。   VFP     VFP 是在协同处理器针对ARM架构的衍生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全相容于ANSI/IEEE Std 754-1985 二进制浮点算数标准。VFP 提供大多数适用于浮点运算的应用,例如PDA、智慧手机、语音压缩与解压、3D图像以及数位音效、打印机、机上盒,和汽车应用等。VFP 架构也支援 SIMD(单指令多重数据)平行化的短向量指令执行。这在图像和讯号处理等应用上,非常有助于降低编码大小并增加输出效率。   在ARM-based处理器中,其他可见的浮点、或 SIMD 的协同处理器还包括了 FPA, FPE, iwMMXt。他们提供类似 VFP 的功能但在opcode层面上来说并不具有相容性。   安全性扩充 (TrustZone)    TrustZone(TM) 技术出现在 ARMv6KZ 以及较晚期的应用核心架构中。它提供了一种低成本的方案,针对系统单芯片SoC)内加入专属的安全核心,由硬件建构的存取控制方式支援两颗虚拟的处理器。这个方式可使得应用程式核心能够在两个状态之间切换(通常改称为领域(worlds)以避免和其他功能领域的名称混淆),在此架构下可以避免资讯从较可信的核心领域泄漏至较不安全的领域。这种内核领域之间的切换通常是与处理器其他功能完全无关联性(orthogonal),因此各个领域可以各自独立运作但却仍能使用同一颗内核。内存和周边装置也可因此得知目前内核运作的领域为何,并能针对这个方式来提供对装置的机密和编码进行存取控制。典型的 TrustZone 技术应用是要能在一个缺乏安全性的环境下完整地执行操作系统,并在可信的环境下能有更少的安全性的编码。

    ARM的开发教程

      总结起来最主要的有以下几个吧    1 ADS调试用   确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。 有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。编译成AXF以后再在ARM的RAM里调试。   2 FLASHPGM   FLASH烧写的软件。AXF在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。   同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的FLASHPGM使用了。   3 BANYANT调试代理(不知道名对不,起这么个难记的,我一般都叫它“半羊”因为知道它那几天刚吃了烤羊)   调试代理就是用它帮你使用更简单的JTAG(便宜啊)来实现原本1K才卖的JTAG仿真器的大部分功能。JTAG调试原理看我另一篇笔记。简单的就可以把他理解为你自己做的JTAG的驱动就行了。   调试代理还有很多种,什么H-JTAG了、ARM7了(不知道具体叫什么,就记得可执行文件叫ARM7.EXE)都是,BANYANT比较好。   需要注意的是,每种调试代理安装方法虽然都简单但都不一样,需要看说明。而且AXD调试之前都要运行。省钱了,就别怕麻烦了。   4 ARM-ELF-TOOLS工具链   里面是UCLINUX开发用的工具比如ARM-ELF-GCC只类的。工具链就是把很多工具打包在一起发布的方便你开发的东西。具体安装方法看我另一篇笔记。   另外如果你开发LINUX就要用ARM-LINUX-TOOLS,不一样,不通用。   5 U-BOOT   大名鼎鼎的BOOTLOADER生成工具,同类的好象还有VIVI(名字很暧昧~~)   生成的BOOTLOADER烧到FLASH里,然后就可以用BOOTLOADER下载 烧写其他了   有了BOOTLOADER才能下UCLINUX。BOOTLOADER就像电脑上的BIOS。当然UCOS的不用这个,用什么我不知道:)   最新版本是1.1.4 具体使用方法看我另一篇笔记吧。   6 UCLINUX包   UCLINUX的源码包,不用多说了吧?建议大家用现成的先体会一下,然后再自己编译,裁剪。因为单独UCLINUX的编辑技术上比较简单,但涉及的方面还是比较广的。   7 VMWARE   老牌的虚拟机软件,在一个机器上虚拟出一个机器装LINUX(PC上用的),省得你来回开关机了。记得装VMWARE-TOOLS。   8 source insight 代码编辑工具 linux下使用kscope
    展开全文
  • ARM嵌入式外文翻译论文

    千次阅读 2010-06-15 11:15:00
    ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM...

    ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文ARM嵌入式外文翻译论文

    展开全文
  • Keil(MDK-ARM)介绍、下载、安装与注册

    万次阅读 多人点赞 2016-05-25 21:24:48
    推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang ...Keil系列教程02_新建基础软件...

    推荐

    分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang

     

    推荐在我的公众号「strongerHuang」或网站(www.strongerhuang.com)阅读以下教程:
    Keil系列教程01_Keil介绍、下载、安装与注册
    Keil系列教程02_新建基础软件工程
    Keil系列教程03_主窗口和工具栏详细说明
    Keil系列教程04_菜单概述
    Keil系列教程05_工程目标选项配置(一)
    Keil系列教程06_工程目标选项配置(二)
    Keil系列教程07_Configuration(一)
    Keil系列教程08_Configuration(二)
    Keil系列教程09_调试仿真
    Keil系列教程10_文件类型及相关描述
    Keil系列教程11_工程窗口图标说明
    Keil系列教程12_map文件全面解析
    Keil系列教程13_创建多目标工程
    Keil系列教程14_创建多工程工作空间
    Keil系列教程15_编辑窗口右键菜单选项说明
    ···

    Ⅰ、写在前面

    本文讲述的内容是Keil MDK-ARM的介绍、下载、安装与注册,如果需要了解Keil C51版相关的文章,可以到我博客,或微信公众号查看并下载。

     

    Keil(C51)介绍、下载、安装与注册:

    http://blog.csdn.net/ybhuangfugui/article/details/52932112

     

    Keil MDK-ARM版本从V4升级到V5在架构上算是有很大的改变,因此在安装的时候需要增加安装“支持包”【软件安装完成之后会讲述安装支持包】。但是在使用上,为了兼容,没有多大的变化。

     

    本文内容已经整理成PDF文件,提供给大家下载:

    http://pan.baidu.com/s/1nuJ0RDR

     

    作者:strongerHuang

    版权所有,未经允许,禁止用于商业用途!!!

     

    关于本文的更多详情请往下看。

     

    Ⅱ、Keil介绍

    1.概述

    MDK:Microcontroller Developer Kit微控制器开发工具

    Keil MDK-ARM是美国Keil软件公司(现已被ARM公司收购)出品的支持ARM微控制器的一款IDE(集成开发环境)。

    MDK-ARM包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件。具有业行领先的ARM C/C++编译工具链,完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件,包含世界上品牌的芯片。比如:ST、Atmel、Freescale、NXP、TI等众多大公司微控制器芯片。

     

    2.产品组件

    MDK-核心是基于使用的μVision领先的Cortex-M的设备,包括新的ARMv8-M架构的支持。

     

    DS-MDK包含了基于Eclipse的DS-5 IDE /调试器,并支持32位的Cortex-A和Cortex-M 32位的Cortex-A处理器或混合系统。

     

    MDK包括两个ARM C/C++编译器与汇编器,连接器和高度优化的量身定制最佳代码大小和性能运行时库。

     

    软件包可以从工具链添加任何时候MDK-Core或DS-MDK制造新的设备支持和中间件会更新无关。它们包含的设备支持,CMSIS库,中间件,主板支持,代码模板和示例项目。

     

    新鲜的是,与ARM mbed™软件组件扩展,使物联网(IOT)应用互联网的IPv4 / IPv6网络通信协议栈。

     

    3.支持芯片

    Keil MDK-ARM支持的器件包含Cortex-M、Cortex-R、ARM7、ARM9、Cortex-A8系列等多大几千种。

     

    官方支持芯片地址:http://www.keil.com/dd2

     

     

    Ⅲ、下载

     

    Keil MDK-ARM 这个软件可以到官网下载,也可以到我百度网盘下载。下面章节讲述的安装、注册也是从官方下载的软件,为了方便大家下载,我将其上传至百度网盘(和官网的一样)。

     

    1.MDK-ARM安装包下载

    目前(2016年10月)Keil MDK-ARM官方最新版本是V5.21a,更多老版本及MDK-ARM V4版本,可以在我百度网盘下载【定期更新】。

     

    MDK-ARM安装包下载地址:

    官方网站:http://www.keil.com/download/product

    百度网盘:http://pan.baidu.com/s/1eRLbgIY

     

    2.MDK-ARM支持包下载

    MDK-ARM V4 和 V5版本在安装的时候最大的区别在于:V4版本安装包里面集成器件的支持包,而V5版本是独立出来,自己下载安装的,因此需要对应自己芯片型号,下载相应的器件支持包(我百度网盘提供ST公司的器件支持包供大家下载)。

    MDK-ARM器件支持包下载地址:

    官方网站:http://www.keil.com/dd2/Pack

    百度网盘:http://pan.baidu.com/s/1o8fd6jS

     

    注意:由于许多网盘近年来受到影响都相继关闭了,如果网盘链接失效,可以微信公众号查看更新链接,或微信联系作者。

     

    Ⅳ、安装软件

     

    Keil MDK-ARM集成开发环境的安装比较简单(基本上就是一路Next下去)。还是按照常规安装教程(截图)讲述一下吧,以上面下载的“MDK521a.EXE”软件为例讲述。

     

    支持的操作系统:http://www2.keil.com/system-requirements

    Windows Vista、Windows 7、Windows 8和Windows 10

    注意:V5.21a不再支持Windows XP系统了Windows XP也可以用,但有些兼容性不好,容易出现异常,建议安装在官方指定操作系统下】

     

    1.下载软件,双击安装包,进入安装向导界面,点击“Next”


    2.勾选“I agree to...”,点击“Next”

     

    3.选择软件和支持包安装路径(可以默认),点击“Next”

     

    4.填写信息(可以随便填写),点击“Next”

     

    5.安装过程需要等待几分钟

     

    6.安装结束时,弹出下图提示,选择“安装”

     

    7.安装完成,点击“Finish”

     

    8.自动更新“支持包”,可以直接退出,自己下载安装。

     

    至此Keil MDK-ARM就安装完成,可以新建工程使用了。但为了不受编译代码大小限制和用户体验,就需要购买授权,或注册。

     

    Ⅴ、注册软件

    Keil MDK-ARM是一个收费的软件,官方打击盗版也比较严厉,若你是商业用途,建议购买正版软件。当然,我这里是针对个人开发学习的朋友而言,进行非商业用途的使用。

     

    我上面百度网盘提供下载的地址里面有一个“注册机”文件,本章将利用该注册机进行注册。

     

    1.打开上面安装好的Keil MDK-ARM,若出现下图提示,请关闭软件,重新以管理员身份运行软件(选中Keil uVision5 -> 右键 ->以管理员身份运行)

     

    2.打开注册管理窗口(File -> License Management),并复制CID(备用)。

     

    3.打开“注册机”:(1)粘贴上面复制的CID,(2)目标选择ARM,(3)生成注册码,

                    (4)复制注册码

     

    4.回到注册界面:(1)粘贴上面生成的“注册码”,(2)点击“Add LIC”,(3)看见显示信息说明注册成功。

     

    Ⅵ、安装器件支持包

    Keil MDK-ARM V5 和 V4安装的区别在于V5需要自己安装器件支持包,而V4就不需要安装。

     

    支持包可以在线安装,也可以下载离线包自己安装。

    1.在线安装支持包

    在线安装就是利用安装好的软件自动下载支持包。点击“安装支持包”图标:

     

    如果软件安装完之后没有更新列表,使用这种方式安装支持包,就需要更新列表,否则看不到下面的设备(Devices)

    2.离线安装支持包

    所谓离线安装支持包,就是下载支持包自己安装的意思。在我上面百度网盘可以下载ST所以系列的支持包(你也可以在官下载你对应芯片的支持包)。

     

    你安装好MDK-ARM V5软件之后,支持包的路径就已经有了,当你双击下载的支持包后,路径就是固定的(与之对应,不能修改),点击“Next”即可安装支持包。安装过程很快,最后点击“Finish”安装完成。

     

     

    Ⅶ、说明

     Keil MDK-ARM 这个工具是一款收费的软件,官方严厉打击盗版,若你是商业用途,建议购买正版软件。

     

    以上总结仅供参考,若有不对之处,敬请谅解。

     

    Ⅷ、最后

    我的网站:https://www.strongerhuang.com

    我的微信公众号(ID:strongerHuang)还在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩内容,如果想查看更多内容,可以关注我的微信公众号。

     

    微信公众号

     

     

     

    展开全文
  • 一些ARM学习资料

    千次下载 热门讨论 2006-03-24 10:23:17
    ARM学习资料 ARM学习资料\32位RISC CPU ARM芯片的应用和选型.doc ARM学习资料\ARM7在嵌入式应用中启动程序的实现.doc ARM学习资料\ARM处理器与单片机性能价格比.doc ARM学习资料\ARM开发调试教程.doc ARM...
  • ARM裸机全集》是朱老师物联网大讲堂嵌入式物联网核心课程中推出的第一环节,正在持续录制中。本课程是全套课程的第1部ARM裸机全集的第一个课程,目的是讲解嵌入式和ARM的一些基本概念,为之后的学习扫清障碍。
  • 从零使用qemu模拟器搭建arm运行环境

    万次阅读 多人点赞 2015-07-04 15:26:17
    本文从零开始介绍如何搭建qemu+arm的运行环境

    提醒:本文已有自动构建的项目支持,请移步到:再续【从零使用qemu模拟器搭建arm运行环境】

    为什么会有这篇文章

    早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没有上层的C/C++业务和数据库的开发经验,也没有底层的内核和驱动开发经验,到底路该如何走……基于对Linux系统开发的理解和内核的兴趣,认为选择Linux内核开发更适合自己。于是到淘宝上买了块三星s3c2440(arm 9)开发板,学起内核开发。没有过多久,机缘巧合,正式加入了公司的内核开发部。就这样跟内核和arm打上交道了。

     

    没有想到这一做就是3年了,arm芯片只有在公司才能使用,回到家里就不能访问了。去年(2014)开始觉得做内核久了,应该向内核社区提交patch,提升知名度和影响力。但在公司提交patch不方便,于是在家里通过qemu方式搭建于ARM A9的运行环境,进行开发和测试验证,一口气提交了好几个patch(link1, link2, link3, link4, link5)并被社区接纳了。

     

    最近在梳理Linux内存机制,无论是《深入理解Linux内核》还是《深入理解内核架构》这两本红宝书都无法告知你每个细节的时候,就需要查看代码细节,修改代码,甚致做行为分析。此时需要修改代码输出调试信息,以帮助更深入体会代码的逻辑。这该是qemu派上场的时候。

     

    其实我前前后后搭建qemu+arm的运行环境已超过5次了,每次都要花上很多时间。碰巧昨天有同事看到我再次搭建,他如搭珍宝,告诉我一定要将搭建qemu的方法告诉他。

     

    所以,如果你想买个开发板来做arm + linux嵌入式开发,完全可以使用qemu进行开发。或者你像我一样,对内核机制关心,而不关心于具体的外设器件,最多是关心arm架构相关的功能,也可以使用qemu进行开发。

     

    一句话:搭建qemu+arm环境,用于做内核开发和功能分析调试。

    搭建环境

    我整个搭建过程都是在笔记本上进行的,Ubuntu 12.04系统;如果是Fodera环境,搭建过程可能略有不同,但关键步骤是不变的。

     

    qemu模拟得最好的arm芯片,要数ARM公司的vexpress A9开发板了,本文的搭建过程都是围绕这个开发板进行的。当然,如果你想搭其它开发板,也不难,只要qemu和内核对它有成熟的支持就够了。

     

    下面是step by step的搭建过程,建议没有特别诉求的朋友,按照下在面的步骤操作。或者先根据下面的步骤成功搭建vexpress运行环境之后,再根据自己的需求进行更改。

     

    下载Linux内核

    下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发。另一种是直接到内核社区下载稳定版本(详见:https://www.kernel.org/pub/linux/kernel/v4.x/)。下面演示从Linux kernel主线下载代码进行编译。

     

    git clonegit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

     

    整个下载过程会持续半个小时左右,有足够时间来泡杯茶。

     

    安装arm的交叉编译工具链

     

    想必做嵌入式开发的朋友,对交叉编译工具链不陌生。如果你订制一个交叉编译工具链,建议你使用crosstool-ng开源软件来构建。但在这里建议直接安装arm的交叉编译工具链:

    sudo apt-get install gcc-arm-linux-gnueabi

     

    编译Linux内核

    生成vexpress开发板子的config文件:
     

    make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig

     

    编译:

    make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm

     

    生成的内核镱像位于arch/arm/boot/zImage, 后续qemu启动时需要使用该镜像。

     

    下载和安装qemu模拟器

    其实Ubuntu 12.04有qemu的安装包,但由于版本较低,对vexpress开发板支持不友好,建议下载高版本的qemu:

    wget http://wiki.qemu-project.org/download/qemu-2.0.2.tar.bz2

     

    配置qemu前,需要安装几个软件包:

    sudo apt-get install zlib1g-dev

    sudo apt-get install libglib2.0-0

    sudo apt-get install libglib2.0-dev

     

     

    配置qemu,支持模拟arm架构下的所有单板:

    ./configure --target-list=arm-softmmu --audio-drv-list=

     

    编译和安装:

    make

    make install

     

    测试qemu和内核能否运行成功

     

    qemu已经安装好了,内核也编译成功了,到这里最好是测试一下,编译出来的内核是否OK,或者qemu对vexpress单板支持是否够友好。

    运行命令很简单:

    qemu-system-arm -M vexpress-a9 -m 512M -kernel /path/to/kernel/dir/arch/arm/boot/zImage -dtb  /path/to/kernel/dir/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

     

    这里的 /path/to/kernel/dir/  是内核的下载目录,或者编译目录。

    如果看到内核启动过程中的打印,说明前面的搭建是成功的。

     

    这里简单介绍下qemu命令的参数:

    -M vexpress-a9 模拟vexpress-a9单板,你可以使用-M ?参数来获取该qemu版本支持的所有单板

    -m 512M 单板运行物理内存512M

    -kernel /path/to/kernel/dir/arch/arm/boot/zImage  告诉qemu单板运行内核镜像路径

    -nographic 不使用图形化界面,只使用串口

    -append "console=ttyAMA0" 内核启动参数,这里告诉内核vexpress单板运行,串口设备是那个tty。

     

    注意:

    我每次搭建,都忘了内核启动参数中的console=参数应该填上哪个tty,因为不同单板串口驱动类型不尽相同,创建的tty设备名当然也是不相同的。那vexpress单板的tty设备名是哪个呢? 其实这个值可以从生成的.config文件CONFIG_CONSOLE宏找到。

    如果搭建其它单板,需要注意内核启动参数的console=参数值,同样地,可从生成的.config文件中找到。

     

    制作根文件系统

    到这里是否大功告成了呢? 其实在上面的测试中,你会发现内核报panic,因为内核找不到根文件系统,无法启init进程。

     

    根文件系统要考虑两个方面:

    1. 根文件系统的内容

        如果你看过《Linux From Scratch》,相信你会对这一步产生恐惧感,但如果一直从事嵌入式开发,就可以放下心来。根文件系统就是简单得不能再简单的几个命令集和态动态而已。为什么Linux From Scratch会有那么复杂,是因为它要制作出一个Linux发生版。但在嵌入式领域,几乎所有的东西,都是mini版本,根文件系统也不例外。

       本文制本的根文件系统 = busybox(包含基础的Linux命令)  + 运行库 + 几个字符设备

    2. 根文件系统放在哪里

        其实依赖于每个开发板支持的存储设备,可以放到Nor Flash上,也可以放到SD卡,甚至外部磁盘上。最关键的一点是你要清楚知道开发板有什么存储设备。

        本文直接使用SD卡做为存储空间,文件格式为ext3格式

     

    下载、编译和安装busybox


     wget http://www.busybox.net/downloads/busybox-1.20.2.tar.bz2

     

    make defconfig

    make CROSS_COMPILE=arm-linux-gnueabi-

    make install CROSS_COMPILE=arm-linux-gnueabi-

     

    安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令。

     

    形成根目录结构

    先在Ubuntu主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录
     
    1.  创建rootfs目录(根目录),根文件系统内的文件全部放到这里
     

    mkdir -p rootfs/{dev,etc/init.d,lib}

     

    2. 拷贝busybox命令到根目录下

     

    sudo cp busybox-1.20.2/_install/* -r rootfs/

     

    3. 从工具链中拷贝运行库到lib目录下

     

    sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/

     

    4. 创建4个tty端终设备

    sudo mknod rootfs/dev/tty1 c 4 1

    sudo mknod rootfs/dev/tty2 c 4 2

    sudo mknod rootfs/dev/tty3 c 4 3

    sudo mknod rootfs/dev/tty4 c 4 4

    制作根文件系统镜像

    1. 生成32M大小的镜像
     

     dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32

     

    2. 格式化成ext3文件系统

     

    mkfs.ext3 a9rootfs.ext3

     

    3.  将文件拷贝到镜像中

     

    sudo mkdir tmpfs

    sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop

    sudo cp -r rootfs/*  tmpfs/

    sudo umount tmpfs

    系统启动运行

    完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:

    qemu-system-arm -M vexpress-a9 -m 512M -kernel /path/to/kernel/dir/arch/arm/boot/zImage -dtb  /path/to/kernel/dir/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0  console=ttyAMA0" -sd a9rootfs.ext3

     

    从内核启动打印,到命令行提示符出现,激动人心的时刻出现了……

     

    写在后面的话

    通过上面的步骤,搭建出来一个最小的qemu+arm开发环境,你可以上面的基础上修改内核,或者增加一些测试程序在单板上运行,甚至使用单板的flash设备。
    在此,你可以做纯arm架构的内核开发,或者与架构无关的内核开发,也可以做单板相关的驱动开发。

    最后的最后:本文已经过多次修改,如果各位读者按照本文方法搭建遇到问题,还请各位反馈给我(lyt2008bj at 163 dot com),我会修改直至完全成功。
    展开全文
  • Android 中arm64-v8a、armeabi-v7a、armeabi、x86简介~

    万次阅读 多人点赞 2016-10-25 16:19:45
    LZ是一名96年Android小生,从14年9月培训出来到现在,差不多俩年多的时间,由于一些原因,没能好好把技术提升一下,实乃不该啊。 了解起因昨天师傅问,你知道这俩个是什么么?有什么作用么?(如下图所示) 现在还记得...
  • ARM裸机1期加强版(linux)

    千人学习 2018-03-23 11:46:03
    1、 现场编写调试 2、假设学员0基础: 只会简单C语言 3、ARM裸板为主线,硬件知识,c语言为辅线,4、Linux命令,ARM硬件、汇编,重定位,链接脚本,gcc、Makefile 5、全新软件以及ubuntu系统
  • IAR for ARM介绍、下载、安装与注册

    万次阅读 多人点赞 2016-09-17 12:01:38
    推荐 分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!... ...推荐在我公众号「strongerHuang」和博客阅读该专栏 ...3.EWSTM8系列教程03_...
  • ARM汇编,MDK,ARM初学

    2015-02-03 10:19:34
    我是一名linux嵌入式初学者,现在在看ARM处理器。 使用的是一块S3C2440的开发板,目前的开发调试环境是KEIL4。 我在一个添加了启动代码的工程中添加一个自己编写的简单汇编文件。然后在启动代码的C入口点处修改...
  • 已经安装 QT5.2.1for linux 和 arm-linux-gcc 以及 qt-4.8.3-linux-arm-install。 执行#arm-linux-gcc -v 和#qmake -v 都能成功现实版本号。而且我已经在/etc/profile中添加: export PATH=$PATH:/opt/FriendlyARM...
  • .一. ARM 芯片类型1....-- ARM 核类型 : arm11, arm9, CortexA9;-- 指令架构 : armv7, armv6;芯片 和 核关系 : 芯片包含核; -- 2440 芯片 : 包含 arm9 核; -- 6410 芯片 : 包含 arm11 核; -- 210 芯片 :
  • ARM与x86–蝶变ARM

    千次阅读 2010-12-01 08:50:00
    ARM与x86
  • 本期课程让大家进一步学到ARM的关键知识:启动方式、内存映射、指令集、寄存器接口等。目标是为下阶段开始使用开发板,自己写ARM裸机程序打好基础。
  • track代码发现引用的是stidcard.jar包里的,而且程序中并没有引用arm64-v8a或者arm64-v7a文件夹下的so库,为什么还要把so放在arm64-v8a、arm64-v7a文件夹下呢?另外arm64-v8a、arm64-v7a是什么东东?对于这两个概念...
  • 遇到关于安装Genymotion-ARM-Translation_v1.1.zip,插件的问题。 然后按照方法直接拖进去,但是我的Genymotion-ARM-Translation_v1.1.zip被当做文件复制到Sdcart/download目录下 于是按照百度搜查的 要手动adb ...
  • 很久很久以前   1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师 Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为当地市场供应电子设备。...
  •   因学习的需要,电脑会同时安装MDK-ARM v4.x(Keil uVision4) 、 MDK-ARM v5.x(Keil uVision5)、C51(Keil uVision5)。但是由于 Keil uVision5 是直接由 Keil uVision4 升级而来,ARM公司在升级上不知道到咋...
  • ARM7.ARM9,ARM11

    千次阅读 2008-08-20 17:46:00
    搞清楚了,手机双核,如果标的是ARM9的核,那肯定是ARM9负责操作系统,网络,ARM7负责通话.音频,以下是我找到的有关单双核手机的情况. Nokia 5700 XpressMusicCPU: Single CPUCPU Type: ARM 11CPU Clock Rate: 369 ...
  • CFLAGS="--sysroot=$NDKROOT/platforms/android-18/arch-arm -fPIC -DX264_VERSION -DANDROID -DHAVE_PTHREAD -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -march=armv7-a -fomit-frame-pointer -mfloat-abi=softfp -mfpu=...
  • Architectures in the fat file: ./xinetong/Ctrls/OfficeCtrl/AdOfficeCtrl/TempCode0525/Schedule/AgoraSDK/libagoradep_fat.a are: armv7 i386 x86_64 arm64 Architectures in the fat file: ./xinetong/Ctrls/...
  • ARM7、ARM9、ARM11、ARM-Cortex的关系

    千次阅读 2018-08-24 14:40:32
    1. ARM7、ARM9、ARM11、ARM-Cortex的关系  ARM7:ARMv4架构,ARM9:ARMv5架构,ARM11:ARMv6架构,ARM-Cortex 系列:ARMv7架构 ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE...
  • Android 设备的CPU类型通常称为ABIs 问题描述 解决方法 1解决之前的截图 2解决后的截图 3解决方法 4建议 为什么你需要重点关注so文件 App中可能出错的地方 其他地方也可能出错 使用android-21平台版本编译的so文件...
  • arm-elf和arm-eabi的区别

    万次阅读 2010-08-17 14:56:00
    觉得有点意思。...会出现arm-elf,arm-none-eabi,arm-eabi这些选择,倒底它们有什么区别呢?what is difference between arm-elf and arm-eabi? Re: what is difference between arm-elf and arm-eabi? Author:
  • arm-none-linux-gnueabi 链接工具命名:  arch-vendor-(os-)abi 1、arm-none-linux-gnueabi (ARM architecture, no vendor, linux OS, and the gnueabi ABI)  用于编译ARM架构的u-boot、linux内核、linux...
  • ARM7、ARM9、ARM11区别

    千次阅读 2014-10-29 20:31:22
    ARM9采用5级流水线的哈佛结构,ARM11为8级流水线哈弗结构(从arm9开始都采用了哈弗结构)。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内...
  • ARM处理器模式切换(含MRS,MSR指令)

    万次阅读 多人点赞 2011-06-20 14:13:00
    ++++++++++++++++++++++++++++++++++++++++++ 本文系本站原创,欢迎转载! 转载请注明出处: ... ++++++++++++++++++++++++++++++++++++++++++ 1.1.1 ARM处理器模式切换(含MRS,MSR指令)...
  • CPU的构架之ARM和Intel的区别(x86/x64/ARM64/ARM

    万次阅读 多人点赞 2018-10-10 18:42:39
    Introduction As we all know, a Processor is an integrated electronic circuit that performs various calculations like arithmetical, logical (算术和逻辑运算), input/output (I/O) and other basic ...
  • ARM 内核分类

    千次阅读 2016-04-28 21:54:29
    根据ARM官方资料和网上资料整理。 先来一张Architecture的图片 ARM微处理器系列  ARM 微处理器目前包括下面几个系列,以及其它厂商基于 ARM 体系结构的处理器,除了具有 ARM 体系结构的共同特点以外,...
  • ARM地址空间

    千次阅读 2012-12-22 19:28:10
    ARM的体系结构有很多很多介绍的地方,从其7种模式到CPSR状态寄存器,这些都是属于最底层的硬件直接相关的ARM属性,再向上一点,考虑一下在ARM上运行的嵌入式应用,一般称在ARM上直接运行的嵌入式应用为Image就是直接...

空空如也

1 2 3 4 5 ... 20
收藏数 135,439
精华内容 54,175
关键字:

arm