对于想要成为优秀嵌入式软件开发人员或希望在此领域进行改进的人,我想提供一些技巧。
我需要了解什么有关硬件,软件的信息?
最推荐哪些书?博客?
最后,我怎么能从一个初学者变成一个优秀的专业人士?
对于想要成为优秀嵌入式软件开发人员或希望在此领域进行改进的人,我想提供一些技巧。
我需要了解什么有关硬件,软件的信息?
最推荐哪些书?博客?
最后,我怎么能从一个初学者变成一个优秀的专业人士?
Answers:
到目前为止,所有答案都不错,但是我会花两分钱。
这是一些技巧的重复和一些其他的重复:
这是一些书:
以下是一些网站:
对于书籍,我建议您翻阅历史。当今大多数嵌入式软件技术都来自过去的前沿。
像任何东西一样,每天练习。
“嵌入式”是一个加载术语。
在某些方面,只要有一些硬件要控制,任何专用于运行单个应用程序的系统都可以称为嵌入式系统。如果它恰好通过本地I / O模块控制进程,那么可以说具有2GB RAM的400MHz PPC604被称为嵌入式系统,该RAM在Linux之上运行Java应用程序。另一方面,仅运行某种最小网络应用程序的arduino并不是嵌入式系统的主要组成部分。但是可能“嵌入式”使大多数人想到基于闪存的控制器,该控制器只有几百个字节的RAM,没有操作系统可言,并且有大量的片上外围设备。
话虽这么说,非嵌入式程序员通常面对学习嵌入式系统的两个最大障碍是I / O寄存器和中断。
对于非嵌入式程序员来说,中断实际上可能是这两个概念中较容易处理的,因为在主流应用程序中经常会遇到并发和事件驱动编程等主要问题。使中断感到痛苦的是,认识到系统对中断处理质量的极端敏感性,以及处理硬件以清除中断条件并为下一个中断条件进行设置的复杂性。使用GUI,死锁只会杀死应用程序。使用中断处理程序,死锁将导致整个系统锁定。
I / O设备似乎是造成最大困难的领域。对于初学者来说,发现在此处读取该寄存器会对那里的该寄存器产生影响可能会非常令人惊讶。写1清除位。当您读取数据寄存器等时,状态位会自动清除。I / O硬件的可能性非常之多,因此除了学习如何查找和解释设备数据手册之外,没有通用的处理规则。为串行端口编写设备驱动程序将使您了解有关低级别I / O编程的更多信息。
实际上,学习这些东西无非是要roll起袖子,在裸机上编写一些直接的C语言和/或汇编语言。即使是上述基于Java的嵌入式系统,最终也需要用于I / O的设备驱动程序,这意味着最终要处理一些C。经验是最好的老师。选择一个微控制器,无论是MSP430,TMS320,AVR,ARM,PIC,68HC11等,找到一个评估套件,并构建一些系统。
但您需要为pro mini焊接。我不是PIC系列的粉丝,但您可能想从历史课程中学到一些东西,8051也是如此,这两个系列仍然很受欢迎并且正在使用中,只是效率不是很高,已经被其他体系结构所取代。绝对学习ARM和Thumb,也许是MIPS(这是pic-32,不要与较早的原始PIC体系结构相混淆)。尽管Stellaris也可以,但ARMmite Pro是入门级ARM板。
您想在这里学习的是各种平台的汇编程序。C. C和汇编程序的交互。GCC和非GCC不同的工具。如何阅读数据表/程序员参考(并意识到它们都有一些错误或可能引起误解,永远不要相信它们,硬件会胜过文档)以及如何阅读或使用原理图。这些通常不是复杂的原理图。许多板卡都非常适合与项目进行接口连接,这意味着它们不会在板上产生垃圾,而只是直接访问I / O引脚。但这不是学习的最佳方法。像一个恒星对于项目而言很痛苦的电路板在板上有很多有趣的东西,可用于学习嵌入式和学习借用/使用驱动程序或从数据表中编写自己的驱动程序。如果仍然可用,Atmel AVR蝴蝶也是一个很好的电路板,可能需要在自己的串行端口上焊接以对其进行编程,或者只是将一些电线塞在孔中。它为您提供了一些您可以学习编程的外围设备。
即使您最终从事涉及在Linux或RTOS上使用SDK或API调用编写应用程序的嵌入式工作(切勿接触硬件或阅读数据表),上述知识仍将使您领先于其他领域。
本文(从葡萄牙语自动翻译为英语)对开发嵌入式软件开发人员的职业进行了很好的概述。注意:原始文件在这里。
它首先概述了您必须开发的知识领域:
知识:您必须了解嵌入式系统涉及的理论。这意味着硬件和软件。在不了解正在运行的硬件体系结构的情况下,不可能成为合格的嵌入式软件开发人员。
技能:您需要获得该领域的经验。需要练习。您可以修饰所有的PIC汇编器助记符,但是如果您不能以此知识来驱动LED,那就没有用了。
态度:最重要的是,您需要采取能够使您在该领域成长的态度。它是非常动态的,具有频繁的变化和发展。您需要始终保持积极性(a)自学,喜欢学习,“调整”并了解事物的工作方式。没有这种态度将很快给你。因为这个区域需要非常非常持久。
然后,它提供了以下技巧以帮助您掌握这些领域(并通过进一步的文字来开发它们,这些只是标题):
- 您需要学习的硬件(至少)
- 您需要学习什么软件(至少)
- 另外,研究操作系统
- 你需要培训
- 不要停止,继续学习和发展您的网络!
在成为嵌入式软件工程师之前,请三思而后行。我在职业生涯中经历了一些阶段。我开始从事软件开发工作的前5年,而不是从事销售/市场营销工作,在15年的时间里,我管理着100 + M $的业务,现在我又回到了软件领域。
在15年后回到软件领域时,我记得为什么我会一开始就离开。很难。它需要集中精力,几百行代码相互接触,而且都需要将其保存在内存中。嵌入式特别困难。
您还需要了解自己。如果您通常是一个聪明,认真,耐心的人,那么您将成为一名出色的工程师。如果您缺少其中任何一个,则充其量只能算是平均水平。考虑一下。如果您非常聪明并且没有耐心,那么就不值钱了,因为无论您多么聪明,好的工程都需要耐心和对细节的关注。
您还需要一次查看代码小时数而不说话而感到自在。我观察到具有良好社交能力的人发现这难以忍受。
如果所有这些都检查完了,那么,比起阅读所有这些好书,进行练习,您将成为一个伟大的工程师。
其他人都说很棒的话。因此,我将为您提供一般建议:读读读读读读读读读!
阅读http://embeddedgurus.com上的所有文章 如果您不了解某些内容,请进行研究。如果在对这些内容的解释中发现不了解的内容,请阅读更多内容。我将要进入嵌入式软件领域,在过去的几年中,我的经验是一些专业项目,并且有很多阅读经验。经验可以让您尝试一些事情,而阅读可以让您知道您尝试过的事情是否曾经做过,也许比您能做的更好。它向您介绍了在任何情况下都可以使用的概念。
刚读!
成为C了解计时器和串行通信的专家。您应该弄脏它。了解RF协议,并根据您的要求进行调整。调试时不要盲目尝试代码组合。代码完全按照您的要求执行。阅读用户手册和数据表,如果不起作用,请进行更改。综上所述,成为专家的唯一真正途径就是实践。继续构建应用程序。很快,它将成为第二天性。