【发布时间】:2014-07-10 03:56:49
【问题描述】:
我是 Linux 和一般编程的新手,想知道使用 Linux 操作系统与仅用 C 语言写入相同的处理器相比有什么优势。我不断看到有关 Linux 被用于 Raspberry Pi 应用程序的事情.为什么那里如此流行?为什么不像微控制器那样使用 C 变体?
【问题讨论】:
标签: c linux operating-system embedded raspberry-pi
我是 Linux 和一般编程的新手,想知道使用 Linux 操作系统与仅用 C 语言写入相同的处理器相比有什么优势。我不断看到有关 Linux 被用于 Raspberry Pi 应用程序的事情.为什么那里如此流行?为什么不像微控制器那样使用 C 变体?
【问题讨论】:
标签: c linux operating-system embedded raspberry-pi
树莓派处理器比微控制器强大得多。令人困惑的是,该板的尺寸和价格与微控制器板相似。虽然它是一个支持 linux 的处理器。了解 Raspberry Pi 的目标市场是用于教育。因此很自然地使用了 Linux 之类的东西,并在此基础上使用了教育软件。
许多/大多数程序员不熟悉或不熟悉裸机和编写自己的驱动程序,因此 linux 使这变得更容易,您可以编写机器人软件,它不会比编写任何其他用户级应用程序复杂,困难的部分被埋没了在操作系统或其他驱动程序中。
虽然树莓派的外设编程非常简单,而且据我们所知它不是砖砌的,所以它可以而且确实是一个很好的裸机系统、教育或爱好。
编辑
裸机有不同的定义,但在这种情况下,它意味着没有操作系统的编程。我假设你在谈论 C 和微控制器。例如,如果您想使用 uart 将字符发送到某种终端,使用操作系统,很可能在称为操作系统的大众中的某个地方有一个 uart 内核驱动程序以及一些应用程序级别的 api某种方式,这样您就不必对 uart 有任何了解。但是在裸机环境中,你没有那个操作系统或 api,现在经常有人在某个地方有一些对程序员来说类似于操作系统的东西,因为他们只有一些可以调用的 api(例如,arduino 体验做得很好一),在这种情况下,虽然除了手册非常糟糕之外,树莓派中的外设比其他芯片中的同等外设更简单。
可以变砖。随着时间的推移,已经对冗余和其他解决方案进行了改进以避免这种情况,但是假设您有一台计算机的处理器从 rom 启动(基本上您正在阅读的是其中一台计算机),有时您可以更新您的 rom随便什么(如果是PC,则升级BIOS)。如果该升级处理器以任何其他方式损坏 rom 并且引导代码反而会使计算机崩溃而不是引导它。如果您没有足够简单的解决方案来在家中的办公桌上或任何您进行开发或使用该计算机的地方解决该问题,那么在您的办公桌上使用砖头或其他镇纸并没有多大用处。这并不意味着如果您将它归还到某个地方,则没有特殊的电缆或其他您可能不容易拥有的工具可以恢复该闪光灯并使其栩栩如生。最坏的情况是用烙铁去除闪光并焊接回理论上可行的预编程的。在树莓派的情况下,rom 是 sd 卡上的闪存,您可以在办公桌上轻松将其删除,以便在任何时候被擦除或损坏时重新编程。据我们所知,芯片中是否有用于 gpu 的 rom,并且如果它在电路中是可擦除和可编程的,那么代码可能会擦除它并使芯片变砖。据我所知,防止您的树莓派启动的唯一方法是没有或没有带有坏程序或已擦除或垃圾的 sd 卡。
驱动程序是管理外围设备的某些代码的总称。例如,一个 uart 驱动程序知道该特定 uart 的寄存器,在该驱动程序的另一端是一个更通用的理想 api,或者至少在该级别向用户隐藏了一些细节。像 linux 或 windows 或任何具有内核模块的操作系统,一侧是硬件,另一侧其 api 符合该操作系统,因此您可以将 raspberry pi uart 作为通用 tty 串行设备和任何软件添加到 linux 内核在想要使用通用 tty 串行设备的内核或应用程序空间中,现在可以使用您的 raspberry pi uart。它只是一个通用术语,其中有一些软件可以管理外围设备并拥有该外围设备的知识,并以某种方式将该知识隐藏到其上方的 api 中,这样人们就不必知道细节。
【讨论】:
使用操作系统可以简化您的许多任务,因为它标配有硬盘驱动器/文件系统和内存管理等功能、实现服务和复杂协议以及许多其他功能。但是,如果您不需要这些功能中的任何一个,您可能会在没有操作系统的情况下摆脱困境,在一个外部接口很少的独立系统中。
【讨论】:
直接回答您的问题 - 优点如下:
Linux,实际上是一种具有更快开发过程的工业标准,它为支持现代基本基础带来了所有新资源:CPU、MCU、设备、驱动程序、芯片和其他不同的技术在各个层面。因此,它涵盖的功能比任何操作系统都多。这也是兼容性的巨大增强。
Linux 是开源的,它的代码受到全世界数百万专家的观察和批评,因此它大多是健壮的。
Linux 是免费的,您可以免费获得内核和所有令人惊叹的功能,并且您无需在商业批量生产中为此付费(许多其他操作系统“要求”每单位产品的费用)
【讨论】: