打印

【干货】简述Linux如何应用在嵌入式单片机上

[复制链接]
8039|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hqyjcdzx|  楼主 | 2021-9-24 10:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大多数功能更强大的紧凑型单片机(SBC)都运行一种流行的Linux发行版,专门用于这些嵌入式板。尽管没有针对嵌入式应用程序的特定版本的Linux内核,但与运行Linux的PC或台式设备的区别通常很小。

通常比拥有大量RAM和硬盘更依赖于闪存-在某些情况下还“无头”,即没有HDMI或视频输出-嵌入式应用程序的分发是针对可用资源而量身定制的,而不是不能够运行某些功能或命令

对于无头SBC而言,与它们进行交互的唯一方法是通过Linux命令行,因此必须具备良好的Linux基础知识。同样,在设备和外围设备连接级别(例如,具有GPIO接口和I2C功能),需要了解许多重要的Linux资源

在这里,我将介绍将嵌入式SBC连接到现实世界时最可能使用的一些命令

假定您具有一些基本的Linux命令行技能。
在开始使用命令行界面(CLI)之前,让我们回顾一下使用Linux的一些好处

Linux可以运行在从具有嵌入式微控制器的紧凑型SBC到多核数据中心服务器等各种设备上,它是一种极其高效且可扩展的操作系统(OS)。正如我们将在本文中发现的那样,您的SBC上可以使用大量的开源程序。

我们将在本文中介绍其中一些,但还有数百个。将OS用于嵌入式设计的一个方面是,它并不特别适合某些实时应用程序的延迟和确定性要求。就是说,有许多行业的发展旨在提供基于抢占式的硬实时Linux OS。

实质上,这样可以根据需要中断OS,以满足实时需求。而且,由于Linux是开源操作系统,因此它已获得GNU通用公共许可证(GPL)的许可,并且可以免费使用和修改。在这种情况下,社区对OS的支持是巨大的,因为有成千上万的Linux内核和应用程序开发人员参与其中。

命令级界面
对于本文中的示例,我们将使用PocketBeagle板。PocketBeagle的IP地址为192.168.6.2,默认用户为'debian'。

在本文中,<ret>表示按回车键或Enter键。按住Ctrl键并按另一个键(在此示例中为“ D”)由Ctrl-D表示。

Linux命令也有很长的选项列表,可以从命令行调用这些选项。鼓励读者研究这些内容,只需键入命令后接--帮助(例如df)--help <ret>即可产生命令语法和选项的完整详细信息,在此情况下,设备文件系统命令。

计算机到PocketBeagle的连接取决于使用终端程序(例如PuTTY)在microsoft Windows下运行,还是使用Mac OS X时使用终端。

SSH(安全外壳)提供了一种远程连接到另一台计算机的安全加密方法。连接后,您可以运行直接在该计算机上运行的所有命令。

最常用的命令格式是SSH user @ host <ret>。主机可以是IP地址,也可以是本地网络上的主机名。可以使用Ctrl-D终止SSH会话。如果先前未与主机(在这种情况下为PocketBeagle)进行通信,则将显示警告消息。

Linux的前提是所有内容都是文件,并且GPIO引脚也不例外。PocketBeagle的每个可用输入和输出都以这种方式处理,可以在/ sys / class / gpio目录中找到。当您使用Python之类的语言进行工作时,除了将其设置为高输出还是低输出之外,还可以将每个单独的GPIO设置为输入或输出。这可以在命令行中以相同的方式实现。

在此示例中,选择了引脚gpio27,然后使用命令echo out> direction <ret>设置GPIO方向。这会将“输出”放入文件“方向”。然后,您可以通过命令echo 1> value <ret>将引脚的输出值设置为高电平,或者通过echo 0> value <ret>将引脚驱动为低电平。使用PocketBeagle,您可以通过以相同的方式打开和关闭USR LED,将“亮度”值从0更改为1来打开LED,从而获得一些乐趣。

在将7段显示器或加速度计之类的I 2 C设备连接到嵌入式板的I 2 C总线时,至关重要的是要确保没有其他设备正在使用该总线上的地址。通常,一个SBC配备有多个I 2 C总线。通常,某些内部板外围设备可以连接到一个,而另一两个可以用于用户应用。i2cdetect实用程序可以扫描指定的总线并返回找到的设备的结果。-l选项提供有关可用的I 2 C总线数量的信息,而i2cdetect –r 0 <ret>命令提供了在总线0上发现的设备的列表。在图4所示的示例中,在以下位置找到了两个设备:地址24h和50h。

采用支持Linux使用的SBC会增加许多功能,并通过使用开源工具和软件来帮助简化开发过程。嵌入式开发人员将欣赏实用程序命令轻松完成集成外围设备并实现跨局域网和与基于Web的应用程序之间的数据连接的任务。

一些常用的文件和目录命令

ls –列出文件
例如,ls <ret>,ls –l <ret>显示每个文件的完整详细信息

cd –更改目录
例如,cd <ret>,cd .. <ret>向上移动目录,cd /。<ret>移至根目录,cd?/ <ret>移至主目录,cd / node_modules <ret>

mkdir –新建目录
例如,mkdir projectfab <ret>

rm –删除文件
例如,rm empty.txt <ret>

rmdir –删除目录
例如,rmdir projectfab <ret>

cp –复制文件或目录
例如,cp program.c projectfab / program.c <ret>将文件program.c复制到子目录projectfab

mv –移动文件或目录
例如,mv program.c projectfab / newprogram.c <ret>将文件program.c移至子目录projectfab并将其重命名为newprogram.c

触摸–创建一个空文件
例如,触摸empty.txt <ret>

更多–查看文件内容
例如,更多program.c <ret>

whereis –查找特定文件或目录的存储位置
其他有用的实用程序命令

df –提供有关计算机文件系统和已安装设备的详细信息
du –文件的完整目录
您可以将一个命令的输出“管道”到另一命令–例如,一次使用时,显示完整的上述命令输出的屏幕

df | 更多<ret>

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

143

主题

161

帖子

1

粉丝