ARM高手的历程(附N多资料)学会ARM足够.docx

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM高手的历程(附N多资料)学会ARM足够

ARM的历史以及有哪些种类的内核就不必再赘述,我们就直接从ARM7,指令集V4讲起。??关于ARM到底属于什么类型的CPU,一直以来说法不一,有说他们是RISC(至少他们自己这么认为,Advanced Risc Machines),也有说他们是类RISC的。??说类RISC的理由就是ARM的指令并不是定长的,而且并没有实现真正的流水线。当然这些区别现在已经变得越来越不重要,甚至两个领域都在互相渗透,比如MIPS的14K和24K系列已经引入了16位指令,而较新的ARM架构也已经开始支持乱序执行。??可能有人会反驳,怎么可以这么说呢?ARM7中实现了三级流水线!请注意,这里所说的是真正的流水线,如果能对MIPS有所了解或者看过MIPS阵营的经典著作《see mips run》,就能明白真正意义的流水线的含义。在RISC领域有一个概念叫做delay slot,也就是我们所说的延迟槽,出现这个概念的原因是因为在RISC中,绝大多数指令的执行时间是可预测的,就是一个周期,而有些指令譬如load,jmp之类的无法在一个周期内完成,这样就造成一个问题,在执行jmp,load时,处于译码阶段的指令就要多等一个周期,等前面的指令执行结束它才能进入执行阶段(早期的ARM就是采用这种方式)。而在真正的流水线架构中,遇到这种情况,可以把jmp,load之后的指令在jmp,load进入执行阶段准备但是没有真正执行的时候提前执行,这样就节省了之前被浪费的那个周期。处于延迟槽中被提前执行的指令必须是对后续指令无害的,这个由编译器来决定,当无法插入无害指令时,编译器会向其中插入NOP。??千万不要小看这个周期,因为在真正的执行中,内存读写以及跳转操作随处可见,这点效率的提升导致了MIPS在整数运算性能上的优势。我的经历简单得很,上学时老师的项目和师弟帮忙找的私活,51,96,pic的简单控制电路和汇编程序,毕业后进入华为,开始学习的c和mips,当时负责基于MIPS/VxWorks的bsp和驱动,得感谢Broadcom的FAE送给我们的一本《See MIPS Run》,从这本书开始才真正把学过的计算机体系结构和软硬件结合到一起。再后来进入一家IC外企,做基于MIPS/Nucleus的bootloader,BSP和驱动,从这开始对操作系统有点接触,在华为时由于分得太细,没能够对VxWorks更多了解。再后来转战ARM,ucos,linux,固件,芯片验证等等,这才开始每天跟cpu核心打交道,也对操作系统更加深入,目前是要回到一个老东家那里继续做mips。我运气好的地方是正好工作内容基本上都是我每个阶段想接触的东西,没有参加过任何任何培训,几本好书加上官方文档陪伴着走过这段职业生涯。所以很多时候别人问我怎么学我都不知道怎么回答,因为没有为了学而学过,都是工作需要。实际回过头来看看,两大块知识对于嵌入式至关重要,一个是计算机体系结构,一个是操作系统原理,囊括了我个人目前见到的所有东西,都脱不出这个范畴。至于各种接口,都是比较分散的知识点,需要花时间去学习掌握。而支持ARM属于RISC的理由在于四点:1. 使用了精简指令集,Reduced Instruction Set Computer,虽然ARM的指令相对其他RISC比还是算多的,但毕竟出于可接受范围,不像x86那样浩瀚无穷。RISC的目的就是让硬件尽量简单,更多的处理交给编译器和软件,这样就可以让kernel结构简单,比较容易实现低功耗高频率。2. 实现了一定程度的流水线,学过51的人应该还记得51的工作方式,指令都是一条一条地取指译码执行,只有上一条指令执行结束,下一条指令才能进入取指阶段。3.ARM核心中有较多的通用寄存器,总共有31个(不算状态寄存器),但是它们并不能同时存在,有些寄存器是模式专有的,只有处理器处于那种模式才能够对其进行操作,术语称为Banked,在固定模式下可见的通用寄存器的个数是16个。4.采用了Load-Store的工作方式,所谓的Load-Store方式,也就是说一切的计算操作都只针对寄存器,内存中的数据需要先load到寄存器,进行计算之后再store回内存。而在cisc中,内存数据是可以直接参与计算的,这是双方一个巨大的差别。个人所看过的好书,最推崇的是《See Mips Run》第二版,结合linux对mips做了非常全面而且深刻的讲解,而你从这本书中得到的将不仅仅是linux和mips,涉及到了很多操作系统以及计算机体系结构的共通问题。推荐看英文版。做软件开发到一定程度,不管你是做了项目管理还是研发,都会不可避免地用到脚本语言去写一些自动化的工具,因为身处芯片行业,所以用的就是perl,推荐读《perl语言入门》和《intermediate perl》就可以处理大多数问题,这

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档