1

想知道 - 如果了解Linux 的生活方式或 Linux 架构,是否会为在嵌入式设备上编程提供更好的思路,尤其是当它们中有某种操作系统时。
只是想确保我没有错过任何重要的事情:)

注意:
我来自 windows 背景,可以用 C 和 C++ 编程。
充满热情,终于想开始嵌入式编程。我想从在家做典型的业余爱好者项目开始。

如果有人也可以评论 BeagleBoard 作为我的起点,那就太好了。

4

9 回答 9

3

“嵌入”是一个模糊的词。有两类:

有实时嵌入式系统:微控制器/微处理器应用程序在低抽象级别直接与硬件密切通信。典型应用是控制系统/自动化、工业、汽车、医疗技术、家用电子产品、数据/电信通信等。

然后是蓬松的嵌入式系统:各种笔记本电脑:ish 计算机、嵌入式 linux、嵌入式 windows、电话和虚假操作系统,任何涉及互联网、人机界面等的东西。

从事这两种工作的人都会坚定地表示他们正在使用嵌入式系统,而后者通常只是在做另一种桌面应用程序。根据您的目标类别,Linux 可能是一个优点,也可能不是一个优点。例如,电信部门与这两个类别重叠,并且他们经常使用嵌入式 Linux,即使是对于非蓬松的应用程序也是如此。

在任何一种情况下,*nix 都可以用作开发平台,因此知道它不会受到伤害。

于 2011-03-30T12:48:54.570 回答
2

我想说你真的不需要了解 Linux 来进行嵌入式编程。许多开发嵌入式软件的公司都是在windows上做的,与其他操作系统没有联系。

但可以肯定的是,了解更多会让你变得更加多才多艺,而一般知识会让你成为更好的工程师。这包括不同的操作系统和许多其他东西。

说到 BeagleBoard,这取决于你感兴趣的应用程序类型。如果你想了解底层,我会从更简单的处理器开始,学习如何使用外设、硬件中断、去抖动信号……有一段时间自己做这件事是有教育意义的。

我想您也可以跳过它并从 ARM-A8 和可能的嵌入式操作系统开始,这不是我遵循的路径。

于 2011-03-30T07:30:19.397 回答
2

是和不是。大部分是的。

Lundin 正确地描述了“嵌入式的两个世界”(尽管它们之间的界限非常模糊)。

如果您正在为“更高级别的嵌入式”(如 Android)或其他运行 Linux 的设备写作,那么 Linux 的专业知识肯定会有很大帮助。您仍然需要了解一些“基本知识”,并且当您看到 C 中的运算符之类的东西时不要害怕&=~,但要了解 Linux - 旧的 Linux,您可以在其中通过编辑文件来配置东西,在/etc其中编译您自己的日常使用的内核,您可以在其中从 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 的。

于 2011-04-01T07:18:18.393 回答
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 哲学是关于两个主要问题:

  1. 每个工具都应该做一件事并做好(不要做出试图成为一切的东西)。
  2. 只要有可能,数据应该是纯文本(允许通过流程和搜索内容进行简单的管道传输)。

如果您在没有操作系统的系统上工作,那么您正在为编译器编写代码,并且在任何时候都不太可能使用完整的 shell。您也不像拥有任何类型的文件系统。所以这两点都没有实际意义。通过学习 Linux,您不太可能获得与嵌入式编程相关的任何东西,尽管它肯定不会受到伤害:-)

于 2011-03-30T13:30:33.973 回答
0

我真的认为,如果你想了解一点嵌入式领域,你不应该从直接使用操作系统开始。如果您的最终应用程序确实需要它,则更喜欢动手做一个小型的低级项目,然后添加一个操作系统。

我不认为将操作系统设置到嵌入式设备中会比从头开始更容易。它会给你带来一些功能(我不确定你是否真的需要学习嵌入式),但如果操作系统端口出现问题,它会给你带来很多困难的调试时间。

于 2011-03-30T07:33:37.327 回答
0

我从事嵌入式编程已有 10 年了,目前用于网络设备,在此之前是 Apache 直升机。两家公司都在目标上安装了类似 POSIX 的操作系统,但没有直接嵌入 Linux。我目前的公司主要将 Windows 用于个人开发人员环境。但是,我们确实有一些用于特殊目的的 Linux 机器。我以前的公司混合使用了 Windows 和 Sun Solaris Unix。因此,无论您走到哪里,您可能不会在日常计算机上使用 Unix 或 Linux,但您可能至少偶尔会遇到它。

另一方面,我认识一些在 Linux 上为嵌入式 Linux 编程的开发人员,他们的整个职业生涯都是目标。这实际上取决于公司,因为较小或较新的公司倾向于使用 Linux 而非公司。但是,根据我的经验,在目标上使用嵌入式 Windows 形式是非常罕见的。我知道设备就在那里,但我从未亲自遇到过开发设备的开发人员。

无论如何,Linux 可以免费使用,并且除了适合工作之外还有其他好处。尝试几个月确实没有任何缺点,除了放弃一些时间。

于 2011-03-30T13:13:18.617 回答
0

Linux 在嵌入式领域的发展... 查看最新研究:
2011 年嵌入式软件和工具市场的 10 大趋势 - VDC 研究
Android 成为美国智能手机市场份额第一

如果您感兴趣的应用程序包含在上述链接中,了解Linux 的生活方式肯定会成为嵌入式领域的一个加分项。

于 2011-03-31T13:58:55.673 回答
0

在开始进入嵌入式领域之前,了解 Linux 架构将是过度的(尽管基本概述很好)

例如砍一棵树你不必发明一把斧头——只需开始使用一把,然后你就可以逐渐学会磨斧头

最好从小处着手——动手实践,并根据时间的需要专注于特定领域。与您的工作一起成长,并牢记您的目标

您肯定会获得更快的收益,并且不会陷入自我循环-研发进行研发;)

于 2011-04-08T06:47:30.097 回答
0

仅当您想嵌入 Linux 时!作为一个大约 22 年的嵌入式系统开发人员,我认为 Linux 对于很大一部分嵌入式系统项目来说是不合适和不必要的。

了解 RTOS 的工作原理,以及基于实时优先级的抢占式调度和 IPC 机制将使您更有优势。看看这个例子。

于 2011-04-25T08:01:19.617 回答