一.嵌入式介绍

近年来“嵌入式”这一词的身影经常出现在大众视野中,许多人都好奇“嵌入式“到底是什么?在此我想做一个简单的解释。

嵌入式系统就是一种嵌入到特定设备内部,为完成该设备核心功能而设计的专用计算机系统。它通常与硬件紧密结合,并非通用计算器。再通俗点说,嵌入式就是在硬件与软件之间加上操作系统,目的是解决软硬件的高耦合度,提高软件的可移植性

耦合度是指硬件与软件之间相互依赖,相互关联的紧密程度,依赖越强则耦合度越高,反之则越低。举个例子说,一支笔有笔帽和笔身两部分构成,把笔帽比作硬件,笔身比作软件。当笔帽发生更换,为了这支笔可以继续使用,我们就要将笔身换成与笔帽适配的笔身。即硬件发生了变化,软件就要随之发生改变。

移植性是指软件在不同的硬件平台,操作系统或环境之间进行迁移时,所需修改的工作量大小。修改的工作量越小,移植性越好,反之则越差。

可以用一张图搞清楚嵌入式

二.操作系统分类

一、商用属性分类

  1. 商用系统

    • VxWorks(应用于收银机、工业控制等领域)
    • WinCE(常见于出租车计价器、POS机等商用设备)
  2. 免费系统

    • Linux
    • MCLinux

二、实时性分类

  1. 硬实时系统

    • VxWorks(必须在严格时限内完成任务)
  2. 软实时系统

    • WinCE
    • RTLinux
  3. 无实时系统

    • Embedded Linux

注:实时性指系统能够在规定时间内可靠完成任务的能力

三.Linux操作系统简述以及选择Linux的原因

Linux是一款开源的类Unix操作系统,由林纳斯·托瓦兹(Linus Torvalds)于1991年开发。它借鉴了UNIX的设计思想,继承了其多任务、多用户等特性,同时以开源免费的模式发展,成为服务器、嵌入式等领域的主流系统之一,是UNIX的“开源继任者”。

选择Linux的原因

1.开源与免费

Linux作为开源操作系统,无需支付许可费用,降低了开发成本。嵌入式系统通常对成本敏感,开源特性允许开发者自由修改和优化内核,满足特定需求。

2.高度可定制性

Linux内核支持模块化配置,可根据嵌入式设备的资源限制裁剪不必要的功能(如GUI、网络协议栈)。通过交叉编译工具链,能针对不同硬件架构(ARM、MIPS等)灵活适配。

3.强大的社区与工具链

成熟的开发工具(GCC、GDB、Make)和调试手段(JTAG、串口日志)简化了开发流程。社区资源(如GitHub、Stack Overflow)提供了大量现成解决方案和补丁。

4.跨平台与长周期支持

Linux支持从微控制器到多核处理器的多种硬件平台,统一的API接口(POSIX)便于代码移植。长期支持版本(LTS)保障了系统维护的可持续性。

四.工具下载

在做嵌入式Linux开发时,我们需要多种工具的支持,我选择的是虚拟机来安装Linux发行版

虚拟机可以使用像VMware,Oracle VituralBox,VirtualPC等,Linux发行版可以选择Ubuntu。

下面附上工具的下载地址与安装指导:

1.虚拟机安装

1.VMware官网下载:www.vmware.com

2.安装教程:VMware Workstation Pro 17官网下载安装教程_vmware17pro下载-CSDN博客

2.Ubuntu安装

1.Ubuntu官网:下载Ubuntu桌面系统 | Ubuntu

(尽量选择LTS版本,LTS版本是长期支持的,一般为5年)

2.镜像包安装:

1.国内镜像:http://mirrors.163.com/ubuntu-releases/

2.清华大学开源软件镜像站:ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

五.Linux基本命令介绍

1.Linux命令分类:

Linux命令按功能分为以下几类:

  • 用户管理命令
  • 文件操作命令
  • 设备管理命令
  • 网络管理命令
  • 进程管理命令
  • 内存管理命令

2.用户管理命令及使用说明

1. adduser
  • 功能:交互式添加用户(无需手动设置用户信息)
  • 格式:adduser 用户名
2. useradd
  • 功能:非交互式快速添加用户(需手动添加用户信息)
  • 格式:useradd 用户名
3. deluser/userdel
  • 功能:删除用户账户(deluser交互,userdel非交互)
  • 格式:deluser 用户名 或 userdel 用户名
4. usermod
  • 功能:修改用户属性配置
  • 使用格式:
    • 修改用户名:usermod -l 新用户名 原用户名
    • 变更主用户组:usermod -g 新用户组 用户名
    • 设置用户主目录:usermod -d 新主目录 用户名
    • 追加附属用户组:usermod -aG 组名 用户名(保留原组)
5. sudo
  • 功能:以超级用户权限执行命令
  • 格式:sudo 命令
6. last
  • 功能:查询用户登录历史
  • 使用方式:
    • last:查看所有用户登录记录
    • last 用户名:查看指定用户登录记录

3.文件操作命令及其使用说明

一、创建文件与目录
  • touch​:创建新的空文件或更新文件时间戳。例如 touch hello.c创建名为 hello.c的C源文件。

  • mkdir​:创建新目录。使用 -p参数可递归创建多级目录,例如 mkdir -p project/src一次性创建嵌套目录。

二、编辑源代码
  • nano​:简单易用的文本编辑器,适合初学者。操作方式直观:Ctrl+O保存,Ctrl+X退出。

  • vim​:功能强大的编辑器。常用操作:按 i进入编辑模式;按 Esc退出编辑模式,输入 :wq保存并退出,输入 :q!不保存强制退出。

  • gedit:图形化文本编辑器,例 gedit hello.c

三、编译程序 (GCC)
  • ​基础编译​​:gcc 源码文件 -o 可执行文件名,例如 gcc hello.c -o hello。若不指定 -o选项,默认生成名为 a.out的可执行文件。

  • ​显示警告​​:建议编译时添加 -Wall选项,如 gcc -Wall hello.c -o hello,这有助于发现代码中的潜在问题。

  • ​调试编译​​:如需使用调试器(如GDB),需添加 -g选项以包含调试信息,例如 gcc -g hello.c -o hello

四、执行程序
  • ​运行程序​​:通过 ./可执行文件名执行当前目录下的程序,例如 ./hello

  • ​权限问题​​:若执行权限不足,可使用 chmod +x 可执行文件名命令为文件添加执行权限。

五、查看文件与输出
  • cat​:直接显示整个文件内容,适用于内容较少的文件,例如 cat hello.c

  • less​:分页显示文件内容,适合查看日志等大文件。操作方式:空格键向下翻页,b键向上翻页,按 q键退出。

  • grep​:在文件或程序输出中过滤特定关键词。常与管道 |结合使用,例如 ./hello | grep "error"可以只显示程序输出中包含 "error" 的行。

六、删除文件与目录
  • rm​:删除文件,例如 rm hello.o。​​警告:此命令直接删除,不易恢复​​。

  • rm -r​:递归删除目录及其下所有内容,例如 rm -r project/。​​使用此命令需格外谨慎​​。

7.示例

这里以一个完整例子来演示

4.文件压缩

一、常见压缩格式对比

格式

扩展名

特点

ZIP

.zip

打包压缩一体,跨平台支持优秀

TAR+GZIP

.tar.gz.tgz

先打包后压缩,Linux系统通用,兼容性最佳

TAR+BZIP2

.tar.bz2.tbz

先打包后压缩,压缩比比GZIP更高

TAR+XZ

.tar.xz.txz

先打包后压缩,采用LZMA算法,压缩率极高

7Z

.7z

打包压缩一体,基于LZMA算法,支持加密,压缩率极高

RAR

.rar

打包压缩一体,支持分卷压缩和加密

GZIP

.gz

仅压缩不打包,处理速度快,算法简洁

二、格式选择场景建议
  1. ​跨平台传输​​:推荐使用 ​​.zip​​ 格式,各类操作系统无需额外软件即可解压

  2. ​Linux/Unix环境​​:

    • 通用兼容:选择 ​​.tar.gz​​,在压缩速度与压缩率间取得良好平衡

    • 高压缩需求:选择 ​​.tar.xz​​(极致压缩)或 ​​.tar.bz2​​(平衡较优)

  3. ​极限压缩​​:优先考虑 ​​.7z​​ 或 ​​.tar.xz​​(适用于对压缩时间不敏感的场景)

  4. ​分卷压缩​​:推荐使用 ​​.rar​​ 或 ​​.7z​​ 格式

  5. ​单个文件压缩​​:文本文件或日志压缩可使用 ​​.gz​​ 格式

三、tar命令使用指南
打包压缩命令
  • tar -czvf dir.tar.gz dir/:将目录打包并采用GZIP压缩

  • tar -cjvf dir.tar.bz2 dir/:将目录打包并采用BZIP2压缩

  • tar -cJvf dir.tar.xz dir/:将目录打包并采用XZ压缩

解压缩命令
  • tar -zxvf dir.tar.gz:解压GZIP格式压缩包

  • tar -jxvf dir.tar.bz2:解压BZIP2格式压缩包

  • tar -Jxvf dir.tar.xz:解压XZ格式压缩包

命令选项详解

选项

功能说明

-c

创建新归档文件(create)

-x

解压已有归档文件(extract)

-t

列出归档内容清单,不解压(list)

-r

向已存在归档文件追加文件(append)

-u

更新归档文件,仅追加比归档内更新的同名文件(update)

-f

指定归档文件名(必选参数,后须直接跟文件名)

-v

显示详细处理过程(verbose)

-z

使用gzip压缩/解压(处理.tar.gz/.tgz文件)

-j

使用bzip2压缩/解压(处理.tar.bz2/.tbz文件)

-J

使用xz压缩/解压(处理.tar.xz/.txz文件)

-C <目录>

改变至指定目录再执行操作(特别适用于指定解压路径或打包路径)

-p

保留文件原始权限和属性(适用于需要保留权限的备份操作)

--exclude

排除指定文件或目录,不进行打包

-k

解压时不覆盖已存在的文件(keep)

-w

打包完成后验证归档完整性(verify)

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐