原创 我的硬件之路

2009-4-15 10:56 1654 12 14 分类: MCU/ 嵌入式


致初学者

作 者:龙行天下
邮 箱:dragonjxl@163.com
喜欢的运动:篮       球
喜欢的音乐:二   胡
人  生  目标:长远-自己管理自己;近期-毕业后想去华为搞硬件研发
主 题:硬件(单片机、FPGA、SOPC、ARM)
阅  读  对象:初学者和徘徊者
日 期:2007 年 10 月 26 日晚
    本人是一个在校研究生,本科就读于吉林大学通信工程学院,硕士正就读于中船重工 709 研究
所计算机应用专业。对硬件有着无限的热情与爱好,对未来也有着无限的憧  憬与向往。每一个人都在
为自己的将来作着各种各样的计划,都在考虑我们未来的职业,既然我们已经选择了硬件,那么我们就
热爱它吧,把我们的才能与热情都奉献出来,我们不仅仅能够得到物质的补偿(赫赫,现在还没有得到
什么物质补偿,我想毕业后就会的),还会在精神上感到满足与快乐(已经有所感受了,哈哈)。我是一
个还没有踏上社会的学生,没有丰富的项目经验和社会阅历,所以凡想在此文中获取高深的人生哲理与
职业箴言,那我恳请您赶紧不要看下去,如若不然,我恐怕受到您的讥笑;仅以此文献给那些刚刚踏上
硬件之路和还在徘徊的同学们,我简要的记录了我的学习经历和其间自己所获的一些心得,以避免初学
者走弯路或者是少走弯路。我深知对于一个初学者来说,身边有一个手把手的老师那该是多么幸福的一
件事情,他的一句不经意的话或许我们初学者都要花上几天甚至是几个月的时间去思考和验证。但是我
们身边并非总是有一个这么样的老师,我们就需要在网络上去寻找答案了,前人的经验是非常值得借鉴
的,我们从他们写得一些文章中可以悟出一些东西  ,为我所用,或者是从中吸取精神动力等等。搞硬
件的人一定要读一读任正非的文章,李嘉诚的文章,周立功的文章,以及网上流传的其他一些文章。现
在还记得学习单片机的时候找到的一片文章叫做《学习单片机的八个步骤》。这些文章总是像一个指路
标,指引初学者向着正确的方向走去。  此文纯属无稽之谈,毫无含金量,若是能够给初学者带来哪怕
是一点点地影响,能够为你们提供一点点地帮助,那么我将感到无限的欣慰。
     我总是想用最简短的话语来表达我的思想,说出我最想对初学者说的话,但是往往力不能及。也
深知大家时间的宝贵,不愿把时间浪费在毫无意义的事情上,所以我把我最想说的话用提纲的形式列在
文章的前头了,没有时间的话,各位看官只需看看前头就可以了。
    优秀硬件工程师需要什么(来自网上文章以及自己的总结):
1. 对硬件无限的热情(第一位,本人认为)
2. 数字电路、模拟电路、protel 等(高频等其他的知识我还没有用过)
3. C 语言
4. 单片机(汇编语言)
5. FPGA(包括 verilog/vhdl、sopc)
6. ARM(包括嵌入式操作系统,建议先学 UCOS,适合初学者)
7. DSP
    以上并非每一种都要精通,根据自己的实际,5、6、7 可以选择其中的一到两种,当然都会的话
那更好。2-4 本人认为这是基础,必须精通。
    硬件需求配置:
1. 学习单片机的话,仿真器是必不可少的,有没有编程器倒是影响不大,建议自己买一块即插即用的
万能板,自己搭建系统来试验。这样不用烙铁焊接了,因为我们作为学习者,很容易焊错器件或者是引
脚。买开发板的话,就会对硬件的连接不会很了解,建议初学者自己搭建系统以及其他的外扩器件。这
会让你对整体的硬件连接了如指掌。全在自己的掌控之中。还有有一台示波器的话那是再理想不过了,
那会帮助我们分析解决问题,特别是在做串口实验、中断、I2CEEPROM 读写的时候。
2. 学习 FPGA,那么就不能像学习单片机一样找来一片芯片就可以动手了。像 51 类单片机的引脚不
是很多,但是 FPGA 就不一样了,往往有几十个甚至一百多的引脚,我用的 altera 的 ep1c20 有 144 个
引脚,全贴片工艺,所以这个时候我们就必须在市场上买一个开发板了。我用的是 altera 公司的 EP1C20
cyclone 系列的开发板,是我们办公室的人以前买的,现在正好我用。据说是 5000 元,还是大学计划时
候买的。有条件用好的当然好,但是对于我们一般初学者用的话,只要带有常用功能的开发板就可以了 ,
市场上 1000 元左右的还是有的。
3. ARM 学习的话,当然也离不开开发板的购买,上次给我二导提建议给我买一个,他很爽快的答应
了,让我挑选一块,我选了周立功的 smartarm2200,1980 元 RMB,货现在还没有来。学习 arm 的 话 ,
嵌入式操作系统是少不了的。操作系统有很多,用的最多的是 linux    ,由之发展而来的有 uclinux、
armlinux 等;其次是 ucos。本人建议先学习 ucos,它代码量少,容易学习。要是有 altera 的 nios 开发板的话,也可以学习 ucos,altera 公司的 nios ide 支持好几种 RTOS,其中就包括 ucos,直接用就 ok 了。
4. DSP属于比较高的层次,对人的要求比较高。开发板价格应该也不菲,我现在还没有用过。
各位同学看了后会发现学习这些东西不光是时间、精力的问题,还涉及到一个让我们同学们很感
冒的问题,那就是器件的购买,这些都需要钱,而且价格都不菲。大部分的我们是没有这份闲钱的,同
学们可以找几个志同道合的同学一块买,还可以一块讨论。要是学校实验室有的话就在实验室搞,要是
导师有就找导师要,总之不要放过任何可能的机会,同志们要深知我们的命运把握在我们自己手中,既
然选择了硬件这条路,就要认认真真地走下去,不光要走下去,还要想方设法走的很好。
以上都是我的一家之言,同学们千万不要全信,仅给诸君一个初步的认识,如若错误还请一笑了
之,纯当小孩之言,无稽之谈。
    在啰嗦之前,我想介绍一下我办公室的人员组成,因为这个对我有很大的影响。办公室有四
个人,一个是拥有十一年工作经验且已拥有自己专利的高级工程师(我的导师要他带我,我习惯叫他二
导,这是我为什么在这个办公室的原因),一个是拥有 5 年经验热心助人的工程师,还有两个分别是电
源和视频方面的专家或者元老级人物。耳濡目染,自己渐渐的对硬件发生了浓厚的兴趣。从单片机,
FPGA,SOPC 硬件的搭建以及软件编程,以及现在正在努力研究的ARM,我是凭着无限的热情来做
的。
    热情不是唯一的原因  ,还有另外一个原因就是试验室给我提供了很好的学习环境。学习单
片机的时候,试验室有现成的 winbond 51 单片机,有伟福仿真器,有 advanced labtool 48uxp 万能编程
器,有一台十二万的示波器,自己买个万能板,找本书就在上边进行试验了。从简单的 led 闪烁、数码
管显示、pwm 到中断、串口通信(单片机与单片机通信,单片机与 pc 机通信)、I2Ceeprom 读写、A/D
转换、温度的测量等等,给我成就感的是每一个试验经过资料的查找、程序的编写以及调试、再到后来
问题的解决,那份成就感与喜悦之心只有有过这种经历的人才能够体会。正是有这份热情和爱好,常常
在实验室呆上十二三个小时,通常是晚饭在食堂吃了后直接到验室,晚上九点半回寝室(办公楼 10 点
关门)。虽说那时候没有做过什么大项目,但是这每一个小小的实验也是人生知识的积累,有了这些知
识的积累,我想也为以后作更大的项目打下了基础。
刚进实验室的时候,我的二导就给了我一块开发版,是 altera 公司的 nios ep1c20 cyclone 系列开
发板,当时是以大学计划买的,5000RMB。于是就开始了我的 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 年硬件开发经验的资深研究员,才开
始的时候我什么都不懂(赫赫,感觉现在依然什么都不懂,东西越学越多,总也学不完),但是我总喜
欢跑到我导师的办公室和他瞎聊。他和蔼可亲,容易接近,和他交流的时候总是给我一些职业和人生方
面的忠告,这些忠告将会伴随着我的人生。
    人生总是有很多坎坷,我们的学习也是的。在这个时候我们就要看看任正非写给华为员工的一
封信《要快乐的度过充满困难的一生》,在那里我们可以找到好好活下去的理由;当看中了某件事情的
时候,我们就需要鼓足勇气,满腔热情地去迎接它,遇到困难的时候多和别人交流,或者是去网上看看
李嘉诚的写给青年的《are you ready》,在那里我们可以学到谦虚、勇气、智慧、毅力。
最后送给我们的初学者一句话。《圣经》中马太福音里的一句话:凡有的,还要加给他叫他多
余;没有的,连他所有的也要夺过来。

文章评论2条评论)

登录后参与讨论

用户193118 2009-5-26 16:21

好东西,同行希望给予指点!!

用户396953 2009-4-18 21:50

受教了
相关推荐阅读
burkett2011_327610014 2010-11-21 15:19
RT-Thread 国产嵌入式操作系统
RT-Thread是一国内开源的实时嵌入式操作系统,所有代码遵循GNU GPLv2许可证发布。首先RT-Thread是一个实时操作系统核心,完全符合实时系统的特征,做到了硬实时的要求。这个核心同时也是...
burkett2011_327610014 2010-08-12 19:46
EDN换礼,圈圈的书和学习套件已经收到,支持EDN
圈圈的书和学习套件已经收到,EDN速度真快,谢谢EDN,谢谢huangna!...
burkett2011_327610014 2009-11-15 20:15
一名25岁的董事长给大学生的忠告
一、读大学,究竟读什么?   大学生和非大学生最主要的区别绝对不在于是否掌握了一门专业技能……一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定……草木可以在校园年复一年地生...
burkett2011_327610014 2009-11-15 20:13
电子信息专业学生,出来之后要干什么呢?
如果从工程师和研究生的专业方向来看,电子信息专业的方向大概有1)数字电子线路方向。从事单片机(8位的8051系列、32位的ARM系列等等)、FPGA(CPLD)、数字逻辑电路、微机接口(串口、并口、U...
burkett2011_327610014 2009-11-08 11:26
ARM微处理器运行模式
  ARM微处理器支持7种运行模式,分别为:        用户模式(usr):ARM处理器正常的程序执行状态;        快速中断模式(fiq):用于高速数据传输或通道管理;        外部...
burkett2011_327610014 2009-11-07 22:15
可以让你少奋斗10年的工作经验
 0推荐第一:不要认为停留在心灵的舒适区域内是可以原谅的。      每个人都有一个舒适区域,在这个区域内是很自我的,不愿意被打扰,不愿意被push,不愿意和陌生的面孔交谈,不愿意被人指责,不愿意按照...
我要评论
2
12
关闭 站长推荐上一条 /2 下一条