51-ARM-linux简易介绍入门.doc_第1页
51-ARM-linux简易介绍入门.doc_第2页
51-ARM-linux简易介绍入门.doc_第3页
51-ARM-linux简易介绍入门.doc_第4页
51-ARM-linux简易介绍入门.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、从51过渡到ARM开始这本书读完之后会对51跟ARM有一个感性的认识。1.学ARM为什么要从51系列学起?(1) 在单片机没有出现的20世纪80年代以前,学习计算机是从单板机开始的。在单片机出现以后,学习计算机一般都以51系列为基础。从51系列的基本概念出发,去理解和学习其他更复杂的计算机就要容易得多,因为很多基本概念是相同的。(2) 本书的目的在于帮助那些经验并不丰富的初学者,这些人一般只有51系列的经验而没有其他单片机经验,因此,只能以51系列为基础,去学习ARM处理器的知识。2.学ARM究竟有多难?ARM处理器的确是一种很复杂的微处理器结构,但从应用的角度来说,只要有51系列的经验,学习ARM并不是很困难的事。(1) 学习ARM处理器只学习与应用有关的部分。关于ARM处理器的很多资料,都是直接对ARM说明书的译文。这些说明书中很大一部分都是关于ARM结构的论述,这些内容是写给芯片设计工程师看的,学习这些内容对应用人员毫无用处。(2) 应用ARM应该分为3个阶段: 第1阶段是学习ARM的基本内容;第2阶段是学习以ARM为核的单片机;第3阶段才是应用。这与学习51系列单片机不同。学习51系列单片机时,学会了基本内容也就学会了单片机。本书所讲述的是ARM的基本内容。(3) 与51系列的基本内容相近,ARM的基本内容主要包括中断响应过程、ARM指令集、存储器结构和汇编语言的程序结构,并没有比51系列更多的内容。从这几方面出发去学习ARM处理器,就会发现学习ARM并不是很困难的事。以上那本书只是代表了一种看法,要从51(普通单片机)开始二、网上从51到ARM的过渡却有几种不同看法:第一种人认为要循序渐进,一步一步的来,打好基础,切不可急功近利;第二种则是有51的基础可以直接学ARM7或者ARM9或者ARM11,结果也学得不错;有的人则说还是先学stm32再学ARM;甚至有人没学过51,直接学ARM,结果还可以。这四种讲法都没有错,可信也不可全信。这之中省略了很多内容,容易使人产生误解。(这里给大家的一些建议:任何事情没有那么容易得到的,任何的话是在一定的情景下才有效的)。自己多想想应该就会明白了:(倘若自己有了一套自己学习新东西的方法或体系就不会去想这些问题了)。首先你自己以后干什么,如果自己以后有比较长远的打算,你就不会去纠结这些问题;还有一个就是自己的兴趣所在(其实这个是很关键的一个)三、刚刚开始学ARM的时候时总是会去想这些的问题:(这个网站可以作为简单知识的查找/)1.学stm32还是直接学ARM ?之所以有人说先学stm32再学ARM也是有些道理的,stm32的硬件结构部分跟ARM是差不多的,也就是说stm32就是ARM处理器。然而区别也比较明显,那就是stm32只能做简单的OS(ucos II),较复杂的OS就不行了。主要的原因就是设计芯片的人刚开始的时候就是把stm32设计成高级的单片机,主要作为控制器来使用。Linux内核比较大,一般移植在ARM9及以上,andriod就移植在ARM11及以上。(这也是大致推荐的一个看法,不过需要进行裁剪,操作系统的某些功能就散失了)。最后,选择的话,看自己的兴趣方向,还有就是自己的基础。学系统的话就选择后者,作为控制器选前者(也可作为学后者的一个准备,那么就不需要太多的去深究外围)2.是学ARM7还是ARM9,还是ARM11,还是A8?ARM7跟stm32有些类似,作为控制器的较多,也可移植简单的OSARM9跟linux,在中低端消费电子产品的应用广泛(家用)ARM11跟andriod,高端的消费电子产品(手机,仪器等)A8跟(iphone 6)MAC OS(这个都是向下兼容的),机顶盒,数字电视,上网本等(没接触过不是很清楚)3.嵌入式LINUX应该学什么?做驱动还是做应用(引:)不少人问我,到底是学驱动还是学应用? 我只能说凭兴趣,并且驱动和应用并不是截然分开的1. 我们说的驱动,其实并不局限于硬件的操作,还有操作系统的原理、进程的休眠唤醒调度等概念。 想写出一个好的应用,想比较好的解决应用碰到的问题,这些知识你应该懂2. 做应用门槛低,特别是现在的ANDROID,纯JAVA。做应用的发展路径个人认为就是业务纯熟。比如在通信行业、IPTV行业、手机行业,你了解行业的需求 所以,当领导的人,多是做应用的 ,显然 ,就职位来讲,做应用的市场需求肯定比做驱动的多。3. 做驱动,其实我不想称为“做驱动”,而是想称为“做底层系统”,做好了这是通杀各行业。我工作几年,做过手机、IPTV、会议电视,但是这些产品对我毫无差别,因为我只做底层。他们的业务跟我没关系。当应用出现问题,他们解决不了时,我就会从内核角度给他们出主意,给他们提供工具。 做底层的发展方向,个人认为是技术专家。4. 其实,做底层还是做应用,之间并没有一个界线,有底层经验,再去做应用,你会感觉很踏实。有了业务经验,你再了解一下底层,很快就可以组成一个团队。4.学习系统是ucos ii,还是linux,还是andriod,还是WinCE,VXWorks?Ucos II适合于在小系统上面,应用面较窄。VXWorks不开源,学习起来比较麻烦,成本较高WinCE开源,成本相对其他还是较高一些,不过它的界面确实跟windows差不多,这也是他兴起和流行的主要原因Andriod跟Linux其实是同源的,andriod最初是在2.6.34上开发出来的,linux的最大优势就是开源Windows CE嵌入式操作系统:(网上某网友几年前的见解)Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(.NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用,由于WinCE开发都是大家熟悉的VC+环境,所以学过Windows程序设计课程的同 学都不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重点,WinCE还有两个特殊版本,一个是MS PocketPC操作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone操作系统用于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。在PDA和手机市场上,除WinCE外,著名的PDA 嵌入式操作系统还有Palm OS(因出现很早,很有名)、Symbian等,但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长?同学学过VC+后再学 WinCE,非常方便自然,通过学习WinCE同样也可了解嵌入式软件的一般开发过程,对Linux有惧怕心理的同学也很合适。很显然,嵌入式Linux 永远不可能替代WinCE,而且将来谁占份额大还很难讲,毕竟很多人更愿意接受MS的平台,就像各国政府都在大力推LINUX已好长时间,但你能看到几个 在PC机上真正使用LINUX的用户?据我观察,目前在嵌入式平台上,LINUX是叫得最响,但还是WinCE实际用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司,为降低成本而进行长远考虑.WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之 一,现在社会很需要精通WinCE的人。现在有WINCE的智能手机,金山词霸、WORD、EXCEL、REGEDIT等居然都有 smartphone版的,PC上的MP3、DOC等居然在download时都可被自动转换成smartphone格式,很爽的。完全可用 Windows CE自己开发一些需要的程序download到自己的手机上。现在市面销售PDA智能手机火爆,MS总是财源滚滚。 总结关于嵌入式操作系统类课程,若你觉得自己功底较深且能钻研下去,则可去学嵌入式Linux;若你觉得自己VC+功底较好且想短平快地学嵌入式开发,自学WINCE是非常好的选择。 以上只是某人几年前的看法,不过到现在为止谁又能说得定呢?在andriod的冲击下,WinCE已经没有之前的好了。我之所以选择linux可能是VC+没有那么好,主要的是自己的爱好,喜欢一些开源的东西Stm32跟S3c2440简单比较:S3C2440全套中文手册(1-27章).PDFSTM32中文参考手册_V10.pdfCortex-M3权威指南(中文).pdf其实本身架构及硬件没有太大区别,设计出来的时候就已经确定了它的应用范围。5.小结:你知道自己怎么学的之后就会这样去思考:先了解ARM需要的知识,自己已经有了哪些,即使有些不具备也没关系,边学边补。ARM的硬件知识,接口、芯片内部、外围等知识,包括下载器等。牵涉微机和汇编等知识系统安装,软件(编程)等实践操作简单实例OS的相关知识,其中就牵涉到操作系统原理,C等知识四、学习过程中需要的知识(可能有些不全面,纯属个人见解)嵌入式=硬件+软件(其实界限也没有分得那么清楚)1.简单推荐:汇编(底层驱动,系统也需要了解)微机原理(这个显得尤为重要):本科学校讲得都不够透彻,看下有些面试这方面的就能知道了,所有跟硬件相关的处理器都与之息息相关。C语言(这个是必须的),数据结构操作系统原理Linux系统Linux驱动网络编译原理(更深一点得)2.个人推荐部分书籍:ARM体系结构与编程杜春雷 ARM硬件的知识嵌入式系统接口设计与Linux驱动程序开发刘淼ARM9嵌入式系统设计与开发教程于明这两本是培训公司曾经用过的教材Linux内核设计与实现Linux设备驱动程序深入Linux内核架构UNIX环境高级编程构建嵌入式Linux系统TCP-IP详解网络方面鸟哥的Linux私房菜 有两本 基础版本可以整个过程中都可以阅读。这本书讲得非常的仔细(所以也有些厚)韦东山的嵌入式Linux应用开发完全手册 可以参考视频也可作为参考阅读,这里只是网上推荐和自己的一些意见,个人看法不一样,可能有更好的书,看你自己的需要。五、正式进入嵌入式学习阶段(此部分只讲一些比较基础的)1.学习linux的四个大致方向:1. 硬件方面(目标就是硬件架构设计)若是学习的话,总体结构跟有些单片机有些类似(其实就是最基本的微机知识和模数电知识),跟80C51和stm32很多部分类似。CPU、接口及外围需要掌握的知识有:单片机原理及接口技术、微机原理及接口技术、C语言2. 底层驱动linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成。要能看懂电路图,还要对操作系统内核十分的熟悉精通。要真正学懂,至少需要几年时间,还需要实践经验。3. 应用层(类似于app)C,C+,Java等相关语言。数据库,网络,协议相关的会较难。4. 系统方向实话说,研究这个方向有那么几种人其一,自己的爱好其二,大型企业(像苹果,google,微软)或者研究机构,政府(考虑到安全性)相关单位才会去研究系统就意味着一切,所有的都必须在上面运行。Google、Apple跟微软都牵涉到隐私安全等问题,甚至政治问题。掌握的知识:数据结构与算法、操作系统原理、编译原理(这个属于较难的一门课程且较难入门),看了几本书还是不明白以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!2.学习linux的步骤(个人建议):1.先阅读一些感性的书籍(较大众化的书籍,鸟哥)2.接着拿板子进行前端较简单的开发(对硬件有感性的认识)3.阅读与处理器相关的硬件知识(杜春雷)4.系统的移植,参考相关书籍5.驱动学习,相关书籍6.应用学习及实践7.系统学习,这个学校是无边无际的开源是现在较流行的, opensource(github,开源中国,stackflow),目前苹果(),微软(.NET),google都将自己的软件项目在上面开源,尽管google自己也有google code。Andriod就是开源世界当中的产物。准备工作:学linux的环境大体有3种办法:A、在windows上安装cygwinB、在windows上安装虚拟机,再安装linux(电脑性能要求较高内存至少4G)C、直接装linux,弄个双系统安装视频:Ubuntu安装1.aviUbuntu安装2.aviRHEL6.0安装(存储没选好).aviRedHat 9的话安装较简单,安装后使用有些类似Ubuntulinux安装及推荐部分网站.txt服务必备安装:ubuntu中Samba_SSH_FTP服务的安装.doc硬件演示:本来可以,后面借的板子少了根线没弄成IMG_20141216_193735.jpg(开机时的界面)借助SecureCRT.exe可以实现跟Putty.exe连接虚拟机一样的效果。Linux体系结构(1)用户空间:用户空间中又包含了,用户的应用程序,C库(2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码Linux体系结构要分成用户空间和内核空间的原因: 1)现代CPU通常都实现了不同的工作模式, 以ARM为例:ARM实现了7种工作模式,不同模式下CPU可以执行的指令或者访问的寄存器不同:用户模式usr;系统模式sys;管理模式svc;快速中断fiq;外部中断irq;数据访问终止 abt;未定义指令异常。 以X86为例:X86实现了4个不同级别的权限,Ring0Ring3 ;Ring0下可以执行特权指令,可以访问IO设备;Ring3则有很多的限制 3用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系统调用”和“硬件中断“来完成用户空间到内核空间的转移Linux内核架构linux目录结构.doc(对linux的结构有一个大致了解,有些类似于andriod)linux 内核代码构架图.pngLinux和windows启动过程比较.doc(对操作系统及微机原理有一个更深入的了解)新人如何学习嵌入式(韦东山语).doc教程选择:韦东山linux视频教程.rar(有些看不了) 网上比较多的视频,可以看,实验室硬盘里也有。不要跳着看,有选择性的看。六、未来的发展:ARM_FPGA_DSP区别(简要):ARM具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面,而DSP主要是用来计算的,比如进行加密解 密、调制解调等,优势是强大的数据处理能力和较高的运行速度。FPGA可以用VHDL或verilogHDL来编程,灵活性强,由于能够进行编程、除错、再编程和重复操作,因此可以充分地进行设计开发和验证。当电路有少量改动时,更能显示出FPGA的优势,其现场编程能力可以延长产品在市场上的寿命,而这 种能力可以用来进行系统升级或除错。(详细可了解文档:ARM、DSP、FPG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论