且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Linux嵌入式实时应用开发实战(原书第3版)》——1.3 为什么Linux适用

更新时间:2022-10-08 15:29:35

本节书摘来自华章计算机《Linux嵌入式实时应用开发实战(原书第3版)》一书中的第1章,第1.3节,作者:(美)Doug Abbott 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 为什么Linux适用

Linux模仿UNIX的基本架构,在其基础上发展成为一个通用的操作系统。没有人认为UNIX适用于嵌入式或实时操作系统(RTOS)。它太大了,占用太多的资源,而且其调度原则是基于顺序而不是优先级。因此,简而言之,它与嵌入式操作系统的要求完全是背道而驰的。
但是Linux有UNIX系统的早期版本所欠缺的几样东西。它是免费的,而且你可以得到源代码,并且有一个拥有大量热情的Linux开发者和使用者的大社区。你在使用中所面临的问题总有人正遇到或曾经遇到过,所有这些都在网络上,窍门就是找到它们。
1.3.1 开源
Linux是在***软件基金会(Free Software Foundation,FSF)倡导的开源软件的宗旨下发展起来的。开源的理念非常简单,即软件应该免费获取以用于使用、修改和复制。这个理念在建立了以太网和万维网的技术文化下发展了20多年,近年来开始向商业领域发展。
有许多关于开源软件的误解。也许对它是什么的***解释就是从它不是什么开始。

  • 开源不是共享。使用共享软件的前提是付给版权持有者一定的费用。共享软件通常以一定的免费形式发布,或者时间受限或者功能受限。要得到完整版,就必须付钱。但与之相反,开源代码可以免费获取,你没有任何为之付钱的义务。
  • 开源不是公共。根据定义,公共代码是没有版权的。开源代码的作者拥有版权,他在开源软件协议的框架下发布软件。版权持有者授权你可以在协议的框架内使用代码,如果你不遵守协议,版权持有者有权要求你停止使用代码。
  • 开源不一定免费。没有任何强制规定要求付款给开源软件代码,但不排除收取打包和发布费用。许多公司都在经营特定的打包Linux分发产品。

为什么要为免费得到的东西付钱?想必是因为任何东西只要存在,你就可以从供应商那里得到一些支持。当然,支持的质量很大程度上取决于供应商。
所以免费意味着可以***使用代码但不意味着零花费。想想“免费演讲”和“免费啤酒”的区别你就明白了。
开源代码是:

  • 服从开源协议框架。在许多案例中都是GNU通用公共协议(GPL)。
  • 经过严格的同行评议。作为一个开源程序员,你的代码就放在那里,任何人都可以看到。开源社区非常严格,开源代码会经历广泛的测试和同行评议。这是一个适者生存的竞争过程,最后只有***的代码能够存在。“***”是一个主观的术语。它可能是***的技术解决方案但同时也可能可读性很差。
  • 高度的颠覆性。开源运动颠覆了主流模式,主流模式认为软件之类的知识产权应该受到保护,所以你可以通过这个赚钱。与之相反,开源的理念是软件应该免费提供给每个人,这样可以最大化地利于社会的发展。如果你可以通过这个赚钱,那挺好的,但这不是初衷。FSF的创始人Richard Stallman一直大力倡导软件不应该属于某个人(见附录C)。

因此当微软公司视开源为他们商业模式的一个严重威胁时,这就毫不奇怪了。微软的发言人一直将开源归为“非美式的”。而另一方面,许多开源软件的领头供应商一直让他们的程序员和工程师为开源社区添砖加瓦。这不仅仅是公益,更是一个很好的商业模式!
1.3.2 移植和定制
Linux最初是为Intel的x86系列处理器开发的,而且多数正在进行的内核开发工作也还是针对x86系列的。尽管如此,Linux内核的设计将有所不同,以前的代码是依赖于处理器的,且对于每个不同架构的处理器都需要改动,但开源代码则只要进行简单的重新编译就可以导入一个新处理器。因此,Linux可以导入多数32位甚至64位的处理器,处理器架构包括:

  • Motorola 68k 和它的很多变体
  • Alpha
  • PowerPC
  • 高级RISC机器(ARM)
  • Sparc
  • MIPS

这只是很多流行的处理器中的一些。所以,无论嵌入式项目中要用什么样的32位架构,总有Linux可用,也总有很多的开发者在支持它。
一个典型的桌面Linux的安装运行需要10~20GB的磁盘空间,并需要1GB的RAM来较好地运行。但是嵌入式的目标板通常只有64MB或更少的RAM和也许是128MB的flash ROM存储器。幸运的是,Linux是高度模块化的。10GB的内容大都包括文档、桌面实用程序、游戏等选项,这些在嵌入式目标板中不是必要的。如果资源受限的话,生成一个功能完整的只占用不超过2MB flash存储器的Linux系统是不难的。
内核本身是高度可配置的,包括一些合理的用户工具,允许在应用中去掉某些不需要的内核功能。