Linux|嵌入式 Linux 的基础知识介绍



嵌入式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 硬件交互 。
- 京东|裁员不忘膈应人,这家互联网大厂送的离职礼物恶心到我了!
- iPhone14|准大学生的数码装备推荐
- 有人觉得中暑就是热出来的,吃一些退烧药就好了,这种做法 蚂蚁庄园今日答案6月28日
- 浮甘瓜于清泉,沉朱李于寒水”描述的是什么场面 蚂蚁庄园今日答案6月28日
- 个头大的车厘子比小樱桃营养价值更高,对吗 蚂蚁新村6月28日答案最新
- 位于广东省阳江市的海陵岛自然资源丰富,景色优美,该岛没有 神奇海洋6月28日答案
- 哪种水果横着切开像星星的形状 蚂蚁庄园今日答案6月29日
- 为验证人类和黑猩猩,是否会产生新的后代,科学家找来5位姑娘!
- 喜马拉雅山出现的“雪人”是何生物?目击者:智商高、攻击性强
- 为什么科学家表示人类“灭绝”的可能性极低?这些理由你赞同吗?
