嵌入式心得体会
我们得到了一些心得体会以后,有这样的时机,要好好记录下来,这样可以不断更新自己的想法。是不是无从下笔、没有头绪?以下是小编为大家整理的嵌入式心得体会,仅供参考,大家一起来看看吧。
嵌入式心得体会1本人本科学的是电子信息工程专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下C语言语法,学完之后还不知道什么是C语言,只记住了char,int,long等占几个字节,if, while,for循环什么的,感觉也就能算一些小学就会的题目,全国计算机二级C语言也就糊涂的过了。我这个专业没学过C++,一开始不知道什么是面向对象,这可能会让人笑话了。不过这说的是实话,本科的时候,学院安排的课程大部分偏硬件部分,动手机会比较多,自然而然比较喜欢硬件方面。
在大二的时候就听学长说,单片机很难学,那时候经学长介绍,淘宝买了本郭天祥老师出的书《51单片机C语言教程》,一开始还真是不怎么懂,感觉有点像是看天书,然后硬着头皮去看,当我把51的结构看完了,就不像一开始那样一头雾水了,自己在纸上把51的结构图默画一遍,然后再把各个寄存器功能写一下,各个功能口的结构粗略画了下,然后觉得51整体已在我心中了,虽然没有什么作用,但是至少懂得这门课要怎么去学习。其实有些时候不是这个东西你不会,而是在不会的时候自己先告诉自己这个太难了,自己先放弃了。
在大三的时候,第一学期课比较少,我就经常待在图书馆,会去蛮看些专业相关的书籍,现在想想,那时候也是机缘巧合下,看到了一本书《从51到ARM》,讲述的是从51系列单片机的一般知识出发,将arm处理器和51系列单片机进行对比,引导读者去理解和学习arm处理器的知识。那个时候也有考虑到以后就业的问题,就想到一件事情,如果去应聘工作的话,每个工科院校电子信息类的毕业生都会异口同声地说:我会51系列单片机。当他说这句话的时候,他和别人是站在同一起跑线上的。可我们完全有可能和别人不站在同一起跑线上。正是这本书给我开启了另外一扇大门,让我初步了解了嵌入式。后来去报考全国计算机等级考试三级教程——嵌入式系统开发技术,在图书馆奋斗了两个月,最后取得优秀的成绩,也让我进一步了解嵌入式系统。
在大四的时候,我们有嵌入式的选修课,不过当时因为考研的缘故,就没有去上过这门课,好可惜呀!但是,在选择读研研究方向的时候我还是毅然选择了嵌入式方向,我知道这将成为我未来三年研究的方向。这学期(研一下学期),很开心能够再次接触嵌入式系统这门课程,对于导师教的这门课程,我觉得自己上课还是蛮认真听讲的,当然也被师在台上那讲得头头是道,温文儒雅的风姿所吸引。对于没有学过微机8086的我,有些时候,老师用微机与嵌入式的对比让我头脑没有相关概念...
首先,我对嵌入式在概念上有了一个比较精确的了解。嵌入式是指以应用为中心,以计算机为基础,并且软硬件可裁剪,适用于对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。它由硬件平台和系统软件组成。硬件平台指嵌入式处理器和与之通过接口连接的外围硬件平台。系统软件是指实时操作系统和用户应用软件。
谈到硬件部分,我首先想到的是嵌入式处理器那些外围功能模块。对于这部分的学习,我当初花了好长时间看《深入浅出ARM7——LPC2400》这本书,现在想想觉得自己学习方法没用对,完全没有那个必要,自己却花了大把时间在看这些寄存器引脚的使用,因为单纯的看过之后还是很容易忘的,之后在进行实验的时候还是翻书来查就证明了这一点。不过一些最基本的模块,例如通用输入/输出口(GPIO),通用异步收发器(UART),向量中断控制器(VIC),外部中断输入和定时器/计数器还是需要看书认真去记住那些常用的引脚功能。对于CPU异常这部分,我一开始以为异常就是中断,因为处理程序流程设计是相似的,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。当时还对老师提出的一个看法有点疑义,51可以处理中断嵌套而ARM处理器却不能?我当时脑子里面就在想:中断不都是有硬件设备产生的,那按常理来讲ARM处理器也可以处理的呀。后来在认真查书,发现CPU异常有7种:复位,数据中止,中断,快中断,预取中止,未定义,软件中断。而异常向量会使CPU转入异常入口地址执行程序,开始了异常处理。同理的话,中断向量使CPU转入中断入口地址执行程序,开始了中断处理。即当发生IRQ中断时,程序返回地址被存入该IRQ中断模式下的LR,如果继续发生IRQ中断,那第二次的中断返回地址也还是被存入该IRQ中断模式下的LR中,那先前发生中断时候存入的程序返回地址将被覆盖掉,导致不能返回正确的位置。在我解决这个问题的期间,每次睡前思维准会定格在这问题上,久久不能绕出来,其实有时候查书还是最好的解决方案,因为网络资源只能提供给我们部分的参考资料。
对于ARM汇编语言这部分的学习,我认为是需要重视的,学汇编不是说用这语言做多牛逼的事情, 问题的关键在于, 学透了汇编会使你真正理解计算机。另外一方面,只要以后在嵌入式工作中你迟早会在某个阴暗的角落里遇到汇编。“不管你承认不承认, 现在的CPU没有直接跑高级语言的, 哪怕是虚拟机也都是类似汇编的指令集.当遇到崩溃分析, 性能优化甚至编译器抽风等等的时候, 汇编是你最后一根救命稻草(这句话是福来师兄讲的)。”为此他给了我们一份资料,周立功lpc21xx/lpc22xx系列ARM7启动代码分析,主要讲述的是startup.s文件的分析,看了下才发现老师上课讲的那个启动代码分析很多不理解之处这里都有详细的介绍,这分析太精辟了。
学 ARM7这么久,我认为从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面 的驱动和移植。这些对于我们初学者来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。
μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。μC /OS-II是一个完整的、可移植、可固化、可裁剪的占先式实时多任务内核。μC/OS-II绝大部分的代码是用ANSI的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。
μC/OS-II可以大致分成内核结构、任务管理、时间管理、任务之间通信与同步4个部分。内核结构是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟 ……此处隐藏24023个字……件的。
Linux文件系统的管理要清楚,哪个目录存放是什么东西,有什么用,文件权限管理等Shell编程也要了解一些,在这给大家推荐一个教程,周朝剑的shell编程,也就七八讲吧,讲的很全面。初学者看前4讲就可以了。
Linux设备驱动的架构要了解,初学者可以以飞凌的OK6410开发板上的led驱动分析一下,结合原理图和linux设备驱动相关书籍把每一行代码都分析明白。关于驱动给大家推荐一本书《LINUX社备驱动程序》中国电力出版社出版的,很经典的,初学者看可能看不太明白,不过要坚持看,最次也得把前6章看完了。
2看书不要希望一次就会,一次就明白是什么意思,也不要死记硬背,看不明白也没关系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就记住了,遇到的少的,忘记也就忘记了。还有,不要直接阅读linux内核源代码,看一些自己把头撞破也想不明白的事,会打击初学者的积极性,要循序渐进,今天学个做个led,明天做个串口,后天说不定就做硬件编解码了。
3、你可以不接受培训,但是不能不买开发板。
如果你想学习嵌入式一定要买块学习板,现在的开发板很便宜了,给我们初学者减轻了很多经济负担。看再多的视频,看再多的书,也不如自己动手试一下,看着很简单的东西,做起来就可能遇到很多的问题,遇到问题找到原因,解决问题,只有这样才能学到东西,记得我第一次写led的驱动,想自己试一下,网上也有人写过相关的代码,可是自己一试,就出了好多的问题,那个led弄了我一天才把led灯点亮。所以不要眼高手低。
还有关于培训,现在的培训机构很多,讲的也不错,老师也很好,但是有一个问题,太集中了,而且学生动手的机会也不太多,记得我们公司还招了一个在北京某个培训机构培训半年的员工呢,花了一万多,来了之后也没感觉有多高,问他都学了什么,也就是我前边说的那些基础知识,很多的东西还是不知道的,照着书弄个helloworld模块驱动两天没搞定。不是培训不好,但我个人见解效果并不是很好。记住:只有自己动手做过的东西才是自己的。
现在买一块开发板很便宜,飞凌的OK6410的开发板就不错,源码完全开放,而且资料也很丰富,完全能满足初学者学习用,有人说友善的板子也不错,我个人觉得友善的板子不
错,但是不适合初学者,因为他的很多的东西是不给代码的,用过友善的板子的同学经常有这样的痛苦,想学一个东西,去找他的代码的时候,却找不到,很多友善提供的代码中很多的都是封装好的,只提供给客户一个库,初学者想要找代码的时候就不知道怎么办了。
4不要好高骛远,要脚踏实地
对于初学者,还有一点小建议,我们拿到一个开发板,很兴奋也很激动,想法自然也很多,想用开发板实现自己的这个想法,实现那个想法,然后又不知道从何下手,然后就去论坛中发一个贴,“那个什么什么怎么实现啊,哪位大侠能详细说一下啊,跪求!1然后等着别人去回复。见没人回复就抱怨。有想法是好的,我们要实现自己的想法也是有前提的,首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到问题,再去发贴问,这样也显得咱们有水平。比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,就是人家把代码给咱,咱也不明白是怎么回事埃
5多看代码,多写代码
见多识广,熟能生巧。多看代码,要从代码中读出代码的意思来。自己平时也要多写代码,多练习(这一点我做的不好,写的少)。
写完已经晚上两点了,思路有些乱,有些也是个人的见解,在有些人看来可能是错误的,每个人有每个人的学习方法,但是我们的目的只有一个——希望我们学到更多的知识。
嵌入式心得体会15首先,我们学习的课本是嵌入式系统应用教程。我学习的体会是这样的:开始时,由于是刚刚入门,对老师书的好多东西是好奇的,好多名词也是新鲜的,不过不太懂什么意思。但是慢慢的,了解的深入让我有了更深的感触和体会。
在嵌入式的学习过程中,让我了解了什么是嵌入式系统。它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。
一开始我们就学习嵌入式的系统的基础部分,那很简单,就是一些定义或是介绍之类的。在进入第二章时,就开始学习了嵌入式开发过程中的主要操作系统——linux,在接下来的课程中,我发现嵌入式的学习过程还是蛮有趣的。在对linux的学习中,我们对它有了一点点的了解,接着就是学习一虚拟机的方式安装linux。对我来说有趣的就是安装的过程了,首先我们跟着老师的脚步走,学会了怎么安装,在自己动手进行对它的安装,这个过程是简单而有趣的。这样的开始让我对它充满了兴趣,也对以后的学习充满了信心。
其次就是安装好了之后,老师就更深一步的教我们应用了。在这是老师首先交给我们的是一些简单的命令应用,Linux具有很丰富的命令,绝大多数命令具有大量的参数。
在学习命令的过程中,只要你认真的看着老师操作还有认真听着他讲,你就会发现有些命令的操作还是很简单的,不过在操作的过程中,我也有遇到有些困难,会出现你按照书上学习的例子,将命令输入终端时会出现你不想要的结果,也就是错误的结果。这是问问旁边的同学或是懂的同学就可以解决了。
在对于这部分的学习中,让我知道了命令对于嵌入式的重要性。它是linux的重要内容,linux中所有的功能都是通过命令执行。在实际应用中,为了减少系统开销,经常不使用图形界面,此时,对系统的所有操作都需要以命令方式来执行。在嵌入式系统开发过程中,由于目标机的性能和配置比较低,因此,一般情况下目标机仅具有命令窗口而没有图形界面,对目标机的所有操作都通过命令来实现。
还有的那就是进一步学习与嵌入式系统开发相关的linux的服务,他们的启动、设置等的操作和应用。而在学习之中,我们主要介绍的是嵌入式系统中开发工程使用的TFTP、Telent和NFS服务。第一个实现的事上机位与下机位之间文件的传输、无磁盘网络的设备的启动等功能;第二个实现的事远程登录功能;第三个实现的是网络文件系统功能。
从以上的内容之中,并不难感受到我们的学习过程是由浅入深的,这对于我们的学习也有了较好的帮助。
当然,我们学习的不仅仅是这么几个内容,其中还有相关的实验内容。在我们基础的学习的过程之中,我有了这么一点的感受,总的来说就是概念加专业名词还有介绍加实验。不过你绝对不能小看那些概念和介绍,它对我们有着很重要的指导作用哦!实验那就更不用说了,它提高我们的动手能力,在实验的过程中还能让你更加理解书中的理念,这就是我学习嵌入式的感受。