嵌入式学习心得体会(精选8篇)
嵌入式学习心得体会 篇1(4622字)
  从实习到现在搞嵌入式开发快一年了,蓦然回首好像一年过得挺快,挺顺利的。细细品味,发现这一年还是有很多值得回忆和总结的东西。至少这一年看书挺多,大概二十几本,当然和那些一年看一百多本书的人没法比,但是我已经超越了自己。这是我大学毕业的第一年,初次走上社会,很想一展身手,可是.....其实也不用可是了,和很多朋友一样碰了很多钉子,现在我和老板的关系就挺一般的,只是我性格还不错。呵呵~~,做优秀员工看来还得慢慢学。
  今年最大的收获就是做了一个半项目,是在uClinux下面跑的。半个是SNMP-Agent的实现,因为我去的时候snmpd已经跑起来了,我只是实现部分管理功能;一个是基于Web的管理系统,使公司的主打产品微波通信设备上网。这个项目是我一手策划,一手实现(界面设计是一位女同事,很优秀的程序员),从中学到的东西也最多,感情不可谓不深。
  SNMP即简单网络管理协议,其实一点都不简单。在我所知的网络协议里面,它仅仅比O
SI的CMIP简单一点,而CMIP直到现在还没得到广泛应用。我们能够实现SNMP-Agent不能不感谢CarnegieMellon大学免费发布的ucd-snmp软件包。它使得开发人员专注于实现对特定设备的管理功能。
  我在项目中的工作主要是扩展MIB,实现相应的管理功能以及网络功能的扩展。我们公司的MIB库比较庞大,但是程序运行还是挺快的。因为ucd-snmp软件包中大量使用回调函数,而且它将MIB树以二叉树形式表示,但是每个结点不是单个的MIB结点,而是一个表,包括了多个结点。回调函数和两层表示法的使用是操作快速的主要因素。
  基于Web的管理系统我原本是打算在设备外实现SNMP-Manager的功能,因为设备中已经嵌入了Agent。这样管理人员可以在世界各地通过WWW登录公司的管理平台,实现对所有设备的管理。但是老板想在设备中嵌入一个管理系统,可以通过www管理单个设备就行。呵呵~~,这样工作又轻松了一点,就按老板的意思做了。
  我用的http服务器是BOA,它比现在市场占有率第一的Apache速度要快。目前还只支持CGI,我就用C写CGI程序,古老了点。但是在开发过程中感觉用CGI比用现在流行的ASP,JSP要爽,可以随心所欲,哈哈~~,而且这也是用CC++语言的优点。CGI程序很
简单,它的输入就是标准输入,它的输出就是标准输出。BOA在uClinux上面跑总要出点问题的,出问题好,出了问题我就能到问题,一来一往,我对socket编程,I/O多路等编程技术了解也就越来越深了。
  在Linux下面搞了一年,不爱上Linux都难,个人认为软件开发人员在Linux下面进步是最快的。那么多优秀的开源代码供我们研究,犹如每天与世界上最优秀的程序员打交道,进步于不经意间。哈哈~~。正所谓“熟读唐诗三百首,不会作诗也会吟”。GCC编译器的优秀不用多说,我觉得写Makefile也是很件开心的事。不推荐程序员搞开发都用IDE,隔靴捎痒很不爽。但是Linux缺点也很明显,听歌、看碟、玩游戏不如Windows。恰巧公司的电脑没音箱,干脆我就懒得用Windows了。
  用Linux而不讲开源是不道德的,我们程序员享受着开源的好处,自然也要为开源做点贡献。我开发的所有软件都开源,但是我也有个“怪癖”:不喜欢别人在我代码未完成的时候问我要源代码。
  做嵌入式开发一年,稍稍有点心得。总结了一下,有以下几点经验:
  1.不要玩Linux。这一点主要是对像我这样在Linux下面开发的程序员来说的。因为Linux对程序员的吸引力很大,但它下面可以直接用的软件还是比较少。于是我们总想到网上一些开源的软件装到我们的机器上,从无到有让人很有成就感的,呵呵~~。要是装上的不是最新版本的还不满意,于是又开始忙升级。在Windows下这个过程大概没什么意思,全都next了。在Linux下就不一样了,直接拿过来的源代码很多编译都不能通过,最新版本更是这样,得我们自己改,而且往往时改了又改。这个过程很花时间,我就在这方面浪费了很多时间,本来有个月工作比较轻松,打算阅读Linuxkernel代码(也想成高手,呵呵~~),当时我机子上没有好的阅读工具,于是先弄了个sourcenavigator,觉得不够又装了个openoffice,然后又来了几份不同版本的kernel代码。结果一个月过去了,一个文件夹还没看完。后面工作紧了,只能把看kernel当休息,直到现在才粗略看完fs,mm两个文件夹。
  2.不要满足于C语言。C语言很优秀,也很简单。程序设计能力不等同于用C语言能力。嵌入式开发程序员要有扎实的数据结构基础,要积极的学习操作系统,积极的学习网络编程,要是想进行驱动开发还需要积极的学习硬件知识。
  3.了解几种芯片体系结构。嵌入式不像PC领域x86一统天下,在嵌入式领域ARM、MIPS
、M68k等各显神通。例如ARM7是没有MMU的,uClinux在它上面跑是最合适了,但是没有MMU我们也必须实现简单的MM功能,同时没有MMU一些常用库函数是不能实现的,这些嵌入式开发程序员必须要了解。
嵌入式linux培训视频  4.编写无错的C程序。关于这一点建议阅读SteveMaguire的《WritingCleanCode》。我对MS没有好感,但这不影响我对MS里面大牛们的尊敬。嵌入式的调试是非常麻烦的,很耗时。虽然有gdbserver这类工具,但是你用的开发工具链中不一定包括它,而且就算用上了调试仍然是很花时间的。所以要是不想天天通宵调程序呢,那就要时时以编写无错程序为目标。
  5.了解一点编译知识。这对编写高性能程序很有帮助。
  6.学习设计模式。设计模式一般在高级语言中讨论较多,但是好东西应该大家一起分享。学习设计模式对提高我们的设计能力非常有帮助。用C语言也可以实现一些模式思想,例如我们常用的回调函数,就可看作是Command模式的C语言版本。
  7.要有前瞻性,要积极学习新技术。目前的嵌入式开发一般都是将PC应用加以剪裁,移
植到嵌入式系统中。但是随着通信技术的发展,IPv6的广泛应用,设备上网是大势所趋。许多新技术有可能在嵌入式领域率先应用。把握住这个趋势,嵌入式程序员大有可为。
  现在很多公司招程序员要求有嵌入式开发经验,其实本质上嵌入式开发和我们平常的开发没什么不同,只是要求严格一点。我写下这些希望对学习嵌入式开发的朋友们有所帮助。
  嵌入式ARM软件开发设计流程
  一.项目总体任务描述:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。