搜索
bottom↓
楼主: Ayuflyhigh

【申精】2009-2010网络最热的 嵌入式学习|ARM|Linux|wince|ucos|经典资料与实例分析

  [复制链接]

出0入0汤圆

发表于 2010-5-13 08:21:19 | 显示全部楼层
NB...

出0入0汤圆

发表于 2010-5-13 11:00:26 | 显示全部楼层
一定要保存!

出0入0汤圆

发表于 2010-5-13 13:49:40 | 显示全部楼层
mark,空了再慢慢下载

出0入0汤圆

发表于 2010-5-13 14:02:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-13 14:57:14 | 显示全部楼层
mark  mark

出0入0汤圆

发表于 2010-5-13 16:33:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-14 13:05:19 | 显示全部楼层
很好很强大!

出0入0汤圆

发表于 2010-5-14 13:31:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-15 08:05:49 | 显示全部楼层
NB

出0入0汤圆

发表于 2010-5-15 09:37:45 | 显示全部楼层
收藏
μC/OS-II下通用驱动框架的设计与实现                     http://www.helloarm.com/ucos/103.htm

UC/OS II多任务切换例程                                  http://www.helloarm.com/ucos/96.htm

基于μC/OS-II的时间片调度法设计                         http://www.helloarm.com/ucos/94.htm

出0入0汤圆

发表于 2010-5-16 08:58:41 | 显示全部楼层
有2410的吗?

出0入0汤圆

发表于 2010-5-16 09:07:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-16 20:15:18 | 显示全部楼层
头像被屏蔽

出0入0汤圆

发表于 2010-5-16 20:19:10 | 显示全部楼层
有人下载了的,能打包上传吗?

万一楼主位的地址以后找不到,我们这里仍有。

出0入0汤圆

发表于 2010-5-17 10:12:07 | 显示全部楼层
里面讲学习方法的几篇针的很不错啊!

出0入0汤圆

发表于 2010-5-17 13:09:12 | 显示全部楼层
好东西,我喜欢

出0入0汤圆

发表于 2010-5-17 14:48:33 | 显示全部楼层
楼主,辛苦啦。

出0入0汤圆

 楼主| 发表于 2010-5-18 09:10:36 | 显示全部楼层
我来整理吧,整理好了再发到咱们论坛来。

出0入0汤圆

发表于 2010-5-18 09:29:08 | 显示全部楼层
速度整理啊,期待

出0入0汤圆

发表于 2010-5-18 16:13:53 | 显示全部楼层
楼主太勇敢咯!!多谢

出0入0汤圆

发表于 2010-5-18 16:17:25 | 显示全部楼层
mark
能上传更好!

出0入0汤圆

发表于 2010-5-18 16:18:02 | 显示全部楼层
什么是嵌入式系统
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

  无所不在的嵌入式系统

  多年前,比尔.盖茨曾经预言,随着后PC时代的到来,PC将无处不在。今天,伴随着二十一世纪的曙光,嵌入式系统的迅猛发展正验证了比尔.盖茨的预言,人类正迎来一个充满希望的新时代——后PC时代。这是一个充满机遇的时代,这是一个充满商机的时代。人类在经历了桌面系统的空前繁荣之后,嵌入式系统的发展正风起云涌,广泛进入到工业,军事,通信,运输,金融,医疗,气象,农业等众多领域。

通常情况下,人们往往会忽视自己身边的嵌入式系统——比如手机,取款机或者电梯等等,在这些随处可见的设备中就存在嵌入式系统,有时人们经常使用嵌入在汽车,电梯,PDA,程控交换机等设备中的小巧的计算机系统,而对此毫无察觉。此外,嵌入式系统还经常在工业机器人,医疗设备,卫星,飞行系统等领域扮演着更为重要的角色。正是"看不见"和"无所不在"这样的特性使得嵌入式计算机系统有别于传统的计算机系统。

  一、嵌入式系统简介

  嵌入式系统本身是一个相对模糊的定义。目前嵌入式系统已经渗透到我们生活中的每个角落,工业、服务业、消费电子……,而恰恰由于这种范围的扩大,使得“嵌入式系统”更加难于明确定义。

  举个简单例子:一个手持的mp3是否可以叫做是嵌入式系统呢?答案肯定是“是”。另外一个PC104的微型工业控制计算机你会认为它是嵌入式系统吗?当然,也是,工业控制是嵌入式系统技术的一个典型应用领域。然而比较两者,你也许会发现二者几乎完全不同,除了其中都嵌入有微处理器。那是否可以说嵌入着微处理器的设备就是嵌入式系统?那鼠标中也有单片机,能叫嵌入式系统嘛?

  那到底什么是嵌入式系统?莫非嵌入式系统只是一个难以定义的抽象概念?

  二、嵌入式系统的历史

  虽然嵌入式系统是近几年才风靡起来的,但是这个概念并非新近才出现。从20世纪七十年代单片机的出现到今天各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。

  作为一个系统,往往是在硬件和软件交替发展的双螺旋的支撑下逐渐趋于稳定和成熟,嵌入式系统也不例外。

  嵌入式系统的出现最初是基于单片机的。70年代单片机的出现,使得汽车、家电、工业机器、通信装置以及成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能:更容易使用、更快、更便宜。这些装置已经初步具备了嵌入式的应用特点,但是这时的应用只是使用8位的芯片,执行一些单线程的程序,还谈不上“系统 ”的概念。

  提示:最早的单片机是Intel公司的 8048,它出现在1976年。Motorola同时推出了68HC05,Zilog公司推出了Z80系列,这些早期的单片机均含有256字节的RAM、 4K的ROM、4 个8位并口、1个全双工串行口、两个16位定 时器。之后在80年代初,Intel又进一步完善了8048,在它的基础上研制成功了8051,这在单片机的历史上是值得纪念的一页,迄今为止,51系列的单片机仍然是最为成功的单片机芯片,在各种产品中有着非常广泛的应用。

  从80年代早期开始,嵌入式系统的程序员开始用商业级的“操作系统”编写嵌入式应用软件,这使得可以获取更短的开发周期,更低的开发资金和更高的开发效率,“嵌入式系统”真正出现了。确切点说,这个时候的操作系统是一个实时核,这个实时核包含了许多传统操作系统的特征,包括任务管理、任务间通讯、同步与相互排斥、中断支持、内存管理等功能。其中比较著名的有Ready System 公司的VRTX、Integrated System Incorporation (ISI)的PSOS和IMG的VxWorks、QNX公司的QNX 等。这些嵌入式操作系统都具有嵌入式的典型特点:它们均采用占先式的调度,响应的时间很短,任务执行的时间可以确定;系统内核很小,具有可裁剪,可扩充和可移植性,可以移植到各种处理器上;较强的实时和可靠性,适合嵌入式应用。这些嵌入式实时多任务操作系统的出现,使得应用开发人员得以从小范围的开发解放出来,同时也促使嵌入式有了更为广阔的应用空间。

  90年代以后,随着对实时性要求的提高,软件规模不断上升,实时核逐渐发展为实时多任务操作系统(RTOS),并作为一种软件平台逐步成为目前国际嵌入式系统的主流。这时候更多的公司看到了嵌入式系统的广阔发展前景,开始大力发展自己的嵌入式操作系统。除了上面的几家老牌公司以外,还出现了Palm OS,WinCE,嵌入式Linux,Lynx,Nucleux,以及国内的Hopen,Delta Os等嵌入式操作系统。随着嵌入式技术的发展前景日益广阔,相信会有更多的嵌入式操作系统软件出现。

  在中国嵌入式系统领域,比较认同的嵌入式系统概念是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

  三、嵌入式系统的应用领域

  嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:

  1、工业控制:基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8、16、32 位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是8位单片机。但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。

  2、交通管理:在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。

  3、信息家电:这将称为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使你不在家里,也可以通过电话线、网络进行远程控制。在这些设备中,嵌入式系统将大有用武之地。

  4、家庭智能管理系统:水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌有的专用控制芯片将代替传统的人工检查,并实现更高,更准确和更安全的性能。目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。

  5、POS网络及电子商务:公共交通无接触智能卡(Contactless Smartcard, CSC)发行系统,公共电话卡发行系统,自动售货机,各种智能ATM终端将全面走入人们的生活,到时手持一卡就可以行遍天下。

  6、环境工程与自然:水文资料实时监测,防洪体系及水土质量监测、堤坝安全,地震监测网,实时气象信息网,水源和空气污染监测。在很多环境恶劣,地况复杂的地区,嵌入式系统将实现无人监测。

  7、机器人:嵌入式芯片的发展将使机器人在微型化,高智能方面优势更加明显,同时会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。

  这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入式系统之外,家电产品控制协议也需要制订和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制器件都需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。所以,开发和探讨嵌入式系统有着十分重要的意义。

出0入0汤圆

发表于 2010-5-18 16:18:34 | 显示全部楼层
嵌入式资深工程师白话说“嵌入式”
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

       从事嵌入式开发有些年头,将自己理解的一些嵌入式,把自己的感受写出来,另外谢谢自己的感受,给后来者一点经验了!

      1、什么是嵌入式
      嵌入式根据字面的意思就会知道个大概,嵌入式就是将一个东西,嵌入到另一个中间,这就会有两层意思,
      一个是硬件的嵌入式:将一个硬件嵌入到另一个中间,使得原本没有智能的产品变得智能;
      一个是软件的嵌入式:将一个软件嵌入带另外一个软件里面,一般这个软件是一个应用软件,而对象是操作系统。
      因此,很多东西都回被称为嵌入式,而不仅仅是ARM等32位平台,还包括DSP,FPGA,51,甚至4位机都是可以的。

      2、操作系统
      操作系统有很多,大家天天用的windows,认为很高深的linux,微小的uCos,可裁减的eCos,……世界是多彩的,操作系统也一样。
      有人就会说了,……好用,……不好,……对……好不好!这个问题对于真正的行家来说,你就像一个孩童问大人电视剧里面的这个人是好人还是坏人。只有合适的没有什么是最好的!曾经看过ubuntu的wiki里面说过一句话:不要因为它和你的习惯不一样就说它不好。

     3、硬件平台
     目前世界上的芯片公司有很多,因此硬件平台可以选择的有很多,但是近些年来,国人将嵌入式=ARM,这是狭隘的,不利于学生的发展,应该告诉学生,除了ARM还有很多很多。不然会发现,学生的眼光会被限制。通过对比学习,他们将会有更多的是以一种批判的精神,吸收各家所长! 平台现在来说比较有前途的是作消费电子类的,因为国家强调扩大内需,内需如何扩大,现在大家基本都是衣食无忧了,剩下的那就是娱乐了。

     4、学习芯片的选择
     很多人问我,我们现在学习的是ARM11,你们的是多少,我会告诉他我们是ARM9,还有一些ARM7。其实这已经是足够的了,无论我们学习的哪个平台,学习的关键不是学会这个芯片怎么用,而是学习他的精髓:这类芯片的设计构架,开发流程,然后就是查字典一样的学习它数据手册了。无论在哪里,学习不一定要学习最先进的,因为你没有把握住它的发展历史,和内部原理,一个先进的庞杂的系统对于你来说是很难理解的。
   
    如果想成为一个全面的嵌入式开发人员,我的建议是可以遵循这个步骤:
      基础:嵌入式C
     这里的C不是大家学习的那个谭浩强的C,而是嵌入式C,谭的C只是一些肤浅的应用,没有讲到根本,C的根本就是要把握住指针和一些将来编译的过程!作为一个嵌入式比较底层的工程师,需要了解更多的关于你的程序是如何运行的,你的程序是如何加载的,以及各种资源的调度和使用,而这一切很多时候都要拜托你的C完成,因为毕竟汇编的难度还是比较大,而且完成的功能有限。

    第一步:熟悉硬件
    首先学习单片机,关键是学习总线结构,扩展的一些问题,还有建立起来一些汇编的知识
    第二步:熟悉高级芯片架构
     8086(很古老的芯片)但是很有必要了解,可以说他是一切X86(电脑)和ARM体系的根本,当将这个根本拿捏住了,你就像武侠小说里面讲的,你掌握了一门功夫的总纲,万变不离其宗!
    第三步:
     如果时间容许,可以使用(上面是学习)一个16位单片机凌阳的SPCE061A,这是一个很有意思的芯片,他既有一些单片机的东西在里面,还有一些嵌入式32位的东西在里面,真正的使用它不是很难,因为资料还是比较多的,但是从中可以学习到一些基本的嵌入式理念。

    第四步:嵌入式平台选择
    开始使用嵌入式平台,目前平台很多,有的还很便宜,作为学生,也许会选择一些价格便宜的,不过建议大家要更注意一个问题:支持的问题。
目前基本来说平台的已经都是很多了,有些抄来的板子目前也是满天飞,由于没有研发成本和后期支持,造成成本比较低,同样的原因,让我们遇到问题,只能四处的提问,而往往得不到系统的答案。
所以选择平台很重要,有人说,网上全是资料了,但是说句实话,由于嵌入式是一个结合多学科的庞大系统,因此从网上找到很多资料,你会发现我们找到的是一张张拼图的小块,在拼这个大图的时候,很多人在这个过程中失去了信心,离开了嵌入式开发者的行列,那是很可惜的。最好找一个比较资料全面系统的开发平台。

      第五步:
      看完基础,然后实实在在的开发一个或大或小的项目,在这个项目中不仅仅是写出程序,要学会项目的规划,还有程序编写的重构性等软件编写的问题。

     总之:无论学习什么,都要比较系统的慢慢的做,相信大家坚持了总是会成功的。

出0入0汤圆

发表于 2010-5-18 16:19:21 | 显示全部楼层
嵌入式系统的学习途径与基本方法
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

作为一家之言,想对广大渴望学习嵌入式系统的学子提出几点建议:

  (1)嵌入式系统软件硬件密切相关,一定要打好软件硬件基础。其实,只要找到正确的方法,加上努力,任何理工科学生,甚至非理工科学生,都能学好嵌入式系统。

  (2)选择一个芯片及硬件评估板(入门芯片最好是简单一点,例如8位MCU)、选择一本好书(最好有规范的例子)、找一位好老师(最好是有经验且热心的)。硬件评估板的价格一定要在1000元以下,不要太贵,最好能有自己动手的空间。不花一分硬件钱,要想学好嵌入式系统不实际。因为,这是实践性很强的学科。好书,可以使你少走弯路,不会被误导,要知道有的书是会使人进入学习误区的。好老师也可以是做过一些实际项目的学长(一定要找做过几个成功项目的学长或老师做指导,否则,经验不足也可能误导),有教师指导,学习进程会加快。(人工智能学科里有个术语叫无教师指导学习模式与有教师指导学习模式,无有教师指导学习模式比有教师指导学习模式复杂许多)。

  (3)许多人怕硬件,其实嵌入式系统硬件比电子线路好学多了。只要深入理解MCU的硬件最小系统,对I/O口、串行通信、键盘、LED、LCD、SPI、I2C、PWM、A/D(包括一些传感器)、D/A等逐个实验理解,逐步实践。再通过自己做一个实际的小系统,底层硬件基础就有了。各个硬件模块驱动程序的编写是嵌入式系统的必备基础。学习嵌入式系统的初期,这个过程是必须的。

  (4)至于嵌入式实时操作系统RTOS,一定不要一开始就学,这样会走很多弯路,也会使你对嵌入式系统感到畏惧。等你软件硬件基础打好了,再学习就感到容易理解。实际上,众多嵌入式应用,并不一定需要操作系统。也可以根据实际项目需要再学习。一定不要被一些嵌入式实时操作系统移植培训班宣传所误导,而忽视实际嵌入式系统软件硬件基础知识的学习。

  (5)要避免片面地单纯从“电子”或“计算机软件”角度认识嵌入式系统,嵌入式系统与硬件紧密相关,是软件与硬件的综合体,没有对硬件的理解就不可能写好嵌入式软件,同样没有对软件的理解也不可能设计好嵌入式硬件。因此,要逐步从MCU的最小系统开始,一点一点理解硬件原理及底层硬件驱动编程方法。要通过规范的例子,理解软件工程封装、可复用等思想。通过规范编程,积累底层构件(Component),也就是一个一个模块,但是要封装得比较好,可复用。

  (6)注重实践。这里我把实践与实验区别开来,实验主要是他人的程序或验证性的,目的是学习基础知识。实践是自己设计,有具体的“产品”目标。如果你能花500元左右自己做一个具有一定功能的小产品,就可以说接近入门了。

  (7)关于入门芯片的选择。一定不要选太复杂,不能超越学习过程。不要一下子学习几种芯片,可以通过一个芯片入门并具有一个实践经验后,根据需要选择芯片。注意,选择的是微控制器(MCU),而不是微处理器(MPU)。不同厂家生产的MCU稳定性差异巨大。微处理器已经不直接用于嵌入式系统的最终产品设计,不要误解。

  (8)关于操作系统的选择。可以等到你具有一定实践后,选择一个简单容易理解原理的进行学习,不要一开始就学习几种操作系统,理解了基本原理,实践中确有实际需要再学习也不迟。人总是要不断学习的。

  (9)关于汇编与C语言的取舍。随着MCU对C编译的优化支持,对于汇编可以只了解几个必须的语句,直接使用C语言编程。但必须通过第一个程序理解芯片初始化过程、中断机制、程序存储情况等区别于PC机程序的内容。

出0入0汤圆

发表于 2010-5-18 16:19:38 | 显示全部楼层
如何学习嵌入式
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

先讲一讲需要掌握的基本技能。
答:
(1)C语言是所有编程语言中的王者(单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握,大学本科教学中的C语言是远远不够的,有两个非常重要的内容没有讲“文件的操作”和“IO的操作”,其中“IO的操作”是必须掌握的技术。
(2)操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚
(3)计算机原理应该指的是x86的微机原理吧,但是在嵌入式领域x86处理器只是冰山的一小角,还有很多叫做ARM、XScale、SuperH、68K、PowerPC等等等等,无数的其它处理器,有一些我也叫不上名字。但是,X86总规是基础,万变不离其宗,深入学一下还是非常有必要的(尤其对于想要学习Linux的朋友,想要读核的话就必须要深入学习以下x86系统架构)。

如何学习嵌入式开发呢?
答:
大家都知道这个领域人才非常稀缺,但是,学习周期比较长,需要的知识面也比较广,所以不要心急。先看看下面的几个问题,了解一下你现在的知识水平:
(1)你用VC++或BC++编写过应用程序吗?
如果编写过应用程序,那就做好了,如果你没有做过上层应用程序,那么又如何能够去理解更深的更高深的底层程序呢,那就赶快补上这一课吧!!!
(2)你曾经编写过单片机或者DSP的程序吗?
我们把类似51单片机或者DSP上面跑的没有操作系统的程序叫做“代码裸奔”,我们也都曾经编写过裸奔的代码。因为有的时候比如我们编写一个简单的程序,就只需要点几个LED检测几个按钮的状态,那么“代码裸奔”弄一个while(1)的死循环就足够了,杀鸡何必用牛刀。
编写这种裸奔的代码,也是学习嵌入式的必由之路,因为,你将会用C语言去对寄存器写控制字,这就是以后写驱动程序的基础呀。
另外需要说明的是,从概念上说,“代码裸奔”也已经属于嵌入式开发的范畴。
(3)到了最后一个阶段,你就可以开始找一个方向(uCos、Linux、VxWorks、WindowsCE、Palm等等等等),学习有操作系统的嵌入式开发了。
嵌入式操作系统的种类也是无法计数的,有一些我连名字也叫不上来,太多太多了。但是值得庆幸的是,这些操作系统大同小异,相通的。
你正在在读书,建议学习uCos操作系统(看邵贝贝的《UC/OS操作系统》);如果你不喜欢这么Basic的操作系统,VxWorks也是一个不错的选择,VxWorks进入中国已经好多年了,国内出版的书也都很好,尤其推荐陈智育的《VxWorks程序开发实践》和周启平的《VxWorks下设备驱动程序及BSP开发指南》;Linux简直是恶梦,但是如果你能够走出这个噩梦,你也就成了高手了。

出0入0汤圆

发表于 2010-5-18 16:20:00 | 显示全部楼层
ARM入门学习方法
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

1、抓住51开发ARM


这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑?
他们不愿意说有他们自己的理由,没有人强求,靠自己好了。
我自己个人的观点:51是一个基础,而且还很重要,这是再我看了ARM之后感觉到的。它可以加速你的ARM学习速度,真得!不相信你试一试好了。
凡是要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。


2、我在网上看到了一篇很不错的ARM文章,粘贴过来,为了和像我一样在很少有人帮助的情况下,自学ARM 的难兄难弟们。


“ARM怎么入门”。我不是高手,仍然是菜鸟。
但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。
首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。
所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵
以下问题常被问到,我就想到哪说到哪吧。


一 首先说说ARM的发展

可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。
广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。
客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。
DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。
FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!!
值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。写的多的是什么?“嵌入式LINUX”到这相信大家看出来了吧,需要的是硬件中的软件。


二 ARM是硬件还是软件

很难说,ARM是硬件,LINUX是软件。ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。
实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。
在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师”


三 要不要买开发板 买哪家

我的答案是“在你个人的学习方法”,但是如果看家是需要看这篇笔记的水平,个人推荐还是买现成的。

1.买
买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然我把接口都外引了,还做了个20X18的LCD背板,板子比较大。总体下来元件+LCD屏+PCB=11XX块!够2410的了。
再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。


2.做
自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、 GPRS模块、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。
当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了什么的自己做。都达到了~~就是费钱,费时间。
再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。
网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!!牛人!
但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。


3.买哪家
个人感觉分3类吧
1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。
但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被ZLG的务实精神感动!你看人家那代码写的。
2)感觉立宇泰的44B0不错
硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~
3)找个最便宜的
好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。


四 要不要有51 AVR等单片机基础
有更好,但没有也无所谓。
两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧?
但是做这个之前我特意找了ZLG的两本书,看了里面的例子和原理图,这很重要。例程里有汇编有C,都看懂了就OK,不用自己现写


五 开发都需要学习哪些软件
总结起来最主要的有以下几个吧

1 ADS调试用
确切的说是ADS+AXD。ADS里包含AXD。原来都用SDT后来ARM公司停止对SDT支持了,改支持ADS了,还是用ADS吧。
有的人的程序发布的仍然是SDT版本的,但基本都可以找到相应ADS的,新人在这里不要发蒙。ADS是编译器,AXD是调试器。便宜成AXF以后再在ARM的RAM里调试。


2 PLASHPGM
FLASH烧写的软件。AXD在RAM里调试,掉电就没有了,方便程序修改。调试好的程序再下到FLASH里,上电直接运行。
同类的软件还有很多,什么FLUTED了、FLSHP了都是,但FLASHPGM最好,要是有人还问FLASH不支持BIN格式文件的问题就要看我写的PLASHPGM使用了。


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,安装方法在我另一篇笔记里。


六 有哪些书推荐
主要推荐ZLG的三本书,有这3本再加网络就不用别的书了,其中主要推荐前2本,3是介绍体系结构的,也不错

1 ARM嵌入式LINUX系统构建与驱动开发,北航版
驱动写的很详细,前期开发介绍也很好

2 ARM 嵌入式系统实验教程(二),北航版
有ZLG2200的原理图,实验程序和注释,了解人家是怎么开发的。

3 ARM嵌入式系统基础教程
最重要的是体系结构,汇编部分介绍,看看吧,增加理论素质。

4 44B0数据手册
写在这里是强调它的重要。


不推荐ZLG早期出的红色皮的ARM什么体系结构~只类的
写的太多,看烦了。
其他的书没了几本,没看见好的,大家有看过的推荐吧。


七 选UCOS?UCLINUX?LINUX?VXWORKS?还是当单片机用
1 搞开发,工程设计,用UCOS,小巧,多进程,简单,体现了ARM7的精髓。
2 LINUX 正根的嵌入式系统,LINUX消费与通信领域用的比较多,但缺点是必须ARM9才能跑,ARM9的板子自己做就不行了,6层板太贵。买开发板1K达底吧。但是还是推荐选ARM9+LINUX
3 UCLINUX 算投机嵌入式系统:)ARM7上可以跑,由有LINUX近_亲,学好好可以比较方便的转向LINUX,像我一样的穷鬼用吧,呵呵
4 VXWORKS
学好后可以找到高薪工作,但工作机会本身并不比LINUX好找。
5 当单片机用
不推荐,虽然我景仰的ZLG一直号召这么干。因为对于学习来说多进程的系统设计才是ARM7的玩头,至少你也要整个UCOS啊:)
有朋友问我先学这个当基础不行吗?那当然可以~~但我当时就用了1周搞定,就是我先的ADS在RAM中调试的笔记。后来我清空FLASH用的小段程序还是当时写的LED闪烁程序呢。另外1周里其中还因为自己过于菜,没把OM设置好导致晶阵不阵
哈哈。这个是必须做的,但一带而过。目标放的远一点。


八 学习要用多长时间
我从菜鸟到现在两个多月,中间被打扰数次。仍然搞定了PCB设计与制版,RAM调试,FLASH下载,UBOOT移植和下载UCLINUX(没剪裁,用现成的),LCD驱动。
再次坦诚的说:我确实比较菜,说这些不是让大家羡慕,只是告诉你们“你们应该比这个更好”
我相信良好的态度+合适的方法+及时的总结=成绩


九 ARM都玩什么
就几点
1 硬件设计
2 系统移植
3 驱动开发
4 应用开发
没了。其中推荐把注意力放在后两个上,3有难度,4比较灵活,最重要的是都是找工作的砝码。

(编者注:本篇不知出处,不过至少是06年以前的帖子,现在2440也已经很便宜了,主要是比ARM7多MMU,可以跑Linux、wince等操作系统,更适合学习使用。作者说“感觉他是真正想教你怎么开发ARM”说的很好,现在飞凌嵌入式正式本着这一原则不断的制作学习教程、开发实验例程、完善技术支持!可以说除了那几本纸质书籍,飞凌的OK2440开发板已经不比周立功的差)


--------------------------------------------------------------------------------

出0入0汤圆

发表于 2010-5-18 16:20:21 | 显示全部楼层
嵌入式linux学习步骤
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

1、Linux 基础
安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件 使用其他编辑器


2、Shell 编程基础
Shell简介 认识后台程序Bash编程熟悉Linux系统下的编辑环境 熟悉Linux下的各种Shell 熟练进行shell编程熟悉vi基本操作 熟悉Emacs的基本操作 比较不同shell的区别 编写一个测试服务器是否连通的shell脚本程序 编写一个查看进程是否存在的shell脚本程序 编写一个带有循环语句的shell脚本程序


3、Linux 下的 C 编程基础
linux C语言环境概述 Gcc使用方法 Gdb调试技术 Autoconf Automake Makefile 代码优化 熟悉Linux系统下的开发环境 熟悉Gcc编译器 熟悉Makefile规则编写Hello,World程序 使用 make命令编译程序 编写带有一个循环的程序 调试一个有问题的程序


4、嵌入式系统开发基础
嵌入式系统概述 交叉编译 配置TFTP服务 配置NFS服务 下载Bootloader和内核 嵌入式Linux应用软件开发流程熟悉嵌入式系统概念以及开发流程 建立嵌入式系统开发环境制作cross_gcc工具链 编译并下载U-boot 编译并下载Linux内核 编译并下载Linux应用程序


4、嵌入式系统移植
Linux内核代码 平台相关代码分析 ARM平台介绍 平台移植的关键技术 移植Linux内核到 ARM平台 了解移植的概念 能够移植Linux内核移植Linux2.6内核到 ARM9开发板


5、嵌入式 Linux 下串口通信
串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备 与文件相关的系统调用 配置超级终端和MiniCOM 能够熟悉进行串口通信 熟悉文件I/O 编写串口通信程序 编写多串口通信程序


6、嵌入式系统中多进程程序设计
Linux系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念 能够编写多进程程序编写多进程程序 编写一个守护进程程序 sleep系统调用任务管理、同步与通信 Linux任务概述任务调度 管道 信号 共享内存 任务管理 API 了解Linux系统任务管理机制 熟悉进程间通信的几种方式 熟悉嵌入式Linux中的任务间同步与通信编写一个简单的管道程序实现文件传输 编写一个使用共享内存的程序


7、嵌入式系统中多线程程序设计
线程的基础知识 多线程编程方法 线程应用中的同步问题了解线程的概念 能够编写简单的多线程程序编写一个多线程程序


8、嵌入式 Linux 网络编程
网络基础知识 嵌入式Linux中TCP/IP网络结构 socket 编程 常用 API函数 分析Ping命令的实现 基本UDP套接口编程 许可证管理 PPP协议 GPRS 了解嵌入式Linux网络体系结构 能够进行嵌入式Linux环境下的socket 编程 熟悉UDP协议、PPP协议 熟悉GPRS 使用socket 编写代理服务器 使用socket 编写路由器 编写许可证服务器 指出TCP和UDP的优缺点 编写一个web服务器 编写一个运行在 ARM平台的网络播放器


9、GUI 程序开发
GUI基础 嵌入式系统GUI类型 编译QT 进行QT开发熟悉嵌入式系统常用的GUI 能够进行QT编程使用QT编写“Hello,World”程序 调试一个加入信号/槽的实例 通过重载QWidget 类方法处理事件


10、Linux 字符设备驱动程序
设备驱动程序基础知识 Linux系统的模块 字符设备驱动分析 fs_operation结构 加载驱动程序了解设备驱动程序的概念 了解Linux字符设备驱动程序结构 能够编写字符设备驱动程序编写Skull驱动 编写键盘驱动 编写I/O驱动 分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备驱动程序分析 块设备的读写请求队列了解Linux块设备驱动程序结构 能够编写简单的块设备驱动程序比较字符设备与块设备的异同 编写MMC卡驱动程序 分析一个文件系统 对比Linux2.6内核与2.4内核中块设备驱动的不同


11、文件系统
虚拟文件系统 文件系统的建立 ramfs内存文件系统 proc文件系统 devfs 文件系统 MTD技术简介 MTD块设备初始化 MTD块设备的读写操作了解Linux系统的文件系统 了解嵌入式Linux的文件系统 了解MTD技术 能够编写简单的文件系统为 ARM9开发板添加 MTD支持 移植JFFS2文件系统 通过proc文件系统修改操作系统参数 分析romfs 文件系统源代码 创建一个cramfs 文件系统

出0入0汤圆

发表于 2010-5-18 16:20:41 | 显示全部楼层
嵌入式学习方法 关于ARM+linux
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

  由于很多人总问这个问题,所以这里做一个总结文档供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起来简单得多,但是学linux或者使用linux做嵌入式的人就是远比WinCE多。在和很多工作的人交流时我了解到,他们公司从没考虑使用WinCE,因为成本高,都是使用linux进行开发。我读研究生的的实验室中也没有使用WinCE的,大都研究linux,也有少部分项目使用vxwork,但是就没有听说过使用WinCE的,原因就是开源!当然现在WinCE6.0听说也开源,不过在成本和资源上linux已经有了无人能挡的优势。与此相对应的是,越来越多的电子厂商已经开始使用linux开发产品。举个例子,Google近期开发的智能手机操作系统Android其实就是使用linux-2.6.23内核进行改进得到的。

第一,学习基本的裸机编程。
  对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人都会笑这样很笨,实际上也不是,我倒是觉得有这个过程会好很多,因为无论做多复杂的系统最终都会落实到这些最底层的硬件控制,因此对这些硬件的控制有了感性的认识就好很多了
学习裸机的编程的同时要好好理解这个硬件的构架、控制原理,这些我称他为理解硬件。所谓的理解硬件就是说,理解这个硬件是怎么组织这么多资源的,这些资源又是怎么由cpu、由编程进行控制的。比如说,s3c2410中有AD转换器,有GPIO(通用IO口),还有nandflash控制器,这些东西都有一些寄存器来控制,这些寄存器都有一个地址,那么这些地址是什么意思?又怎么通过寄存器来控制这些外围设备的运转?还有,norflash内部的每一个单元在这个芯片的内存中都有一个相应的地址单元,那么这些地址与刚刚说的寄存器地址又有什么关系?他们是一样的吗?而与norflash相对应的nandflash内部的储存单元并不是线性排放的,那么s3c2410怎么将nandflash的地址映射在内存空间上进行使用?或者简单地说应该怎么用nandflash?再有,使用ADS进对ARM9行编程时都需要使用到一个初始化的汇编文件,这个文件究竟有什么用?他里面的代码是什么意思?不要这个可以吗?
诸如此类都是对硬件的理解,理解了这些东西就对硬件有很深的理解了,这对以后更深一步的学习将有很大的帮助,如果跳过这一步,我相信越往后学越会觉得迷茫,越觉得这写东西深不可测。因为,你的根基没打好。
不过先声明一下,本人并没有使用ADS对ARM9进行编程,我是学完ARM7后直接就使用ARM9学linux系统的,因此涉及使用ADS对ARM9进行编程的问题我很难回答^_^,自己去研究研究吧。
对于这部分不久将提供一份教程,这个教程中的例程并不是我为我们所代理的板子写的,是我在我们学院实验室拿的,英培特为他们自己的实验箱写的,不过很有借鉴意义,可以作为一份有价值的参考。

第二,使用linux系统进行一些基本的实验。
  在买一套板子的时候一般会提供一些linux的试验例程,好好做一段时间这个吧,这个过程也是很有意义的,也是为进一步的学习积累感性认识,你能想象一个从没有使用过linux系统的人能学好linux的编程吗?好好按照手册上的例程做一做里面的实验,虽然有点娃娃学走路,有点RZ,但是我想很多高手都会经历这个过程。
在这方面我们深蓝科技目前没有计划提供相应的例程,主要是开发板的提供商会提供很丰富的例程,我们不做重复工作,只提供他们没有的、最有价值的东西给大家。

第三,研究完整的linux系统的的运行过程。
  所谓完整的linux系统包括哪些部分呢?
  三部分:bootloader、linux kernel(linux内核)、rootfile(根文件系统)。
那么这3部分是怎么相互协作来构成这个系统的呢?各自有什么用呢?三者有什么联系?怎么联系?系统的执行流程又是怎么样的呢?搞清楚这个问题你对整个系统的运行就很清楚了,对于下一步制作这个linux系统就打下了另一个重要的根基。介绍这方面的资料网上可以挖掘到几吨,自己好好研究吧。

第四,开始做系统移植。
  上面说到完整的linux有3部分,而且你也知道了他们之间的关系和作用,那么现在你要做的便是自己动手学会制作这些东西。
当然我不可能叫你编写这些代码,这不实现。事实上这个3者都能在网下载到相应的源代码,但是这个源代码不可能下载编译后就能在你的系统上运行,需要很多的修改,直到他能运行在你的板子上,这个修改的过程就叫移植。在进行移植的过程中你要学的东西很多,要懂的相关知识也很多,等你完成了这个过程你会发现你已经算是一个初出茅庐的高手了。
在这个过程中如果你很有研究精神的话你必然会想到看源代码。很多书介绍你怎么阅读linux源代码,我不提倡无目的地去看linux源代码,用许三多的话说,这没有意义。等你在做移植的时候你觉得你必须去看源代码时再去找基本好书看看,这里我推荐一本好书倪继利的《linux内核的分析与编程》,这是一本针对linux-2.6.11内核的书,说得很深,建议先提高自己的C语言编程水平再去看。
  至于每个部分的移植网上也可以找到好多吨的资料,自己研究研究吧,不过要提醒的是,很多介绍自己经验的东西都或多或少有所保留,你按照他说的去做总有一些问题,但是他不会告诉你怎么解决,这时就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保证能解决你的问题,因为我未必遇到过你的问题,不过我相信能给你一点建议,也许有助你解决问题。
  这一步的最终目的是,从源代码的官方主页上(都是外国的,悲哀)下载标准的源代码包,然后进行修改,最终运行在板子上。
盗用阿基米德的一句话:“给我一根网线,我能将linux搞定”。

第五,研究linux驱动程序的编写。
  移植系统并不是最终的目的,最终的目的是开发产品,做项目,这些都要进行驱动程序的开发。
  Linux的驱动程序可以说是五花八门,linux2.4和linux2.6的编写有相当大的区别,就是同为linux2.6但是不同版本间的驱动程序也有区别,因此编写linux的驱动程序变都不是那么容易的事情,对于最新版本的驱动程序的编写甚至还没有足够的参考资料。那么我的建议就是使用、移植一个不算很新的版本内核,这样到时学驱动的编程就有足够的资料了。
这部分的推荐书籍可以参考另一篇文章《推荐几本学习嵌入式linux的书籍》。

第六,研究应用程序的编写。
  做作品做项目除了编写驱动程序,最后还要编写应用程序。现在的趋势是图形应用程序的开发,而图形应用程序中用得最多的还是qt/e函数库。我一直就使用这个函数库来开发自己的应用程序,不过我希望你能使用国产的MiniGUI函数库。盗用周杰伦的广告词就是“支持国产,支持MiniGUI”。MiniGUI的编程比较相似Windows下的VC编程,比较容易上手,效果应该说是相当不错的,我曾使用过来开发ARM7的程序。不过MiniGUI最大的不好就是没有像qtopia这样的图形操作平台,这大大限制了他的推广,我曾经幻想过与北京飞漫公司(就是MiniGUI的版权拥有者)合作使用MiniGUI函数库开发像qtopia这样的图形操作平台,不过由于水平有限这只能是幻想了,呵呵。
完成这一步你基本就学完了嵌入式linux的全部内容了。

  还有一个小小的经验想和大家分享。我在学习嵌入式linux的过程中很少问人,客观原因是身边的老师、同学师兄都没有这方面的高手,主观原因是我不喜欢问人,喜欢自己研究解决问题。这样做有个好处,就是可以提高自己解决问题的能力,因为做这些东西总有很多问题你难以理解,别人也没有这方面的经验,也不是所有问题都有人给你答案,这时必须要自己解决问题,这样,个人的解决问题能力就显得非常关键了。因此我的建议就是一般的问题到网上搜索一下,确实找不到答案了就问问高手,还是不行了就自己去研究,不要一味去等别人帮你解决问题。
  记住,问题是学习的最好机会。

出0入0汤圆

发表于 2010-5-18 16:21:04 | 显示全部楼层
我的嵌入式之路
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

前言

这个题目很大,给人一种感觉我好像很成功,其实不然。实际上自己水平不高,甚至很低,但是做过了一些曲折的学习道路,同时把自己真实的学习历程表达出来,希望对后来者有借鉴的意义,甚幸!


工作三年、几成废人!

我 2000年毕业于华中地区的一个理工科大学,专业是机械电子,我当时已经签了一家内陆某个省级机关工作,家里八辈是农民,并且很偏远,能够进入这样的地方是祖坟有风水。但在毕业前夕有个进入it的机会,我本想进去的,家里人极力反对,阻力可想而知。同时要交4000元的违约金,对我来说是天文数字。大学里的费用很多是借的,几乎将近一半的费用是在大学勤工俭学挣的,为了省钱,高中一个学期回家一次,大学一年回去一次。并且我个人也有特殊的人生背景(悲景更确切),这里不多说了,写十篇也写不完,同时偏离主题。这样我就参加了工作。一张报纸一杯茶的日子,几乎下班后有种很空虚和恐慌的感觉。在工作中虽然是与自己专业有点关系,但是很少。专业几乎荒废。我自己也思考,如果再不出去,自己将会成废人,只好让国家养了。两年后决定出去,但是几成废人,谁要呢,只好到学校去镀金。这是中国教育和社会的悲哀!

至于专业就改为计算机方面,听说好找工作,我说实话不是很对计算机特别感兴趣,生存第一需要。不要笑我,哈哈!


考研成绩出来,超过了国家线几十分。那个方向要两个,我第三,但是那年非碘,不面试就按分数来排,自然我落选了。其实给我面试机会也不一定要我,哈哈,自己几斤几两很清楚。

最后调剂到另外一个学校,交钱,咬咬牙,交吧!现在仍然债台高筑!


进入学校前夕

为什么要把这段列出,看后就知道了。

单位有网络,经常上网查些英语资料,在那里唯独英语没有丢很多。于是我就在网上查资料,学什么好呢,最后确定学嵌入式把,听说跟硬件相对比较紧密!而我在大学里多少学习了数字电路,单片机等,所以多少也有所利用,不会真的一无所知。当然在这之前也自学过数据结构,计算机组成原理等。C 语言在大学就学了。哈哈这就是我的家底。

我知道自己的基础差,于是我就拿操作系统,数据库、数据结构、c++来看,机关有这个好处,空余时间多,于是平常就看书,很痛苦,没有人请教。
另外就上网到论坛上去,我就到各个专业的技术论坛,其实是电子论坛和嵌入式论坛。我几乎没有发帖,几乎把几个大型的出名的论坛的帖子翻遍了,虽然有很多重复的,我才知道嵌入式是个什么东东。这些帖子对我以后的学习产生了极大的影响。


最关键两点:
1、嵌入式是什么?

2、嵌入式需要哪些知识?

知道了这两点,好办!我就开始规划学习路线。计算机的基本理论不能丢,于是重点看组成原理,数据机构,操作系统、c++。同时论坛上了解到,实时操作系统 ucos是一个很好的嵌入式操作系统,对初学者很好。于是我就买了一本书,但是代码在电脑里调不通,网上也有很多相同的问题,我就看书,分析代码,一遍不行就两遍,三遍,这样才看了入了门,才知道什么是进程。原来看操作系统书时,根本就不知道进程是个什么东西。

在这段时间掌握的东西不多,但是,对我以后的影响很大,我想起了大学时一个同学跟我说过了一句话:大学里最重要的不是学到了什么,最重要的是学会怎么学!大概是这个意思。

进入我的避难所

对我来讲,再次进入大学不再是大学,而是避难所。希望这次进入给我喘气和养精蓄锐的机会和时间。我是这样认为和实践的。

在学校我有三件事:上课,上图书馆,上网。

对于上课,学校开了很多课程,非常好,很多是名人名师讲解,于是很多同学都想学,都去听。我也考虑过,最后放弃。我是这样认为的,时间是有限的,什么都想学,什么都学不成。于是我把我自己学的课进行了分化,一般的课程通过就行,重要的一定好好学。我希望不要什么争论学习课程多和少的问题,这仅仅是我的看法。所以我的成绩应该是很差的。分数低。好在后来的单位没有要我的成绩单,否则就惨了。

我个人感觉是上图书馆的效率比在寝室里高多了,这是我的经验。

上网,我给自己定了规矩:不玩游戏,不灌水,少看电影!因为时间对我来说太少和宝贵了,我没有资格和资本来浪费这些。上网我就在几个重要的专业技术网站上逛,下载技术资料。我一个朋友最近开了一个嵌入式网站,embeded.cn 里面的资料相当一部分是我在网上找的资料。那个网站很不错,资料丰富,找嵌入式方面,特别是嵌入式linux的资料,异常丰富。

有人会问,您下了那么多资料,怎么看的完和消化的了呢?


我是这样对待这个问题的:

1、 网上资料比较零散,不系统,但是如果把差不多的东西收集起来看就相对完整了,(嵌入式的图书就是这两年特别多,特别是2004年,简直是向外涌!2003年想买本嵌入式,特别是嵌入式linux的不多。)

2、 对于像我这种入门的来说,很多看不懂,没关系,反复看,我个人对学习方法的一个总结是:重复是最好的老师!

3、 即使有的用不上,也可以收集以后用的上时查阅。

但是我并非什么都要,目前我的技术路线是嵌入式linux,所以像wince之类基本上不收集。

总之,我在学校里我充分利用时间来学习,我看到一些同学整天的挂在网上打游戏,发些无关痛痒的帖子,浪费时间呀!我真的很痛心!


学习嵌入式

在这里我把它单独列出,文章有点紊乱,但是内容希望有益。

1、学习linux

根据我在论坛的了解,我选择学习嵌入式linux,刚好我们学校也重视嵌入式linux,从实验室到课程安排都是关于嵌入式linux方面,天时地利!这里我把学习linux的经验和教训说说。

可以这样说,在论坛里说道学习linux差不多就学习linux内核。于是我电脑里安装了linux就开始看linux内核方面的书了。我记得来学校以前就买到一本陈莉君的讲linux内核的第一版,现在有第二版了。我就开始看那本说,大家说linux内核情景分析不错,我就买了上下册,后来又买了《深入理解linux内核》,最后也买了毛德操的《嵌入式系统》也是分析linux内核代码的,主要讲arm相关的。

看内核期间是个非常痛苦的过程,看情景分析有种在森林中找出路,其间我组织了一些同学学习内核,几乎没有几个能坚持下来的。我认为我是坚持下来了。情景分析在看第一、第二遍是几乎没有摸到门道,我分析有三个方面的原因:
1、自己的基础差,这是最关键的。
2、内核本身很难。
3、没有交流和高人指点。到了第三遍时我才摸到门,才差不多知道个linux的大概脉络,很多细节也是稀里糊涂。

学习linux总结,这里声明一下,我指的嵌入式主要是偏向软件的嵌入式。学习嵌入式的重点和难点关键在操作系统,如果没有掌握操作系统,我认为很难把握一个嵌入式系统。即使在做嵌入式开发中,作应有层的开发几乎可以不知道操作系统也可以开发,我认为那是浮在表面的。很难深入和提高自己的层次。声明:一孔之见!不可深究!

在学习linux内核过程中犯了一个极其严重路线错误:对linux几乎不懂就开始学习内核。我个人推荐一个学习路线是:使用linux—〉linxu系统编程开发---〉驱动开发和分析linux内核。而我差不多相反,实际上你不会使用linux也可以学习内核,但是如果你懂了这些东西学习更有效率。
关于要不要学习内核的问题,我的回答如下:不一定。如果你是喜欢钻研的那你进入内核会满足你的欲望。同时对你以后的嵌入式系统的开发有很好的影响。如果你想从事嵌入式linux系统开发,最好对内核有所了解。如果仅仅是做应用开发没有必要。我打个比喻:c、c++、 java等语言是武林中的某个武林派别的话,如什么拳法,什么刀法等,那么linux 内核应该是一个人的内功的反应。

怎么开始学linux内核:最好有三件宝物:《深入理解linux内核》《情景分析》和源代码。

先看《深》,那主要讲原理,好像市场上有本讲原理性并且更浅,《linux内核设计与实现》听说不错。如果没有学习操作系统的,像我这样的,最好先看看操作系统原理的书。看了几遍后,就看情景分析,最好对着《深》看。两本交叉看,《深》是纲,《情》是目。最后深入代码。


2、学习嵌入式linux

学习嵌入式,我认为两个重点,cpu和操作系统,目前市场是比较流行arm,所以推荐大家学习arm。操作系统很多,我个人对开始学习的人,特别不是计算机专业的,推荐学习ucos。那是开源的,同时很小。学习很好。为什么选linux,我不想讲太多,网上这方面的太多,但是我在工作中发现,做linux的技术路线很难,在windows几乎不会有的问题,在linux开发中几乎遍地陷阱。一掉进去划很长时间出来,一旦解决自己又长进了!相对来说开发周期长,难度大。现在资料也逐渐丰富起来,难度也降低了些!

至于怎么学习,这是他的特色地方,必须有块开发板,我是同学里最早买学习板的,虽然化钱,我认为值。对我实习和工作产生了很大的影响。

如果没有开发板,那是纸上谈兵。有人说,那要1000-2000亚,的确是,兄弟,看长远的,对您的职业和发展那点钱不算什么!有的人说我站着说话不腰痛,好吧,钱这东西对我影响很大,我在大学里扫厕所,扫的不错,奖5元/月。兄弟你有过吗?我认为教育投资是效益最有保障的!我实习拿3k,很多同学拿 1-2k,当然比我高的也有。虽然我现在没有毕业,但一家公司就签了。从事目前流行的高档的消费电子的研发。对于我两年前一无所知的我,应该有质的变化,我感谢学校收了我这个废品。当然我也非常的努力。说这么多并不是要炫耀我什么,实际上根本不值得炫耀,虽然现在工作环境和待遇比较满意,但是,我发现我很差,特别是代码能力,我希望平常大家少玩游戏,多编程。编程才是硬道理!


3、 学习板和培训

你可以不接受培训,但是不能不买开发板。如果你想学习嵌入式一定要买块学习板,最好买块arm9的,贵些也值。可以跑高级操作系统。这个不要什么品牌公司的,一般不会出什么问题,市场上的板子一般是三星的2410,基本上是抄的。如果是做产品那要注意些。一般的公司一般要2000,加lcd要3000甚至更多。我接触到有的板只要1200,加lcd也就2000,差别比较大,我认为学习都够啦。

对于培训,如果有条件最好参加,主要是嵌入式相对别的不同,自己摸索很费时,如果有高手指点非常的好,进步快。特别是认识做这些的朋友。我接受过培训,认识个朋友。在以后的工作中帮我很多,在这里谢谢他!我记得哈佛的一个MBA的学生这样说,大意是:在哈佛学到什么不重要,最重要的是这些未来各大公司的高级管理人员是我的同学!真是有远见!

目前市场是培训比较贵,一个星期两三千,真正算起来也要,那些讲师待遇绝对不会低。但是有个致命的问题是连续上课,一连几天,效果不佳。我希望社会上多出些1000元左右,并且时间长些,如一个月,一周一到两次课。如果没人做,我来做,哈哈!

没有想到,一下写了这么多,其实还想写的,比如在中科院的一位老兄是怎样学习linux内核和看书的,真的很感动。他的为人我很钦佩。也想介绍毛德操的《嵌入式系统》那本书,对学习arm linux的很好,也想介绍实习和工作的东西,太长了,耽误大家时间。我也不想检查里面的错别字了,很多!就写到这里吧。

出0入0汤圆

发表于 2010-5-18 16:21:47 | 显示全部楼层
什么是ARM
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

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

  ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。

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

  ARM架构是面向低预算市场设计的第一款RISC微处理器。

  ARM 即Advanced RISC Machines的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

  1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州SanJoseVLSI技术公司制造。

  20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。

  1990年成立了Advanced RISC Machines Limited(后来简称为ARM Limited,ARM公司)。20世纪90年代,ARM 32位嵌入式RISC(Reduced lnstruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。

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


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


  ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和众多合作伙伴。


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


  当前ARM体系结构的扩充包括:


  ·Thumb 16位指令集,为了改善代码密度;


  ·DSP DSP应用的算术运算指令集;


  ·Jazeller 允许直接执行Java字节码。


  ARM处理器系列提供的解决方案有:


  ·无线、消费类电子和图像应用的开放平台;


  ·存储、自动化、工业和网络应用的嵌入式实时系统;


  ·智能卡和SIM卡的安全应用。


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


--------------------------------------------------------------------------------

出0入0汤圆

发表于 2010-5-18 16:22:06 | 显示全部楼层
arm7与arm9的区别
作者:phantom 时间:2009-8-6 文章来源:来自网络  

--------------------------------------------------------------------------------

一、“ARM7内核三级流水线和冯·诺伊曼结构;
ARM9内核是5级流水线     哈佛结构。”
arm7和arm9的pipeline设计是一样的,都是Harvard   architecture,不过arm9又被叫做modified-Harvard   architecture.

“arm7没有mmu,arm720T是MMU的;arm9是有mmu的,arm940T只有Memory   protection   unit.不是一个完整的MMU。”
mmu等等是arm体系的协处理器,他的有无取决于具体的实现,和arm7体系结构无关,别把arm体系和arm的具体实现混淆。
二、ARM7内核是0.9MIPS/MHz的三级流水线和冯·诺伊曼结构;
ARM9内核是5级流水线,提供1.1MIPS/MHz的哈佛结构。

arm7没有mmu,arm720T是MMU的;arm9是有mmu的,arm940T只有Memory protection unit.不是一个完整的MMU。

ARM7TDMI提供了非常好的性能-功耗比。它包含了THUMB指令集快速乘法指令和ICE调试技术的内核。ARM9的时钟频率比ARM7更高,采用哈佛结构区分了数据总线和指令总线。

三、ARM7为传统的冯诺依曼结构,ARM9为哈佛结构.
ARM9采用5级流水线结构而ARM7为3级流水线.
ARM9带有MMU,CACHE 等.
ARM9时钟频率可以更高.资料统计ARM9的指令执行效率比ARM7高27%左右.



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zyboy2000/archive/2009/05/13/4175410.aspx

出0入0汤圆

发表于 2010-5-18 16:22:35 | 显示全部楼层
ARM开发:一 ARM微处理器概述
作者:phantom 时间:2009-8-11 文章来源:来自网络  

--------------------------------------------------------------------------------

  
1.1  ARM-Advanced RISC Machines
ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

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

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

1.2  ARM微处理器的应用领域及特点
1.2.1  ARM微处理器的应用领域
到目前为止,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.2.2  ARM微处理器的特点
采用RISC架构的ARM微处理器一般具有如下特点:

1、体积小、低功耗、低成本、高性能;

2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;

3、大量使用寄存器,指令执行速度更快;

4、大多数数据操作都在寄存器中完成;

5、寻址方式灵活简单,执行效率高;

6、指令长度固定;

1.3  ARM微处理器系列
ARM微处理器目前包括下面几个系列,以及其它厂商基于ARM体系结构的处理器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。

-    ARM7系列

-    ARM9系列

-    ARM9E系列

-    ARM10E系列

-    SecurCore系列

-    Inter的Xscale

-    Inter的StrongARM

其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。

以下我们来详细了解一下各种处理器的特点及应用领域。

1.3.1  ARM7微处理器系列
ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点:

-    具有嵌入式ICE-RT逻辑,调试开发方便。

-    极低的功耗,适合对功耗要求较高的应用,如便携式产品。

-    能够提供0.9MIPS/MHz的三级流水线结构。

       -    代码密度高并兼容16位的Thumb指令集。

       -    对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。

-    指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容,便于用户的产品升级换代。

       -    主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。

ARM7系列微处理器的主要应用领域为:工业控制、Internet设备、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用。

ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、

ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为:

T: 支持16为压缩指令集Thumb;

D: 支持片上Debug;

M:内嵌硬件乘法器(Multiplier)

I:  嵌入式ICE,支持片上断点和调试点;

本书所介绍的Samsung公司的S3C4510B即属于该系列的处理器。

1.3.2  ARM9微处理器系列
ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点:

-    5级整数流水线,指令执行效率更高。

-    提供1.1MIPS/MHz的哈佛结构。

-    支持32位ARM指令集和16位Thumb指令集。

-    支持32位的高速AMBA总线接口。

-    全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。

-    MPU支持实时操作系统。

-    支持数据Cache和指令Cache,具有更高的指令和数据处理能力。

ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。

ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。

1.3.3  ARM9E微处理器系列
ARM9E系列微处理器为可综合处理器,使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,极大的减少了芯片的面积和系统的复杂程度。ARM9E系列微处理器提供了增强的DSP处理能力,很适合于那些需要同时使用DSP和微控制器的应用场合。

ARM9E系列微处理器的主要特点如下:

-    支持DSP指令集,适合于需要高速数字信号处理的场合。

-    5级整数流水线,指令执行效率更高。

-    支持32位ARM指令集和16位Thumb指令集。

-    支持32位的高速AMBA总线接口。

-    支持VFP9浮点处理协处理器。

-    全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。

-    MPU支持实时操作系统。

-    支持数据Cache和指令Cache,具有更高的指令和数据处理能力。

-    主频最高可达300MIPS。

ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。

ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S三种类型,以适用于不同的应用场合。

1.3.4  ARM10E微处理器系列
ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。

ARM10E系列微处理器的主要特点如下:

-    支持DSP指令集,适合于需要高速数字信号处理的场合。

-    6级整数流水线,指令执行效率更高。

-    支持32位ARM指令集和16位Thumb指令集。

-    支持32位的高速AMBA总线接口。

-    支持VFP10浮点处理协处理器。

-    全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。

-    支持数据Cache和指令Cache,具有更高的指令和数据处理能力

-    主频最高可达400MIPS。

-    内嵌并行读/写操作部件。

ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。

ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S三种类型,以适用于不同的应用场合。

1.3.5  SecurCore微处理器系列
SecurCore系列微处理器专为安全需要而设计,提供了完善的32位RISC技术的安全解决方案,因此,SecurCore系列微处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。

SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,还在系统安全方面具有如下的特点:

-    带有灵活的保护单元,以确保操作系统和应用数据的安全。

-    采用软内核技术,防止外部对其进行扫描探测。

-    可集成用户自己的安全特性和其他协处理器。

SecurCore系列微处理器主要应用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。

SecurCore系列微处理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四种类型,以适用于不同的应用场合。

1.3.6  StrongARM微处理器系列
Inter StrongARM SA-1100处理器是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Inter公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。

Intel StrongARM处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。

1.3.7  Xscale处理器
Xscale 处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。

Xscale 处理器是Inter目前主要推广的一款ARM微处理器。

1.4  ARM微处理器结构
1.4.1  RISC体系结构
传统的CISC(Complex Instruction Set Computer,复杂指令集计算机)结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂,然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。

基于以上的不合理性,1979年美国加州大学伯克利分校提出了RISC(Reduced Instruction Set Computer,精简指令集计算机)的概念,RISC并非只是简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。RISC结构优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。

到目前为止,RISC体系结构也还没有严格的定义,一般认为,RISC体系结构应具有如下特点:

- 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。

- 使用单周期指令,便于流水线操作执行。

- 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高指令的执行效率。

除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:

- 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。

- 可用加载/存储指令批量传输数据,以提高数据的传输效率。

- 可在一条数据处理指令中同时完成逻辑处理和移位处理。

- 在循环处理中使用地址的自动增减来提高运行效率。

当然,和CISC架构相比较,尽管RISC架构有上述的优点,但决不能认为RISC架构就可以取代CISC架构,事实上,RISC和CISC各有优势,而且界限并不那么明显。现代的CPU往往采用CISC的外围,内部加入了RISC的特性,如超长指令集CPU就是融合了RISC和CISC的优势,成为未来的CPU发展方向之一。

1.4.2  ARM微处理器的寄存器结构
ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:

- 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。

- 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。

同时,ARM处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0~R14)、一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。

关于ARM处理器的寄存器结构,在后面的相关章节将会详细描述。

1.4.3  ARM微处理器的指令结构
ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。

关于ARM处理器的指令结构,在后面的相关章节将会详细描述。

1.5  ARM微处理器的应用选型
鉴于ARM微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM微处理器必然会获得广泛的重视和应用。但是,由于ARM微处理器有多达十几种的内核结构,几十个芯片生产厂家,以及千变万化的内部功能配置组合,给开发人员在选择方案时带来一定的困难,所以,对ARM芯片做一些对比研究是十分必要的。

以下从应用的角度出发,对在选择ARM微处理器时所应考虑的主要问题做一些简要的探讨。

ARM微处理器内核的选择

从前面所介绍的内容可知,ARM微处理器包含一系列的内核结构,以适应不同的应用领域,用户如果希望使用WinCE或标准Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片,ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都带有MMU功能。而ARM7TDMI则没有MMU,不支持Windows CE和标准Linux,但目前有uCLinux等不需要MMU支持的操作系统可运行于ARM7TDMI硬件平台之上。事实上,uCLinux已经成功移植到多种不带MMU的微处理器平台上,并在稳定性和其他方面都有上佳表现。

本书所讨论的S3C4510B即为一款不带MMU的ARM微处理器,可在其上运行uCLinux操作系统。

系统的工作频率

系统的工作频率在很大程度上决定了ARM微处理器的处理能力。ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟频率为100MHz-233MHz,ARM10最高可以达到700MHz。不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为ARM核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。

芯片内存储器的容量

大多数的ARM微处理器片内存储器的容量都不太大,需要用户在设计系统时外扩存储器,但也有部分芯片具有相对较大的片内存储空间,如ATMEL的AT91F40162就具有高达2MB的片内程序存储空间,用户在设计时可考虑选用这种类型,以简化系统的设计。

片内外围电路的选择

除ARM微处理器核以外,几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并集成在芯片之中,我们称之为片内外围电路,如USB接口、IIS接口、LCD控制器、键盘接口、RTC、ADC和DAC、DSP协处理器等,设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样既可简化系统的设计,同时提高系统的可靠性。

1.6  本章小节
本章对ARM微处理器、ARM技术的基本概念做了一些简单的介绍,希望读者通过对本章的阅读,能对ARM微处理器、ARM技术有一个总体上的认识。

出0入0汤圆

 楼主| 发表于 2010-5-18 16:52:30 | 显示全部楼层
引用的话请注明出处,在每个帖子后面加上以前的链接地址。尊重原创,谢谢O(∩_∩)O

出0入0汤圆

发表于 2010-5-19 09:45:03 | 显示全部楼层
cool

出0入0汤圆

发表于 2010-5-19 09:51:05 | 显示全部楼层
内容不少,真的挺完整

出0入0汤圆

发表于 2010-5-19 10:13:16 | 显示全部楼层
mark,谢谢

出0入0汤圆

发表于 2010-5-19 14:43:59 | 显示全部楼层
一定要mark!

出0入0汤圆

发表于 2010-5-20 10:54:28 | 显示全部楼层
O(∩_∩)O哈哈~

出0入0汤圆

发表于 2010-5-20 11:01:23 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2010-5-20 15:04:45 | 显示全部楼层

出0入0汤圆

发表于 2010-5-20 15:37:20 | 显示全部楼层
hello arm

出0入0汤圆

发表于 2010-5-21 07:54:18 | 显示全部楼层
每次看到都忍不住要顶

出0入0汤圆

发表于 2010-5-21 08:59:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-21 13:17:24 | 显示全部楼层
up

出0入0汤圆

发表于 2010-5-21 13:39:32 | 显示全部楼层
m

出0入0汤圆

发表于 2010-5-22 20:28:20 | 显示全部楼层
记下,谢谢!辛苦楼主!

出0入0汤圆

发表于 2010-5-22 20:52:36 | 显示全部楼层
mark 很好的资料

出0入0汤圆

发表于 2010-5-24 10:48:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-24 15:26:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-26 08:57:19 | 显示全部楼层
nice

出0入0汤圆

 楼主| 发表于 2010-5-26 15:59:15 | 显示全部楼层
第二个整理好的帖子发出了。

出0入0汤圆

发表于 2010-5-28 11:16:46 | 显示全部楼层
mask

出0入0汤圆

发表于 2010-5-28 13:07:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-29 16:23:06 | 显示全部楼层
感谢楼主

出0入0汤圆

发表于 2010-5-29 23:11:57 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-5-31 15:11:28 | 显示全部楼层
好久没来论坛了,呵呵

出0入0汤圆

发表于 2010-5-31 16:28:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-31 17:11:57 | 显示全部楼层
虽然还没接触,但希望能从这里开始

出0入0汤圆

 楼主| 发表于 2010-6-1 13:10:39 | 显示全部楼层
fighting

出0入0汤圆

发表于 2010-6-1 18:02:43 | 显示全部楼层
頂!樓主,辛苦了!

出0入0汤圆

发表于 2010-6-1 19:48:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-2 10:13:11 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-6-3 07:58:28 | 显示全部楼层
内牛满面...雪中送炭啊

出0入0汤圆

发表于 2010-6-3 22:05:41 | 显示全部楼层
有更新吗?

出0入0汤圆

发表于 2010-6-4 09:49:00 | 显示全部楼层
大哥,有整理好的文档吗?

出0入0汤圆

发表于 2010-6-4 10:44:56 | 显示全部楼层
正在学嵌入式,谢谢

出0入0汤圆

发表于 2010-6-6 15:03:12 | 显示全部楼层
有高手留QQ吗?

出0入0汤圆

发表于 2010-6-6 16:35:27 | 显示全部楼层
先mark,后感谢楼主

出0入0汤圆

发表于 2010-6-6 18:09:10 | 显示全部楼层
Mark

出0入0汤圆

 楼主| 发表于 2010-6-8 09:18:18 | 显示全部楼层
呵呵,很高兴对这么多朋友有帮助。

出0入0汤圆

发表于 2010-6-8 16:12:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-8 20:02:49 | 显示全部楼层
很好。楼主辛苦了

出0入0汤圆

发表于 2010-6-8 20:32:16 | 显示全部楼层
好资料,mark

出0入0汤圆

发表于 2010-6-8 20:32:37 | 显示全部楼层
好资料,mark

出0入0汤圆

发表于 2010-6-8 21:10:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-8 21:25:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-8 23:01:08 | 显示全部楼层
mark ,留位备用!谢谢!

出0入0汤圆

发表于 2010-6-9 10:44:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-9 15:43:55 | 显示全部楼层
感谢楼主!mark!

出0入0汤圆

发表于 2010-6-10 07:48:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-10 08:46:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-10 10:15:44 | 显示全部楼层
记号!!谢谢lz

出0入0汤圆

发表于 2010-6-10 12:55:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-10 13:21:06 | 显示全部楼层
必须mark

出0入0汤圆

发表于 2010-6-12 06:46:58 | 显示全部楼层
太经典了!

出0入0汤圆

发表于 2010-6-12 14:04:27 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2010-6-12 21:50:14 | 显示全部楼层
楼主辛苦了~~太感谢了~~顶下

出0入0汤圆

发表于 2010-6-12 22:48:03 | 显示全部楼层
回复【楼主位】Ayuflyhigh
-----------------------------------------------------------------------

标记一下

出0入0汤圆

发表于 2010-6-17 08:02:24 | 显示全部楼层
楼主,有没有嵌入式学习笔记共享一下,谢谢

出0入0汤圆

发表于 2010-6-17 08:06:24 | 显示全部楼层
nice

出0入0汤圆

发表于 2010-6-17 08:14:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-18 10:34:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-20 19:48:54 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2010-6-21 20:17:57 | 显示全部楼层
好东西,不得不顶!

出0入0汤圆

 楼主| 发表于 2010-6-22 12:34:58 | 显示全部楼层
多谢大家支持O(∩_∩)O

出0入0汤圆

发表于 2010-6-22 12:56:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-25 09:21:24 | 显示全部楼层
谢谢共享

出0入0汤圆

发表于 2010-6-25 15:59:31 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3979142&bbs_page_no=1&search_mode=1&search_text=linux&bbs_id=9999

出0入0汤圆

发表于 2010-6-26 13:05:45 | 显示全部楼层
如果有谁能做个打包工作多好啊。

出0入0汤圆

发表于 2010-6-30 07:48:22 | 显示全部楼层
nice
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 -- 东莞阿莫电子网站 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2022-9-30 11:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表