raspberry pi_Raspberry Pi上的Perl入门

raspberry pi

当我最近在SVPerl(硅谷Perl)谈论Raspberry Pi上的Perl时,有人问:“我听说Raspberry Pi应该使用Python。是吗?” 我很高兴他问,因为这是一个普遍的误解。 Raspberry Pi可以运行任何语言。 Perl,Python和其他工具是Raspbian Linux初始安装的一部分,Raspbian Linux是该板的官方软件。

神话的起源很简单。 Raspberry Pi的创建者,英国计算机科学教授Eben Upton曾说过这个故事,该名称的“ Pi”部分原本听起来像Python,因为他喜欢这种语言。 他选择它作为孩子们学习编码的重点。 但是他和他的团队制造了一台通用计算机。 Raspberry Pi上的开源软件对我们没有任何限制。 我们都可以自由选择想要运行的内容,并让每台Raspberry Pi成为我们自己的。

我在SVPerl上的演讲的第二点是介绍我的“ PiFlash”脚本。 它是用Perl编写的,但是不需要Perl的任何知识就可以自动完成从Linux系统为Raspberry Pi刷新SD卡的任务。 它为初学者提供了安全性,因此他们在尝试闪存SD卡时不会意外擦除硬盘。 它为包括我在内的高级用户提供了自动化和便利,这就是我编写它的原因。 Windows和Mac已经存在类似的工具,但是Raspberry Pi网站上的说明奇怪地没有针对Linux用户的自动化工具。 现在一个存在。

开源软件在开始新项目方面有着悠久的传统,因为作者希望“抓痒”或解决自己的问题。 这就是埃里克·雷蒙德(Eric S. Raymond)在其1997年的论文和1999年的《 大教堂与集市 》( The Cathedral and the Bazaar)一书中描述的方式,该书定义了开源软件开发方法。 我写了PiFlash来满足像我这样的Linux用户的需求。

可下载的系统映像

设置Raspberry Pi时,首先需要为其下载操作系统。 我们称其为“系统映像”文件。 一旦将其下载到台式机,笔记本电脑甚至另一台Raspberry Pi,您就必须将其写入或“刷新”到SD卡中。 详细信息已在线涵盖。 手动操作可能有些棘手,因为将系统映像放在整个SD卡上而不是在分区上很重要。 由于Raspberry Pi的启动过程需要从中启动FAT32文件系统分区,因此系统映像实际上将至少包含一个分区。 引导分区之后的其他分区可以是OS内核支持的任何文件系统类型。

在大多数情况下,在Raspberry Pi上,我们使用Linux内核运行一些发行版。 这是您可以为Raspberry Pi下载的常见系统映像的列表(但是没有什么可以阻止您从头开始构建自己的映像)。

的   “ NOOBS”   Raspberry Pi Foundation的系统是他们为新用户推荐的系统。 它代表“全新的现成系统”。 显然,它的意图是听起来像“菜鸟”,是“新手”的缩写。 NOOBS启动基于Raspbian的Linux系统,该系统提供一个菜单,您可以使用该菜单在Raspberry Pi上自动下载并安装其他几个系统映像。

Raspbian Linux是专门用于Raspberry Pi的Debian Linux。 它是Raspberry Pi的官方Linux发行版,由Raspberry Pi基金会维护。 在转到其他Linux发行版之前,几乎所有的Raspberry Pi软件和驱动程序都是从Raspbian开始的。 它可以在Raspberry Pi的所有型号上运行。 默认安装包括Perl。

Ubuntu Linux(以及社区版Ubuntu MATE)将Raspberry Pi作为其ARM(高级RISC机器)处理器支持的平台之一。 [RISC(精简指令集计算机)体系结构] Ubuntu是Debian Linux的商业支持的开放源代码变体,因此其软件以DEB软件包的形式提供。 包括Perl。 它仅适用于具有32位ARM7和64位ARM8处理器的Raspberry Pi 2和3型号。 Ubuntu的构建过程从未支持过Raspberry Pi 1和Zero的ARM6处理器。

从Fedora 25开始, Fedora Linux支持Raspberry Pi 2和3。Fedora是隶属于Red Hat的开源项目。 Fedora是商业RHEL(红帽企业Linux)添加商业软件包和支持的基础,因此它的软件以RPM(红帽软件包管理器)软件包的形式出现,就像所有与Red Hat兼容的Linux发行版一样。 像其他的一样,它包括Perl。

RISC OS是专门为ARM处理器设计的单用户操作系统。 如果您要尝试使用比Linux更紧凑的小型台式机(由于功能较少),则可以选择。 Perl在RISC操作系统上运行。

RaspBSD是FreeBSD的Raspberry Pi发行版。 这是基于Unix的系统,但不是Linux。 作为开放源代码的Unix,形式遵循功能,并且与Linux有很多相似之处,包括操作系统环境是由一组类似的开放源代码包(包括Perl)组成的。

OSMC ,开源媒体中心和LibreElec是电视娱乐中心系统。 它们都基于在Linux内核上运行的Kodi娱乐中心。 这是一个非常紧凑且专业的Linux系统,因此不要期望在其上找到Perl。

Microsoft Windows IoT Core是仅在Raspberry Pi 3上运行的新成员。您需要Microsoft开发人员访问权限才能下载它,因此,作为Linux怪胎,这使我望而却步。 我的PiFlash脚本不支持它,但是如果您正在寻找它,那就在那里。

PiFlash脚本

如果您查看Raspberry Pi的SD卡闪烁 说明 ,则将看到在Windows或Mac上执行此操作的说明,其中包括下载写入SD卡的工具。 但是对于Linux系统,这是一组手动执行的说明。 我已经做了很多次手动操作,以至于激发了我的软件开发人员本能来自动化该过程,这就是PiFlash脚本的来源。 这很棘手,因为可以使用多种方法来设置Linux系统,但是它们都基于Linux内核。

我一直以为手动过程中最大的潜在错误之一就是不小心擦除了错误的设备而不是SD卡,并破坏了我想保留的硬盘驱动器上的数据。 在SVPerl上的演讲中,我很惊讶地在观众中发现犯了这个错误的人(并且不怕承认)。 因此,比我预想的更需要PiFlash脚本的目的之一,即通过拒绝擦除不是SD卡的设备来为新用户提供安全性。 PiFlash也将拒绝覆盖包含已安装文件系统的设备。

对于包括我在内的有经验的用户,PiFlash脚本提供了自动化的便利。 下载系统映像后,无需解压缩它或从zip存档中提取系统映像。 PiFlash将从其中的任何格式提取它,然后直接刷新SD卡。

我在GitHub上发布了PiFlash及其说明

这是一个命令行工具,具有以下用法:

piflash [--verbose]输入文件输出设备

piflash [--verbose] --SDsearch

输入文件参数是系统映像文件,无论您是从Raspberry Pi软件分发站点下载的。 output-device参数是要写入的SD卡的块设备的路径。

或者,使用--SDsearch打印系统上SD卡的设备名称列表。

可选的--verbose参数对于打印出程序的所有状态数据很有用,以防您需要帮助,提交错误报告或自行解决问题时使用。 这就是我用来开发它的方式。

这个使用脚本的示例将Raspbian映像(仍保留在其zip存档中)写入SD卡的/ dev / mmcblk0

piflash 2016-11-25-raspbian-jessie.img.zip / dev / mmcblk0

如果您指定了/ dev / mmcblk0p1 (SD卡上的第一个分区),则它将识别出该分区不是正确的位置,因此拒绝对其进行写入。

一个棘手的方面是识别各种Linux系统上哪些设备是SD卡。 mmcblk0的示例来自笔记本电脑上基于PCI的SD卡接口。 如果使用USB SD卡接口,它将是/ dev / sdb ,这很难与许多系统上存在的硬盘驱动器区分开。 但是,只有少数支持SD卡的Linux块驱动程序。 在这两种情况下,PiFlash都会检查块设备的参数。 如果所有其他方法均失败,它将接受可写,可移动且具有正确SD卡物理扇区数的USB驱动器。

我认为这涵盖了大多数情况。 但是,如果您还没有看到另一个SD卡接口,该怎么办? 我想听听你的消息。 请包括--verbose --SDsearch输出,以便在尝试时可以看到您的系统上存在什么环境。 理想情况下,如果PiFlash脚本得到广泛使用,我们应该建立一个开源社区,围绕着尽可能多的Raspberry Pi用户维护它。

Raspberry Pi的CPAN模块

CPAN是综合Perl存档网络 ,它是一个包含大量Perl模块的下载镜像的全球网络。 它们都是开源的。 多年来,CPAN上的大量模块一直是Perl的强大优势。 对于成千上万的任务,无需重新发明轮子,您只需使用别人已经发布的代码,然后在拥有新内容后提交自己的代码即可。

由于Raspberry Pi是成熟的Linux系统,因此大多数CPAN模块都可以在其上正常运行,但是我将重点介绍一些专门针对Raspberry Pi硬件的模块。 这些通常用于嵌入式系统项目,例如测量,控制或机器人技术。 您可以通过其GPIO(通用输入/输出)引脚将Raspberry Pi连接到外部电子设备。

专门用于访问Raspberry Pi的GPIO引脚的模块包括Device :: SMBusDevice :: I2CRpi :: PIGPIORpi :: SPIRpi :: WiringPiDevice :: WebIO :: RaspberryPiDevice :: PiGlow 。 支持Raspberry Pi的其他嵌入式系统的模块包括UAV :: Pilot :: Wumpus :: Server :: Backend :: RaspberryPiI2CRPi :: DHT11 (温度/湿度), RPi :: HCSR04 (超声波), App :: RPi: :EnvUI (植物生长灯), RPi :: DigiPot :: MCP4XXXX (电位计), RPi :: ADC :: ADS (A / D转换), Device :: PaPiRusDevice :: BCM2835 :: Timer (-板定时器芯片)。

例子

以下是在Raspberry Pi上使用Perl可以执行的操作的一些示例。

示例1:带PiFlash的Flash OSMC并播放视频

对于此示例,您将练习使用OSMC(开源媒体中心)设置和运行Raspberry Pi。

  • 转到RaspberryPi.Org 。 在下载区域中,获取最新版本的OSMC。
  • 将空白SD卡插入Linux台式机或笔记本电脑。 Raspberry Pi 1使用全尺寸SD卡。 其他所有东西都使用microSD,这可能需要通用适配器才能插入。
  • 在插入SD卡之前和之后检查“ cat / proc / partitions”,以查看系统为它分配了哪个设备名称。 可能是/ dev / mmcblk0/ dev / sdb之类的东西 。 用如下所示的命令替换正确的系统映像文件和输出设备:

piflash OSMC_TGT_rbp2_20170210.img.gz / dev / mmcblk0

  • 弹出SD卡。 将其放入Raspberry Pi中并引导它连接到HDMI监视器。
  • 设置OSMC时,拿起USB记忆棒,并在上面放一些视频。 为了演示,我建议使用“ youtube-dl”程序下载两个视频。 运行“ youtube-dl OHF2xDrq8dY”(有关包括Raspberry Pi在内的英国技术的彭博“ Hello World”情节)和“ youtube-dl nAvZMgXbE9c”(CNet排名前5的Raspberry Pi项目)。 将它们移至USB记忆棒,然后卸下并取出。
  • 将USB记忆棒插入OSMC Raspberry Pi。 按照“视频”菜单访问外部设备。
  • 当您可以在Raspberry Pi上播放视频时,就已经完成了练习。 玩得开心。

示例2:用于播放目录中随机视频的脚本

本示例使用脚本从Raspberry Pi的目录中随机播放视频。 根据视频及其安装位置的不同,这可能是信息亭的显示。 我写它的目的是在使用室内运动器材时显示视频。

  • 设置Raspberry Pi以启动Raspbian Linux。 将其连接到HDMI监视器。
  • 从GitHub下载我的“视频”脚本 ,并将其放在Raspberry Pi上。
  • 请按照页面上的安装说明进行操作。 最主要的是安装omxplayer软件包,该软件包使用Raspberry Pi的硬件​​视频加速功能流畅地播放视频。
  • 将一些视频放在主目录下的“视频”目录中。
  • 运行“视频”,视频应开始播放。

示例3:读取GPS数据的脚本

这个示例是更高级和可选的,但它说明了如何从外部设备读取Perl。 在上一个示例中,我在GitHub上的“ Perl on Pi”页面上,还有一个gps-read.pl脚本。 它通过串行端口从GPS读取NMEA(美国国家海洋电子协会)数据。 说明在页面上,包括我从AdaFruit Industries建造的零件,但是可以使用任何输出NMEA数据的GPS。

通过这些任务,我证明您确实可以在Raspberry Pi上使用Perl以及任何其他语言。 我希望你喜欢它。

翻译自: https://opensource.com/article/17/3/perl-raspberry-pi

raspberry pi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值