Embedded 学习嵌入式系统编程的先决条件是什么?

Embedded 学习嵌入式系统编程的先决条件是什么?,embedded,Embedded,我已经完成了计算机工程学位。我们有一些数字信号处理、信息理论等基础电子学课程,但我的主要领域是编程 然而,我想进入嵌入式系统编程领域,但我不知道它是如何实现的。然而,我非常渴望进入这个领域 我的问题是: 嵌入式系统的编程语言是什么 我能在没有任何电子基础知识的情况下学习吗 还有其他我应该知道的先决条件吗 作为一名应届毕业生,我进入这个领域时并不知道这是如何做到的,但在1.5年后我就辞职了。所以,我所说的可能有点生疏,而且肯定不全面 我们使用的语言是C。但当时,我们开发的设备上的磁盘空间是4MB

我已经完成了计算机工程学位。我们有一些数字信号处理、信息理论等基础电子学课程,但我的主要领域是编程

然而,我想进入嵌入式系统编程领域,但我不知道它是如何实现的。然而,我非常渴望进入这个领域

我的问题是:

  • 嵌入式系统的编程语言是什么
  • 我能在没有任何电子基础知识的情况下学习吗
  • 还有其他我应该知道的先决条件吗

作为一名应届毕业生,我进入这个领域时并不知道这是如何做到的,但在1.5年后我就辞职了。所以,我所说的可能有点生疏,而且肯定不全面

我们使用的语言是C。但当时,我们开发的设备上的磁盘空间是4MB,内存是8MB,我知道使用C是因为它的库占用空间很小。显然,表现也是一个标准

至于基础电子学,入门级职位几乎没有必要。随着时间的推移,您将获得所需的信息和经验


不是先决条件,但有操作系统内部和系统开发经验者优先。

毫无疑问,需要有数字电子和低水平计算机工程方面的经验或至少有重要的理解。您需要能够阅读设备数据表并理解它们。示波器、万用表、逻辑分析仪等。。。这些都是行业的工具


C语言是最常用的语言,但更高级的语言正在慢慢地进入

语言:C语言、汇编语言、处理语言、Basic语言以及其他各种语言,这取决于您使用的平台以及可用的平台


如果您在或都是堆栈交换风格的站点(如下面所示)询问相同的问题,但面向电子和“物理计算”,您可能会得到更具体的信息。

您必须接受约束并能够处理它们:

  • CPU速度
  • 稀缺记忆
  • 缺乏联网设施
  • 自定义编译器和操作系统
  • 定制主板和驱动程序
  • 使用逻辑分析器进行调试
  • 奇怪的编码和测试实践

奖励是对正在发生的事情有深刻的理解。

您将希望非常熟悉C语言,并对汇编有坚实的理解。在systems/embedded中,通常您使用的是少量内存和较慢的处理器,因此您需要了解如何明智地使用有限的资源

如果你把这当作一种爱好,拿起gumstix板或arduino,这些开发板将给你数百小时的学习和乐趣

如果你想以此为职业,找一份项目听起来很有趣的工作,把你的手弄脏。完成每一项任务,问问自己如何才能做得更好,并从中学习


无论哪种方式,都可以享受愉快的编码

VHDL、Verilog和FPGA也是这一领域的重要参与者。有了良好的CS背景,大量的投入,也许还有一些麻省理工学院的开放式课程,你将能够完成一些好的事情。对CPU体系结构和一些ASM的了解也很长。

< P>嵌入式系统一般都是用C编程的,虽然在系统的末端有系统,当代码空间或时间很紧(或者没有合适的C编译器可用)时,使用汇编程序,而在另一端,使用C++到.NET Cu压。这取决于你所说的嵌入式系统,它们从只有几百字节RAM和程序空间的小型微控制器,到运行全多任务操作系统和用户界面的智能手机类型的设备

如果没有电子学方面的背景,你将进一步进入这一领域的高端,因为它与硬件的联系更少,更类似于桌面开发。随着应用范围的不断深入,电子、模拟和数字、电源、噪声问题、合规性问题、热量问题和其他方面的知识都将构成一个真正具有挑战性的设计环境


从阅读一些链接开始,学习C。学习将C应用于所有问题。其他语言可以等待。最终汇编会有所帮助,任何程序员都不应该不使用脚本语言

根据您使用的嵌入式目标,PC和您的目标之间的差异可能很小。由于没有什么电子背景,这将是你最容易的入门

小型处理器将为您提供最陡峭的学习曲线,但您将对嵌入式编程学习最多。然而,没有电子背景,这可能会带来额外的问题,你可能还没有技能来解决


如果你想在基础知识之外取得更大的进步,最终你必须学习电子学。

到目前为止,我在回答中没有提到的一件事是,到目前为止,你可能已经在操作系统的上下文中完成了大部分编码。在许多(也许是大多数?)情况下,与软件相反的是固件,您将无法在操作系统上进行编码。这就是为什么这么多其他答案表明,良好的电子知识是至关重要的。

正如其他人所提到的,嵌入式可能意味着很多事情。在我的世界(航空航天和国防),我们使用实时操作系统(VxWorks和Integrity是最大的玩家),偶尔也使用Linux。我们主要以C语言编程,但如果项目已经决定使用面向对象的编程和建模,则也可以使用C++。p> 因此,对于预需求,C是肯定的。你真的需要学习所有关于C的知识,包括位操作,处理问题