XX派使用指南
树莓派(Raspberry Pi)是各种派中最早开始流行起来的一个嵌入式Linux板卡,其本质是尺寸仅有信用卡大小的一个小型电脑。你可以将树莓派连接电视、显示器、键盘鼠标等设备当一台正常Linux电脑使用,目前树莓派能替代日常桌面计算机的多种用途包括文字处理、电子表格、媒体中心甚至是游戏;也可以拿它来当作个人网站的服务器,构建自己的博客;甚至可以用树莓派的硬件资源做各种有趣的硬件项目,等等。
最重要的是,作为一个能运行标准Linux系统的开发板来说,树莓派非常便宜。
在看到了树莓派在创客圈中的大受欢迎之后,国内的很多厂商也纷纷开始设计生产自己的XX派,并且由于我国显而易见的优势,这类板卡往往性价比更高。比如下面的香蕉派、香橙派、荔枝派、Nano派…
各种衍生派当然也可以自己设计一个Pi,比如下面这个是我刚做好的一个十分迷你的板卡:
自己设计的Linux-Card这个板卡的介绍在我的想法中有提及。在制作这个板卡的过程中我也是查阅了很多树莓派的资料和教程,所以顺便利用做这个项目的契机,把过程中的一些心得整理成文,包括汇总一些教程资料,一并分享出来。
那么接下来本指南就以树莓派为例(其他板卡也是类似的),由浅至深地讲解关于树莓派的常用功能及配置,希望能够帮助读者成功搭建基础开发环境,并对其中可能出现的问题做出详细讲解,同时带领大家进行更多有趣的探索,以达到玩转XX派的目的。
本文可能会持续更新。适合人群
本指南覆盖了树莓派的许多主题,适合程序员、计算机软硬件爱好者,以及对树莓派感兴趣的读者阅读。
预备知识
你需要对 Linux 及虚拟机有一定的了解,最好手里已经有一块板子且开过箱上过电了,如果懂一些硬件知识就更好了。
树莓派的历史
Raspberry Pi(中文名为 “树莓派”, 简写为 RPi,或者 RasPi/RPi) 是为学生计算机编程教育而设计,只有信用卡大小的卡片式电脑,其系统基于 Linux。
树莓派由注册于英国的慈善组织 “Raspberry Pi 基金会” 开发,Eben·Upton / 埃 · 厄普顿为项目带头人。2012 年 3 月,英国剑桥大学埃本 · 阿普顿(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是 Raspberry Pi 电脑板,中文译名 “树莓派”!这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。基金会期望这 一款电脑无论是在发展中国家还是在发达国家,会有更多的其它应用不断被开发出来,并应用到更多领域。
一句话:树莓派是一个卡片大小的开发板,上面可以运行 Linux 系统,同时它提供了很多可编程的GPIO用于扩展硬件。
树莓派的种类
树莓派到如今已经发布了4代,性能自然是越来越强了,每一代都分为A、B型(刚发布的4代暂时还没有A型),也有比较特殊的型号比如去掉大部分接口很小巧的树莓派Zero、去掉所有接口的树莓派计算型CM(Compute Module)、B型的增强型B+等。其中B型是最常用的,而A、B型区别也只在于尺寸和接口不同,SoC基本都是一致的。
各种特殊型号的树莓派树莓派启动方式及支持的系统
树莓派开发板没有配置板载 FLASH,它支持 SD 卡启动(或者从U盘启动),所以我们需要下载相应镜像,并将其烧写在 SD 上制作系统盘。
(这个镜像里包含了我们通常所说的 bootloader、kernel、文件系统)
树莓派由于其开源特性,支持非常多的系统类型(指的Linux发行版文件系统):Raspbian、Arch Linux ARM、Debian Squeeze、Firefox OS、Gentoo Linux
Google Chrome OS、Raspberry Pi Fedora Remix、Slackware ARM
QtonPi、Slackware ARM、WebOS、RISC OS、FreeBSD
NetBSD、Android 4.0(Ice Cream Sandwich)详细介绍请看维基百科:http://zh.wikipedia.org/wiki/%E6%A0%91%E8%8E%93%E6%B4%BE
树莓派镜像下载地址
建议直接选择下载NOOBS,傻瓜式安装。
镜像烧写
准备工作
一张 2G 以上的 SD 卡及读卡器,最好是高速卡,推荐 Class10 以上的卡WinXP 和 Win7 下安装镜像的工具:Win32DiskImager.zip上一步下载好的镜像安装
解压下载的系统压缩文件,得到 img 镜像文件将 SD 使用卡托或者读卡器后,连上电脑解压并运行 win32diskimager 工具在软件中选择 img 文件,“Device”下选择 SD 的盘符,然后选择 “Write” 然后就开始安装系统了,根据你的 SD 速度,安装过程有快有慢。安装结束后会弹出完成对话框,说明安装就完成了,如果不成功,请关闭防火墙一类的软件,重新插入 SD 进行安装,请注意安装完,win 系统下看到 SD 只有 74MB 了,这是正常现象,因为 linux 下的分区 win 下是看不到的。开发板供电
树莓派开发板有两种供电方式:
使用 micro usb 供电:所有 Android 手机的充电线都可以给它供电外接电源直接供电:GPIO左上角的 2、4 引脚oao为电源正极,6 号引脚为Gnd负极树莓派的GPIO定义,各版本都通用的树莓派访问方式
初始启动
外接 HDMI 或者 AV 显示器,USB 鼠标、键盘
把树莓派当作一个小电脑,可以用外接键盘、鼠标操作树莓派,树莓派启动界面会显示在 HDMI 或者 AV 显示器上。
本人不太建议这种启动方式——抱着个显示器、鼠标键盘太不优雅了。
使用 USB 转 TTL 串口模块通过串口访问树莓派
树莓派默认支持串口启动,我们只需要一根:usb转ttl线(淘宝上很多,10 几块钱一根)连接树莓派与电脑,即可通过串口控制调试树莓派(电脑上使用超级终端或者其它串口调试工具,个人建议使用Xshell)。
树莓派串口连接口请见下图中所示
在终端或者串口助手中会显示类似启动信息,中间会提示输出用户名和密码:
默认用户名:pi默认密码:raspberry其它访问方式
SSH:由于树莓派只有一个串口,当我们开发中需要占用这个串口或者我们希望进行远程开发(通过一个根网线或无线连接到树莓派),可以借助 SSH 来完成,这也是连接Linux系统最常用的方法。VNC:VNC 是 linux 下面常用的远程桌面,用它可以在 Windows 或者 unix 主机上方便的通过网络操作远程主机而不需要一个额外的显示器,非常实用。XRDP 远程桌面:使用 Windows 自带的远程桌面登陆系统,很好用,GUI界面操作首选。以上三种方式都是通过网络对树莓派进行控制,可以说只要知道了树莓派的 ip 地址,一切额外的设备都是不需要的。
树莓派配置
经过前面两步我们的树莓派已经正常的工作起来了,但是在真正用它开发之前还需要进行一些列的配置以及软件的安装,这样开发起来才会得心应手。
配置选项
树莓派第一次使用的时候需要进行一个简单的配置,在命令行模式下运行以下命令:
2. Change User Password 改变默认 pi 用户的密码,按回车后输入 pi 用户的新密码。
3. Enable Boot to Desktop/Scratch 启动时进入的环境选择。
Console Text console, requiring login(default)
启动时进入字符控制台,需要进行登录(默认项)。Desktop log in as user pi at the graphical desktop
启动时进入 LXDE 图形界面的桌面。Scratch Start the Scratch programming environment upon boot
启动时进入 Scratch 编程环境。4. Internationalisation Options 国际化选项,可以更改默认语言
Change Locale:语言和区域设置,建议不要改,默认英文就好。想改中文,最好选安装了中文字体再进行这步,安装中文字体的方法:移动到屏幕底部,用空格键选中 zh-CN GB2312,zh-CN GB18030,zh-CN UTF-8, 然后按回车,然后默认语言选中 zh-cn 然后回车。
Change Timezone:设置时区,如果不进行设置,PI 的时间就显示不正常。选择 Asia(亚洲)再选择 Chongqing(重庆)即可。Change Keyboard Layout:改变键盘布局
5. Enable Camera
启动 PI 的摄像头模块,如果想启用,选择 Enable,禁用选择 Disable 就行了。
6. Add to Rastrack
把你的 PI 的地理位置添加到一个全世界开启此选项的地图,建议还是不要开了,免得被跟踪。
7. Overclock
超频选项,新手不建议调整。
8. Advanced Options 高级设置
A1 Overscan 是否让屏幕内容全屏显示A2 Hostname 在网上邻居或者路由器能看到的主机名称A3 Memory Split 内存分配,选择给 GPU 多少内存A4 SSH 是否运行 SSH 登录,建议开户此选项,以后操作 PI 方便,有网络就行,不用开屏幕了A5 SPI 是否默认启动 SPI 内核驱动,新手就不用管了A6 Audio 选择声音默认输出到模拟口还是 HDMI 口A7 Update 把 raspi-config 这个工具自动升级到最新版本9. About raspi-config
关于 raspi-config 的信息。
树莓派网络与更新配置
有线网络:
手动设定 IP:如果是电脑与树莓派直连,不能自动获得 IP,可以使用:ifconfig eth0 192.168.1.123 设定 ip(下次重启就没了)。
设置静态 IP:如果担心在同网络情况下 ip 或者不固定,可以讲电脑设置为静态 ip,方法如下:
在终端中打开以下文件:
sudo vi /etc/network/interfaces
(需要学习命令行下编辑器 vi 的基本操作,不习惯的可以用nano命令代替vi)
将以上内容改为:
无线网络
有线网络需要受到网线的限制,现在无线网络已经非常的普及,WiFi显然要比以太网方便得多,下面介绍一下无线网络的配置。
无线网卡驱动的确认
树莓派内置了很多USB无线网卡的驱动,大家可以在这个网站查找所支持的型号
当然如果你买的是带有WiFi模块的板卡(比如4代),就不用这么麻烦了直接可以连接。
USB网卡的验证方法:
将 无线网卡插入树莓派 USB 接口(旧版系统会自动重启,新版不会),敲入:
提示
或者敲入:
提示
说明树莓派支持你的无线网卡,可进行下一步设置。
无线网卡的配置
使用 vi/nano打开以下文件进行修改:
重启即可连入: 网络名为 MiWiFi,密码为 helloworld 的网络,
如果想要设置为静态 ip,类似有线网卡,修改相应代码即可。更新软件源
Linux的软件不像Windows,基本都是需要在线安装的,但是树莓派由于各种原因其默认的软件源在国内速度并不是很理想,所以需要更新一下软件源:
将默认的内容删掉或者用#号注释,改为
或者
或者用以下地址代替上面的地址栏
中山大学
Raspbian http://mirror.sysu.edu.cn/raspbian/raspbian/中国科学技术大学
Raspbian http://mirrors.ustc.edu.cn/raspbian/raspbian/清华大学
Raspbian http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/华中科技大学
Raspbian http://mirrors.hustunique.com/raspbian/raspbian/Arch Linux ARM http://mirrors.hustunique.com/archlinuxarm/
大连东软信息学院源(北方用户)
Raspbian http://mirrors.neusoft.edu.cn/raspbian/raspbian/
使用远程桌面
通过 Windows 自带的远程桌面软件,可以远程访问树莓派桌面应用
SSH
SSH服务默认已经安装完毕,只需要安装一个 ssh 客户端即可。
host 填入: 开发板 ip 即可。用户名、密码同串口登陆一致(默认:pi、raspberry)使用 samba
通过 samba 服务,可以自由、访问修改树莓派家目录下的文件、代码。
首先安装 sambasudo apt-get install samba samba-common-bin
然后修改配置文件sudo vi /etc/samba/smb.conf
下面的配置是让用户可以访问自己的 home 目录。
开启用户认证,找到##### Authentication #####,将# security = user的#号去掉。配置用户可以读写自己的 home 目录,在[homes]节中,把 read only = yes 改为read only = no 。找到browseable=no改为yes,否则等会访问时此文件夹会隐藏。重启 samba 服务sudo /etc/init.d/samba restart
把系统默认用户 pi 添加到 sambasudo smbpasswd -a pi
会提示你输入密码:建议跟串口登陆的密码一致,防止密码太多弄混了。windows 访问
任意打开一个文件浏览器,输入 ip 地址:\\172.20.223.91\pi
现在就可以从其它机器上访问 pi 这个用户的 home 目录了。挂载 U 盘
当需要大容量外接存储设备时,可使用 U 盘挂载
通常我们在 /mnt 或 /media 目录下新建一个目录作为挂载点。比如:手动挂挂载
挂载命令
用完之后卸载
注意:
sda1 是取决于你的实际情况,a 表示第一个硬盘,1 表示第一个分区。
FAT 格式 U 盘 mount 本身就能支持,但如果你的 U 盘或移动硬盘使用的是 exFAT 格式,mount 会说不支持。没关系,安装 exfat-fuse 软件之后 mount 就支持了。sudo apt-get install exfat-fuse开机挂载
如果想开机自动挂载,而不是每次手工执行,可以编辑 /etc/fstab 文件。在末尾添加一行:
每次开机就会自动挂载。
热插挂载
需要希望想电脑一样,插上自动识别挂载在某一目录下,拔下自动 umount,请按一下操作
sudo vi /etc/udev/rules.d/10-usbstorage.rules(此文件默认没有,需要新建)
赋值以下内容即可,会自动在 /mnt/udisk 目录下挂载 U 盘。树莓派做 wifi 热点
原理:Pi 使用有线连入网络,然后接 USB 无线网卡作为热点,提供 Wifi 接入。
USB 无线网卡驱动
如果接上 USB 无线网卡,使用 ifconfig 命令,能直接看到 wlan0,那么恭喜你,可以直接跳过这一步。
如果没有请查询一下树莓派支持的 USB 无线网卡型号,可参考以下网址:修改 wlan0 为静态 IP
相当于设置路由器 wlan 口 IP, 即我们访问路由器通常使用的:192.168.1.1
把原来关于 wlan0 的注释掉:(可能跟这个不一样,跟 wlan0 有关的注释掉即可)。
添加下面的
完成之后需要重启
安装 hostapd
官方的 hostapd 不支持 8188CUS,后面需要重新卸载安装新的,测试时这里必须先装旧的,然后后面卸了装新的,否则也不能用。
编辑 hostapd 默认配置文件
找到 #DAEMON_CONF= “”,修改为:
然后编辑sudo vim /etc/hostapd/hostapd.conf
增加以下代码:
修改 WiFi 名和密码
保存退出,然后重启服务
或者执行以下命令生效
如果你使用的网卡提示一下信息
那么,还是要使用第三方的 hostapd:
删除原来的 hostapd
下载第三方驱动并安装
编译
然后再重启服务,应该提示成功
将 hostapd 加入开机自启动
如果这里提示的是失败,重启后网络建立成功,用手机可以搜到这个网络
安装 DHCP 服务
以上步骤建立起了
编辑配置文件
接下来编辑/etc/default/udhcpd并且将下面这行注释掉,以使 DHCP Server 正常工作
启动 dhcp 服务器
配置路由转发
理论上是经过这一步,手机可以通过共享树莓派的无线网络上网了,但是可能还存在一些路由转发问题。
设置路由映射规则
编辑sudo vim /etc/network/if-pre-up.d/iptables
添加下面两行代码:
保存退出,然后修改 iptables 权限:
开起内核转发
找到下面两行:
把net.ipv4.ip_forward前面的#去掉,保存退出,然后:
树莓派做 web 服务器
一想到 Linux Web 服务器,我们首先想到的是:Apache + MySql + Php。
Apache 是世界使用排名第一的 Web 服务器软件。
可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件。MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发。是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(关系数据库管理系统) 应用软件之一。PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,易于学习,使用广泛,主要适用于 Web 开发领域。树莓派可以安装这个 LAMP 系列,但 Apache 和 MySql 对于树莓派这个小机器稍微有些太重了,主要是消耗内存多/速度慢/占用磁盘大 (约 200M),所可以选择安装一个轻量级的 Web 服务器:
nginx + php + sqlitenginx 是个轻量级的 Web 服务器,是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器, 上 nginx 的并发能力确实在同类型的网页服务器中表现较好。SQLite 是一款轻型的数据库,是遵守 ACID 的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。Apache + MySql + Php 安装
安装 Apache
Apache 可以用下面的命令来安装sudo apt-get install apache2
Apache 默认路径是/var/www/
其配置文件路径为/etc/apache2/
可以通过sudo vi /etc/apache2/ports.conf修改监听端口号
重启服务生效sudo service apache2 restart
安装 mysql
sudo apt-get install mysql-server
安装过程中,会出现一个提示符让你输入一个密码。
这个密码是 mysql root 用户的密码。安装 PHP
输入下面的命令,就可以安装 PHP 5, 以及 PHP 访问 mysql 数据库所需要的库。
测试
安装完成后,可以在浏览器中输入你路由器的 IP 或域名,就可以访问你的网站了。你应该能看到一个页面显示 “It works”,但是没有其它内容。
创建一个 / var/www/index.php
nginx + php + sqlite 安装
安装 nginx web 服务器 (约 6MB)
启动 nginx
nginx 的 www 根目录默认在/usr/share/nginx/www中
修改 nginx 的配置文件
以下几个选项注意一下
listen 8080;## listen for ipv4; this line is default and implied – 监听的端口号,如果与其它软件冲突,可以在这里更改。
root /usr/share/nginx/www; – nginx 默认路径 html 所在路径。
index index.html index.htm index.php; – nginx 默认寻找的网页类型,我们可以增加一个 index.php。PHP 脚本支持
找到 php 的定义段,将这些行的注释去掉 ,修改后内容如下
php 段中有一些其它定义,不要去动它,比如
安装 php 和 sqlite (约 3MB)
重新加载 nginx 的配置
测试 html
通过主机的 IE 访问树莓派,可以看到主页 (表示 Web 服务器已正常启动)
测试 php
在树莓派中生成一php文件
在文件中输入以下内容
树莓派内核编译与固件升级
前面我们已经使用官方给的镜像搭建好了树莓派的开发环境,可以说已经可以上手应用了,但是如果官方提供的内核有些功能不能满足我们的需要或者需要对内核进行部分裁剪,那么就需要对树莓派的内核进行裁剪,这里我们教一下大家如何更新树莓派内核。
下载地址
官方网址:https://github.com/raspberrypi
上面列出了树莓派所有的开源软件
firmware:树莓派的交叉编译好的二进制内核、模块、库、bootloaderlinux:内核源码tools:编译内核和其他源码所需的工具——交叉编译器等我们只需要以上三个文件即可,下面的工程可以了解一下
documentation:树莓派离线帮助文档,教你如何使用、部署树莓派(树莓派官方使用教程)userland:arm 端用户空间的一些应用库的源码——vc 视频硬浮点、EGL、mmal、openVG 等hats:Hardware Attached on Top,树莓派 B+ 型板子的扩展板资料maynard:一个 gtk 写成的桌面环境scratch:一个简易、可视化编程环境noobs:一个树莓派镜像管理工具,他可以让你在一个树莓派上部署多个镜像weston:一个应用程序target_fs:树莓派最小文件系统,使用 busybox 制作quake3:雷神之锤 3 有线开发源码 firmwareb下载方法
可以网页直接下载,也可以git clone:
左上角选版本,右方有一个 download 按钮可直接下载,但还是建议使用 git 下载:
会得到三个文件夹:firmware linux tools
编译、提取内核及其模块
获得内核配置文件
在运行的树莓派中运行
可看到一个叫 config.gz 的文件,他是当前的树莓派配置选项记录文件,我们将他拷出,放入我们的内核源码目录树下。
我们这里使用前面交过的 samba 拷出并拷入内核源码目录下,不熟悉的人可参考前面内容。
在 linux 内核源码下执行:
把树莓派的配置文件写入.config。
配置、编译内核
修改内核源码 makefile ARCH 类型和编译器路径$vi Makefile +195,找到以上类似代码,改为如图所示。
查看、修改配置选项$make menuconfig,可出现以下界面。
如果不做修改,直接选中 exit 即可。编译内核镜像$make在arch/arm/boot目录下可以看到一个叫zImage的文件,就是我们新的内核,但是树莓派需要另外一种格式的镜像,需要进行处理一下,执行以下命令:
即可在当前文件夹下看到一个叫kernel.img的文件,就是我们需要的新内核了。
提取 modules 上一步其实不但编译出来了内核的源码,一些模块文件也编译出来了,这里我们提取一下,
即可在 modules 得到我们需要的模块文件。
升级 RPi 的 kernel、Firmware、lib
将 SD 卡拔下插在电脑上(可使用读卡器)
升级内核,将新编好的内核拷入 SD 卡,改名为:kernel_new.img。打开 boot 目录下
找到config.txt文件,加入:kernel=kernel_new.img这一行。升级 boot,将firmware/boot/目录下文件拷入 SD 卡 boot 目录:fbootcode.bin fixup.dat fixup_cd.dat start.elf更新 vc 库及内核 modules,将编译出来的modules/lib/modules拷入树莓派文件系统/lib下树莓派 GPIO 控制
常用开源工程简介
树莓派内核中已经编译自带了 gpio 的驱动,我们常通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有:
python GPIO
开发语言:python,树莓派的“Pi”就是由于最早的开发者希望在上面用Python 而起名的。简单介绍:树莓派官方资料中推荐且容易上手,python GPIO 是一个小型的 python 库,可以帮助用户完成 raspberry 相关 IO 口操作,但是 python GPIO 库还没有支持 SPI、I2C 或者 1-wire 等总线接口。官方网站:https://code.google.com/p/raspberry-gpio-python/wiringPi
开发语言:C 语言简单介绍:wiringPi 适合那些具有 C 语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi 的 API 函数和 arduino 非常相似,这也使得它广受欢迎。作者给出了大量的说明和示例代码,这些示例代码也包括 UART 设备,I2C 设备和 SPI 设备等。官方网站:http://wiringpi.com/BCM2835 C Library
开发语言:C 语言简单介绍:BCM2835 C Library 可以理解为使用 C 语言实现的相关底层驱动,BCM2835 C Library 的驱动库包括 GPIO、SPI 和 UART 等,可以通过学习 BCM2835 C Library 熟悉 BCM2835 相关的寄存器操作。如果有机会开发树莓派上的 linux 驱动,或自主开发 python 或 PHP 扩展驱动,可以从 BCM2835 C Library 找到不少的 “灵感”。官方网站:http://www.airspayce.com/mikem/bcm2835/树莓派 GPIO 编号方式
功能物理引脚:
从左到右,从上到下:左边基数,右边偶数:1-40BCM:
编号侧重 CPU 寄存器,根据 BCM2835 的 GPIO 寄存器编号。wpi:
编号侧重实现逻辑,把扩展 GPIO 端口从 0 开始编号,这种编号方便编程,正如下图 WiringPi 一栏:python GPIO
先安装 python-dev,输入以下指令。
安装 RPi.GPIO,依次输入以下指令。
下载:$ wget http://raspberry-gpio-python.googlecode.com/files/RPi.GPIO-0.5.3a.tar.gz解压缩:$ tar xvzf RPi.GPIO-0.5.3a.tar.gz进入解压之后的目录 :$ cd RPi.GPIO-0.5.3a启动安装 :$ sudo python setup.py install例子:
执行:
说明:
GPIO.setmode(GPIO.BOARD),采用插座引脚编号方式。由于采用插座引脚编号方式,此处的 11 脚相当于 BCM2835 寄存器编号方式的引脚 11。WiringPi GPIO
说明
WiringPi 是应用于树莓派平台的 GPIO 控制库函数,WiringPi 遵守 GUN Lv3。wiringPi 使用 C 或者 C++ 开发并且可以被其他语言包转,例如 Python、ruby 或者 PHP 等。 wiringPi 包括一套 gpio 控制命令,使用 gpio 命令可以控制树莓派 GPIO 管脚。用户可以利用 gpio 命令通过 shell 脚本控制或查询 GPIO 管脚。wiringPi 是可以扩展的,可以利用 wiringPi 的内部模块扩展模拟量输入芯片,可以使用 MCP23x17/MCP23x08(I2C 或者 SPI)扩展 GPIO 接口。另外可通过树莓派上的串口和 Atmega(例如 arduino 等)扩展更多的 GPIO 功能。另外,用户可以自己编写扩展模块并把自定义的扩展模块集成到 wiringPi 中。WiringPi 支持模拟量的读取和设置功能,不过在树莓派上并没有模拟量设备。但是使用 WiringPi 中的软件模块却可以轻松地应用 AD 或 DA 芯片。
wiringPi 安装
方案 A——使用 GIT 工具,通过 GIT 获得 wiringPi 的源代码。测试
wiringPi 包括一套 gpio 命令,使用 gpio 命令可以控制树莓派上的各种接口,通过以下指令可以测试 wiringPi 是否安装成功。
即可出现上面的 io 图。
例子
[cpp] view plaincopy 在 CODE 上查看代码片派生到我的代码片
编译运行
在树莓派上:
在虚拟机中:
注意事项:
IO 的编号方式略有不同,采用 wiring 编码方式。-lwiringPi 表示动态加载 wiringPi 共享库。BCM2835 C Library
下载:$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.35.tar.gz解压缩:$tar xvzf bcm2835-1.35.tar.gz进入压缩之后的目录:$cd bcm2835-1.35配置:$./configure从源代码生成安装包:$make执行检查:$sudo make check安装 bcm2835 库:$sudo make install例子 [cpp] view plaincopy 在 CODE 上查看代码片派生到我的代码片树莓派 spi 液晶屏支持
树莓派支持 AV 及 HDMI 输出,但是对于非常小巧的开发板要再连接上硕大的显示器显然是既不美观的,在很多应用场合我们需要一些小型的液晶屏显示一些基内容,所以小屏驱动很是有必要的。
在 github 上有一个开源工程:notro/fbtft,完整地实现了 framebuffer 驱动,让类树莓派板卡完美支持各种SPI液晶屏,下面对移植过程进行说明。
比如下面这个视频是我把fbtft移植到我的Linux-Card上面运行XFCE桌面的效果:
官网地址
工程首页:https://github.com/notro
fbtft 源码:https://github.com/notro/fbtft
编译好的固件(基于 3.12.25+):https://github.com/notro/rpi-firmware
使用说明 (wiki):https://github.com/notro/fbtft/wiki
使用编译好的固件 (3.12.25+)
环境:树莓派
https://github.com/notro/rpi-firmware
打开 SPI
树莓派默认 spi 是关掉的,我们需要打开
把下面这句话前面的#号删掉
下载
以模块的形式编译进内核(需要手动或脚本加载模块)3.12.25+
sudo REPO_URI=https://github.com/notro/rpi-firmwarerpi-update直接编译进内核
sudo REPO_URI=https://github.com/notro/rpi-firmwareBRANCH=builtin rpi-update以模块的形式编译进内核
sudo REPO_URI=https://github.com/notro/rpi-firmwareBRANCH=latest rpi-update直接下载压缩包,手动安装
http://tronnes.org/downloads/2014-06-20-wheezy-raspbian-2014-07-25-fbtft-master-firmware.zip配置
手动加载模块
name 后面的名字,要跟相应的液晶驱动芯片移植,使用的液晶芯片为:fb_ra8875,所以这里写的是:er_tftm050_2。其它芯片请查阅:https://github.com/notro/fbtft/blob/master/fbtft_device.c 文件。正常会提示以下信息。
在 / dev / 目录下出现: /dev/fb1 设备
自动加载模块
加入以下语句,既可以在启动时自动加载模块。
使用
手动启动 x11 和控制台到新的液晶屏
X Windows 显示在 fb1 上:
Console 显示在 fb1 上:
自动登陆 x11
将 fb0 上的内容直接拷贝到 fb1 上, fb0 和 fb1 同步
https://github.com/notro/fbtft/wiki/Framebuffer-use#framebuffer-mirroring
启动:fbcp &
关闭 fbcp:killall fbcp启动时使用 fb1
加入以下语句:
启动:sudo startx,应该就可以看到屏幕上显示桌面了。
也可以安装下面的这个工具测试屏幕:
也欢迎关注我的B站账号,我的视频资源会在B站上进行分享。