设为首页 加入收藏

TOP

掌握嵌入式Linux编程1开始(一)
2023-07-23 13:29:14 】 浏览:65
Tags:Linux 编程 开始

我们先对嵌入式Linux做一个高层次的了解,看看它为什么受欢迎,开放源码许可证有什么意义,以及你需要什么样的硬件来运行Linux。

1999年左右,Linux首次成为嵌入式设备的可行的选择。那是在Axis (https://www.axis.com)发布他们的第一台Linux驱动的网络摄像机和TiVo (https://business.tivo.com)发布他们的第一台数字视频录像机(DVR)时。自1999年以来,Linux变得越来越流行,以至于今天它是许多类别产品的首选操作系统。2021年,有超过20亿台设备运行Linux。这包括大量运行Android的智能手机,它使用Linux内核,以及数以亿计的机顶盒、智能电视和Wi-Fi路由器,更不用说非常多样化的设备,如车辆诊断、地磅、工业设备和医疗监测装置等。

选择Linux

为什么Linux会如此普及?为什么像电视这样简单的东西需要运行像Linux这样复杂的东西才能在屏幕上显示流媒体视频?

简单的答案是摩尔定律: 英特尔公司的联合创始人戈登-摩尔(Gordon Moore)在1965年观察到,芯片上的元件密度大约每两年就会增加一倍。这适用于我们在日常生活中设计和使用的设备,正如它适用于台式机、笔记本电脑和服务器一样。大多数嵌入式设备的核心是一个高度集成的芯片,它包含一个或多个处理器内核以及与主存储器、大容量存储和多种类型的外设的接口。这被称为片上系统,或SoC(System on Chip),而且SoC的复杂程度正按照摩尔定律不断提高。典型的SoC有一本技术参考手册,长达数千页。你的电视不是简单地显示一个视频流,就像以前的模拟机那样。

该数据流是数字的,可能是加密的,它需要处理以创建一个图像。你的电视已经(或很快将)与互联网连接。它可以接收来自智能手机、平板电脑和家庭媒体服务器的内容。它可以(或很快就会)用来玩游戏等等。你需要完整的操作系统来管理这种程度的复杂性。

以下是推动采用Linux的一些要点:

  • Linux有必要的功能。它有好的调度器个好的网络堆栈,支持USB、Wi-Fi、蓝牙、多种存储介质,对多媒体设备有很好的支持,等等。它满足了所有的要求。
  • Linux已经被移植到广泛的处理器架构上,包括一些在SoC设计中非常常见的架构--Arm、MIPS、x86和PowerPC。
  • Linux是开放源码的,所以你可以自由地获得源代码并修改它以满足你的需要。你,或代表你工作的人,可以为你的特定SoC板或设备创建板卡支持包。你可以添加协议、功能和技术,这些可能是主线源代码中所缺少的。你可以删除你不需要的功能,以减少内存和存储要求。Linux是灵活的。
  • Linux有一个活跃的社区;就Linux内核而言,非常活跃。每隔8到10周就会个新的内核版本,每个版本都包含1000多个开发者的代码。活跃的社区意味着Linux是最新的,支持当前的硬件、协议和标准。
  • 开放源码许可证保证你可以获得源代码。没有供应商的束缚。

由于这些原因,Linux是复杂设备的理想选择。但在这里我应该提到一些注意事项。复杂性使它更难理解。再加上快速发展的开发过程和开源的分散结构,你必须付出一些努力来学习如何使用它,并随着它的变化而不断地重新学习。我希望这本书能在这个过程中有所帮助。

什么时候不选择Linux

Linux适合你的项目吗?在所要解决的问题能够证明其复杂性的情况下,Linux的效果很好。在需要连接性、稳健性和复杂的用户界面的地方,它尤其好。然而,它不能解决所有的问题,所以在你加入之前有一些事情需要考虑:

  • 你的硬件是否能胜任这项工作?与传统的实时操作系统(RTOS)如VxWorks或QNX相比,Linux需要更多的资源。它至少需要一个32位的处理器和大量的内存。我将在关于典型硬件的章节中更详细地介绍。
  • 你有正确的技能组合吗?一个项目的早期部分,即电路板的搭建,需要详细了解Linux以及它与你的硬件之间的关系。同样地,在调试和调整你的应用程序时,你需要能够解释结果。如果你内部没有这些技能,你可能想把一些工作外包出去。当然,读这本书会有帮助
  • 你的系统是实时的吗?Linux可以处理许多实时活动,只要你要注意某些细节,我将在第21章详细介绍这些细节:实时编程。
  • 你的代码是否需要监管部门的批准(医疗、汽车、航空等等)?监管部门的核查和验证的负担可能使另一个操作系统成为更好的选择。即使你选择Linux用于这些环境,从一个已经为现有产品(如你正在建造的产品)提供Linux的公司购买商业上可用的发行版可能是有意义的。

仔细考虑这些问题。成功的最佳指标可能是四处寻找运行Linux的类似产品,看看他们是如何做到的;遵循最佳实践。

参与者

开源软件从哪里来?谁写的?特别是,这与嵌入式开发的关键组件--工具链、引导程序、内核和根文件系统中的基本实用程序--有何关系?

主要的参与者如下:

  • 开源社区: 毕竟,这是产生你将要使用的软件的引擎。这个社区是一个松散的开发者联盟,其中许多人以某种方式得到资助,也许是由一个非营利组织、学术机构或一业公司资助。他们一起工作,以进一步实现各种项目的目标。有许多这样的项目--有些小,有些大。在本书的其余部分,我们将使用的一些项目是Linux本身、U-Boot、BusyBox、Buildroot、Yocto项目以及GNU旗下的许多项目。
  • CPU架构师: 这些是设计我们使用的CPU的组织。这里重要的是Arm/Linaro(Arm Cortex-A)、Intel(x86和x86_64)、SiFive(RISC-V)和IBM(PowerPC)。他们实现或至少影响对基本CPU架构的支持。
  • SoC供应商(Broadcom、Intel、Microchip、NXP、Qualcomm、TI和许多其他公司): 他们从CPU架构师那里获得内核和工具链,并修改它们以支持他们的芯片。他们还创建了参考板:下一级使用的设计,以创建开发板和工作产品。
  • 板卡供应商和OEMs: 这些人从SoC供应商那里获得参考设计,并将其构建到特定的产品中,例如机顶盒或相机,或创建更多的通用开发板,如研华和控创的开发板。一个重要的类别是廉价的开发板,如BeagleBoard/BeagleBone和Raspberry Pi,它们创造了自己的软件和硬件附加组件的生态系统。
  • 商业Linux供应商: 西门子(Mentor)、Timesys和风河等公司提供商业Linux发行版,这些发行版在多个行业(医疗、汽车、航空航天等)都经过了严格的法规验证和确认。

这些构成了一个链条,你的项目通常在最后,这意味着你不能自由选择组件。你不能简单地从https://www.kernel.org/,除非在少数情况下,因为它不支持你正在使用的芯片或电路板。

这是嵌入式开发中的一个持续问题。理想情况下,链条上每个环节的开发者都会把他们的变化推到上游,但他们没有这样做。发现一个内核有成千上万的补丁没有被合并的情况并不少见。此外,SoC供应商倾向于只为其最新的芯片积极开发开源组件,这意味着对任何超过几年前的芯片的支持将被冻结,不会收到任何更新。

其结果是,大多数嵌入式设计是基于旧版本的软件。他们不会收到安全修复、性能增强或较新版本的功能。诸如Heartbleed(OpenS

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇无根用户管理podman 下一篇linux shell脚本函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目