0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式硬件工程师的心得

ARM与嵌入式 来源:ARM与嵌入式 2023-01-30 15:18 次阅读

前言

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

曾经的工作团队有四个人,其一是拥有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学习的时候,我遇到过试验没有进展、心情沮丧的时候。那时对底层硬件一无所知,连对基本的原理图也看不太懂,更别说程序在开发板上是怎么运行的了。每天感受不到一点进步,真是很漫长难熬的日子。

一次,我和办公室的一个热心肠的工程师聊天,谈到了我的困惑,他建议我先学习单片机,自己搭建硬件平台,从最小系统做起。学习方面的问题他总是很耐心地帮助解答,让我受益匪浅,我很庆幸能够在这种环境当中学习。

遇到问题的时候,感觉事情没法进展下去的时候,不妨换一种方式,与周边的人聊聊,或许会有改变。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21665

    浏览量

    601746
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632840
  • sopc
    +关注

    关注

    2

    文章

    247

    浏览量

    62006

原文标题:嵌入式硬件工程师的心得

文章出处:【微信号:ARM与嵌入式,微信公众号:ARM与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式热门领域有哪些?

    通过物联网连接各种物理设备和传感器,促使它们之间实现信息的交换和数据的共享。从智能家居到智能城市,物联网的应用不断扩展,为嵌入式系统工程师带来了广泛的就业机会和发展前景。 自动驾驶 自动驾驶技术作为
    发表于 07-16 09:23

    找STM32硬件开发兼职工程师

    上海做传感器的公司,找STM32硬件开发兼职工程师,会硬件开发,嵌入式软件开发,可项目外包。有意联系:15900460170
    发表于 06-22 19:12

    嵌入式软件工程师如何提升自己?

    的发展打下坚实的基础。 2.掌握专业技能 除了基础知识外,嵌入式软件工程师还需要掌握专业的技能。这包括熟练掌握嵌入式系统的开发工具、硬件平台和软件开发流程。建议通过参加培训课程、实习经
    发表于 06-12 11:20

    从事嵌入式方向,一定要软硬件通吃?

    嵌入式系统开发领域,软件和硬件的界限常常模糊不清。一个常见的问题是,嵌入式软件工程师是否需要了解硬件。本文将探讨这一问题的重要性,并分析
    的头像 发表于 06-05 08:10 1072次阅读
    从事<b class='flag-5'>嵌入式</b>方向,一定要软<b class='flag-5'>硬件</b>通吃?

    嵌入式软件工程师硬件工程师的区别?

    嵌入式软件工程师硬件工程师的区别? 嵌入式软件工程师 嵌入
    发表于 05-16 11:00

    一款适合嵌入式工程师使用的在线工具

    一款适合嵌入式工程师使用的在线工具,工具有如下功能,如下图所示: 1. 报文校验功能,如下图所示 2. UDP服务端测试工具:该UDP服务端工具可以理解为 “UDP服务端” 或者 “服务器
    发表于 04-09 22:20

    嵌入式工程师需要掌握哪些技术?

    嵌入式工程师需要掌握哪些技术? 嵌入式系统是当今科技领域中的重要组成部分,它们存在于我们生活的方方面面,从智能手机到汽车控制系统,从家电到医疗设备。因此,对于那些想要进入嵌入式行业的
    发表于 03-04 16:38

    嵌入式人工智能的就业方向有哪些?

    的发展方向有很多,门槛高低不一样。下面给大家列举一些相应岗位所需具备的技能: 一:嵌入式Linux,C语言开发工程师,Linux软件开发工程师 LinuxC语言开发 LinuxC语言开发进阶 Linux
    发表于 02-26 10:17

    职位介绍 之 嵌入式开发工程师

    什么是嵌入式软件开发         嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。         它
    的头像 发表于 01-17 17:23 443次阅读

    一名嵌入式工程师的涨薪经历

    下面是一位嵌入式工程师的涨薪经历,希望可以帮助到你,帮到其他的在校学生。   阶段 1 大一到大三这个阶段我与大多数学生相同:   一、学习本专业知识(电子信息类专业) 二、学习嵌入式软件开发需要
    的头像 发表于 01-05 08:39 412次阅读

    嵌入式软件工程师常用的

    最近我换工作了,看见不同嵌入式软件工程师用的平台都不一样,所以我整理了一下。PlatformIO:多平台支持:PlatformIO支持多种嵌入式平台,包括Arduino、ESP8266、ESP32
    的头像 发表于 12-24 08:00 628次阅读
    <b class='flag-5'>嵌入式</b>软件<b class='flag-5'>工程师</b>常用的

    有没有谁做过DSP、微型逆变器/微逆变/大型工业逆变器、嵌入式软件的软硬件高级工程师

    急需 DSP、微型逆变器/微逆变/大型工业逆变器、嵌入式软件等丰富经验的软件高级工程师硬件高级工程师,深圳,面议面议,自荐/推荐请联系我。欢迎来询zsrfwk@163.com
    发表于 12-14 17:32

    嵌入式硬件和软件哪个好?

    嵌入式硬件和软件哪个好? 嵌入式硬件工程师哪个更有前途呢?一起来看看。 嵌入式是分为软
    发表于 12-05 15:17