嵌入式学习心得体会
西西文学整理的嵌入式学习心得体会(精选23篇),供大家参考,希望对您有所帮助。
嵌入式学习心得体会 篇1
这个题目很大,给人一种感觉我好像很成功,其实不然。实际上自己水平不高,甚至很低,但是做过了一些曲折的学习道路,同时把自己真实的学习历程表达出来,希望对后来者有借鉴的意义,甚幸!
工作三年、几成废人!
我XX年毕业于华中地区的一个理工科大学,专业是机械电子,我当时已经签了一家内陆某个省级机关工作,家里八辈是农民,并且很偏远,能够进入这样的地方是祖坟有风水。但在毕业前夕有个进入it的机会,我本想进去的,家里人极力反对,阻力可想而知。同时要交4000元的违约金,对我来说是天文数字。大学里的费用很多是借的,几乎将近一半的费用是在大学勤工俭学挣的,为了省钱,高中一个学期回家一次,大学一年回去一次。并且我个人也有特殊的人生背景(悲景更确切),这里不多说了,写十篇也写不完,同时偏离主题。这样我就参加了工作。一张报纸一杯茶的日子,几乎下班后有种很空虚和恐慌的感觉。在工作中虽然是与自己专业有点关系,但是很少。专业几乎荒废。我自己也思考,如果再不出去,自己将会成废人,只好让国家养了。两年后决定出去,但是几成废人,谁要呢,只好到学校去镀金。这是中国教育和社会的悲哀!
至于专业就改为计算机方面,听说好找工作,我说实话不是很对计算机特别感兴趣,生存第一需要。不要笑我,哈哈!
考研成绩出来,超过了国家线几十分。那个方向要两个,我第三,但是那年非碘,不面试就按分数来排,自然我落选了。其实给我面试机会也不一定要我,哈哈,自己几斤几两很清楚。
最后调剂到另外一个学校,交钱,咬咬牙,交吧!现在仍然债台高筑!
进入学校前夕
为什么要把这段列出,看后就知道了。
单位有网络,经常上网查些英语资料,在那里唯独英语没有丢很多。于是我就在网上查资料,学什么好呢,最后确定学嵌入式把,听说跟硬件相对比较紧密!而我在大学里多少学习了数字电路,单片机等,所以多少也有所利用,不会真的一无所知。当然在这之
前也自学过数据结构,计算机组成原理等。c 语言在大学就学了。哈哈这就是我的家底。
我知道自己的基础差,于是我就拿操作系统,数据库、数据结构、c++来看,机关有这个好处,空余时间多,于是平常就看书,很痛苦,没有人请教。
另外就上网到论坛上去,我就到各个专业的技术论坛,其实是电子论坛和嵌入式论坛。我几乎没有发帖,几乎把几个大型的出名的论坛的帖子翻遍了,虽然有很多重复的,我才知道嵌入式是个什么东东。这些帖子对我以后的学习产生了极大的影响。
最关键两点:
1、嵌入式是什么?
2、嵌入式需要哪些知识?
知道了这两点,好办!我就开始规划学习路线。计算机的基本理论不能丢,于是重点看组成原理,数据机构,操作系统、c++。同时论坛上了解到,实时操作系统ucos是一个很好的嵌入式操作系统,对初学者很好。于是我就买了一本书,但是代码在电脑里调不通,网上也有很多相同的问题,我就看书,分析代码,一遍不行就两遍,三遍,这样才看了入了门,才知道什么是进程。原来看操作系统书时,根本就不知道进程是个什么东西。
在这段时间掌握的东西不多,但是,对我以后的影响很大,我想起了大学时一个同学跟我说过了一句话:大学里最重要的不是学到了什么,最重要的是学会怎么学!大概是这个意思。
进入我的避难所
对我来讲,再次进入大学不再是大学,而是避难所。希望这次进入给我喘气和养精蓄锐的机会和时间。我是这样认为和实践的。
在学校我有三件事:上课,上图书馆,上网。
对于上课,学校开了很多课程,非常好,很多是名人名师讲解,于是很多同学都想学,都去听。我也考虑过,最后放弃。我是这样认为的,时间是有限的,什么都想学,什么都学不成。于是我把我自己学的课进行了分化,一般的课程通过就行,重要的一定好好学。我希望不要什么争论学习课程多和少的问题,这仅仅是我的看法。所以我的成绩应该是很差的。分数低。好在后来的单位没有要我的成绩单,否则就惨了。
我个人感觉是上图书馆的效率比在寝室里高多了,这是我的经验。
嵌入式学习心得体会 篇2
本人大学学的是电子信息科学与技术专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下C语言语法,学完之后还不知道什么是C语言,只记住了,char,int,string等占几个字节,if, for, while循环什么的,感觉也就能算一些小学就会的题目,全国计算机等级二级也就糊涂的过了。我这个专业没学过C++,一开始不知道什么是向对象,什么叫面向过程,这可能让大家笑话了。不过这说的是实话,大学的时候比较喜欢动手,喜欢硬件方面的东西,也喜欢看书。
在大一的时候就听学长说,单片机很难学,在没事的时候就从图书管借了本关于51的书,一开始还真是不怎么懂,然后硬着头皮去看,当我把51的结构看完了,就不像一开始那样一头雾水了,自己在纸上把51的结构图默画一遍,然后再把各个寄存器功能写一下,各个功能口的结构也画一遍,然后就不觉得51有什么难了。其实有些时候不是这个东西你不会,而是在不会的时候自己先告诉自己这个太难了,自己先放弃了。我们学习51芯片,是为了以后的打基础,知道是怎么通过配置寄存器来实现功能。
大二下学期的时候,我们开了51的课,这个课几乎就没怎么去,因为我认为没有必要去听自己会的东西了。后来听别人说avr的资源会比51的丰富的很多,所以就想试试,看看有什么难的,就从网上买了本马潮老师《AVR单片机嵌入式系统原理与应用实践》,一边看书,一边想自己画一个板了,一开始想实现一个点阵屏,实现滚动效果,后来想想做个板也花不少钱呢,为什么不多加一些功能呢,还能多学到些知识,所以就加了温感,红外,铁电存储器等并把所有的扩展口都扩展了出来,备以后用,那时还挺自豪的呢,同学们都很羡慕,不过现在想想其实也没什么了。
大学也听说过嵌入式这个词,不过不太明白是什么意思,09年的时候从网上找到中嵌视频,有四张DVD(大约13G),下载下来后,从头到尾的看了一遍,没什么印象,只记得讲一些不知所云的函数,然后莫名其妙的讲怎么使用那个44b0的开发板,不过听完了,还是有很大收获的,就有一种想装一个linux的冲动,我是大二下学期才有的`自己电脑,不过电脑的配置比较低,1g内存,跑虚拟机就像个蜗牛,所以就想着怎么才能装个linux,自己用XP习惯了,如果全换了又舍不得,那时从书上知道linux的文件系统和windows不一样,只有一个根分区,所以也害怕一装linux全盘就被格式化了,不过最后还是欲望战胜了担心,买了张redhat 9的光盘,小心的装这个系统,里边的英文也不是太难,还是知道大概意思的,所以一步步的装,最后装到我的硬盘的最后空间,重新启动,竟可以选择进入哪一个系统了,从这之后,自己就不害怕怎么装系统了,应了那句言,纸上得来终觉浅,绝知此事要躬行。
所以我认为,买一个开发板是完全有必要的,拿到实物操作一下就不会感觉太抽象了。
后来也想学学arm,但不知道arm是什么东西,所以就买了本《从51到arm》,讲的是关于arm的大体结构,看完后感觉,原来arm就是一个速度更快,接口更丰富的单片机啊。
如果想做linux设备驱动的同学应该对arm硬件有一些了解。如果对驱动不感兴趣,完全没有必要去看。交叉编译器会帮我们做好这些事情,他比我们更了解arm结构嵌入式。
大三下学期开始准备考研了,所以自己这些兴趣就先放下了,报的北邮的信通学院通信专业,当时就是想一定要上个好学校好专业,也没想太多,结果考了的成绩差了点,没有被录取,也不想调剂一个二流的学校,然后就参加工作了,工作中每天都用的到开发板,当我看到一个小板上还可以跑系统的时候感觉很不可思议,以为要很大工程。后来边工作边学习,每天都要看电脑看到眼发疼,晚上也都差不多十二点时才睡觉。感觉到累,不过也感觉到自己在进步
闲话有点多了,说了很多都是自己大学那点破事。
听很多的初学者说不知道从哪里开始,学习嵌入都要学哪些东西,从网上搜了一下,一大堆的东西要学,一下就推荐十几本书,说看完这本书怎么怎么样,看完那本书怎么怎么样,一下子就给初学者给吓住了,其实完全没必要把网上的那些东西全部看一遍,那样又费时,又感觉工程太大,让初学者没有信心去把每一种都看完。网上说的些方面都要知道,不一定全部都掌握,我们可以退成求其次,每一个都知道一些,当然会的越多越好。今天学点这个明天学点那,换着样来也不会觉得烦。而且还能感觉到每天都有收获。
嵌入式学习心得体会 篇3
目前最常见的嵌入式LINUX方面,我认为大概3个:
1、嵌入式LINUX上层的应用,包括QT的GUI开发
2、嵌入式的LINUX系统开发
3、嵌入式的驱动开发
学习嵌入式:
第一、C语言要掌握(硬件略懂),C语言是所有编程语言中的强者,单片机,DSP,类似ARM的种种芯片的编程都可以用C语言搞定,因为它可移值性强,编译效率高,运算速度快,便于实现理更复杂的的数据结构。上层应用和数据存储,我推荐使用C++语言。
第二、学习一种嵌入式的处理器架构,个人推荐32位的处理器,像ARM,因为嵌入式开发8位的处理器显得有点低端,大多数只能用作简单的工控.
第三、学习一种嵌入式操作系统,像LINUX,WINCE等都可以,LINUX更好。
ARM是一种微处理器,已遍及工业控制,消费类的电子产品,通信,网络,无线等各类的产品基于ARM技术的微处理器已占75%以上的市场份额,可见其技术已逐渗入到我们生活中的各个领域,像手机就是用ARM7 ARM9 ARM11的微处理器技术开发的。嵌入式系统最常见的ARM系列,ARM7,ARM9,ARM11,cortex-A8等。
我们都是曾经从大学里走出来的迷茫羊羔,工作以后我才知道,在大学里不是学到了什么,而是学会怎么去学,相信自己,理清自己的思路,根据自己的性格,剖析自我适合往哪方面发展。
嵌入式学习心得体会 篇4
嵌入式学习心得体会,4月10号,为期一个阶段的Linux开发基础培训课程圆满结束,回首这些天所留下的点点滴滴,感触深深,学习上知识点的积累,灵活运用的过程中感受到了Linux操作的快速高效性能,这也是我所追求的效率!
当初初涉培训课程的第一门课程时,都说Linux操作很繁琐复杂,心里总有些顾忌,带着种种不安与些许拼博的决心,开始了自我提升阶段的"充电",由徐海兵老师教授我们基础课程的培训,我们则像着小学生般认真的记着笔记,仔细听着并学会如何去在实践中运用所学的Linux下的各种强大的命令集。
在Unit 1中,徐老师详细生动的为我们讲述了有关Linux的诞生、初成长以及辉煌的发展至今,今后应用范围则愈来愈广泛,讲解了为Linux这个伟大的OS做出巨大贡献的一位位出色的、伟大的人物,他们那种学习钻研的精神、锲而不舍的信念、勇于把握住难得的机会,从小处着手,踏踏实实的创造出了对人类科技发展做出卓越贡献的Linux(Unix)系统,他们的种种,都值得我们去深刻反省、刻苦学习、传承并永远发展下去。
查看ip地址和重启网络服务是我学的第一个命令:ifconfig eth0、ifconfig eth0 IP地址、service network restart。了解到远程登录软件可用xmanager。secureCRT是我们常用的,安装好后利用其登录到了Red hat Linux,需要知道Linux主机的ip地址。徐老师为我们介绍了重要内容:SHELL,即运行程序的程序,如echo $SHELL可查看SHELL的环境变量是csh还是bash。(学习心得 )指令pwd可查看当前所在路径,passwd:更改Linux下的密码,仅限root用户有此权限,当然我们是利用虚拟机VMware程序来运行Linux OS的,懂得了如何设置虚拟机的网卡设置、暂停、恢复、全屏等。
简单的学习后进入Unit 2,
命令行的句法让我懂得了用法规则,一系列的命令功能强大:date显示当前年月时间星期之类的;more指令与less重要但不常用;cat用于查看短小的文件内容,常用!mkdir命令用于在当前目录下创建新的目录;ls显示当前目录下所有文件;cd更改文件路径,如cd 、cd .当前目录;rmdir删除空文件夹;rm指令很强大,用于删除空目录及非空目录下的指定或全部文件;man真男人,帮助手册;history指令用于显示编写过的命令集,以history序号可显示序号所指命令;echo回写命令,很重要,我需要继续学习;exit指从多重SHELL退出来;Linux账号下,可以增加用户、删除用户、设置密码:useradd、userdel、passwd。
注:所有的用户的家目录都在/home下面,唯独root的家是在/root.点文件都是些SHELL的脚本程序,也称隐藏文件;环境变量常见的有:HOME PATH PWD,懂得了绝对路径与相对路径的对比概念。
最后进入Unit 3、
文件与文件处理的学习中,知道了Linux下支持的六种文件类型:普通文件、目录、设备文件、命名管道、符号链接、socket;Linux下文件系统的组织:倒立的树形结构:/ /bin /boot /dev /home /lib /proc等文件目录,ls –l指令很好很强大,显示文件类型与权限、所有者、字节大小、时间及文件名;touch可创建空文件,复制文件用指令cp,可选-i、-r等;重命名文件使用mv [-i];du显示当前目录所占空间大小;wc命令显示列表中文件的行数、字数、字符数;追加:cat [文件列表] 》目标文件;find指令与grep重要,暂未学习,自己在实践中学习,文件访问权限有:r w x;chmod指令可修改访问权限,如chmod 777 -R文件名。
输入输出重定向每个命令默认打开三个文件:标准输入stdin,标准输出stdout,标准错误stderr,键盘为标准输入,而控制台则是标准输出,文件描述符分别是0,1,2;最重要最常用的为输出重定向>与错误重定向2> ;echo添加的内容>/ 》文件;Linux过滤器和管道:管道操作符:| ;即将某个命令的输出与某个命令的标准输入相连接,从而实现管道功能,例如ls –l |wc;管道和重定向操作符可同时用于一个命令行。
嵌入式学习心得体会 篇5
学期开始,我们开始学习《嵌入式系统及应用》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,很多的概念都比较模糊,等到学期结束开始做嵌入式课程设计时,真是茫然无从下手,自从拿到设计主题后,我就像热锅上的蚂蚁,一个字“急”。最后实在没有办法,逼着自己去学习,查资料,总算对嵌入式有了浅层理解。
嵌入式系统本身是一个相对模糊的定义,一个手持的MP3和一个PC104的微型工业控制计算机都可以认为是嵌入式系统。总体来说,嵌入式系统是“用于控制,监视或者辅助操作机器和设备的装备”。一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。
在了解了基础知识之后,我开始进行上机操作,当然,其中遇到很多的难题,很多东西都是第一次接触,又没有别人在旁边指导操作,完全凭借自己去摸索练习。其中的困难可想而知。然而坚持就是胜利,牙一咬眼一闭坚持做下去,而通过本次实验,我感觉收获还是蛮多的可能我对于嵌入式的知识学习的还是不太多,但是这之外的东西收获颇丰。它让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓“一份耕耘,一份收获。”没有付出,何谈回报呢?再者,通过本次实验,我也学会了如何去分析问题,如何找出自己设计中的不足,继而去排除解决问题,这就是一个自我学习的过程。当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。
当然,在这其中,我也发现自己的许多不足之处,由于学期伊始我没有好好学习,才落到如此地步,这也可以说是一个教训吧!我相信在以后的学习工作中,我一定会端正自己的学习态度,一丝不苟的去对待每一件事。只有做好足够的准备,才能事半功倍!
嵌入式学习心得体会 篇6
本人本科学的是电子信息工程专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下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个部分。内核结构是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。任务管理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。μC/OS-II中的最小时钟单位是timetick(时钟节拍),任务延时等操作是在时间管理这部分完成的。任务之间通信与同步为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。μC/OS-Ⅱ操作系统是在main()中建立的,首先要系统初始化,OSInit(),初始化系统所有的变量和数据结构。然后进行任务的创建,OSTaskCreate();之后进行多任务的启动,OSStart()。在进行任务的并行处理的时候,一个任务的程序是顺序执行的,而不同任务的程序却是并行执行的。从应用程序的观点来看,此处的并行处理只是一个假象。而实际上它是通过实时操作系统的内核控制任务之间的切换来实现的,也就是任务调度啦。
μCOS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。当创建新任务时,或当前任务调用一些可能把自己挂起的系统函数(如OSMBoxPend)时,内核就要进行任务切换。在上述的场合,任务级的调度是由函数OSSched()完成的。
在一个多任务的应用工程中,任务之间并不是完全独立的,它们存在一些需相互配合的处理,这些相互配合是靠任务间的通讯或同步,信号量、邮箱、消息队列可以实现这种任务与任务,任务与中断服务函数间的通讯与同步。
邮箱可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。而信号量不可以,其只能发送信号量。消息队列可以使一个任务或者中断服务子程序向另一个任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有所不同,实际上,我们可以将消息队列看作多个邮箱组成的数组,只是它们共用一个等待任务列表。
我们实验所用的ARM开发工具是ADS1.2。ARMADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,支持软件调试及JTAG硬件仿真调试、支持汇编、C语言、C++源程序,具有编译效率高、系统库功能强等特点。在安装ADS1.2的时候出现过小问题,当时我的电脑是64位的,安装完之后显示不了,后来百度查找到原因,竟然是文件夹放错地方,应该放在Program Files(x86)这个文件夹中。后来有同学问我这方面的问题,但是发现他们的ADS1.2安装不了的原因是因为Licence弄错了。在打开CodeWarrior for ARM Developer Suite的时候,一定要记得选DebugInChipRAM,否则Make都出现很多error,而且那些几乎都是未定义函数的错误。之后就进行Debug,调试成功之后会跳出AXD的界面,选择Options里面的ConfigureTarget,再添加H-JTAG的文件,之后点击GO,程序会跳出汇编语言的界面,再点击下就跳到C语言程序入口地址,之后再点击下GO,程序就开始跑起来。前面所述的这些步骤是理想情况下程序自身没有发生错误,当然在调试过程中,还是有很多硬件上的问题,一方面是有些开发板可能用久了,用JTAG并口连接的时候接触不良,很容易自动掉线,常出现未连接设备的的Error,还有一方面是跑程序过程常会出现兼容性的问题,导致程序AXD调试时候会出现卡在某个部分一直进入死循环,这个后来是解决了,但是偶尔还是会出现这个BUG。
通过这学期对嵌入式的学习,我发现自己尚未掌握的知识点还是蛮多的,尤其是对μC/OS-II的移植方面,我只是理论上粗略了解,没有经过实验的操作。还有对存储器加速模块(MAM)这方面不够了解,主要一方面当初在做消息队列采集实验(KeySem_SampdataQeue),这个模块被代替掉,不需要使用它,所以后来也没有去掌握相关知识点。对于任务就绪算法这部分,我只是上课的时候听“懂”了,课后自己再看完全懵了。对于CAN总线调试的部分,老师上课没有讲到这部分的介绍与应用,但是后来通过自己对实验室师兄们所做的课题初步了解,发现我自己有必要去弄懂它的构造和原理。
“看书不要希望一次就会,一次就明白是什么意思,也不要死记硬背,看不明白也没关系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就记住了,遇到的少的,忘记也就忘记了。”依然记得当初不懂怎么解决某个问题的时候请教李硕师兄,师兄对我说的这番话。自己在μC/OS-II这部分内容挣扎了好久,现在想想,觉得当初不应该一上来就直接阅读内核源代码,看了一些自己把头撞破也想不明白的事,这样直接正面打击我学习嵌入式的积极性。学习啊,还是得要循序渐进。如果你想学习嵌入式一定要有块学习板。看再多的视频,看再多的书,也不如自己动手试一下,看着很简单的东西,做起来就可能遇到很多的问题,遇到问题找到原因,解决问题,只有这样才能学到东西。记得我第一次仿写led的驱动,想自己试一下,可是自己一试,就出了好多的问题,那个led弄了我一天才把led灯点亮。所以不要眼高手低。
对于初学者,有一点小建议,我们拿到一个开发板,很兴奋也很激动,想法自然也很多,想用开发板实现自己的这个想法,实现那个想法,然后又不知道从何下手,然后就去论坛中发一个贴,最后等着别人去回复,当见没人回复就开始抱怨。这种做法是不可取的,有想法是好的,我们要实现自己的想法也是有前提的,首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到问题,再去发贴问,这样也显得咱们有水平。比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,就是人家把代码给咱,咱也不明白是怎么回事啊。见多识广,熟能生巧。多看代码,要从代码中读出代码的意思来。自己平时也要多写代码,多练习(这一点我做的不好,写的少)。
最后,我想说的是嵌入式系统的学习和研究一旦我们达到了一定的水平后,其实很简单,就是如何去看CPU和相关芯片的Datasheet!
嵌入式学习心得体会 篇7
这个题目很大,给人一种感觉我好像很成功,其实不然。实际上自己水平不高,甚至很低,但是做过了一些曲折的学习道路,同时把自己真实的学习历程表达出来,希望对后来者有借鉴的意义,甚幸!
工作三年、几成废人!
我XX年毕业于华中地区的一个理工科大学,专业是机械电子,我当时已经签了一家内陆某个省级机关工作,家里八辈是农民,并且很偏远,能够进入这样的地方是祖坟有风水。但在毕业前夕有个进入it的机会,我本想进去的,家里人极力反对,阻力可想而知。同时要交4000元的违约金,对我来说是天文数字。大学里的费用很多是借的,几乎将近一半的费用是在大学勤工俭学挣的,为了省钱,高中一个学期回家一次,大学一年回去一次。并且我个人也有特殊的人生背景(悲景更确切),这里不多说了,写十篇也写不完,同时偏离主题。这样我就参加了工作。一张报纸一杯茶的日子,几乎下班后有种很空虚和恐慌的感觉。在工作中虽然是与自己专业有点关系,但是很少。专业几乎荒废。我自己也思考,如果再不出去,自己将会成废人,只好让国家养了。两年后决定出去,但是几成废人,谁要呢,只好到学校去镀金。这是中国教育和社会的悲哀!
至于专业就改为计算机方面,听说好找工作,我说实话不是很对计算机特别感兴趣,生存第一需要。不要笑我,哈哈!
考研成绩出来,超过了国家线几十分。那个方向要两个,我第三,但是那年非碘,不面试就按分数来排,自然我落选了。其实给我面试机会也不一定要我,哈哈,自己几斤几两很清楚。
最后调剂到另外一个学校,交钱,咬咬牙,交吧!现在仍然债台高筑!
进入学校前夕
为什么要把这段列出,看后就知道了。
单位有网络,经常上网查些英语资料,在那里唯独英语没有丢很多。于是我就在网上查资料,学什么好呢,最后确定学嵌入式把,听说跟硬件相对比较紧密!而我在大学里多少学习了数字电路,单片机等,所以多少也有所利用,不会真的一无所知。当然在这之
前也自学过数据结构,计算机组成原理等。c 语言在大学就学了。哈哈这就是我的家底。
我知道自己的.基础差,于是我就拿操作系统,数据库、数据结构、c++来看,机关有这个好处,空余时间多,于是平常就看书,很痛苦,没有人请教。
另外就上网到论坛上去,我就到各个专业的技术论坛,其实是电子论坛和嵌入式论坛。我几乎没有发帖,几乎把几个大型的出名的论坛的帖子翻遍了,虽然有很多重复的,我才知道嵌入式是个什么东东。这些帖子对我以后的学习产生了极大的影响。
最关键两点:
1、嵌入式是什么?
2、嵌入式需要哪些知识?
知道了这两点,好办!我就开始规划学习路线。计算机的基本理论不能丢,于是重点看组成原理,数据机构,操作系统、c++。同时论坛上了解到,实时操作系统ucos是一个很好的嵌入式操作系统,对初学者很好。于是我就买了一本书,但是代码在电脑里调不通,网上也有很多相同的问题,我就看书,分析代码,一遍不行就两遍,三遍,这样才看了入了门,才知道什么是进程。原来看操作系统书时,根本就不知道进程是个什么东西。
在这段时间掌握的东西不多,但是,对我以后的影响很大,我想起了大学时一个同学跟我说过了一句话:大学里最重要的不是学到了什么,最重要的是学会怎么学!大概是这个意思。
进入我的避难所
对我来讲,再次进入大学不再是大学,而是避难所。希望这次进入给我喘气和养精蓄锐的机会和时间。我是这样认为和实践的。
在学校我有三件事:上课,上图书馆,上网。
对于上课,学校开了很多课程,非常好,很多是名人名师讲解,于是很多同学都想学,都去听。我也考虑过,最后放弃。我是这样认为的,时间是有限的,什么都想学,什么都学不成。于是我把我自己学的课进行了分化,一般的课程通过就行,重要的一定好好学。我希望不要什么争论学习课程多和少的问题,这仅仅是我的看法。所以我的成绩应该是很差的。分数低。好在后来的单位没有要我的成绩单,否则就惨了。
我个人感觉是上图书馆的效率比在寝室里高多了,这是我的经验。
嵌入式学习心得体会 篇8
嵌入式学习心得体会,4月10号,为期一个阶段的Linux开发基础培训课程圆满结束,回首这些天所留下的点点滴滴,感触深深,学习上知识点的积累,灵活运用的过程中感受到了Linux操作的快速高效性能,这也是我所追求的效率!
当初初涉培训课程的第一门课程时,都说Linux操作很繁琐复杂,心里总有些顾忌,带着种种不安与些许拼博的决心,开始了自我提升阶段的"充电",由徐海兵老师教授我们基础课程的培训,我们则像着小学生般认真的记着笔记,仔细听着并学会如何去在实践中运用所学的Linux下的各种强大的命令集。
在Unit 1中,徐老师详细生动的为我们讲述了有关Linux的诞生、初成长以及辉煌的发展至今,今后应用范围则愈来愈广泛,讲解了为Linux这个伟大的OS做出巨大贡献的一位位出色的、伟大的人物,他们那种学习钻研的精神、锲而不舍的信念、勇于把握住难得的机会,从小处着手,踏踏实实的创造出了对人类科技发展做出卓越贡献的Linux(Unix)系统,他们的种种,都值得我们去深刻反省、刻苦学习、传承并永远发展下去。
查看ip地址和重启网络服务是我学的第一个命令:ifconfig eth0、ifconfig eth0 IP地址、service network restart。了解到远程登录软件可用xmanager。secureCRT是我们常用的,安装好后利用其登录到了Red hat Linux,需要知道Linux主机的ip地址。徐老师为我们介绍了重要内容:SHELL,即运行程序的程序,如echo $SHELL可查看SHELL的环境变量是csh还是bash。(学习心得 )指令pwd可查看当前所在路径,passwd:更改Linux下的密码,仅限root用户有此权限,当然我们是利用虚拟机VMware程序来运行Linux OS的,懂得了如何设置虚拟机的网卡设置、暂停、恢复、全屏等。
简单的学习后进入Unit 2,
命令行的句法让我懂得了用法规则,一系列的命令功能强大:date显示当前年月时间星期之类的.;more指令与less重要但不常用;cat用于查看短小的文件内容,常用!mkdir命令用于在当前目录下创建新的目录;ls显示当前目录下所有文件;cd更改文件路径,如cd 、cd .当前目录;rmdir删除空文件夹;rm指令很强大,用于删除空目录及非空目录下的指定或全部文件;man真男人,帮助手册;history指令用于显示编写过的命令集,以history序号可显示序号所指命令;echo回写命令,很重要,我需要继续学习;exit指从多重SHELL退出来;Linux账号下,可以增加用户、删除用户、设置密码:useradd、userdel、passwd。
注:所有的用户的家目录都在/home下面,唯独root的家是在/root.点文件都是些SHELL的脚本程序,也称隐藏文件;环境变量常见的有:HOME PATH PWD,懂得了绝对路径与相对路径的对比概念。
最后进入Unit 3、
文件与文件处理的学习中,知道了Linux下支持的六种文件类型:普通文件、目录、设备文件、命名管道、符号链接、socket;Linux下文件系统的组织:倒立的树形结构:/ /bin /boot /dev /home /lib /proc等文件目录,ls –l指令很好很强大,显示文件类型与权限、所有者、字节大小、时间及文件名;touch可创建空文件,复制文件用指令cp,可选-i、-r等;重命名文件使用mv [-i];du显示当前目录所占空间大小;wc命令显示列表中文件的行数、字数、字符数;追加:cat [文件列表] 》目标文件;find指令与grep重要,暂未学习,自己在实践中学习,文件访问权限有:r w x;chmod指令可修改访问权限,如chmod 777 -R文件名。
输入输出重定向每个命令默认打开三个文件:标准输入stdin,标准输出stdout,标准错误stderr,键盘为标准输入,而控制台则是标准输出,文件描述符分别是0,1,2;最重要最常用的为输出重定向>与错误重定向2> ;echo添加的内容>/ 》文件;Linux过滤器和管道:管道操作符:| ;即将某个命令的输出与某个命令的标准输入相连接,从而实现管道功能,例如ls –l |wc;管道和重定向操作符可同时用于一个命令行。
嵌入式学习心得体会 篇9
首先,嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式有如下几个突出的有点1.系统内核小,2专用性强,3系统精简4高实时性OS5嵌入式系统的应用程序可以没有操作系统直接在芯片上运行,6嵌入式系统需要开发工具和环境。
嵌入式系统是近几年才风靡起来的,但是这个概念并非新近才出现。从20世纪七十年代单片机(最早的单片机是Intel公司的 8048,出现在1976年)的出现到今天各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。经过30年的发展,嵌入式技术已经日趋成熟,在中国嵌入式机一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
其次,嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。
嵌入式系统是软硬结合的学科,通常有两类人会去专研嵌入式:一类是学电子工程、通信工程等偏硬件专业的,另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。我是软件专业的学习嵌入式,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。嵌入式应用在很多方面,具体的可以分为工业控制,交通管理,信息家电,家庭智能管理系统,POS网络及电子商务,环境工程与自然,机器人,机电产品方面应用等方面。其中目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。例外还有很多地方用到了嵌入式系统,最近飞利浦和ARM共同推出32位RISC嵌入式控制器,适用于工业控制,采用最先进的0.18微米CMOS嵌入式闪存处理技术,操作电压可以低至1.2伏,它还能降低25%到30%的制造成本,在工业领域中对最终用户而言是一套极具成本效益的解决方案。
嵌入式学习心得体会 篇10
一,如果非常多人都想做Linux,那么就要对Linux要比较熟悉。
这个熟悉不是说对内核,对代码有多了解,而是至少要会基本的操作,非常难想象让一个连编译程式,编辑文本文件都非常困难的人去弄嵌入式的软件吧。总之在进入嵌入式这个领域之前要对自己评估一下,看看自己是不是准备好了去学习嵌入式相关的东西。
二,要舍得花钱买研发板。
公欲善其技,必先利其器。也就是说,理论上可能掌控了非常多,不过不去实践,那只能是纸上谈兵,这样是无法学好嵌入式的。弄个研发板自己摆弄摆弄,即使什么都不懂,也能按照说明书把厂家给的程式下载到研发板上运行运行,先知其然,然后再通过具体的学习知其所以然,这样能避免学习中的枯燥。目前市场上研发板的种类繁多,相同CPU的板子价格却相差非常多,令非常多人都不知道怎么选择购买。
我的看法是,尽量买大厂的产品。因为在初学阶段学习资料少是个非常头疼的事,非常多时候都是无从下手,不知道怎么去做,那么随研发板附送的资料就非常重要了。大厂技术比较强,附带的程式都是能在板子上运行的,例如我买的优龙ST2410这个板子(不是广告啊),光盘上带了一个bootloader,个2.4.18的内核,更有一个cramfs,这些程式的原始码都是厂家事先做好或修改好的,完全适用于初学者使用。
而有些实力不行的小厂家的资料不齐全,我们学习的时候需要自己弄bootloader什么的,那入门就非常难了。不过大厂的板子都非常贵,大家能根据预算来选择适合自己的研发板,不过无论怎样,在学习上投资都是值得的。
三,不要事无巨细的学习,要有明确的目标。
我最开始给自己制定的学习计划是:学习arm体系结构->学习arm汇编->自己移植bootloader->自己移植kernel->做应用,不过不久就被我否决了,因为这个过程实在是太枯燥太痛苦了,在学习资料少,没人指导的情况下根本无法进展。于是我决定使用厂家的代码来“玩”研发板,自己弄些应用上去。先是完全使用厂家给的bootloader,kernel,cramfs。之后发现cramfs中的一些控制Linux初始化的文件不符合我的需求,于是修改cramfs,删除了QT,修改了网卡初始的IP地址,安装到板子上能运行了之后就开始尝试做一些应用,比如helloworld这样的程式。
最后移植了一个mpg123到板子上。完万能在不知道原理的情况下来使用板子的一些功能,等熟悉板子了再回头学习其中的'道理,这样就容易一些。学习嵌入式就是这样,根据问题来选择学习的内容,否则会非常盲目,最后就失去信心了。
四,要有耐心。
不能否认,在学习一门自己完全不了解的技术是非常烦人的。嵌入式的复杂在于他的交叉性。也就是说为了研究某一个嵌入式的问题,你有可能得学习非常多其他的知识,比如操作系统,编译,体系结构等等,那么对于这种情况需要我们有足够的耐心。我在交叉编译mpg123的时候前几次无论怎么修改makefile都无法编译成功,最后我发现我用的arm-linux-gcc是2.9版本的,比较老,于是我换成新的3.4.1版本,就ok了。
以上是我初学嵌入式所获得的一些浅显的经验,基本都是基于软件方面的,硬件的DIY我就不行了。希望我的经验能给大家一些帮助。
刚刚和LUPA的嵌入式版主要了uboot的代码,接下来的我想研究研究厂家的bootloader代码然后移植一下uboot。
嵌入式学习心得体会 篇11
嵌入式学习心得时间过的紧快,在粤嵌教育已经培训,有5个月了培训期间赢来很多,也认识了班上的自学大神,经过系统的学习,老师的细心指导,我的付出努力,对于嵌入式上,学到很多实用的知识在动手操作能力也加强了,不仅在专业领域技术方而有了很大进步,而且在实践操作方面我也对嵌入式有了更深入的了解。也许这5个月是这儿我在外而学习和生活最宝贵的时间。
在校两年,读于电子信息韦尔泰宗工程技术专业的我,就觉得这研习专业领域学的知识太广了,不管基础还是动手操作,都要比较灵活。在校期间,学习单片机,传感器,C语言,嵌入式应用技术等课程。感觉学起来,对我来说接受还是比较快的,那时就有想过:学的多不如学的短萼,也许高中学生对课程多于理论为主,理解它的原理和基本计算机程序方法方式。其实,我还是有努力去学的,可以说,在校科任老师都教会我很多专业知识,为我将来的学习和发展打好基础。
在大三期间,为了更为拉著明确自己要走的方向,去培训嵌入式软件技术开发。也许将要投身嵌入式行业的我,就注定代价这条路要付出不少时间和精力,但如果我好求比较强,接受还行,就不停给自己送祝福,努力!要去培训嵌入式,时,我从网上也对它有更加的想像也看下大学的嵌入式应用技术书,嵌入式系统是软件和硬件的综合体,以应用为中心,以科学计算为基础,软硬件可裁剪,改变应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用负载计算机系统。
刚开始嵌入式学习,对Linux系统的'专业知识加于巩固。一些简单的代码,C语言,对于嵌入式软件还是硬件开发的人员,对C语言的掌握这个是沃苏什,卡的,特别是对于以后致力于嵌入式软件开发的人现在绝大部分全都是用C语言。在下来两个月就对Linux系统,数据结构、系统移植的方法、A8的体系结构、Linux内核及驱动设计、 android> C+Java的JNI应用编程的系统学习。在每学个阶段就作一个考试,基本知识对前面所学的知识进行复习,有些会做一个简单的小项目,学以致用。知识量还是比较多,但教学也比较快,有些知识还没消化完,第二天又接受新知识,对于能在课上基本上就可以对知识完全懂的并不多,晚上都用一个半小时来复习。经过5个月系统的学习,嵌入式技术方面有了很大进步,实践操作方而也对嵌入式有了更深入的了解。在最后一个月,基于A8(S5PV210)的嵌入式智能家居系统制作。
下而我谈谈在粤叠砌教育的培训感受,我培训的地点是在科学城粤嵌教育培训中心的多媒体课室里,这里有研习环境非常好,在紧张的学习的整个过程中,你可以得到名师的督促,也可以体会到第一流企业高质量的培训。在课堂上,老师们认真的演说,以及手把手地教导,使每个学生都能够扎实地掌握到嵌入式的各方而的知识。而粤嵌幼儿教育教育的老师也是操作实践为主,实践是非常重要的,只有把知识掌握到位,才能达到学习的目的。
感谢粤嵌教育机构,感谢粤嵌教育老师。
嵌入式学习心得体会 篇12
研究嵌入式系统已经有快两年的时间了。很庆幸自己当初选择了嵌入式系统作为自己的研究和职业方向,可以说它是一种催化剂,让我自身的修养和研究能力都有了很大的提高。
在嵌入式系统的大门前,我只能算是刚刚看到这个大门的台阶,但这段小小的距离让我受益颇多,现将其中心得奉献出来,欢迎高手前辈们指正,以供刚接触的新人参考。
在写之前,想先写一句话,千万不要以为你是天才,所谓天才即胜别人N倍的人,如果你真认为你是天才,请以天才的标准来要求自己,将自己付出和别人的比例以N:1来进行。
(1)学习与生活心态
很多朋友都是在刚步入大学校门开始接触计算机或者其他。大学是一个很让人迷茫颓废的地方,可能你在高中踌躇满志,但在大学的管理机制下却心态渐糜。能够在大学(大一)里找到自己人生之志的同学有多少?目标要明确,不要得过且过,不要追逐热门的东西。
不管在什么时候,心里都要有自己的信念和理想,不要被其他东西左右了自己。要从兴趣和竞争出发,因为这才是你产生动力源的地方。学东西时,要让自己先喜欢上它,要学会享受学习它的时间,喜欢乔XXX的都知道,乔老爷子最常说的一句就是要享受比赛的时间。
因为只有你喜欢上了它,享受了它,才不会被它所产生的压力压倒自己,不要产生一种厌恶的心理。而且心态要调整,不要一味的蛮学,死学,在没有什么兴趣学的时候可以先玩几天,在回过头来,或者用其他的方式来转换。要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始,不要为高速开发的一些现象所迷惑,那些都只是软件的功劳。
我个人认为搞编程,英语和数学很重要,大家一定要时时的抓,至于怎么抓那就是另外一回事了,当然其他的知识也要汲取,可以多接触点天文,地理,人文方面的东西来补充自己。转换的生活方式。要学会生活,在人的一生中,都会遇到一些很不开心的事,或者大大小小的意外,孙子兵法里面一句大意就是说,战场上要会将劣势转成优势,即最大的劣势很可能就是你的优势所在。
一个打击你可以把他变为前进的动力,不必为了一点挫折和捶胸顿足,不必为了一点小事争吵不休。空闲的时候可以躺下来看看天,你就会明白自强不息,厚德载物之理。(看到一些为了失恋或者其他而堕落的人真的很难受和可惜)。
要给人以帮助。别人有困难时或者一些举手之劳在自己解决范围内的尽力帮之,这对自己不会损失什么,相反在对方心里能够树立你的形象和增加好感。记住,给人之恩时也是给你自己铺路,这个世界不是靠你一个人可改变的。
(2)编程语言的选择语言的争论。
很多初学择,老是在学习何种语言上举棋不定,试问,中国牌子有几个不被骂的,试问,世界上哪部影片没人说他坏话的?术业有专攻,各司其职,每个语言的出现肯定都有自己价值和领域的`范围,不同的只是价值和领域的高级和大小。
就像高,矮,胖,瘦组成一个“型”。但是技术是进步的,这个进步也是在旧的基础上。放心,技术再飞跃也不会今天奔I,明天扣肉的迅速,在学习的同时也要时时关注整个语言界的走势(貌似哪个伟人说的与时俱进),保持一种同步曲线的前进。语言能干什么?能问这句话,很欣慰。
表明你是从基础学起才会问出这样的话来。但换而言之你一开始对这门语言调查的信息不足。庙算者胜,对自己身边的事物了解是非常重要的,这也能说明说你的教材或者教导你的人不够充分。如果是我对新手交流,我会花足时间让他明白这门语言是什么,能干什么,整个体系等等。
这样在学的时候,对同一条语句上的理解你可能跟别人就不一样了,因为你知道这门语言的体系架构,你可以从更多的特性角度去挖掘使用它。提高自己对语言阅读能力。如何快速的进步?可以告诉你没有一步登天的办法,但是也可以告诉你如何让你快速掌握你所学的技术。多读他人代码,多领悟他人思维,多给自己出难题,多几种方法来解问题,多将语言的思想和身边的事物联系起来。想想你是怎么掌握普通话的,方法就不具体说了。
编程的思维。计算机是充满诱惑的东西,很多人都说热爱计算机,那只是它的表面,你热爱的只是他的一种扩展性的东西。能学计算机我很高兴,因为计算机从某种意义上来说将空间的距离给消除掉了。这里没有流血,没有牺牲。你可以以一种艺术家的思维来塑造它,可以以侦探的逻辑思维来解决它,可以以一种战争狂人的思维来摧毁它。
你可以将你的这种思维体现在代码和整个布局里,不要惊异别人代码思维的异风,你也有自己的思维风格,你也可以,你也可以用自己代码让别人惊异。记住你学东西时更多的要体会他的思维,比如数学,微积分,离散,无数的定理,你学完以后可能永远都用不到,但是你可能有这种感觉,在你碰到某一问题时,这一问题的性质和你学到的东西很类似,但是中间就是差了一点东西,对了,这就是它思维上的一种运用,一种抽象,一种转换。
嵌入式学习心得体会 篇13
首先,嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式有如下几个突出的有点1.系统内核小,2专用性强,3系统精简4高实时性OS5嵌入式系统的应用程序可以没有操作系统直接在芯片上运行,6嵌入式系统需要开发工具和环境。
嵌入式系统是近几年才风靡起来的,但是这个概念并非新近才出现。从20世纪七十年代单片机(最早的单片机是Intel公司的 8048,出现在1976年)的出现到今天各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近30年的发展历史。经过30年的发展,嵌入式技术已经日趋成熟,在中国嵌入式机一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
其次,嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。
嵌入式系统是软硬结合的学科,通常有两类人会去专研嵌入式:一类是学电子工程、通信工程等偏硬件专业的,另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。我是软件专业的学习嵌入式,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。嵌入式应用在很多方面,具体的可以分为工业控制,交通管理,信息家电,家庭智能管理系统,POS网络及电子商务,环境工程与自然,机器人,机电产品方面应用等方面。其中目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。例外还有很多地方用到了嵌入式系统,最近飞利浦和ARM共同推出32位RISC嵌入式控制器,适用于工业控制,采用最先进的0.18微米CMOS嵌入式闪存处理技术,操作电压可以低至1.2伏,它还能降低25%到30%的制造成本,在工业领域中对最终用户而言是一套极具成本效益的解决方案。
嵌入式学习心得体会 篇14
本人本科学的是电子信息工程专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下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个部分。内核结构是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。任务管理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。μC/OS-II中的最小时钟单位是timetick(时钟节拍),任务延时等操作是在时间管理这部分完成的。任务之间通信与同步为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。μC/OS-Ⅱ操作系统是在main()中建立的,首先要系统初始化,OSInit(),初始化系统所有的变量和数据结构。然后进行任务的创建,OSTaskCreate();之后进行多任务的启动,OSStart()。在进行任务的并行处理的时候,一个任务的程序是顺序执行的,而不同任务的程序却是并行执行的。从应用程序的观点来看,此处的并行处理只是一个假象。而实际上它是通过实时操作系统的内核控制任务之间的切换来实现的,也就是任务调度啦。
μCOS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。当创建新任务时,或当前任务调用一些可能把自己挂起的系统函数(如OSMBoxPend)时,内核就要进行任务切换。在上述的场合,任务级的调度是由函数OSSched()完成的。
在一个多任务的应用工程中,任务之间并不是完全独立的,它们存在一些需相互配合的处理,这些相互配合是靠任务间的通讯或同步,信号量、邮箱、消息队列可以实现这种任务与任务,任务与中断服务函数间的通讯与同步。
邮箱可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。而信号量不可以,其只能发送信号量。消息队列可以使一个任务或者中断服务子程序向另一个任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有所不同,实际上,我们可以将消息队列看作多个邮箱组成的数组,只是它们共用一个等待任务列表。
我们实验所用的ARM开发工具是ADS1.2。ARMADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,支持软件调试及JTAG硬件仿真调试、支持汇编、C语言、C++源程序,具有编译效率高、系统库功能强等特点。在安装ADS1.2的时候出现过小问题,当时我的电脑是64位的,安装完之后显示不了,后来百度查找到原因,竟然是文件夹放错地方,应该放在Program Files(x86)这个文件夹中。后来有同学问我这方面的问题,但是发现他们的ADS1.2安装不了的原因是因为Licence弄错了。在打开CodeWarrior for ARM Developer Suite的时候,一定要记得选DebugInChipRAM,否则Make都出现很多error,而且那些几乎都是未定义函数的错误。之后就进行Debug,调试成功之后会跳出AXD的界面,选择Options里面的ConfigureTarget,再添加H-JTAG的文件,之后点击GO,程序会跳出汇编语言的界面,再点击下就跳到C语言程序入口地址,之后再点击下GO,程序就开始跑起来。前面所述的这些步骤是理想情况下程序自身没有发生错误,当然在调试过程中,还是有很多硬件上的问题,一方面是有些开发板可能用久了,用JTAG并口连接的时候接触不良,很容易自动掉线,常出现未连接设备的的Error,还有一方面是跑程序过程常会出现兼容性的问题,导致程序AXD调试时候会出现卡在某个部分一直进入死循环,这个后来是解决了,但是偶尔还是会出现这个BUG。
通过这学期对嵌入式的学习,我发现自己尚未掌握的知识点还是蛮多的,尤其是对μC/OS-II的移植方面,我只是理论上粗略了解,没有经过实验的操作。还有对存储器加速模块(MAM)这方面不够了解,主要一方面当初在做消息队列采集实验(KeySem_SampdataQeue),这个模块被代替掉,不需要使用它,所以后来也没有去掌握相关知识点。对于任务就绪算法这部分,我只是上课的时候听“懂”了,课后自己再看完全懵了。对于CAN总线调试的部分,老师上课没有讲到这部分的介绍与应用,但是后来通过自己对实验室师兄们所做的课题初步了解,发现我自己有必要去弄懂它的构造和原理。
“看书不要希望一次就会,一次就明白是什么意思,也不要死记硬背,看不明白也没关系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就记住了,遇到的少的,忘记也就忘记了。”依然记得当初不懂怎么解决某个问题的时候请教李硕师兄,师兄对我说的这番话。自己在μC/OS-II这部分内容挣扎了好久,现在想想,觉得当初不应该一上来就直接阅读内核源代码,看了一些自己把头撞破也想不明白的事,这样直接正面打击我学习嵌入式的积极性。学习啊,还是得要循序渐进。如果你想学习嵌入式一定要有块学习板。看再多的视频,看再多的书,也不如自己动手试一下,看着很简单的东西,做起来就可能遇到很多的问题,遇到问题找到原因,解决问题,只有这样才能学到东西。记得我第一次仿写led的驱动,想自己试一下,可是自己一试,就出了好多的问题,那个led弄了我一天才把led灯点亮。所以不要眼高手低。
对于初学者,有一点小建议,我们拿到一个开发板,很兴奋也很激动,想法自然也很多,想用开发板实现自己的这个想法,实现那个想法,然后又不知道从何下手,然后就去论坛中发一个贴,最后等着别人去回复,当见没人回复就开始抱怨。这种做法是不可取的,有想法是好的,我们要实现自己的想法也是有前提的,首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到问题,再去发贴问,这样也显得咱们有水平。比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,就是人家把代码给咱,咱也不明白是怎么回事啊。见多识广,熟能生巧。多看代码,要从代码中读出代码的意思来。自己平时也要多写代码,多练习(这一点我做的不好,写的少)。
最后,我想说的是嵌入式系统的学习和研究一旦我们达到了一定的水平后,其实很简单,就是如何去看CPU和相关芯片的Datasheet!
嵌入式学习心得体会 篇15
本人本科学的是电子信息工程专业,其实这个专业和嵌入式没有多大的关系,要说有关系就是简单的讲了下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个部分。内核结构是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。任务管理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。μC/OS-II中的最小时钟单位是timetick(时钟节拍),任务延时等操作是在时间管理这部分完成的。任务之间通信与同步为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。μC/OS-Ⅱ操作系统是在main()中建立的,首先要系统初始化,OSInit(),初始化系统所有的变量和数据结构。然后进行任务的创建,OSTaskCreate();之后进行多任务的启动,OSStart()。在进行任务的并行处理的时候,一个任务的程序是顺序执行的,而不同任务的程序却是并行执行的。从应用程序的观点来看,此处的并行处理只是一个假象。而实际上它是通过实时操作系统的内核控制任务之间的切换来实现的,也就是任务调度啦。
μCOS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。当创建新任务时,或当前任务调用一些可能把自己挂起的系统函数(如OSMBoxPend)时,内核就要进行任务切换。在上述的场合,任务级的调度是由函数OSSched()完成的。
在一个多任务的应用工程中,任务之间并不是完全独立的,它们存在一些需相互配合的处理,这些相互配合是靠任务间的通讯或同步,信号量、邮箱、消息队列可以实现这种任务与任务,任务与中断服务函数间的通讯与同步。
邮箱可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。而信号量不可以,其只能发送信号量。消息队列可以使一个任务或者中断服务子程序向另一个任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有所不同,实际上,我们可以将消息队列看作多个邮箱组成的数组,只是它们共用一个等待任务列表。
我们实验所用的ARM开发工具是ADS1.2。ARMADS全称为ARM Developer Suite,是ARM公司推出的新一代ARM集成开发工具。现在ADS的最新版本是1.2,支持软件调试及JTAG硬件仿真调试、支持汇编、C语言、C++源程序,具有编译效率高、系统库功能强等特点。在安装ADS1.2的时候出现过小问题,当时我的电脑是64位的,安装完之后显示不了,后来百度查找到原因,竟然是文件夹放错地方,应该放在Program Files(x86)这个文件夹中。后来有同学问我这方面的问题,但是发现他们的ADS1.2安装不了的原因是因为Licence弄错了。在打开CodeWarrior for ARM Developer Suite的时候,一定要记得选DebugInChipRAM,否则Make都出现很多error,而且那些几乎都是未定义函数的错误。之后就进行Debug,调试成功之后会跳出AXD的界面,选择Options里面的ConfigureTarget,再添加H-JTAG的文件,之后点击GO,程序会跳出汇编语言的界面,再点击下就跳到C语言程序入口地址,之后再点击下GO,程序就开始跑起来。前面所述的这些步骤是理想情况下程序自身没有发生错误,当然在调试过程中,还是有很多硬件上的问题,一方面是有些开发板可能用久了,用JTAG并口连接的时候接触不良,很容易自动掉线,常出现未连接设备的的Error,还有一方面是跑程序过程常会出现兼容性的问题,导致程序AXD调试时候会出现卡在某个部分一直进入死循环,这个后来是解决了,但是偶尔还是会出现这个BUG。
通过这学期对嵌入式的学习,我发现自己尚未掌握的知识点还是蛮多的,尤其是对μC/OS-II的移植方面,我只是理论上粗略了解,没有经过实验的操作。还有对存储器加速模块(MAM)这方面不够了解,主要一方面当初在做消息队列采集实验(KeySem_SampdataQeue),这个模块被代替掉,不需要使用它,所以后来也没有去掌握相关知识点。对于任务就绪算法这部分,我只是上课的时候听“懂”了,课后自己再看完全懵了。对于CAN总线调试的部分,老师上课没有讲到这部分的介绍与应用,但是后来通过自己对实验室师兄们所做的课题初步了解,发现我自己有必要去弄懂它的构造和原理。
“看书不要希望一次就会,一次就明白是什么意思,也不要死记硬背,看不明白也没关系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就记住了,遇到的少的,忘记也就忘记了。”依然记得当初不懂怎么解决某个问题的时候请教李硕师兄,师兄对我说的这番话。自己在μC/OS-II这部分内容挣扎了好久,现在想想,觉得当初不应该一上来就直接阅读内核源代码,看了一些自己把头撞破也想不明白的事,这样直接正面打击我学习嵌入式的积极性。学习啊,还是得要循序渐进。如果你想学习嵌入式一定要有块学习板。看再多的视频,看再多的书,也不如自己动手试一下,看着很简单的东西,做起来就可能遇到很多的问题,遇到问题找到原因,解决问题,只有这样才能学到东西。记得我第一次仿写led的驱动,想自己试一下,可是自己一试,就出了好多的问题,那个led弄了我一天才把led灯点亮。所以不要眼高手低。
对于初学者,有一点小建议,我们拿到一个开发板,很兴奋也很激动,想法自然也很多,想用开发板实现自己的这个想法,实现那个想法,然后又不知道从何下手,然后就去论坛中发一个贴,最后等着别人去回复,当见没人回复就开始抱怨。这种做法是不可取的,有想法是好的,我们要实现自己的想法也是有前提的,首先,我们对这部分知识了解吗?如果不了解就去google一下(最好别用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到问题,再去发贴问,这样也显得咱们有水平。比如自己连串口是什么都不太清楚呢,就问串口通信怎么做啊,就是人家把代码给咱,咱也不明白是怎么回事啊。见多识广,熟能生巧。多看代码,要从代码中读出代码的意思来。自己平时也要多写代码,多练习(这一点我做的不好,写的少)。
最后,我想说的是嵌入式系统的学习和研究一旦我们达到了一定的水平后,其实很简单,就是如何去看CPU和相关芯片的Datasheet!
嵌入式学习心得体会 篇16
嵌入式学习心得时间过的紧快,在粤嵌教育已经培训,有5个月了培训期间赢来很多,也认识了班上的自学大神,经过系统的学习,老师的细心指导,我的付出努力,对于嵌入式上,学到很多实用的知识在动手操作能力也加强了,不仅在专业领域技术方而有了很大进步,而且在实践操作方面我也对嵌入式有了更深入的了解。也许这5个月是这儿我在外而学习和生活最宝贵的时间。
在校两年,读于电子信息韦尔泰宗工程技术专业的我,就觉得这研习专业领域学的知识太广了,不管基础还是动手操作,都要比较灵活。在校期间,学习单片机,传感器,C语言,嵌入式应用技术等课程。感觉学起来,对我来说接受还是比较快的,那时就有想过:学的多不如学的短萼,也许高中学生对课程多于理论为主,理解它的原理和基本计算机程序方法方式。其实,我还是有努力去学的,可以说,在校科任老师都教会我很多专业知识,为我将来的学习和发展打好基础。
在大三期间,为了更为拉著明确自己要走的方向,去培训嵌入式软件技术开发。也许将要投身嵌入式行业的我,就注定代价这条路要付出不少时间和精力,但如果我好求比较强,接受还行,就不停给自己送祝福,努力!要去培训嵌入式,时,我从网上也对它有更加的想像也看下大学的嵌入式应用技术书,嵌入式系统是软件和硬件的综合体,以应用为中心,以科学计算为基础,软硬件可裁剪,改变应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用负载计算机系统。
刚开始嵌入式学习,对Linux系统的专业知识加于巩固。一些简单的代码,C语言,对于嵌入式软件还是硬件开发的人员,对C语言的掌握这个是沃苏什,卡的,特别是对于以后致力于嵌入式软件开发的人现在绝大部分全都是用C语言。在下来两个月就对Linux系统,数据结构、系统移植的方法、A8的体系结构、Linux内核及驱动设计、 android> C+Java的JNI应用编程的系统学习。在每学个阶段就作一个考试,基本知识对前面所学的知识进行复习,有些会做一个简单的小项目,学以致用。知识量还是比较多,但教学也比较快,有些知识还没消化完,第二天又接受新知识,对于能在课上基本上就可以对知识完全懂的并不多,晚上都用一个半小时来复习。经过5个月系统的.学习,嵌入式技术方面有了很大进步,实践操作方而也对嵌入式有了更深入的了解。在最后一个月,基于A8(S5PV210)的嵌入式智能家居系统制作。
下而我谈谈在粤叠砌教育的培训感受,我培训的地点是在科学城粤嵌教育培训中心的多媒体课室里,这里有研习环境非常好,在紧张的学习的整个过程中,你可以得到名师的督促,也可以体会到第一流企业高质量的培训。在课堂上,老师们认真的演说,以及手把手地教导,使每个学生都能够扎实地掌握到嵌入式的各方而的知识。而粤嵌幼儿教育教育的老师也是操作实践为主,实践是非常重要的,只有把知识掌握到位,才能达到学习的目的。
感谢粤嵌教育机构,感谢粤嵌教育老师。
嵌入式学习心得体会 篇17
首先,我们学习的课本是嵌入式系统应用教程。我学习的体会是这样的:开始时,由于是刚刚入门,对老师书的好多东西是好奇的,好多名词也是新鲜的,不过不太懂什么意思。但是慢慢的,了解的深入让我有了更深的感触和体会。
在嵌入式的学习过程中,让我了解了什么是嵌入式系统。它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。
一开始我们就学习嵌入式的系统的基础部分,那很简单,就是一些定义或是介绍之类的。在进入第二章时,就开始学习了嵌入式开发过程中的主要操作系统——linux,在接下来的课程中,我发现嵌入式的学习过程还是蛮有趣的。在对linux的学习中,我们对它有了一点点的了解,接着就是学习一虚拟机的方式安装linux。对我来说有趣的就是安装的过程了,首先我们跟着老师的脚步走,学会了怎么安装,在自己动手进行对它的安装,这个过程是简单而有趣的。这样的开始让我对它充满了兴趣,也对以后的学习充满了信心。
其次就是安装好了之后,老师就更深一步的教我们应用了。在这是老师首先交给我们的是一些简单的命令应用,Linux具有很丰富的命令,绝大多数命令具有大量的参数。
在学习命令的过程中,只要你认真的看着老师操作还有认真听着他讲,你就会发现有些命令的操作还是很简单的,不过在操作的过程中,我也有遇到有些困难,会出现你按照书上学习的例子,将命令输入终端时会出现你不想要的'结果,也就是错误的结果。这是问问旁边的同学或是懂的同学就可以解决了。
在对于这部分的学习中,让我知道了命令对于嵌入式的重要性。它是linux的重要内容,linux中所有的功能都是通过命令执行。在实际应用中,为了减少系统开销,经常不使用图形界面,此时,对系统的所有操作都需要以命令方式来执行。在嵌入式系统开发过程中,由于目标机的性能和配置比较低,因此,一般情况下目标机仅具有命令窗口而没有图形界面,对目标机的所有操作都通过命令来实现。
还有的那就是进一步学习与嵌入式系统开发相关的linux的服务,他们的启动、设置等的操作和应用。而在学习之中,我们主要介绍的是嵌入式系统中开发工程使用的TFTP、Telent和NFS服务。第一个实现的事上机位与下机位之间文件的传输、无磁盘网络的设备的启动等功能;第二个实现的事远程登录功能;第三个实现的是网络文件系统功能。
从以上的内容之中,并不难感受到我们的学习过程是由浅入深的,这对于我们的学习也有了较好的帮助。
当然,我们学习的不仅仅是这么几个内容,其中还有相关的实验内容。在我们基础的学习的过程之中,我有了这么一点的感受,总的来说就是概念加专业名词还有介绍加实验。不过你绝对不能小看那些概念和介绍,它对我们有着很重要的指导作用哦!实验那就更不用说了,它提高我们的动手能力,在实验的过程中还能让你更加理解书中的理念,这就是我学习嵌入式的感受。
嵌入式学习心得体会 篇18
研究嵌入式系统已经有快两年的时间了。很庆幸自己当初选择了嵌入式系统作为自己的研究和职业方向,可以说它是一种催化剂,让我自身的修养和研究能力都有了很大的提高。
在嵌入式系统的大门前,我只能算是刚刚看到这个大门的台阶,但这段小小的距离让我受益颇多,现将其中心得奉献出来,欢迎高手前辈们指正,以供刚接触的新人参考。
在写之前,想先写一句话,千万不要以为你是天才,所谓天才即胜别人N倍的人,如果你真认为你是天才,请以天才的标准来要求自己,将自己付出和别人的比例以N:1来进行。
(1)学习与生活心态
很多朋友都是在刚步入大学校门开始接触计算机或者其他。大学是一个很让人迷茫颓废的地方,可能你在高中踌躇满志,但在大学的管理机制下却心态渐糜。能够在大学(大一)里找到自己人生之志的同学有多少?目标要明确,不要得过且过,不要追逐热门的东西。
不管在什么时候,心里都要有自己的信念和理想,不要被其他东西左右了自己。要从兴趣和竞争出发,因为这才是你产生动力源的地方。学东西时,要让自己先喜欢上它,要学会享受学习它的时间,喜欢乔xxx的都知道,乔老爷子最常说的一句就是要享受比赛的时间。
因为只有你喜欢上了它,享受了它,才不会被它所产生的压力压倒自己,不要产生一种厌恶的心理。而且心态要调整,不要一味的蛮学,死学,在没有什么兴趣学的时候可以先玩几天,在回过头来,或者用其他的方式来转换。要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始,不要为高速开发的一些现象所迷惑,那些都只是软件的功劳。
我个人认为搞编程,英语和数学很重要,大家一定要时时的抓,至于怎么抓那就是另外一回事了,当然其他的知识也要汲取,可以多接触点天文,地理,人文方面的东西来补充自己。转换的'生活方式。要学会生活,在人的一生中,都会遇到一些很不开心的事,或者大大小小的意外,孙子兵法里面一句大意就是说,战场上要会将劣势转成优势,即最大的劣势很可能就是你的优势所在。
一个打击你可以把他变为前进的动力,不必为了一点挫折和捶胸顿足,不必为了一点小事争吵不休。空闲的时候可以躺下来看看天,你就会明白自强不息,厚德载物之理。(看到一些为了失恋或者其他而堕落的人真的很难受和可惜) 。
要给人以帮助。别人有困难时或者一些举手之劳在自己解决范围内的尽力帮之,这对自己不会损失什么,相反在对方心里能够树立你的形象和增加好感。记住,给人之恩时也是给你自己铺路,这个世界不是靠你一个人可改变的。
(2)编程语言的选择语言的争论。很多初学择,老是在学习何种语言上举棋不定,试问,中国牌子有几个不被骂的,试问,世界上哪部影片没人说他坏话的?术业有专攻,各司其职,每个语言的出现肯定都有自己价值和领域的范围,不同的只是价值和领域的高级和大小。
就像高,矮,胖,瘦组成一个“型”。但是技术是进步的,这个进步也是在旧的基础上。放心,技术再飞跃也不会今天奔I,明天扣肉的迅速,在学习的同时也要时时关注整个语言界的走势(貌似哪个伟人说的与时俱进),保持一种同步曲线的前进。语言能干什么?能问这句话,很欣慰。
表明你是从基础学起才会问出这样的话来。但换而言之你一开始对这门语言调查的信息不足。庙算者胜,对自己身边的事物了解是非常重要的,这也能说明说你的教材或者教导你的人不够充分。如果是我对新手交流,我会花足时间让他明白这门语言是什么,能干什么,整个体系等等。
这样在学的时候,对同一条语句上的理解你可能跟别人就不一样了,因为你知道这门语言的体系架构,你可以从更多的特性角度去挖掘使用它。提高自己对语言阅读能力。如何快速的进步?可以告诉你没有一步登天的办法,但是也可以告诉你如何让你快速掌握你所学的技术。多读他人代码,多领悟他人思维,多给自己出难题,多几种方法来解问题,多将语言的思想和身边的事物联系起来。想想你是怎么掌握普通话的,方法就不具体说了。
编程的思维。计算机是充满诱惑的东西,很多人都说热爱计算机,那只是它的表面,你热爱的只是他的一种扩展性的东西。能学计算机我很高兴,因为计算机从某种意义上来说将空间的距离给消除掉了。这里没有流血,没有牺牲。你可以以一种艺术家的思维来塑造它,可以以侦探的逻辑思维来解决它,可以以一种战争狂人的思维来摧毁它。
你可以将你的这种思维体现在代码和整个布局里,不要惊异别人代码思维的异风,你也有自己的思维风格,你也可以,你也可以用自己代码让别人惊异。记住你学东西时更多的要体会他的思维,比如数学,微积分,离散,无数的定理,你学完以后可能永远都用不到,但是你可能有这种感觉,在你碰到某一问题时,这一问题的性质和你学到的东西很类似,但是中间就是差了一点东西,对了,这就是它思维上的一种运用,一种抽象,一种转换。
嵌入式学习心得体会 篇19
就在昨天3月9日,学校规定实习时间已经到期了。从上个月的13日到现在已经近一个月,虽然与公司的实习时间还没有结束,但是为了完成学校交待的任务,在此对这段时间的实习做一个总结。
首先,我先来简单介绍下实习单位。我实习的单位全称——上海宝信软件股份有限公司厦门分公司。其作为上海宝信软件中的重要一员,是宝信软件在全国多网点支持服务的延伸,具备与宝信软件上海总部相同的技术服务能力,并可无限制调用总部专家资源,秉承宝信软件“IT服务,提升信息价值”的经营理念,致力于IT服务,主营业务包括网络安全产品销售、系统集成、运维服务、软件工程等。
其次,向大家介绍是我的实习内容。这里要先介绍我的实习岗位——嵌入式软件开发工程师。实习内容大致分为两块,一是软件测试,二是编码。在我们刚来的前两周,我的实习内容就是软件测试。软件测试的主要内容是UnitTest也就是单元测试。但是,在实习刚开始的阶段,我并没有就马上做测试。而是有前辈给我发了一份我们要做的产品的功能书给我看。功能书文档是日文版的,我要把它看懂,才知道我们这里到底是做什么。后面的测试工作就是做单元测试了。
我们在做测试是有测试环境的,整个单元测试过程是有前人经验的。所以只要按照规则来就没有问题,也相对比较简单。就这样单元测试做了近8天左右,测试了51个c++函数。其实,单元测试比较简单,但是碰到函数的输入输出的值及路径多的时候,特别的烦,会影响测试效率。实习的另一个内容就是编码,其实说的确切一点,是看代码。一个刚来不到3周的新员工,以前又没有经验,公司怎么会放心让你写代码。有前辈给我安装了秀丸和Source Insight软件,然后给了我一代码,让我按上面看,有问题可以问组里的前辈。C++代码是看的懂,但是太多的函数,被调用的关系也不清楚,也不了解决函数的意义,所以感到很无趣。也许是在考验我的耐心或者是让我熟悉代码编写的规范。不管是什么目的,至少自己可以巩固下c++的基础。不过真的要感谢前辈的细心指导,使我大概了解程序的调用关系。
再次,向大学介绍下我的实习阶段的工作过程。每的8小时的上班时间,但是一般会比这个时间长的。早上8点45分到9点15分不等上班,晚上5点30分到6点不等下班,中午11点可以去吃饭、1点之前上班。这个时间还是比较人性化的。当然也有时候也要加班,如有时候日本客户来这里的时候,发现我们的人都很早下班的时候,他就会和我们的上级说,然后我们就得加班。这也是一种非常情况,但是加班是可以调休的。每天的上班时间基本上是跟电脑打交道。
前期实习阶段都是打开电子表格看日语版功能说明书,后面做测试的时间就是各种软件一起用了。每天做单元测试的时候,其实感觉特别烦。有时候一天做7到8个,有时候一天2个做不到。但是整个过程自己还是坚持下来了,虽然很累,自己还是很好强的.。后期基本上是学习编程了。由于后面项目已经交互,所以每天都不没有加班了。每天的工作主要就是学习代码规范,如那里怎么缩进、命名之类的事。至于逻辑什么的,还是很不清楚,还需要努力多问多想。
再次,与大家分享下我的实习收获。虽然与原计划5个月的实习还差很远,但自己还是很有收获。其一,对于歌乐Audio项目有一定的了解。具体的表现在,分了几层。我个人是分配到app层,也就是业务应用层。虽然对业务的熟悉不够深,但大概知道,每一天前辈们都在做什么事。其二,日语方面的加强。因为客户方面基本上是日本人,所以加强日语学习是必须的。有了这样的一种压力,自动会转化为一种动力,促使我去学习。我想这样多少可以提高下我的日语能力。还有就是,常常有很多日本客户就做在我的旁边。感情还是很紧张,因为不知道怎么跟他交流。结果每一天他来的时候,我只能和他说声早上好。希望自己在今
后的时间里要多多加强日语学习,争取与日本客户交流,才能提升自己的能力。其三,交流沟通能力的提高。其实自习也一直觉得沟通能力对成功贡献是最大,要把一件做成肯定不是一个人的事情,我们需要与别人沟通。在沟通中互相了解相联系的部分,这样才能够避免摩擦带来不必要时间与精力的浪费。而我自己的沟通能力提高表现在自我意识的提高。当遇到问题的时候,会主动的想想,是哪个具体的点不懂,然后列出问题,再向前辈请教。这样大脑里就会有一个逻辑过程。通过这样就可以把自己的意思清楚的传达给别人。在别人向自己传达信息的时候,我会边思考边听,遇到不了解的地方,讲明白自己的不解之处。这样这个沟通过程就会比较流畅。其四,职场意识的提高。可以说来实习就意味我们提前毕业了,提前进入社会。所以,由学生到社会职业人的过渡期就被实习给填充了。经过一个月实习,我发现自己已经很习惯在公司工作。对于自己能做什么,未来能做什么也有了一定的思考。不管毕业,我还是留在这个公司还是去其他的公司,我想我心中已经有了这份意识,这对我将来的职业生涯都是有帮助的。其五,时间管理。很多人工作的时候就忘记了生活的存在,我们的生活是多彩的,并不是只有工作。其中,有一项转变的比较大,就是很多人不喜欢运动了。对于这些,我都是不太认可的。我还是会抽出时间出去运动一下。我觉得运动可以带给我健康,同时会让我的精神更好,工作更有效率。其实,运动并不会浪费我们时间,而是会给生活带更美好。
最后,与大家分享一下我这个月实习的心得与体会。通过这段时间的学习,从无知到认知,到深入了解,渐渐的我喜欢上这份工作,让我深刻的体会到学习的过程是最美的。在整个实习过程中,我每天都有很多的新的体会,新的想法,想说的很多,我总结下来主要有以下几点:
1、持之以恒
既然选择了自己的这份工作,不管工作本身怎么样,我们都要坚持往下走。因为我相信每一家公司的工作原理都是差不多的。如果你在这家公司做不住的话,我想你在另外一家公司也是做不住的。只有我们改变自己的态度,才可能战胜心中的浮躁。我们新人一来到公司我,一开始都不会立刻给工作我们做,-一般也都是先让我们看看文档或代码,时间短的要几天,时间长的要几周,在这段时间里很多人会觉得很无聊,没事可做,便觉没有发展空间,于是产生想走的念头。恰恰在这个关键的时候更需要我们的坚持,轻易放弃只会让自己后悔。
2、不怕做小事,那是一种考验
我们一来到公司实习的时候,很多组里的前辈多数还是把我们当学生看待。他们不会也不敢让我们直接参考到一个真正的项目中去。在这个其间一般会给我们看一些过去做过项目的文档和代码,其实不可小看这些小事,也许是为了考验我们,也许是让我们先了解业务。作为一人新人,一定要积极面对这些,勇于担当做小事,喜欢做小事。这样公司同事才会更快的接受你,慢慢地才会让你做一些重要的工作。
3 、态度端正,一定要多主动
我们到公司工作以后,要知道自己能否胜任这份工作,关键是看你自己对待工作的态度,态度对了,即使自己以前没学过的知识也可以在工作中逐渐的掌握。态度不好,就算自己有知识基础也不会把工作做好,四多一少就是我的态度,我刚到这个岗位工作,根本不清楚该做些什么,并且这和我在学校读的专业与这里做的东西还是不太一样的,刚开始我觉得很头痛,可经过工作过程中多看别人怎样做,多听别人怎样说,多想自己应该怎样做,然后自己亲自动手去多做,终于在这一个月里对工作有了一个较系统的认识,慢慢的自己也可以完成相关的工作了,光用嘴巴去说是不行的,所以,我们今后不管干什么都要端正自己的态度,这样才能把事情做好。
4.不要报怨
其实在做单元测试的那个时候,有时候觉的特别的烦。有时候做了半天连一个函数都没有把弄出来,那种感觉真的是非常的难受,心中也有委屈。可是这是我的工作,我报怨也没有用。只能一步一个脚印走过来。直到后面把函数测完,心中还是很有成就感的。其实有的人会觉得公司这里不好那里不好,同事也不好相处工作也不如愿,经常埋怨。我觉这样只会影响自己的工作情绪,不但做不好工作,还增加了自己的压力。所以,我们应该少埋怨,要看到公司好的一面,对存在的问题应该想办法去解决而不是去报怨,这样才能保持工作的激情。
5、虚心学习
由于我们是新手,而且又还没有从学校里完全走出来。所以在工作过程中,我们会碰到很多问题,有的问题我们可以有我们所学的解决,有的有很大业务性的问题,我们就无法解决。这个时候不要不懂装懂,应该虚心地向前辈们请教。请不要害怕,因为前辈肯教我们肯定是我们的福气,对我们以后在工作中都有帮助的。同时请教的时候也是一个锻炼沟通的过程。在前辈给我们解惑的时候,我们也应该虚心的接受,不要装着一副不屑的样子。
6、知错能改
作为一名新人,不管在学校有多么的优秀,来到公司,我们顶多就只有点基础,其他什么的都得重新开始。在学习的过程当中,犯错是不可避免的。知错能改是我们唯一的选择。明知自己有错,还理直气壮那是不应该的。我认为这种行为是可耻的。在犯错的时候来铭记于心,不要第二次在犯同样的错了。当前辈或其他人指出我们的错误时,我们要虚心听教,坦诚改错。这样我们才会进步,才会在组里与同事相处融洽。
7、团队合作
重要的不是我,是我们。在一个项目组里,我并不是一个人。我只能说我是组里的一个部分。我们每一人都不是神,我们不可能一个来完成所有的工作,因此,必须分工。但是,分工并不是都很明确的。每个人分到的工作,多多少少都会和别人的工作的有交集。这是因为,作为一个项目的每个部分,最终还是整合形成整体。我们还是需要这些部分与部分交集作为连接点组合起来。因此,每个虽是分工,但更多是合作。我们中的我必须明白这些,要有团队观,做好自己的同时,更重要也要做好与别人的沟通。这样才会避免工作的重复,意见的不同等负能量。
8、沟通能力
在上一点的体会团队合作中,其实我已经说了,团队合作的基础就是沟通。一个有效率的团队,我认为它的成功就在于成员之间良好的沟通能力。因为,人与人的沟通是信息传递的媒介。没有良好的沟通基础,信息在传递的时候就会被曲解。在软件开发的整个过程,团队合作是至关重要。每一环节,都离不开沟通。需求变更带来的问题,尤其需要在沟通中解决问题。所以,让自己把信息传递的正确和有效,提高沟通能力是必不可少的。
9.做人做事讲究原则
其实在公司上下班是一个很大的学问。同事都已经来上班了,你才来。或者是同事还没下班,你人就都先走了。其实要把这些看成一种常态。在公司上班不是比谁先来,也不是比谁晚走的,比得是自己的工作的效率。有时候,我们工作做完,是可以先走。你想想,你走了之后,估计别人也敢走了。从这一点上,可以说你是帮助了大家。当然这只是开玩笑,做人做事要有点原则。工作没完成当然不能跑回去,这是没有责任的表现,以后主管怎么能把事情交给你。工作做完,想先走就走了,不必当担心这担心那的。我相信一个好的主管,不会以一些无所谓的因素来衡量一个人的。只要自己身体正,就不怕别人说。
10.做好职业生涯规划
每个人在来实习之前,肯定会想我来这家公司是做什么。当你想好,并决定来的时候,你已经做了第一步职业生涯规划了。实习也是成了我们检验计划的时候,如果你发现这个工作不适合你,毕业前你还有机会可以做换。如果感觉这个工作适合你,那么你就可以做下一步
的规划了。我当初选择这个工作,是因为嵌入式软件开发在近几年会发展会比较快,而且本人对c++和c比较感兴趣。同时,目前做的工作是对日外包,对于我日语的提高也是很有帮助的。现在实习给我感觉是,不出现什么其他状况,应该毕业后会留在这个公司。至少今后的职业规划以日语和编程提高为主,以管理为辅。
在这里,我要感谢上海宝信软件股份分司给我这次宝贵的实习机会。同时,也要感谢组员对我有直接帮助的前辈。当然还要感谢学校和毕业指导王老师的关心与指导。
总而言之,这次实习是我大学四年来最正式的一次。我想通过这次的实习,我将从学生走向社会职业人的转变。一个月的时间过的太快了,但是我们的实习并没有结束。通过这次的总结,我对这次实习的意义有了深刻地认识。自己在今后的学习与工作中,一定会更加努力做的更好。
嵌入式学习心得体会 篇20
一,如果非常多人都想做Linux,那么就要对Linux要比较熟悉。这个熟悉不是说对内核,对代码有多了解,而是至少要会基本的操作,非常难想象让一个连编译程式,编辑文本文件都非常困难的人去弄嵌入式的软件吧。总之在进入嵌入式这个领域之前要对自己评估一下,看看自己是不是准备好了去学习嵌入式相关的东西。
二,要舍得花钱买研发板。公欲善其技,必先利其器。也就是说,理论上可能掌控了非常多,不过不去实践,那只能是纸上谈兵,这样是无法学好嵌入式的。弄个研发板自己摆弄摆弄,即使什么都不懂,也能按照说明书把厂家给的程式下载到研发板上运行运行,先知其然,然后再通过具体的学习知其所以然,这样能避免学习中的枯燥。目前市场上研发板的种类繁多,相同CPU的板子价格却相差非常多,令非常多人都不知道怎么选择购买。我的看法是,尽量买大厂的产品。因为在初学阶段学习资料少是个非常头疼的事,非常多时候都是无从下手,不知道怎么去做,那么随研发板附送的资料就非常重要了。大厂技术比较强,附带的程式都是能在板子上运行的,例如我买的优龙ST2410这个板子(不是广告啊),光盘上带了一个bootloader,个2.4.18的内核,更有一个cramfs,这些程式的原始码都是厂家事先做好或修改好的,完全适用于初学者使用。而有些实力不行的小厂家的资料不齐全,我们学习的时候需要自己弄bootloader什么的,那入门就非常难了。不过大厂的板子都非常贵,大家能根据预算来选择适合自己的研发板,不过无论怎样,在学习上投资都是值得的。
三,不要事无巨细的学习,要有明确的`目标。我最开始给自己制定的学习计划是:学习arm体系结构->学习arm汇编->自己移植bootloader ->自己移植kernel ->做应用,不过不久就被我否决了,因为这个过程实在是太枯燥太痛苦了,在学习资料少,没人指导的情况下根本无法进展。于是我决定使用厂家的代码来"玩"研发板,自己弄些应用上去。先是完全使用厂家给的bootloader,kernel,cramfs。之后发现cramfs中的一些控制Linux初始化的文件不符合我的需求,于是修改cramfs,删除了QT,修改了网卡初始的IP地址,安装到板子上能运行了之后就开始尝试做一些应用,比如hello world这样的程式。最后移植了一个mpg123到板子上。完万能在不知道原理的情况下来使用板子的一些功能,等熟悉板子了再回头学习其中的道理,这样就容易一些。学习嵌入式就是这样,根据问题来选择学习的内容,否则会非常盲目,最后就失去信心了。
四,要有耐心。不能否认,在学习一门自己完全不了解的技术是非常烦人的。嵌入式的复杂在于他的交叉性。也就是说为了研究某一个嵌入式的问题,你有可能得学习非常多其他的知识,比如操作系统,编译,体系结构等等,那么对于这种情况需要我们有足够的耐心。我在交叉编译mpg123的时候前几次无论怎么修改makefile都无法编译成功,最后我发现我用的arm-linux-gcc是2.9版本的,比较老,于是我换成新的3.4.1版本,就ok了。
以上是我初学嵌入式所获得的一些浅显的经验,基本都是基于软件方面的,硬件的DIY我就不行了。希望我的经验能给大家一些帮助。
刚刚和LUPA的嵌入式版主要了uboot的代码,接下来的我想研究研究厂家的bootloader代码然后移植一下uboot。
嵌入式学习心得体会 篇21
首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。
对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15k以上。
另一类就是数字部分了,在大方向上又可分为51/arm的单片机类,dsp类,fpga类,国内fpga的工程师大多是在ic设计公司从事ip核的前端验证,这部分不搞到门级,前途不太明朗,即使做个ic前端验证工程师,也要搞上几年才能胜任。dsp硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。
而arm单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大,而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互pk,判定水平高低的依据。而接口设计这块最关键的是看时序,而不是简单的连接,比如pxa255处理器i2c要求速度在100kbps,如果把一个i2c外围器件,最高还达不到100kbps的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接lcd,但为什么这种lcd就不能挂在arm的总线上,还有arm7总线上可以外接个winband的sd卡控制器,但为什么这种控制器接不到arm9或是xscale处理器上,这些都是问题。
因此接口并不是一种简单的连接,要看时序,要看参数。一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5v变1.8v的dc芯片,直接更换成ldo,有时就会把cpu烧上几个。
前几天还有人希望我帮忙把他们以前基于pxa255平台的手持gps设备做下程序优化,我问了一下情况,地图是存在sd卡中的,而sd卡与pxa255的mmc控制器间采用的spi接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题,因此我提了几条建议,让他们更新试下再说。
因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你终究能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远哪。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计pcb绘制,逻辑设计这块。
这是指的'硬件设计工程师,从上面的硬件设计工程师中还可以分出ecad工程师,就是专业的画pcb板的工程师,和emc设计工程师,帮人家解决emc的问题。硬件工程师再往上就是板级测试工程师,就是c语功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行验证。然后再交给基于操作系统级的驱动开发人。
总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定,因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。
那么高级硬件件工程师技术技能都要具备那些东西哪,首先要掌握eda设计的辅助工具类如protelorcadpowperpcbmaplux2ise、vdhl语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。
硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。
把一个月前想写的东西,今天终于用一上午的进间整理完了,希望对喜爱嵌入式系统开发的工程师和学生们有所帮助。
嵌入式学习心得体会 篇22
目前最常见的嵌入式LINUX方面,我认为大概3个:
1、嵌入式LINUX上层的应用,包括QT的GUI开发
2、嵌入式的LINUX系统开发
3、嵌入式的驱动开发
学习嵌入式:
第一、C语言要掌握(硬件略懂),C语言是所有编程语言中的强者,单片机,DSP,类似ARM的种种芯片的编程都可以用C语言搞定,因为它可移值性强,编译效率高,运算速度快,便于实现理更复杂的的数据结构。上层应用和数据存储,我推荐使用C++语言。
第二、学习一种嵌入式的处理器架构,个人推荐32位的处理器,像ARM,因为嵌入式开发8位的处理器显得有点低端,大多数只能用作简单的工控.
第三、学习一种嵌入式操作系统,像LINUX,WINCE等都可以,LINUX更好。
ARM是一种微处理器,已遍及工业控制,消费类的电子产品,通信,网络,无线等各类的产品基于ARM技术的微处理器已占75%以上的市场份额,可见其技术已逐渗入到我们生活中的各个领域,像手机就是用ARM7 ARM9 ARM11的微处理器技术开发的。嵌入式系统最常见的ARM系列,ARM7,ARM9,ARM11,cortex-A8等。
我们都是曾经从大学里走出来的迷茫羊羔,工作以后我才知道,在大学里不是学到了什么,而是学会怎么去学,相信自己,理清自己的思路,根据自己的性格,剖析自我适合往哪方面发展。
嵌入式学习心得体会 篇23
首先,我们学习的课本是嵌入式系统应用教程。我学习的体会是这样的:开始时,由于是刚刚入门,对老师书的好多东西是好奇的,好多名词也是新鲜的,不过不太懂什么意思。但是慢慢的,了解的深入让我有了更深的感触和体会。
在嵌入式的学习过程中,让我了解了什么是嵌入式系统。它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。
一开始我们就学习嵌入式的系统的基础部分,那很简单,就是一些定义或是介绍之类的。在进入第二章时,就开始学习了嵌入式开发过程中的主要操作系统——linux,在接下来的课程中,我发现嵌入式的学习过程还是蛮有趣的。在对linux的学习中,我们对它有了一点点的了解,接着就是学习一虚拟机的方式安装linux。对我来说有趣的就是安装的过程了,首先我们跟着老师的脚步走,学会了怎么安装,在自己动手进行对它的安装,这个过程是简单而有趣的。这样的开始让我对它充满了兴趣,也对以后的学习充满了信心。
其次就是安装好了之后,老师就更深一步的教我们应用了。在这是老师首先交给我们的是一些简单的命令应用,Linux具有很丰富的命令,绝大多数命令具有大量的参数。
在学习命令的过程中,只要你认真的看着老师操作还有认真听着他讲,你就会发现有些命令的操作还是很简单的,不过在操作的过程中,我也有遇到有些困难,会出现你按照书上学习的例子,将命令输入终端时会出现你不想要的结果,也就是错误的结果。这是问问旁边的同学或是懂的同学就可以解决了。
在对于这部分的`学习中,让我知道了命令对于嵌入式的重要性。它是linux的重要内容,linux中所有的功能都是通过命令执行。在实际应用中,为了减少系统开销,经常不使用图形界面,此时,对系统的所有操作都需要以命令方式来执行。在嵌入式系统开发过程中,由于目标机的性能和配置比较低,因此,一般情况下目标机仅具有命令窗口而没有图形界面,对目标机的所有操作都通过命令来实现。
还有的那就是进一步学习与嵌入式系统开发相关的linux的服务,他们的启动、设置等的操作和应用。而在学习之中,我们主要介绍的是嵌入式系统中开发工程使用的TFTP、Telent和NFS服务。第一个实现的事上机位与下机位之间文件的传输、无磁盘网络的设备的启动等功能;第二个实现的事远程登录功能;第三个实现的是网络文件系统功能。
从以上的内容之中,并不难感受到我们的学习过程是由浅入深的,这对于我们的学习也有了较好的帮助。
当然,我们学习的不仅仅是这么几个内容,其中还有相关的实验内容。在我们基础的学习的过程之中,我有了这么一点的感受,总的来说就是概念加专业名词还有介绍加实验。不过你绝对不能小看那些概念和介绍,它对我们有着很重要的指导作用哦!实验那就更不用说了,它提高我们的动手能力,在实验的过程中还能让你更加理解书中的理念,这就是我学习嵌入式的感受。