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

时间:2010-03-22 12:36:52

标签: embedded

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

但是,我希望进入嵌入式系统编程,我不知道它是如何完成的。但是,我非常热衷于进入这个领域。

我的问题:

  • 用于编程嵌入式系统的语言有哪些?
  • 如果没有电子学的基础知识,我能学习吗?
  • 我应该知道的任何其他先决条件?

11 个答案:

答案 0 :(得分:9)

毫无疑问,需要经验或至少对数字电子和低级计算机工程有深刻理解。您需要能够读取设备数据表并理解它们。示波器,万用表,逻辑分析仪等......是行业的工具。

主要使用C语言,但是更高级别的语言正在慢慢潜入。

答案 1 :(得分:7)

嵌入式系统入门本身就是一项复杂的任务,因为它是一个非常庞大的领域,在硬件和软件方面有很多选择。

用于编程嵌入式系统程序的语言是什么?

汇编语言,C,C ++,Python,C#等。

我是否可以在没有任何电子学基础知识的情况下学习?

学习没有电子学基础知识的嵌入式系统不是一个好主意。嵌入式系统是硬件和软件的混合体。您可以遵循边做边学的方法,而不是浏览冗长而详细的教科书。您可以参考this blog 通过实践逐步学习嵌入式系统。它将帮助您从头开始。

我应该知道的任何其他先决条件?

基础电子学,数字电子学,微控制器知识和C编程。由于您来自计算机科学背景,因此您需要一个任何8位微控制器的开发板(EE和ECE的学生都有足够的知识和背景来构建它在面包板或pcb上)才能开始使用。 (一开始不喜欢模拟器,你可能会错误地理解你的概念!)。

答案 2 :(得分:4)

您必须接受约束并能够使用它们:

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

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

答案 3 :(得分:4)

VHDL,Verilog和FPGA也是这个领域的重要参与者。拥有良好的CS背景,充足的承诺,也许还有一些麻省理工学院开放式课件,你将能够取得好成绩。熟悉cpu架构和一些ASM也会有很长的路要走。

答案 4 :(得分:2)

我进入那个领域,不知道如何作为一名新毕业生如何完成并在1。5年后退出。所以,我说的可能有点生疏,绝对不全面。

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

对于基本电子设备,对于入门级位置,几乎没有必要。随着时间的推移,您将获得所需的信息和经验。

不是先决条件,但具有操作系统内部和系统开发经验绝对是一个优势。

答案 5 :(得分:2)

嵌入式系统通常用C语言编程,尽管在代码空间或时序非常严格时(或者没有合适的C编译器可用),在范围的末端有系统使用汇编程序,而在另一端,C ++高达.NET compact。这取决于您对嵌入式系统的意义,它们来自具有几百字节RAM和程序空间的非常小的微控制器,直到运行完整多任务操作系统和用户界面的智能手机类型的设备。

在没有电子背景的情况下,你将在这个范围的更高端进一步发展,因为它与硬件的联系更少,更类似于桌面开发。随着应用范围的不断扩大,对电子,模拟和数字以及电源,噪声问题,合规性问题,散热问题等方面的知识将共同构成一个真正具有挑战性的设计环境。

首先阅读一些链接hereembedded.com

答案 6 :(得分:2)

到目前为止,我在答案中没有提到的一件事是,到目前为止,您可能已经在操作系统的上下文中完成了大部分编码。在许多(可能是大多数?)情况下,使用固件而不是软件,您将无法在操作系统之上进行编码的便利和好处。这就是为什么许多其他答案表明对电子产品的良好了解至关重要。

答案 7 :(得分:1)

语言:C,汇编程序,处理程序,基本程序以及其他各种语言,取决于您使用的平台是什么。

如果您在ChipHackerElectronics Exchange提出同样的问题,您可能会获得更具体的信息,这些问题都是堆叠交换式网站(就像这样),但是面向电子设备和“物理计算”。 / p>

答案 8 :(得分:1)

你会希望对C非常熟悉并对组装有一个扎实的理解。在系统/嵌入式系统中,通常使用少量内存和较慢的处理器,因此您需要了解如何明智地使用有限的资源。

如果您要将此作为一种爱好,选择gumstix板或arduino,这些开发板将为您提供数百小时的学习和乐趣。

如果你正在尝试从事这方面的工作,找一份项目听起来很有趣的工作,让你的手弄脏。完成自己的每一项任务,并问自己如何做得更好,并从中完成这项任务。

无论哪种方式,都要有乐趣和快乐的编码!

答案 9 :(得分:1)

正如其他人所提到的,嵌入式可能意味着许多事情。在我的世界(航空航天和国防),我们使用实时操作系统(VxWorks和Integrity是最大的参与者),偶尔使用Linux。我们主要用C编程,尽管如果项目决定使用面向对象的编程和建模,也会使用C ++。

所以,对于Pre-Reqs,C肯定。你真的需要学习所有关于C的知识,包括BIT明智的操作,处理十六进制值,指针,所有低级别的东西。装配也是如此,但我现在只用它来调试最困难的东西。你需要足够的知识来阅读和理解。

我认为An Embedded Software Primer是改变思维方式的一个很好的开端。处理中断,实时问题等......

正如米奇所说,有时你甚至没有操作系统。在这些情况下,您通常会编写自己的某种任务管理器,但这通常不会让新手开始使用。祝你好运。

答案 10 :(得分:0)

学习C.学习将C应用于所有问题。其他语言可以等待。最终程序集将有所帮助,没有程序员不应该使用脚本语言。

根据您使用的嵌入式目标,PC与目标之间的差异可能非常小。电子背景很少,这将是您最简单的条目。

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

如果你想在基础知识之外取得进一步的进展,你将不得不学习电子学。