新手上路,带你玩转树莓派——Raspberrypi2 ModuleB 评测
扫描二维码
随时随地手机看文章
树莓派2B是创客手里的神器,没玩过的都不好意思说自己是创客。这款开发板到底怎么样?一起来看。
1. 树莓派2B升级了什么
提到树莓派,大家都知道是什么东西,这里就不做背景介绍了,感兴趣的,可以参考树莓派官网介绍 https://www.raspberrypi.org/products/raspberry-pi-2-model-b/
这次拿到的是树莓派2B板子,主要升级了内存和CPU
下面是官方网站展示的2B的性能参数:
• A 900MHz quad-core ARM Cortex-A7 CPU
• 1GB RAM
• 4 USB ports
• 40 GPIO pins
• Full HDMI port
• Ethernet port
• Combined 3.5mm audio jack and composite video
• Camera interface (CSI)
• Display interface (DSI)
• Micro SD card slot
• VideoCore IV 3D graphics core
相比于前代的树莓派,2B采用TF卡,尺寸更小,也去掉了不常用的RCA接口(俗称AV接口),完全采用HDMI接口
这么改,最大的好处就是树莓派形状变得很整齐,不再像原来那样突起一部分
从处理器来说,将原来的高通BCM2835更新到了BCM2836,增大RAM到1G,估计你对这些也不太感冒,只要知道速度提高了6倍就好了
6倍,6倍,6倍,重要的事情说三遍
因为处理器架构从ARM7TMDI变成了4核A7,所以能跑标准的操作系统,比如安卓或者ubuntu或者win10
大致看了win10烧录内核的步骤,看到“首先你需要一台运行win10的笔记本”,看到这里就没继续看了,哪位有兴趣的可以根据微软IOT团队官方博客来实战
https://www.raspberrypi.org/blog/windows-10-for-iot/
https://dev.windows.com/zh-cn/iot
对了,树莓派2B支持DSI显示接口和CSI相机接口,从而可以直接高速视频输入和屏幕输出
这个有什么用呢?理论上来说,你可以拿树莓派做一个平板电脑,而理论终究是理论,就算真的做出来了估计体验也不会很好。
2. 无图无真相
一个图片胜千言,show me the images now
树莓派正面
树莓派反面
树莓派合照
树莓派大眼睛
那个神秘的大眼睛是什么???
红外夜视摄像头,准备拿来做opencv人脸识别和视频监控,更多信息暂时保密
树莓派2B的简单介绍到这里,接下来介绍烧录系统,更新内核,跑opencv做人脸识别以及教大家充分利用树莓派SD卡的容量。
3. 编译树莓派内核
拿到树莓派2B后,刚好手里有个360 Wi-Fi网卡(MT7601的芯片),就准备放树莓派2B上使用
插上去不识别,一搜才知道要重新编译内核,编译驱动什么的
原来没折腾过linux的编译,所以趁此机会,好好学习一下
期间查了网上很多资料,尝试,然后各种错误,最后还是官网资料英文资料最靠谱
STEP1 搭建ubuntu环境
这个比较简单,请参考网上教程,完成ubuntu基本环境的搭建
STEP2 搭建交叉编译环境
编译内核,可以在树莓派2B上进行,也可以在PC主机上进行编译,因为PC主机内存大,CPU性能高,所以一般都是在PC上进行
这里就引入了一个名词“交叉编译环境”
其实,刚听说交叉编译时,以为是多么高大上的技术,后来发现,就是在PC上安装工具,为CPU编译出可执行文件
我们一直以来用MDK,IAR开发STM32,AVR,也算是交叉编译了,,,哈哈
这里不做过多解释
树莓派2B官方为我们提供了对应的编译工具
官方推荐用git来下载,命令如下
但实际下载时,git的速度实在难以恭维,建议直接用浏览器去github页面点击”Down as zip”下载
特别注意:下载完成后,注意检查下载包是否完整,不然在编译时会出现一堆莫名其妙的错误
下载完成后,将tools解压到某一个目录(XXX)下,那么tools的可执行目录为
接下来,我们将这个路径添加到PATH环境变量中
这里有一个小插曲,因为我用的是普通用户,添加路径到.bashrc文件中后,编译源码的时候,提示没有系统权限,所以又加了sudo来提升权限
但是仍然编译出错,提示找不到gcc和ld工具,找了半天原因,发现
1)下载的tools压缩包不完整,丢失了一些文件,所以重新下载了tools
2)普通用户的.bashrc和超级用户的.bashrc不在同一个目录,即便是把PATH添加到/etc/profile中也不能,仍然会提示超级用户找不到gcc之类的错误
解决方法就是先通过sudo su来切换为超级用户,然后把PATH添加到root的.bashrc文件中
添加方法如下
1. 打开root/.bashrc
2. 在最后一行,添加export PATH=$PATH:XXX/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
添加完成后,注销超级用户,然后重新切换为超级用户,在shell下输入arm-linux-gnueabihf-gcc -v来验证PATH变量是否生效[!--empirenews.page--]
STEP3 下载内核源码
到git上下载源码
还是那句话,git速度太慢,建议网页直接下载,但注意检查文件完整性
事后证明,很多错误,都是因为下载的源代码不完整导致的
下载后,随意放一个目录下,将目录名改为linux
STEP4 编译内核
进入linux目录,输入下面的命令
树莓派1代
树莓派2代
然后就是漫长的编译时间,在mac下,大概编译了一个小时左右
如果你电脑是多核的,可以在make 命令中增加-jn进行多线程编译
原则上,n是你处理器个数多1.5倍,比如我是4核电脑,就可以-j6
编译完成后的安装过程,请参考INSTALL DIRECTLY ONTO THE SD
CARD
最后,当我编译完成后,突然发现树莓派4.1.y内核已经默认支持了我的360wifi 2代,所以就没有继续编译网卡驱动了
^_^
4. 安装opencv
一直对opencv比较好奇,所以就尝试着在树莓派2B上面编译安装了opencv,参考了网上不少资料,各种折腾,最终搞定
最大的体会是要有耐心,装opencv折腾了2天多,下文主要记录安装步骤和注意事项
树莓派系统4.1.7
开始折腾
首先参考了这个 http://www.pyimagesearch.com/2015/02/23/install-opencv-and-python-on-your-raspberry-pi-2-and-b/
文章,老外讲如何在树莓派上面利用opencv操纵CSI接口的摄像头,他用的是2.7版本的python和2.4版本的opencv,刚开始进行很顺利
到第二步的时候,找不到libjpeg8-dev libtiff4-dev这两个源,提示可以用libjpeg-dev libtiff5-dev来替换,替换就替换吧,以为没事儿呢,结果到最后编译时,提示找不到libtiff4-dev的库文件,编译失败,,,,,
又卸载了各种安装包,参考官网教程安装了oepncv3.0和相关的库,这里就不贴步骤了,请参考http://docs.opencv.org/3.0-last-rst/doc/tutorials/introduction/linux_install/linux_install.html
注意一点,在下面步骤之后
下载的两个目录文件,要合并到同一个目录中,比如source目录,然后在source同级目录下建立build目录,然后按照官方的编译步骤,一步步来进行
这些步骤耗时比较长,可以通过PC用迅雷下载好,然后scp拷贝到树莓派中,进行编译
消耗的大致时间,请参考资料1中的耗时,还是比较准确的
编译完成后,install进行安装
然后通过编译读取图片的例子,参考C语言版本的 http://blog.csdn.net/moc062066/article/details/6312216
编译完成后,记得terminal ssh
无法执行这个文件或者执行后看不到窗口,需要进入桌面环境来打开,如果你直接有一个显示器,那就可以直接运行,显示出来图片
没有的话,可以用VNC来远程显示桌面,不过记得要用realvnc的viewer和server,网上流行的tightvncserver会导致显示时出现RAND错误
当你按照步骤,执行完,opencv环境就搭建完毕
5. 充分使用树莓派SD卡容量
在编译opencv的时候,出现内存不够的情况,/root使用率100%,导致编译错误,所以需要拓展SD卡容量
google了一下,发现树莓派在默认情况下,仅仅使用了SD卡的4G容量,剩下的空间,属于空白分区,完全没有利用起来
所以,我们可以通过df命令,来调整linux分区的size
操作步骤
1. 重新树莓派,进入命令行页面
2. 登陆树莓派,用户名pi,密码raspberry
3. sudo su
切换至超级用户
4. df -h
显示出当前分区的状态和使用率
5. 输入fdisk /dev/mmcblk0 加载SD卡
6. p[!--empirenews.page--]打印当前分区
你应该会看到三个分区(mmcblk0, mmcblk0p1, mmcblk0p2),现在把分区2的信息写下来(/dev/mmcblk0p2)
我主要记录了开始扇区(122880)和结束扇区(8447999)的数值
7. 按d开始删除分区
8. 系统提示输入删除分区号,输入2
9. 按n新建分区,然后依次输入p, 2
10. 接下来输入原来记录的2扇区开始号(122880),记得替换成你自己的数字
11. 按w保持配置
12. 输入reboot重启树莓派
13. 输入sudo resize2fs /dev/mmcblk0p2 更新系统
14. 输入df -h看看,是不是已经完全使用了剩余空间
6. something about BCM2709 and BCM2836
玩树莓派和编译内核的时候,经常发现树莓派官方和内核开发者对CPU的称呼有两种
· BCM2708/BCM2709
· BCM2835/BCM2836
内核开发者喜欢称之为BCM2708/9,而树莓派和博通则喜欢称为BCM2835/6
google了很多资料,发现
· BCM2708/9 属于处理器的家族
· BCM2835/6 属于处理的具体型号
git内核开发有相关讨论
摘录部分如下
网上的更进一步讨论,请访问why-is-the-cpu-sometimes-referred-to-as-bcm2708-sometimes-bcm2835
另外,从wiki得知,博通联合树莓派已经完全开放BCM2835这颗CPU的资料,所以网上说的没有资料的情况,可以忽略
https://en.wikipedia.org/wiki/VideoCore#Table_of_SoCs_adopting_VideoCore_SIP_blocks
树莓派BCM2835/6资料链接
1. https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2835/README.md
2. https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2836/README.md
对于博通BCM设计架构,他是将GPU作为MCU来使用,在启动时,加载bootloader,初始化RAM,外设等,然后启动ARM内核,开始全速运行状态
这样设计的好处是,ARM11或者ARM-A内核,完全作为运算核心;GPU处理视频和外设,系统可以无缝升级CPU,而对外设部分影响很小
就像这次的BCM升级到BCM2836,外设驱动,仅仅需要修改一下GPIO和DMA的偏移量,现有驱动代码,可以继续使用
安装系统后,可以输入 sudo cat /proc/cpuinfo 可以查看当前CPU的信息
输入sudo cat /proc/iomem,可以查看当前IO映射的信息,也就是GPU内部的信息。(代码此处略,可参见http://cedar-renjun.github.io/2015/10/20/something-about-BCM2709-and-BCM2836/)
7. 树莓派性能体验
试用了一个星期,最大的体验是树莓派2B性能有显著提高,6X绝对不是夸大
主要体现在
- • 编译opencv的时候,速度有很大提升
- • 播放1080P的高清视频,硬解码,CPU占用率在2%左右,可以忽略不计
前几代树莓派产品,据说跑视觉算法的时候,总是卡顿,树莓派2B在这方面有极大的提升,适合做视觉和图像处理相关的任务
8. 体验步骤
因为我手头没有HDMI-VGA转接线,所以就用了VNC远程桌面来玩树莓派了,大致步骤包括
- 1. 安装串口工具
- 2. 连接树莓派串口,通过串口控制树莓派
- 3. 连接无线网卡(360Wi-Fi),配置开机自动上网
- 4. 通过SSH连接树莓派
- 5. 如果你有屏幕和HDMI接口线,请连接树莓派;如果没有,则用realvnc在笔记本上显示远程桌面
- 6. 编译源码,安装opencv
- 7. 编写opencv测试程序
- 8. 使用500W摄像头进行动作捕捉(进行中)
注意事项:
- 1. 树莓派2B的IO变为40Pin,但前26pin仍然兼容原来的树莓派,详细的GPIO列表,请参考http://www.element14.com/community/docs/DOC-73950/l/raspberry-pi-2-model-b-gpio-40-pin-block-pinout
- 2. 最近的树莓派内核(4.0以上),直接支持360Wi-Fi 2代(MT7601芯片),所以不需要进行重新编译内核和驱动;网上很多教程都是以3.x版本的内核为案例来讲述编译Wi-Fi网卡驱动和内核,请有取舍的参考
- 3. SSH连接,mac下可以直接用terminal,windows下可以用secure CRT
- 4. 在编译opencv的时候,使用树莓派来wget或者git下载源码,可能会很慢;建议用PC机下载,然后通过scp命令来复制到树莓派主机上,实测Wi-Fi数据速率可以达到6M/S
- 5. 编译opencv时,请参考opencv的官网3.0版本编译安装指南,网上教程很多是以opencv 2.4版本来介绍,因为新内核不在支持libtif4版本的库,所以会导致后面编译失败,,,切记,切记,我因为这个点,折腾了两天时间[!--empirenews.page--]
- 6. 安装VNC远程桌面时,请尽量使用realvnc server和viewer,网上很多人用tightvnc server,实际测试中,这个VNC会导致显示UI界面时,出现RANDER错误
- 7. 在编译opencv时,会因为内存不够导致编译错误,显示4G内存完全用完,无法继续编译;解决方案就是重新调整linux扇区,来完全使用SD卡的8G内存,详情请参考http://cedar-renjun.github.io/2015/10/11/resize-raspberry-sd-volume/
- 8. 播放1080P视频时,请使用omxplayer,这个播放器专门优化过,CPU占用率非常低,可以忽略不计,,,性能突出
最后
总体而言,树莓派2B的性能,有了显著的提升,可以跑各种操作系统,跑视觉和图像处理,值得购买。
相关资料链接:
官方树莓派Lunix资料:https://www.raspberrypi.org/documentation/linux/
官方内核编译:https://www.raspberrypi.org/documentation/linux/kernel/building.md
官方无线连接:https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
http://ray.dotnetage.com/posts/2015-5-15/rpi-resize-sd/
http://m.blog.csdn.net/blog/lichao_ustc/46740443
http://www.computerhope.com/unix/udf.htm
http://www.cnblogs.com/peida/archive/2012/12/07/2806483.html
install-opencv-and-python-on-your-raspberry-pi-2-and-b
opencv官网:http://opencv.org/
官方编译指导:http://docs.opencv.org/3.0-last-rst/doc/tutorials/introduction/linux_install/linux_install.html
Opencv例程显示图片:http://docs.opencv.org/2.4/doc/tutorials/introduction/display_image/display_image.html
——————本文为21ic原创,未经许可不得转载——————