打印
[应用相关]

嵌入式硬件工程师的心得

[复制链接]
444|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2022-11-22 09:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
前言

    此文献给那些刚刚踏上嵌入式之路的朋友们,在此我简要的记录了我的学习经历和其间自己所获的一些心得,希望能帮助初学者少走弯路。

    上图就是我工作学习过的实验室一角,看起来杂乱不堪,摆满了各种电子元器件与工具。    曾经的工作团队有四个人,其一是拥有11年工作经验且已拥有自己专利的高级工程师,一个是拥有5年经验、热心肠的工程师,还有两个分别是电源和视频方面的专家。在这里耳濡目染,渐渐的对硬件发生了浓厚的兴趣。

单片机    从单片机,FPGA、SOPC硬件的搭建以及软件编程,以及现在正在努力研究的ARM,我是凭着无限的热情来做的。    实验室提供了便捷的学习环境,这里有现成的winbond 51单片机、有伟福仿真器、advanced labtool 48uxp万能编程器,一台12万的示波器。自己买了个万能板,学习阶段时,找本书就能在上边进行试验了。    从简单的led闪烁开始,后来接触到数码管显示、pwm到中断、串口通信(单片机与单片机通信,单片机与pc通信)、I2Ceeprom读写、A/D转换、温度测量等。一个个试验,从资料查找、程序编写、调试直到问题的解决,收获了满满的成就感。

FPGA    刚进实验室的时候,得到了一块Altera公司的nios ep1c20 cyclone系列开发板,当时是以大学计划的名义买的,5000元*币。于是就开始了我FPGA学习之路。之前学习过verilog,只停留在纯粹的理论阶段,编几个小小的程序,用quartus-ii自带的仿真软件进行一下仿真就ok了。    用仿真软件进行仿真,往往能够得出你所想要的结果,但是一旦下载到芯片里边运行,问题就会接踵而至。万事开头难,我做的第一个实验是点亮led,自己编写程序(几行而已)、编译、引脚分配、仿真、然后就用jtag下载线连接开发板和pc,将sof文件下载到芯片。现在想起来这是多么简单的几个步骤,但是对于当时的我来说,花费了相当的时间和精力来查找资料和埋头反复实验。特别是引脚的分配,文档上只说需要这么做,那为什么要这么做呢?当时没有过多的想法,只想看到实验的结果,有了结果我就有了无限的成就感和高涨的热情,所以当经过努力,第一个FPGA实验里的led终于按照意图动作的时候,那种激动与当初学习单片机时得以实现led闪烁的情形如出一辙。    我做实验的一个惯例同时也是一个经验就是边做实验边看书,在实验中发现问题,遇到不懂的问题或者原理在查找相关的文档。抱着这种热情,后来一点一点地深入学习FPGA,一些常规逻辑电路的设计,包括逻辑门电路、数据选择器、编译码器、加减乘除运算器、移位器,到后来的稍微复杂的电路设计,如FIFO、数字跑表、频率计、状态机、交通等的控制、卡式电话计费系统以及UART等。    这些试验当时我都是采用的verilog语言实现的。初接触FPGA时本想学VHDL,那时的同学都用verilog,为了与他们讨论问题的方便,就改学verilog了。一学不打紧,慢慢发现自己深深地爱上了verilog,对于我来说,它无疑更适合我。这也是我要推荐的一个经验,那就是多看看你周围的人用的是什么工具,他们用的工具往往不是你最喜欢的或者不是当前最广泛最流行的,但你若要和他们交流讨论问题,那还是迁就一下,和别人所用工具一样,交流起来也会顺畅方便。    到实验室后,因为实验室的员工都用伟福的仿真器,所以软件当然还是用伟福提供的。伟福的软件我认为不怎么好,只支持汇编,比起大名鼎鼎的keil c51逊了一大截,但除非你想等到自己有问题不会的时候周边竟没有人帮助你,不然在前期还是选择伟福的软件方便沟通。    再后来,经过自己的摸索和向身边的工程师们请教,伟福用很熟悉了,汇编也有了自己的一套,这时候我开始在伟福里边嵌入keil,用c语言来写程序。再后来我就下载了keil c51软件,从此以后便正式地在keil的开发界面下写程序了。当然仿真的时候也可以在keil环境下用伟福仿真器,我想伟福在制造自己产品的时候就已经考虑到这点了,他们的一些产品肯定要考虑兼容主流软件keil的。用了keil C51后就不想用伟福编译软件了,同样的用了c写程序后,就不想用汇编了。但是汇编是每一个硬件研发工程师们必备的,汇编有c不可企及之处,但有时候还非用汇编不可。汇编的运行效率高,写起来很是烦琐,但是在某些特定的时刻,汇编还是发挥了它不可替代的作用。比如在将usoc移植到单片机的时候,与处理器相关的程序还真是必须用汇编来完成的。

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

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

后记    其实,在进行FPGA学习的时候,我遇到过试验没有进展、心情沮丧的时候。那时对底层硬件一无所知,连对基本的原理图也看不太懂,更别说程序在开发板上是怎么运行的了。每天感受不到一点进步,真是很漫长难熬的日子。    一次,我和办公室的一个热心肠的工程师聊天,谈到了我的困惑,他建议我先学习单片机,自己搭建硬件平台,从最小系统做起。学习方面的问题他总是很耐心地帮助解答,让我受益匪浅,我很庆幸能够在这种环境当中学习。    遇到问题的时候,感觉事情没法进展下去的时候,不妨换一种方式,与周边的人聊聊,或许会有改变。


使用特权

评论回复
沙发
公羊子丹| | 2024-10-21 07:17 | 只看该作者

应在操作时间内将胶料灌注完毕,否则影响流平

使用特权

评论回复
板凳
万图| | 2024-10-21 08:20 | 只看该作者

测试负载测试是在特定的测试条件下进行的

使用特权

评论回复
地板
Uriah| | 2024-10-21 09:23 | 只看该作者

在测试中,可以改变负载电流,得到最大输出电流和输出电压

使用特权

评论回复
5
帛灿灿| | 2024-10-21 11:19 | 只看该作者

信号防雷电路应满足相应接口信号传输速率及带宽的需求,且接口与被保护设备兼容。

使用特权

评论回复
6
Bblythe| | 2024-10-21 12:22 | 只看该作者

随着对电路板模块的需求增加

使用特权

评论回复
7
周半梅| | 2024-10-21 14:18 | 只看该作者

防雷电路的输出残压值必须比被防护电路自身能够耐受的过电压峰值低,并有一定裕量

使用特权

评论回复
8
Pulitzer| | 2024-10-21 15:21 | 只看该作者

模信号是幅度相等且相位相同的信号

使用特权

评论回复
9
童雨竹| | 2024-10-21 17:17 | 只看该作者

Cfinal是CESD和人体电容的并联组合

使用特权

评论回复
10
Wordsworth| | 2024-10-21 18:20 | 只看该作者

构成各种滤波器对EMI进行滤波

使用特权

评论回复
11
Clyde011| | 2024-10-21 19:23 | 只看该作者

在动态测试之前,首先需要设定测试时间和测试频率

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1323

主题

3805

帖子

0

粉丝