CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 10754|回复: 1

【经验】学前必须搞清楚的几个问题

[复制链接]
发表于 2014-8-13 10:22:14 | 显示全部楼层 |阅读模式
本帖最后由 cb_100ask 于 2014-8-13 10:26 编辑

转自某论坛某高人,有增加

                              ARM7和ARM9的区别
本文是写给准备学习ARM技术,而又没想好要学ARM7还是ARM9,或者对ARM7与ARM9的区别不是很了解的初学者。
    由于职业的关系,经常会回答一些ARM初学者的问题,虽然问题千奇百怪,但以下两个问题绝对具有代表性。
ARM7和ARM9的都有些什么区别?
我准备学ARM,但不知是选ARM7还是ARM9好?   
也许这些问题在大婶的眼里已不是问题,但对于初学者确实很有必要弄清楚。先说下:ARM7和ARM9的区别。
1. 时钟频率的提高
    虽然ARM7和ARM9内核架构相同,但ARM7处理器采用3级流水线的冯·诺伊曼结构;,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,
    在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7一般运行在100MHz左右,而ARM9则至少在200MHz以上。
2 指令周期的改进
     指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,
     性能的提高在30%左右。
3.MMU(内存管理单元)
      ARM7一般没有MMU(内存管理单元),(ARM720T有MMU)。
      ARM9一般是有MMU的,ARM9940T只有MPU ,不是一个完整的MMU。
      这一条很重要,MMU单元是大型操作系统必需的硬件支持,如LINUX;WINCE等。这就是说,ARM7一般只能运行小型的实时系统如UCOS-II,eCOS等,而ARM9无此限制,一般的操作系统都可以移植。其实即使ARM720T能支持LINUX;WINCE等系统,也鲜有人用,因为以ARM7的运行速度跑这种大型操作系统,实在有点吃力。再者两者的应用领域明显不同,也无此必要。
4. ARM9比ARM7提供了更好的性能-功耗比。它包含了THUMB指令集快速乘法指令和ICE调试技术的内核。
5. 在从ARM7到ARM9的平台转变过程中,有一件事情是非常值得庆幸的,即ARM9E能够完全地向后兼容ARM7上的软件;并且开发人员面对的编程模型和架构基础也保持一致。

二. 再来说一下初学者是选ARM7还是ARM9?
1)明确目的
    学习为应用。你学ARM准备用在什么地方,如果是一般性控制系统或仅仅用来替换8位16位机,ARM7显然是首选;但如果用在网络通信或大型的音视频处理等,则ARM9较合适。   
2)自身基础
   学习ARM的一般有三类人:
    一是计算机专业的:这类人对操作系统等软件知识了解较多,而对硬件知识知之甚少,显然这类人学ARM的话还是做软件好,可以基于LINUX,WINCE等操作系统的ARM9更能符合这类人的要求,
    当然也有很多计算机专业的人从事ARM7系统的应用软件编写的。但是搞底层的就很少了。
    二是电子类专业的:这类人的硬件基础相对较好,相反操作系统,数据库等软件知识则差强人意。因此电子专业的人员大多熟悉单片机,用单片编写点小程序不在话下,
    但要用ARM做较大型的软件则有点力不从心,尤其是LINUX、WINCE这种操作系统不是三两个月能搞定。建议这类人如无特别需要还是从ARM7和小型操作系统学起。
    够用就好,不要盲目追求高端。有一点要注意:并不是从事ARM9的就比ARM7工资高,反而ARM7的就业机会比ARM9多,这很好理解,好比金字塔,越往顶越小。
    三是软硬件基础都不太好的:这类人员有确实需要的,也有赶时髦的,大可曲线救国,搞懂单片机后,ARM7就不难了。 也可以看韦东山老师的教程,先把ARM9当ARM7,再学UBOOT,LINUX
    最后说一点关于开发板的,初学者买个开发板确实很有必要,但也要选择合适的,初学者合适的就是,资料齐全,有配套教程和学习指导,再加上较及时的技术支持。


                                           怎样选板?

                                              -韦东山
    面对众多开发板,如何选择?ARM9是不是已经过时了?
首先更正一些概念:ARM9并没有过时
1. 写驱动中不涉及CPU,只涉及CPU之外的设备

   嵌入式芯片被称为SoC(System on Chip),它上面既有CPU还有其他模块,比如内存控制器、USB、UART等。
   如果你是软件工程师, 无论是ARM9、ARM11、A8还是A9,对我们来说是没有差别的;
   差别不在于CPU核, 差别在于CPU之外的模块的寄存器操作不一样。
   因为我们写驱动并不涉及CPU核,只是操作CPU之外的设备,只是读写这些设备的寄存器。

2. 一理通,百理明:掌握了原理,通吃所有芯片

   从我2005年入行,在ARM架构方面经历了ARM9,ARM11,CORTEX A8/A9,现在又到了多核;
   期间用过MIPS,Blackfin等架构的芯片,但是所用到的知识跟S3C2440上所学的知识,完全没变过!根本没变过!

   “我学S3C2440干嘛?工作中又不用S3C2440!”,
   此话大错特错,你是用S3C2440来学习知识,不是学习S3C2440这个芯片本身;
   即使你现在选择很牛的芯片来学习,再过1年它也过时了;追芯片,怎么追得上!?

   “S3C2440快停产了,还学它干嘛”, 大错特错,理由同上。
   从2008年起三星就想停产S3C2440,2013年也确实停过一会,但是马上又恢复生产了:需求量太大了。
   我们是学习知识,不是学习芯片,万一停产了又有什么关系?工作中几乎可以肯定不用S3C2440!

   那么,怎么选择开发板呢?
1.对于初学者: 我建议用S3C2440入门。

   因为S3C2440的资料是最丰富的,无论是网络上的贴子、书籍、视频,都已经形成了一个完整的体系。
   你碰到的大多数问题,别人都已经碰到并解决了。

2.学完S3C2440后再换另一种开发板重写代码
   为什么要换开发板?
   这是对你所学知识的检验与煅炼,把S3C2440上所有的代码,都在新板子上自己重新写出来:很多你没有领会到的、
   没有在意过的知识点,在这个过程中都会卡得你痛苦万分,解决了它们你自然就学得更深了。只有这样,前面在
   S3C2440上所学到的知识才会变成你自己的知识。

   换什么开发板?选择标准是:芯片资料是否开放齐全。
   我建议还是选择三星系列的,S3C6410、s5pv210或者Exynos4412。

   注意:如果你是刚入门,我绝对不推荐S3C6410、S5PV210、Exynos4412!它们只是"学完S3C2440后要换的板子"
   对于S3C6410、S5PV210,论性能没有Exynos4412强,论资料没有S3C2440丰富,鸡助!
   对于Exynos4412,性能绝对强劲,但是目前资料较少。
   对于Exynos4412,cubieboard/cubietruck,百问科技全程提供源码文档和技术支持
    http://www.100ask.org/bbs/forum.php
   更多优惠戳:
   百问科技


3.对于已经有工作能力的人,我建议换板时考虑国产芯片,比如使用全志芯片的cubieboard/cubietruck开发板。
   理由:套片成本低,贴近市场。
   国产芯片有一个特点:文档不开放,但是片上的设备驱动基本都完整。你拿到厂家的BSP包、DEMO板原理图就可以用来
   开发产品了。底层方面改动不大。再加上它低廉的价格,用于做产品是很有优势的。


最适合入门学习板:
JZ2440

视频进阶板:
4412













本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表于 2014-8-14 00:23:02 | 显示全部楼层
本帖最后由 jiangdou 于 2014-8-14 00:28 编辑

赞一个,又在推销2440么????,,



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-22 18:52 , Processed in 0.022278 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部