邂逅SoC——在de1-soc开发板搭建Ubuntu图形操作系统
Posted 相相相同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了邂逅SoC——在de1-soc开发板搭建Ubuntu图形操作系统相关的知识,希望对你有一定的参考价值。
例程:用SimpleCV实现人脸捕获
本例程在DE1-SoC开发板上运行Ubuntu桌面操作系统并安装SimpleCV,通过编写简单的python代码,找到并圈出图像中含人脸特征的位置。
小序:
上周拿到了de1-soc的板子,跟着一篇用simplecv实现人脸捕获的帖子跑了一遍例程。然而帖子年代已久,按他的步骤走,已经有一些地方会出小问题。照着他的思路,我断断续续调了半个星期,终于呈现出结果。
在这里我把步骤详细地罗列出来,希望能对同样刚刚接触这块板子地新手有些帮助,同时给自己一个总结的机会。
废话少说,正文如下:
使用工具:
PuTTY
pscp
win32diskImager
一、准备工作
1. 下载ubuntu 16.04镜像
原帖使用的是3.12Linux kernel的ubuntu镜像。我把这个镜像烧到sd卡开机,在putty上无法正常显示。所以我选择了新的4.5kernel的ubuntu镜像。
http://download.terasic.com/downloads/cd-rom/de1-soc/linux_BSP/de1soc_ubuntu_1604.zip
2. 向SD卡写入Ubuntu操作系统
打开win32diskImager,选择镜像和设备后,点击写入,等待烧写完成。
例程过程中可能会遇到意料之外的问题,如果无法配置会原来的状态,这时需要重新对SD卡烧写。win+R运行diskpart工具,先用disk list指令找到sd卡(例如编号是disk 1),用select disk 1指令选中,再用clean指令清空sd卡。打开设备管理器-->磁盘管理,选中sd卡,右键重新分区(使用FAT32格式)。完成后即可用win32diskImager工具重新烧写。
3. 下载安装usb-串口驱动
http://www.usb-drivers.org/wp-content/uploads/2014/12/CDM-2.08.28-WHQL-Certified1.zip
打开资源管理器找到COM端口号,在putty中选择此对应端口,连接方式选择Serial并设置速率为115200,点击保存。我们使用type A to Mini-B usb数据线和PuTTY.exe进行PC和开发板的通信,具体步骤在后面会详细阐述。
4. 开机准备。
确保开发板在断电的状态下,插入SD卡。
查阅用户手册,我们得知:从sd卡启动linux系统时,启动开关0至4位拨至00000
接入type A to Mini-B usb数据线,打开putty.exe,选中之前配置好的参数,点击open,观察到putty窗口打开。这时候窗口没有内容,下一步我们准备上电开机。
二、进入Ubuntu操作系统并登陆远程桌面
1. 开发板上电,观察到系统开始启动
2. 提示登陆。使用默认的用户名和密码
用户名:root
密码:terasic
3. 进入图形界面
由于我身边没有VGA接口的显示器,这里我们用远程桌面登陆。
我们在ubuntu中安装xrdp,并使用windows自带的远程桌面连接。
首先输入指令,更新列表
apt-get update
更新完成。输入以下指令,安装xrdp
apt-get install xrdp
进入xrdp登陆界面,输入用户名root和密码terasic登陆
可以看到成功进入了Ubuntu系统桌面
关闭远程桌面连接。接下来我们开始搭建python开发环境。
三、安装SimpleCV,运行人脸捕获例程
1. 输入指令,等待下载和安装,可能需要20-30分钟
安装python支持包,这些程序具体每个有什么用,可以自己去了解,这里就不再赘述。
apt-get install python-opencv python-scipy python-numpy python-pip python-pygame ipython
2. 本地下载SimpleCV安装包
原帖用pip指令从github下载。大概是墙的原因,下载速度只有20k/s左右,而且在下载即将结束时大概率报错。
在最初进行到这里的时候我不知道是因为这个问题,而是纠结于修改source.list, dns和配置静态IP,所以走了很多弯路。
最后用梯子满带宽把.zip包下到PC机,再上传给开发板安装,完美解决问题。
https://github.com/ingenuitas/SimpleCV/zipball/master
3. 将本地的simplecv安装包上传给开发板。
这一步首先是修改sshd_config文件,否则用root用户进行上传时,会报错access denied。
在putty中输入指令,打开配置文件
vi /etc/ssh/sshd_config
找到# Authentication:这段
将PermitRootLogin without passwd改为PermitRootLogin yes,保存并退出。输入指令reboot重启系统,以使更改生效。
4. PC机向开发板上传文件。
5. 安装SimpleCV
传输完成后,返回putty可以看到simplecv已被上传到/root目录下
输入指令开始安装
pip install --cacahe-dir . 文件名
6. 安装完成,创建文件命名为lena.py,写入代码如下:
from SimpleCV import Image
lena_img = Image("lena.jpg")
faces = lena_img.findHaarFeatures('face')
if faces:
for face in faces:
print "Face at:" +str(face.coordinates())
face.draw()
else:
print "No faces detected."
lena_img.save("lena_face.jpg")
lena_img.show()
input(“Press Enter:”)
准备有清晰人脸图像的.jpg格式图片文件,把.py文件和.jpg图片从PC机上传至Ubuntu。
7. 登陆远程桌面,ctrl+alt+t打开终端
在lena.py和lena.jpg的目录下,输入命令
python lena.py
观察到结果如下:
小结:
上次用linux还是在大二用vcs、verdi跑verilog的时候。这次跑这个例程,时间基本上都花在捣鼓linux上了。
我用pip install simplecv装SimpleCV的正式版,结果卡在原帖子给的代码faces = lena_img.findHaarFeatures('face')上,好像是因为.findHaarFeatures()这里不被支持。而帖子给出的simplecv版本可以完美运行。
使用指令pip install https://github.com/ingenuitas/SimpleCV/zipball/master从GitHub下载时,只有20k/s的速度,而且极大几率在下载即将结束时报错。我用梯子把.zip下载到pc,上传到开发板安装,解决问题。
整个例程并没有用到FPGA相关的东西。在用DE1-SoC跑之前,我先在虚拟机里把例程跑通了一遍。相比之下,这块板子的ARM Cortex-A9要逊色很多。当然只跑linux不应是这块板子该做的事情,在接下来的学习中,将尝试带HPS的例程,并希望能有所收获。
最后补充点感想。断断续续学了Verilog一年半,在面对大型项目时深感无力。私以为,完全用verilog跑深度学习、卷积神经网络这些简直是妄想,而使用如CPU+FPGA+DSP类似的结构才是正道。
这块DE1-SoC开发板潜力巨大。这次虽然跟着跑完了这个例程,但深感如此仅仅是SoC的九牛一毛。未来类似CPU+FPGA+DSP这样的结构或许将成为主流,操作系统中,程序令控制变得简单,而fpga负责底层接口的配置和海量数据运算。
过去写底层Verilog把头低得太久,是时候抬起头看看了。
>>随心情更新 爱看不看<<
http://bbs.eeworld.com.cn/thread-461859-1-1.html
友晶给出的官方英文资料,包括一些说明文档和例程
http://www.terasic.com.cn/cgi-bin/page/archive.pl?Language=China&CategoryNo=182&No=870&PartNo=4
以上是关于邂逅SoC——在de1-soc开发板搭建Ubuntu图形操作系统的主要内容,如果未能解决你的问题,请参考以下文章
SOC-training image镜像内核文件(DE1-soc软件实验”hello_word")