我正接到一份在微控制器上编写嵌入式C的工作。一开始,我会认为嵌入编程对我来说太低了,但也许我想错了。
通常情况下,我会忽略编写嵌入式代码的机会,因为我并不认为自己是一名电气工程师。这是个错误的假设吗?我是否能够为嵌入式系统编写有趣而有用的软件,还是会因为软件栈太低而自责?
我上了计算机科学学校,非常喜欢写一个编译器,思考并发算法,设计数据结构和开发框架。然而,我目前是作为一个网页开发人员,这并不是尖叫的有趣的事情,我刚才描述。(我目前处理的问题如下:“此复选框需要左侧4个像素”和“此日期格式错误”)。
我很感谢大家的意见。我知道我必须自己做决定,我只想澄清一下作为一个嵌入式程序员意味着什么,如果它符合我认为有趣的内容。
发布于 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),但我一直最喜欢在嵌入式项目上工作。
发布于 2010-11-30 20:28:51
@tcrosley的回答很好。你不需要成为一名电气工程师,但了解基本知识是有帮助的。
我不认为你需要担心“软件栈太低”。作为一名嵌入式工程师,我不得不解决许多有趣的问题。你提到一份你喜欢的任务清单:
任何时候,我都会选择在嵌入式系统上工作,而不是编写UI代码。你永远不会忘记,当你第一次看到机器开始移动的方式,你的编程。这比推像素更让人满意。
发布于 2012-01-27 03:46:29
作为一个嵌入式程序员,我的工作是使自定义硬件工作。通常,我在开发板上开发了一组软件,或者开发了以前版本的硬件。当新的董事会进来时,我的工作是把我的软件放在板上,并证明一切正常。
因为几乎总是存在某种问题,所以调试技巧是必不可少的。如果外部外设不工作,它是一个坏的芯片,坏连接到芯片,错误的代码或不正确的使用上芯片外设?唯一的判断方法是进行广泛的调试。这意味着对示波器、网络分析器、逻辑分析器和目标调试器都很满意。调试过程几乎是科学的。我提出了一个假设,设计了一个实验来支持或反对我的假设,并进行了检验。
在评估实习生或新的嵌入式工程师时,这种技能是最关键的。所有的软件都有问题,但是一旦你开始与物理世界接口,这些问题的多样性就会成倍增长。我工作的实质是解决观念和现实之间的一系列问题。
https://softwareengineering.stackexchange.com/questions/22416
复制相似问题