嵌入式Linux是Linux内核的改编版,用于嵌入式系统。嵌入式Linux最流行的例子是Android 操作系统。

但是,需要大量硬件资源来支持嵌入式 Linux,特别是如果它将部署在实时机器对机器 (M2M) 通信、机器人控制或复杂计时应用等用例中时. 这些资源至少包括支持以太网和其他基本接口的嵌入式硬件平台(板卡或片上系统),以及用于容纳操作系统、库、文件系统、应用程序、引导加载程序、等等。

桌面 Linux 与嵌入式 Linux

嵌入式 Linux 是开源的、可修改的、用 C 编写的。而桌面Linux或任何其他操作系统一样,嵌入式 Linux 的作用是从底层处理器中抽象出用户和应用程序,内存和其他硬件组件;为各种功能分配和交付系统资源;同时管理多个任务和应用程序等等。

尽管如此,如果您现在还没有注意到,嵌入式 Linux 和传统桌面 Linux 之间存在许多显着差异。这些包括例如直接从闪存而不是硬盘启动的能力。

下面提供了一张图表,比较了嵌入式 Linux 和桌面 Linux 之间的一些主要差异。

嵌入式 Linux:交叉编译器、库和引导加载程序

由于嵌入式 Linux 是为特定应用程序设计的,因此在开始进行需要开源操作系统的系统设计时,工程师必须使用一些特定的开发工具。以下当然不是一个详尽的列表,但一个好的起点是使用正确的库、强大的交叉编译器和与 Linux 内核配对的高效引导加载程序。

交叉编译器

对于不熟悉的人来说,交叉编译器是一种编译器,它执行编写的代码,以便在编译器所在的机器之外的其他机器上运行。例如,在您的 PC 或笔记本电脑上运行的交叉编译器能够生成为 Android 智能手机等嵌入式系统编写的代码。

嵌入式 Linux 系统需要交叉编译器,因为这些设备通常没有在本地编译代码所需的资源,因此必须在其他地方编译然后交付给目标。

对于提供大小优化、支持控制处理的特性等功能的交叉编译器,有多种选择。但是这里列出了一些最常见的交叉编译器:Buildroot、Crosstool-NG、Yocto。

C 库

C 库提供内核和应用程序之间的接口,因此必须是交叉编译过程的一部分。嵌入式 Linux 系统中的任何程序,无论是用 python、java 还是其他语言编写的,都必须在运行时调用 C 库才能通过 Linux 内核访问硬件资源。

下面是一些在嵌入式 Linux 系统中使用的流行 C 库。

glibc – 标准的 GNU C 库功能丰富,但代价是占用大量内存。它也没有任何配置选项。

uClibc – “u”表示 uClibc 是一个小型的微控制器 C 库,用于嵌入式系统。

musl – musl 也很小,在 RAM 和存储量有限的系统中是一个不错的选择。

eglibc – eglibc 与 glibc 相同,但做了一些修改,使其更适合在嵌入式设备中使用,例如支持配置。

特定于应用程序的库

嵌入式 Linux 内核的功能有限,因此需要特定的库。下面列出了一些受欢迎的。

libgpiod –如今,标准命令行并不是与 Linux 设备文件交互的唯一方式。libgpiod 用于与 Linux 设备中的 GPIO 硬件交互。

libusb – libusb 是一个 C 库,它从单一平台为所有通用 USB 设备提供驱动程序。

Socket —Socket库可连接网络上的节点。

serdisplib – 该库可以驱动多个显示器,如 OLED、USB 显示器或带有内置控制器的显示器。

Pigpio – Pigpio 库可用于控制 Raspberry Pi GPIO。

opc-ua – opc-ua 协议是一种适用于时间敏感网络的协议。

lockdev – 锁定和解锁设备

libxls – 该库用于读取和转换 Excel 文件。

libstroke – 用于识别鼠标笔触和手势的库。

libserialport – 在编写使用串行端口的软件时抽象操作系统特定的细节

hidapi – 用于与 USB 和蓝牙 HID 设备通信的库。乙肝

mjpg_streamer – 用于从一个或多个输入捕获 JPEG 帧并通过 IP 网络流式传输它们

cheese —cheese 可以帮助您使用网络摄像头拍摄视频、照片等。

Elisa – 它是一个简单的音乐播放器,因此您可以播放任何音频。

引导加载程序

引导加载程序是系统开机后运行的第一个代码,它处理基本的硬件初始化并从可引导设备(如硬盘驱动器或 SD 卡或嵌入式 Linux 系统中的闪存)加载操作系统。一旦引导加载程序为 Linux 内核设置了可执行环境并且内核开始执行,就不再需要引导加载程序。

引导加载程序有各种形状和大小,可以根据用户或系统需求进行定制。事实上,一些嵌入式电路板带有引导加载程序。

这里介绍了一些常用的引导加载程序及其支持的处理器架构。

这些是您可能每天使用的各种基于 Linux 的嵌入式系统背后的关键构建块,您可能甚至不知道它们运行Linux,例如智能电视、无线路由器和网络附加存储设备。

本文由朗锐智科(www.lrist.com)编辑整理,如有侵权请联系本站。

嵌入式 Linux 的基础知识介绍相关推荐

  1. 嵌入式Linux系统基础知识

    一.嵌入式Linux系统的构成 1.硬件 2.内核 3.应用程序(形成根文件系统) 二.构建嵌入式Linux系统的主要任务 1.内核部分 2.应用程序部分 嵌入式Linux的开发大致可分为三个层次:引 ...

  2. 视频教程-嵌入式Linux开发基础-嵌入式

    嵌入式Linux开发基础 嵌入式工程师.嵌入式讲师.10多年嵌入式开发实战经验,6年专业嵌入式课程培训经验.主要研究方向是嵌入式Linux系统应用和物联网技术应用.先后参与过武警边防音视频矩阵切换系统 ...

  3. 嵌入式系统的基础知识该如何学习

    嵌入式的学习不是那么容易的,学习嵌入式会有一定的技术门槛.但很多学者连一点计算机的基础都没有,就来学习嵌入式,真所谓是明知山有虎,偏往山中行.是什么原因让他们改行来学习嵌入式呢?其实原因很简单也很现实 ...

  4. OpenGL开发之旅基础知识介绍

    最近由于手机项目中需要用到OpenGL ES的知识,所以这段时间正在研究OpenGL的相关知识.因为OpenGL ES是OpenGL的剪裁版本,所以我直接从OpenGL入手,然后再去看OpenGL E ...

  5. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  6. Linux操作系统基础知识学习

    Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...

  7. 云基础知识介绍及云组件部署

    云基础知识介绍及云组件部署 序言 随着业务的发展,各类业务都有上云的需求,大家在工作中也会经常遇到各类公有云的场景,其实各大厂商的公有云功能都大相径庭.相信很多人有疑问,如何在公有云上部署相关云组件和 ...

  8. OpenGL基础知识介绍和简单使用

    OpenGL基础知识介绍 OpenGL简介 OpenGL 专业词解析 1.OpenGL上下文[context] 2.渲染 3.顶点数组和顶点缓冲区 4.着色器程序Shader 5.顶点着色器(Vert ...

  9. 代理服务器基础知识介绍及防火墙知识普及

    代理服务器基础知识介绍及防火墙知识普及 2004-10-17     作者:佚名    来源:诗凌工作室 代理服务器基础知识介绍: Internet大家已经不在陌生,现在已经迈进了广大工薪阶层的家庭. ...

最新文章

  1. loadrunner另类玩法【测试帮日记公开课】
  2. Orcale本人工具使用
  3. linux卸载gd,linux下 安装GD
  4. 并行流 线程池_使用自定义线程池处理并行数据库流
  5. 随机生成一定范围的随机数
  6. 在BingoCC上面解析域名实现智能路由
  7. 用DOS命令快把系统看透
  8. 实验四android开发基础
  9. Arcgis for Android 空间数据WKT与JSON描述
  10. Leetcode每日一题:49.group-anagrams(字母异位词分组)
  11. 图解 Python 函数
  12. 现有 Delphi 项目迁移到 Tiburon 中的注意事项
  13. RED-Net神经网络
  14. matlab绘制等间距同心圆,CDR做出等距离的同心圆的四种方法
  15. Protel转PADS
  16. 软件可靠性测试概念与应用
  17. 关于近日番茄花园洪磊被拘之事的一些个人看法
  18. 一种新型的EC编码,LRC码,基于RS码的改进,特点介于RS和副本之间。
  19. html5 keygen 作用,html keygen标签怎么用
  20. 鲁大师4月安卓新机性能/流畅榜:ROG游戏手机7摘得性能桂冠 vivo登顶流畅榜

热门文章

  1. JavaSwing真的过时了吗?请不要忽略了它的启蒙作用
  2. 将本地文件上传到码云(gitee远程仓库)
  3. bable转换html里面的js,如何使用babel,把写好的es6代码,转化为es5,让ie8兼容。...
  4. linux查看气质系统文件命令,气质_ITPUB博客
  5. 认真学习MySQL中的角色权限控制
  6. 从GPT-1到GPT-4看ChatGPT的崛起
  7. SAP中多生产版本系统应用选择规则
  8. endata 电影票房响应数据破解
  9. 常用的前端在线引用JS
  10. gitbook安装中installing gitbook xxx 时间过长的问题