作为一名在嵌入式行业摸爬滚打许久的老鸟,回想自己的经历之路,那么漫长可又仿佛近在眼前。随着学生的日益增多,偶尔之间,会想起自己曾经的一个经历。——此文仅献给那些刚刚踏上硬件之路和还在徘徊的同学们,在此我简要的记录了我的学习经历和其间自己所获的一些心得,以帮助初学者少走弯路。当然,如果你觉得深有感触的话,这边也可以私我:

我深知对于一个初学者来说,身边有一个能手把手相授的老师该是多么幸福的事情,老师一句不经意的话可能我们初学者要花上几天甚至是几个月的时间去思考和验证。遗憾的是,我们身边并非总有这么一位老师。所幸的是而今网络发达,这致使我们不得不经常求助于网络,网络上丰富的个人经验是非常值得借鉴的,我们能从一些文章中悟出一些东西,为我所用,或者从中感受精神动力。

借此机会我想介绍一下我曾经的工作团队,因为他们对我影响极大。团队有四个人,其一是拥有11年工作经验且已拥有自己专利的高级工程师(我习惯叫他二导,他是我为什么在团队的原因),一个是拥有5年经验、热心肠的工程师,还有两个分别是电源和视频方面的专家和元老级人物。耳濡目染,自己渐渐的对硬件发生了浓厚的兴趣。从单片机,FPGA、SOPC硬件的搭建以及软件编程,以及现在正在努力研究的ARM,我是凭着无限的热情来做的。

但热情不是唯一的原因,另一个原因是试验室提供了便捷的学习环境。这里有现成的winbond 51单片机、有伟福仿真器、advanced labtool 48uxp万能编程器,一台12万的示波器,自己买了个万能板。学习阶段时,找本书就能在上边进行试验了。从简单的led闪烁、数码管显示、pwm到中断、串口通信(单片机与单片机通信,单片机与pc通信)、I2Ceeprom读写、A/D转换、温度的测量等。当时令我神魂颠倒的是每一个试验经过资料的查找、程序的编写以及调试、再到后来问题的解决,那份成就感与喜悦之情,相信只有经历过的人才能够体会。正是有这份热情和爱好,我常常在实验室呆上十二、三小时,通常是晚饭在食堂吃了后直接到验室,晚上9点半回宿舍。虽说那时候没有做过什么大项目,但是这每一个小小的实验都是我知识积累过程中的点滴,有了这积累,之后我才能涉足更大的项目。

刚进实验室的时候,二导就给了我一块开发版,是Altera公司的nios ep1c20 cyclone系列开发板,当时是以大学计划的名义买的,5000元人民币。于是就开始了我的FPGA学习之路。之前学习过verilog,只停留在纯粹的理论阶段,编几个小小的程序,用quartus-ii自带的仿真软件进行一下仿真就ok了。

用仿真软件进行仿真,往往能够得出你所想要的结果,但是一旦下载到芯片里边运行,问题就会接踵而至。万事开头难,我做的第一个实验是点亮led,自己编写程序(几行而已)、编译、引脚分配、仿真、然后就用jtag下载线连接开发板和pc,将sof文件下载到芯片。现在想起来这是多么简单的几个步骤,但是对于当时的我来说,花费了相当的时间和精力来查找资料和埋头反复实验。特别是引脚的分配,文档上只说需要这么做,那为什么要这么做呢?当时没有过多的想法,只想看到实验的结果,有了结果我就有了无限的成就感和高涨的热情,所以当经过努力,第一个FPGA实验里的led终于按照意图动作的时候,那种激动与当初学习单片机时得以实现led闪烁的情形如出一辙。

我做实验的一个惯例同时也是一个经验就是边做实验边看书,在实验中发现问题,遇到不懂的问题或者原理在查找相关的文档。我习惯动手,如果让我坐在实验室看上1天的纯理论书籍,而不让动手试验,我想我的脑袋肯定会爆炸,正因为没有这样看过书,所以这脑袋也一直健在。到后来学习ucos嵌入式操作系统我也采用了这个方法,我把它叫做“阶梯成就感”(实在是写这篇文章的时候突然觉得这个词语非常贴切,临时杜撰的)。抱着这种热情,后来一点一点地深入学习FPGA,一些常规逻辑电路的设计,包括逻辑门电路、数据选择器、编译码器、加减乘除运算器、移位器,到后来的稍微复杂的电路设计,如FIFO、数字跑表、频率计、状态机、交通等的控制、卡式电话计费系统以及UART等。

这些试验当时我都是采用的verilog语言实现的。初接触FPGA时本想学VHDL,那时的同学都用verilog,为了与他们讨论问题的方便,就改学verilog了。一学不打紧,慢慢发现自己深深地爱上了verilog,对于我来说,它无疑更适合我。这也是我要推荐的一个经验,那就是多看看你周围的人用的是什么工具,他们用的工具往往不是你最喜欢的或者不是当前最广泛最流行的,但你若要和他们交流讨论问题,那还是迁就一下,和别人所用工具一样,交流起来也会顺畅方便。到实验室后,因为实验室的员工都用伟福的仿真器,所以软件当然还是用伟福提供的。伟福的软件我认为不怎么好,只支持汇编,比起大名鼎鼎的keil c51逊了一大截,但除非你想等到自己有问题不会的时候周边竟没有人帮助你,不然在前期还是选择伟福的软件方便沟通。再后来,经过自己的摸索和向身边的工程师们请教,伟福用很熟悉了,汇编也有了自己的一套,这时候我开始在伟福里边嵌入keil,用c语言来写程序,但调试的时候用伟福软件还是有缺陷,比如不能够单步执行等。所以再后来我就下载了keil c51软件,从此以后便正式地在keil的开发界面下写程序了。当然仿真的时候也可以在keil环境下用伟福仿真器,我想伟福在制造自己产品的时候就已经考虑到这点了,他们的一些产品肯定要考虑兼容主流软件keil的。用了keil C51后就不想用伟福编译软件了,同样的用了c写程序后,就不想用汇编了。但是汇编是每一个硬件研发工程师们必备的,汇编有c不可企及之处,但有时候还非用汇编不可。汇编的运行效率高,写起来很是烦琐,烦琐规烦琐,在某些特定的时刻,汇编还是发挥了它不可替代的作用。比如在将usoc移植到单片机的时候,与处理器相关的程序还真是必须用汇编来完成的。

再后来,学习sopc。从最小系统硬件平台的搭建,到简单的led闪烁程序的编写,到sof文件在芯片上跑起来,看着led的亮与灭,心中热情澎湃。每一次接触新知识都有一种发自内心的激动,每一次接触的新东西我都从最简单的led闪烁开始,从单片机到FPGA到sopc再到ucos,每天一个小小的进步能让我燃起对工作的热情,只要有这每天小小的看得见的“阶梯成就感”,就能激发我对更多知识的追求。在此期间本人比较欣赏Altera公司推出的可编程片上系统即sopc,它解放了我们搭建硬件系统的烦琐,仅仅需要按照需求在系统里边加上自己的IP核和一些必须的外设。Altera公司或者其他的第三方公司已经为我们提供了性能和功能很完善的IP核,我们所要做的只是将这些IP核加入到我们的系统里完成我们需要的功能。硬件系统完成后,需要在Altera公司提供的nios IDE环境下对硬件系统进行软件编程,在这里,完全用c语言来完成所需要的功能。与前边学习单片机、FPGA一样,第一个实验还是led闪烁,然后慢慢的转向一些比较复杂的功能设计上去,也无非是实现以前用verilog实现过的一些功能。两者的区别是:一种完全用verilog语言来实现全部功能;一种需要先用sopc builder搭建硬件系统,然后在nios ide中进行软件的编程。这两种方法都能够实现需要的功能,但是后者更方便快捷,因为在这种方法里,我们使用的是“拿来主义”,IP核已经实现了我们的功能,要做的仅仅是去利用它而已。

再后来学习ucos嵌入式操作系统,主要是运用在FPGA里面。nios已经为使用者移植好了,不需要修改任何文件。在nios用户界面里进行一些相应的设置就可以使用了。Altera公司为我们提供的模板里边有几个很好的例子,任务管理、信号量、邮箱传递、事件标志、时间管理等提供了很好的模板,我们需要做的是认真的阅读,研究它,必要的话对模板进行一些改写来完成自己的功能,这是模仿的更高境界了,把他的一些东西进行吸收转化成为自己的东西,我想这是一个硬件爱好者和初学者非常乐于做的事情。

在进行FPGA学习的时候,我遇到过问题停滞不前,试验没有进展,心情沮丧的时候。那时对底层硬件一无所知,连对基本的原理图也看不太懂,更别说程序在开发板上是怎么运行的了。再到后来进行nios开发的时候,这种沮丧感与日俱增,每天感受不到一点进步,真是很漫长难熬的日子。一次,我和办公室的一个工程师聊天,谈到了我的困惑,他建议我先学习单片机,自己搭建硬件平台,从最小系统做起。这个工程师古道热肠,学习方面的问题他总是很耐心地帮助解答,让我受益匪浅,我很庆幸能够在这种环境当中学习。还有我的导师,他是一个拥有近30年硬件开发经验的资深研究员,开始工作的时候我什么都不懂,但总喜欢往导师办公室跑,喜欢和他瞎聊。他为人和蔼可亲,容易接近,和他交流的时候总能得到一些职业和人生方面的忠告,这些忠告将伴随着我一生。到后来,事情逐渐有了转机,我也慢慢适应了这种心情,调整好了心态。现在想起来,庆幸自己并没有绝望,没有对自己热爱的硬件失去信心。我想说的还是那句老话:遇到问题的时候,当我们感觉事情没法进展下去的时候,不妨换一种方式,与周边的人聊聊,或许会有改变。或许这就是学习嵌入式中最大的困难吧!人生总是有很多坎坷,我们的学习职业生涯也是如此。正是因为如此,我们经历了风雨,方能看见彩虹!如果你目前想学嵌入式确没有方向,或者正处于学习中存在问题又不知道如何解决的话,这边你可以私我,楼主这些年也有不少干货,相信一定可以帮助你走向新的篇章。

一只老鸟嵌入式工程师的血泪史!相关推荐

  1. 一只老鸟嵌入式工程师的血泪史! 1

    作为一名在嵌入式行业摸爬滚打许久的老鸟,回想自己的经历之路,那么漫长可又仿佛近在眼前.随着学生的日益增多,偶尔之间,会想起自己曾经的一个经历.--此文仅献给那些刚刚踏上硬件之路和还在徘徊的同学们,在此 ...

  2. 嵌入式工程师是硬件工程师么‘_硬件工程师修炼真经

    导师分配课题项目做了,我想选择硬件,毕竟大学本科从事过电子大赛,熟悉一些,对这方面感兴趣,深知自己没有熟练掌握硬件技术,所以从网上搜索了硬件工程师所要学习的知识和技能,和大多数初学者一起共享.加油! ...

  3. 嵌入式工程师的面试指南

    文章来源:电子通信.嵌入式工程师的面试指南 今天我们聊聊电子通信,嵌入式工程师面试的那些事. ... 一.公司面试求职者的目的是什么 寻找备胎的公司. 团队大体成形,有缺人的hc名额,但是项目不急的公 ...

  4. 电子通信、嵌入式工程师的面试指南

    作者:火哥 授权转载自公众号嵌入式老鸟的职场之道(id:ict_embedded) 一.公司面试求职者的目的是什么 <孙子兵法>有云知己知彼,百战不殆,当然百战不殆并不等于百战百胜,而是说 ...

  5. 【转载】电子通信、嵌入式工程师的面试指南

    转自:​https://zhuanlan.zhihu.com/p/63785660 火哥自从校招找工作到现在,面试过不下50家公司,拿到过不少于30个offer.虽然不能是百战百胜,但是也还算有着较高 ...

  6. 嵌入式工程师是怎样炼成的

    嵌入式工程师是怎样炼成的(一)----引言 2005年的3月,我独自来到北京.晴空万里,微风和煦,灿烂的阳光让人有些惊喜地自万里碧空倾泻而下.一个年轻人将要在此走上他嵌入式工程的成长之路.成长是要付出 ...

  7. 2018年摩拜校招嵌入式工程师笔试卷

    拓展: 嵌入式工程师题库(适用于各大名厂笔试.软考.计算机等级考试) 第1题:下面代码片段中有哪些隐患或者错误? 回答: 1.调用get2(m)函数的时候,没有return,也不是全局变量,无法将ne ...

  8. 计算机四级嵌入式真题,2014年3月计算机四级嵌入式工程师真题试题及答案

    2014年3月计算机四级嵌入式工程师真题试题及答案 一.项选择题 1.在进行操作系统设计时,下列哪一个是构造操作系统的方法? A.网络式结构 B.并行式结构 C.微内核结构 D.主从式结构 2.在不同 ...

  9. 嵌入式工程师最后都选择了什么职位?

    大家好,我是张巧龙,今天给大家分享一篇关于嵌入式工程师的岗位文章. 嵌入式工程师分布在各行各业上面,这其中包括了消费电子.工业电子.汽车电子和军用电子等. 从功能上面看,嵌入式本身包括了51.mcu. ...

最新文章

  1. 用for实现Go的while和do...while
  2. ALL ABOUT CIRCUITS 的资源整理
  3. 车辆姿态相关的一些传感器
  4. mysql 备份库的shell_MySQL数据库的shell脚本自动备份
  5. 21天让你成为Horizon View高手—Day20:证书管理
  6. hive 导入hdfs数据_将数据加载或导入运行在基于HDFS的数据湖之上的Hive表中的另一种方法。
  7. “开源”vs“商业”,差别到底有多大?这篇测试一目了然
  8. WCF热带鱼书学习手记 - ABC
  9. MS SQL Server 游标及实例(三)
  10. tomcat,zookeeper,activeMQ,Kafka设置jvm参数
  11. 吧唧下工作的事情 - 记用canvas封装的小小控件
  12. 仿站小工具和小飞兔(扒取网站页面)
  13. 个人随手日志之astah professional
  14. 2016年度总结——在路上
  15. wps删除分节符导致前面格式变乱的解决方案
  16. Rancher 2.2 GA:企业进入应用跨多K8S集群、混合云部署新时代
  17. matlab曲面拟合的算法,用Matlab 实现移动曲面拟合法生成DEM
  18. 再谈腾讯与360无端争吵事件
  19. python爬虫实战笔记---以轮子哥为起点Scrapy爬取知乎用户信息
  20. obsidian和zotero联动无法跳转zotero

热门文章

  1. 「镁客·请讲」Video++董慧智:让AI融入消费级视频,我们打开了视频的“黑盒子”...
  2. python脚本自动化赚钱系统_python实现自动化上线脚本的示例
  3. eclipse java混淆打包,Android Studio和eclipse混淆打包总结
  4. automotive industry is embracing change and agile transitioning
  5. java.sql.SQLException: Access denied for user ‘xxx‘@‘localhost‘ (using password: YES)
  6. 一文透析腾讯游戏安全反外挂能力
  7. Weisfeiler-Lehman(WL)算法测试图同构
  8. 用Python做个打飞机小游戏超详细教程
  9. 数学建模不会 LaTex 排版 | 教你如何在 Word 中优雅地使用漂亮的 LaTex 公式
  10. 厦门考计算机竞赛保送北大清华名单,优秀!厦门这些学生将保送清华北大等名校...