想知道 - 如果知道 Linux生活方式或Linux架构,那么在嵌入式设备上进行编程时会有更好的思路,特别是当它们有某种操作系统时。 /> 只是想确定我没有错过任何重大事情:)
注意:
我来自Windows背景,可以用C和C ++编程
充满激情,最后想要开始进入嵌入式编程。我想首先在家里做一些典型的爱好者项目。
如果有人也会评论BeagleBoard作为我的起点,那就太好了。
答案 0 :(得分:3)
“嵌入式”是一个模糊的词。有两类:
有实时嵌入式系统:微控制器/微处理器应用程序在低抽象级别上与硬件直接密切通信。典型应用包括控制系统/自动化,工业,汽车,医疗技术,家用电子,数据/电信通信等。
然后有蓬松的嵌入式系统:各种笔记本电脑:电脑,嵌入式Linux,嵌入式窗口,电话和手机操作系统,任何涉及互联网,人机接口等的东西。
两个类别的人都会坚定地表示他们正在使用嵌入式系统,而后者通常只是在做另一种桌面应用程序。根据您的目标类别,Linux可能是也可能不是。例如,电信分支机构与这两个类别重叠,它们通常使用嵌入式Linux,即使是非蓬松的应用程序。
在任何一种情况下,* nix都可以用作开发平台,因此知道它不会受到伤害。
答案 1 :(得分:2)
我说你真的不需要知道Linux的嵌入式编程。许多开发嵌入式软件的公司都在Windows上进行操作,并且没有与其他操作系统联系。
但是可以肯定的是,了解更多会让你变得多才多艺,而一般知识会让你成为更好的工程师。这包括与其他许多操作系统不同的操作系统。
说到BeagleBoard,它取决于您感兴趣的应用程序类型。 如果你想了解低级,我会从一个更简单的处理器开始,学习如何使用外设,硬件中断,去抖信号......有一段时间你自己这样做有一个教育点。
我想你也可以跳过它,从ARM-A8开始,可能还有嵌入式操作系统,这不是我遵循的路径。
答案 2 :(得分:2)
是和否。大多数情况下是的。
伦丁正确地描述了“两个嵌入世界”(尽管它们之间的边界非常模糊)。
如果您正在编写“更高嵌入式”,如Android或其他运行Linux的设备,那么对Linux的专业知识肯定会有很大帮助。你仍然需要知道一些“裸骨”,当你在C中看到&=~
运算符之类的东西时不要害怕,但是要知道Linux - 旧的Linux,你通过编辑{中的文件来配置东西{1}},你编译自己的内核供日常使用,在那里你可以用tarball构建软件,这就是有帮助的。了解现代Linux - Gnome,gconf-editor,Synaptic等都不会有太大帮助。
接下来,如果您正在编写没有操作系统的设备,在中间区域 - 快速且强大到足以运行C程序,而不是操作系统,您仍然需要Linux。因为交叉编译。你不需要真正的Linux。 Cygwin对此没问题。 MinGW可能就足够了。但是,您可能需要能够构建自己的交叉编译器(基于GCC),链接器,调试器,制作工具以及IDE的其余“主干”。除非你的芯片供应商很棒并且提供了一个完整的IDE工具链。
只有当你进入微处理器时,你才不需要Linux。像汽车防盗遥控器,圣诞灯闪光灯,汽车轮胎压力传感器,电池电量监控器 - 可以有16字节RAM,1KB EEPROM和其他CPU匹配的东西,您将需要使用与该CPU配合使用的IDE ,没有操作系统,没有C编译器,没有远离Linux的任何东西 - IDE很可能是基于Windows的。
答案 3 :(得分:1)
我要说的可能会导致火焰战,但是......
我发现Linux是一个比Windows更高效的开发环境。在我之前的工作中,我们正在为管理型交换机和工业自动化设备开发固件,这些设备运行嵌入式Linux操作系统。所有开发人员都拥有Windows和Linux机器,因为用户界面软件仅在Windows上运行。不过,我们都使用Linux进行开发,因为它更容易。
在我目前的工作中,唯一的选择是运行Windows,但为了提高工作效率,我们正在运行Cygwin,它提供了类似Linux的环境。在Windows上开发非专门针对Windows的软件非常困难。
至于没有操作系统的嵌入式系统的开发......我偶尔会玩Arduino。我已经从Windows和Linux编程了它,并且发现了相似的经验。使用Arduino自己的工具,Windows似乎运行得更顺畅,但是如果你想破解它并创造一些有趣的东西,你最好使用Linux。
就个人而言(这可能会引起一些讨厌的评论),我觉得Linux最适合做富有成效的工作,Windows最适合玩游戏。
基本上,这一切都归结为:尝试使用Linux开发项目。您可能会发现它是一种更顺畅,更富有成效的体验。如果你不喜欢它,你不必继续使用它。但这种体验可能是值得的。
编辑(由于问题重写):在编写没有运行Linux本身的嵌入式项目时,了解“Linux生活方式”不太可能有用。据我了解,Unix哲学主要涉及两个主要问题:
如果您正在使用没有操作系统的系统,那么您正在为编译器编写代码,并且在任何时候都不可能使用完整的shell。你也不同于拥有任何类型的文件系统。所以这两点都没有实际意义;通过学习Linux,你不可能获得与嵌入式编程具体相关的任何东西,尽管它肯定不会受到伤害: - )
答案 4 :(得分:0)
我真的认为如果你想了解一下嵌入式球体,你不应该直接使用操作系统。如果您的最终应用确实需要操作系统,请选择小型低级项目,然后添加操作系统。
我不认为在嵌入式设备中设置操作系统比从头开始更容易。它将为您带来一些功能(我不确定您是否真的需要学习嵌入式功能)但是如果OS端口出现问题,它将为您带来大量的硬调试时间。
答案 5 :(得分:0)
我已经做了10年的嵌入式编程,目前用于网络设备和Apache直升机之前。两家公司都有类似POSIX的操作系统,但不是直接嵌入式Linux。我目前的公司主要使用Windows用于个人开发者环境。但是,出于特殊目的,我们确实有一些Linux盒子。我以前的公司使用了Windows和Sun Solaris Unix的混合体。所以,无论你走到哪里,你都不可能在日常计算机上使用Unix或Linux,但至少偶尔也会遇到它。
另一方面,我知道在Linux上为嵌入式Linux编程的开发人员瞄准了他们的整个职业生涯。这真的取决于公司,因为较小或较新的公司倾向于使用Linux而不是公司。但是,在我的经验中,在目标上使用嵌入式Windows是非常罕见的。我知道设备在那里,但我从来没有亲自见过一个开发人员。
无论如何,Linux可以免费使用,除了对工作有益之外还有其他好处。除了放弃你的一些时间外,尝试几个月没有任何不利因素。
答案 6 :(得分:0)
Linux在嵌入式领域不断发展...参见最新研究:
Top 10 trends for the embedded software and tools market in 2011 - VDC research
Android Becomes Number One in U.S. Smartphone Market Share
了解 Linux生活方式肯定会成为嵌入式域名中的一个优势,前提是您感兴趣的应用程序包含在上述链接中。
答案 7 :(得分:0)
e.g。砍一棵树,你不必发明一把斧头 - 只需开始使用一把斧头,然后逐渐学会磨斧头
最好小规模开始 - 亲自动手,并专注于特定领域,因为需要时间。与你的工作和工作一起成长,牢记你的目标
你肯定会获得更快的速度而不会陷入自我循环 - R& D做R& D;)
答案 8 :(得分:0)
只有你想嵌入Linux!作为一个大约22年的嵌入式系统开发人员,我认为Linux对于很大比例的嵌入式系统项目来说是不合适的,也是不必要的。
了解RTOS的工作原理,以及基于实时优先级的先发制人调度和IPC机制将使您更好地参与其中。例如,查看this。