首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入式编程是否更接近于电气工程或软件开发?

嵌入式编程是否更接近于电气工程或软件开发?
EN

Software Engineering用户
提问于 2010-11-30 02:19:36
回答 8查看 34.4K关注 0票数 36

我正接到一份在微控制器上编写嵌入式C的工作。一开始,我会认为嵌入编程对我来说太低了,但也许我想错了。

通常情况下,我会忽略编写嵌入式代码的机会,因为我并不认为自己是一名电气工程师。这是个错误的假设吗?我是否能够为嵌入式系统编写有趣而有用的软件,还是会因为软件栈太低而自责?

我上了计算机科学学校,非常喜欢写一个编译器,思考并发算法,设计数据结构和开发框架。然而,我目前是作为一个网页开发人员,这并不是尖叫的有趣的事情,我刚才描述。(我目前处理的问题如下:“此复选框需要左侧4个像素”和“此日期格式错误”)。

我很感谢大家的意见。我知道我必须自己做决定,我只想澄清一下作为一个嵌入式程序员意味着什么,如果它符合我认为有趣的内容。

EN

回答 8

Software Engineering用户

回答已采纳

发布于 2010-11-30 03:32:09

如果你想在嵌入式系统上很好地工作,那么是的,有时候你需要像个EE一样思考。这通常是当您编写代码与各种外围设备(串行总线,如UART、SPI、I2C或USB)、8位和16位定时器、时钟生成器以及ADC和DACs接口时。用于微控制器的“数据表”通常长达数百页,因为它们描述了每个寄存器的每一个部分。它可以帮助你阅读一个原理图,这样你就可以用示波器或逻辑分析器探测一个电路板。

在其他时候,它只是在编写软件。但是在严格的限制下:通常您将没有一个正式的OS或其他框架,您可能只有几KB的RAM,或者64 KB的程序内存。(这些限制假设您是在较小的8位或16位微上编程;如果您使用32位处理器上的嵌入式Linux,您将不会有相同的内存限制,但您仍然需要处理Linux发行版没有提供驱动程序的任何定制外围硬件。)

我在EE和CS都有背景,所以我喜欢硬币的两面。我还做了一些网页编程(主要是PHP)和桌面应用程序(C#和Delphi),但我一直最喜欢在嵌入式项目上工作。

票数 34
EN

Software Engineering用户

发布于 2010-11-30 20:28:51

@tcrosley的回答很好。你不需要成为一名电气工程师,但了解基本知识是有帮助的。

我不认为你需要担心“软件栈太低”。作为一名嵌入式工程师,我不得不解决许多有趣的问题。你提到一份你喜欢的任务清单:

  • 并发算法--处理异步硬件级中断与使用OS线程模型一样有许多有趣的挑战。
  • 设计数据结构-检查。设计的紧凑和有效的访问。
  • 开发框架-检查。在基本的系统上,你可以设计一个迷你操作系统。
  • 编写编译器--也许不会,但您最终可能会执行类似于编译器的程序集生成步骤的低级代码优化。

任何时候,我都会选择在嵌入式系统上工作,而不是编写UI代码。你永远不会忘记,当你第一次看到机器开始移动的方式,你的编程。这比推像素更让人满意。

票数 20
EN

Software Engineering用户

发布于 2012-01-27 03:46:29

作为一个嵌入式程序员,我的工作是使自定义硬件工作。通常,我在开发板上开发了一组软件,或者开发了以前版本的硬件。当新的董事会进来时,我的工作是把我的软件放在板上,并证明一切正常。

因为几乎总是存在某种问题,所以调试技巧是必不可少的。如果外部外设不工作,它是一个坏的芯片,坏连接到芯片,错误的代码或不正确的使用上芯片外设?唯一的判断方法是进行广泛的调试。这意味着对示波器、网络分析器、逻辑分析器和目标调试器都很满意。调试过程几乎是科学的。我提出了一个假设,设计了一个实验来支持或反对我的假设,并进行了检验。

在评估实习生或新的嵌入式工程师时,这种技能是最关键的。所有的软件都有问题,但是一旦你开始与物理世界接口,这些问题的多样性就会成倍增长。我工作的实质是解决观念和现实之间的一系列问题。

票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/22416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档