我已完成计算机工程学位。我们有一些数字信号处理,信息理论等基础电子课程,但我的主要领域是编程。
但是,我希望进入嵌入式系统编程,我不知道它是如何完成的。但是,我非常热衷于进入这个领域。
我的问题:
答案 0 :(得分:9)
毫无疑问,需要经验或至少对数字电子和低级计算机工程有深刻理解。您需要能够读取设备数据表并理解它们。示波器,万用表,逻辑分析仪等......是行业的工具。
主要使用C语言,但是更高级别的语言正在慢慢潜入。
答案 1 :(得分:7)
嵌入式系统入门本身就是一项复杂的任务,因为它是一个非常庞大的领域,在硬件和软件方面有很多选择。
用于编程嵌入式系统程序的语言是什么?
汇编语言,C,C ++,Python,C#等。
我是否可以在没有任何电子学基础知识的情况下学习?
学习没有电子学基础知识的嵌入式系统不是一个好主意。嵌入式系统是硬件和软件的混合体。您可以遵循边做边学的方法,而不是浏览冗长而详细的教科书。您可以参考this blog 通过实践逐步学习嵌入式系统。它将帮助您从头开始。
我应该知道的任何其他先决条件?
基础电子学,数字电子学,微控制器知识和C编程。由于您来自计算机科学背景,因此您需要一个任何8位微控制器的开发板(EE和ECE的学生都有足够的知识和背景来构建它在面包板或pcb上)才能开始使用。 (一开始不喜欢模拟器,你可能会错误地理解你的概念!)。
答案 2 :(得分:4)
您必须接受约束并能够使用它们:
奖励是对正在发生的事情的深刻理解。
答案 3 :(得分:4)
VHDL,Verilog和FPGA也是这个领域的重要参与者。拥有良好的CS背景,充足的承诺,也许还有一些麻省理工学院开放式课件,你将能够取得好成绩。熟悉cpu架构和一些ASM也会有很长的路要走。
答案 4 :(得分:2)
我进入那个领域,不知道如何作为一名新毕业生如何完成并在1。5年后退出。所以,我说的可能有点生疏,绝对不全面。
我们使用的语言是C.但当时,在我们开发的设备上,磁盘空间为4MB,内存为8MB,我知道由于其库的小占用空间而使用了C语言。显然,表现也是一个标准。
对于基本电子设备,对于入门级位置,几乎没有必要。随着时间的推移,您将获得所需的信息和经验。
不是先决条件,但具有操作系统内部和系统开发经验绝对是一个优势。
答案 5 :(得分:2)
嵌入式系统通常用C语言编程,尽管在代码空间或时序非常严格时(或者没有合适的C编译器可用),在范围的末端有系统使用汇编程序,而在另一端,C ++高达.NET compact。这取决于您对嵌入式系统的意义,它们来自具有几百字节RAM和程序空间的非常小的微控制器,直到运行完整多任务操作系统和用户界面的智能手机类型的设备。
在没有电子背景的情况下,你将在这个范围的更高端进一步发展,因为它与硬件的联系更少,更类似于桌面开发。随着应用范围的不断扩大,对电子,模拟和数字以及电源,噪声问题,合规性问题,散热问题等方面的知识将共同构成一个真正具有挑战性的设计环境。
首先阅读一些链接here和embedded.com
答案 6 :(得分:2)
到目前为止,我在答案中没有提到的一件事是,到目前为止,您可能已经在操作系统的上下文中完成了大部分编码。在许多(可能是大多数?)情况下,使用固件而不是软件,您将无法在操作系统之上进行编码的便利和好处。这就是为什么许多其他答案表明对电子产品的良好了解至关重要。
答案 7 :(得分:1)
语言:C,汇编程序,处理程序,基本程序以及其他各种语言,取决于您使用的平台是什么。
如果您在ChipHacker或Electronics 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与目标之间的差异可能非常小。电子背景很少,这将是您最简单的条目。
小型处理器将为您提供最陡峭的学习曲线,但您将学习最多关于嵌入式编程的知识。但是如果没有电子背景,这可能会带来额外的问题,你可能还没有解决的技能。
如果你想在基础知识之外取得进一步的进展,你将不得不学习电子学。