<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/css" href="css/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>CSK.Blog - Hacks</title><link>http://www.csksoft.net/blog/</link><description>Make something different. - </description><generator>RainbowSoft Studio Z-Blog 1.7 Laputa Build 70216</generator><language>zh-CN</language><copyright>Copyright Shikai Chen 2000-2012.</copyright><pubDate>Tue, 05 May 2026 02:10:22 +0800</pubDate><item><title>Intel Galileo 开发板的体验、分析和应用</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/304.html</link><pubDate>Fri, 25 Apr 2014 19:15:33 +0800</pubDate><guid>http://www.csksoft.net/blog/post/304.html</guid><description><![CDATA[<div class="quote"><strong>请点击文章标题阅读全文</strong><br />本文最早发表于ifanr：http://www.ifanr.com/388835
<div>转载请保留作者信息和原始出处：CSK.Blog</div>
</div>

<div>
<h1 class="std_h1">1. 前言</h1>
</div>
<div>在今年(2013)罗马举办的首届欧洲 Make Faire 上,Intel 向对外发布了采用 x86 构架的 Arduino 开发板:Intel Galileo。这无疑是一个开源硬件领域的重磅消息。作为 CPU 领域的巨头 Intel, 为开源硬件/Maker 领域这个从前相对小众的圈子推出专门的硬件,无疑说明对开源硬件领 域发展的重视程度。同时,Intel 也作为本届欧洲 Maker Faire 的主要赞助商。</div>
<div style="text-align: center; "><img src="/data/pic/intel_galileo_hacks/001.jpg" alt="" /><br />
</div>
<div style="text-align: center; ">图:Intel Galileo 开发板,图片来自 intel.com</div>
<div>在 PC 行业,Intel x86 构架的强大性能一直被行业称道,自然这次推出的 Arduino 开发板,也 给业界带来了无限的遐想。我相信很多人都会略带调侃问:这个开发板能不能运行 Windows 这样的问题。同时,相信也有不少人会关心 Intel Galileo 的功耗问题,以及开发使用上是否具有难度。</div>
<div>作为曾在 Intel 工作过的作者,对老东家能够推出针对开源硬件市场的产品感到欣慰。通过 朋友,我也有幸在较早时间拿到了一块 Intel Galileo。经过了一段时间的使用和体验,这里 我就将我们对 Intel Galileo 的一些使用体验向大家分享。并且作为开源硬件和机器人开发的 从业人员,聊聊 Intel Galileo 到底可以给我们带来哪些想象空间? 这里也先针对那个调侃问题做个回应:<strong>是的,通过软件的调整,Intel Galileo 的确可以运行 Windows:)</strong></div>
<div style="text-align: center; "><img src="/data/pic/intel_galileo_hacks/002.jpg" alt="" /><br />
</div>
<div style="text-align: center;">图:使用 RoboPeak 微型 USB 显示屏,给 Galileo 增加显示屏变成标准 PC</div>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/304.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=304</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=304&amp;key=94bbe0eb</trackback:ping></item><item><title>Oculus Rift 虚拟现实眼镜的介绍、体验和应用畅想</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/oculus.rift.eval_3155.html</link><pubDate>Sun, 30 Jun 2013 08:45:06 +0800</pubDate><guid>http://www.csksoft.net/blog/post/oculus.rift.eval_3155.html</guid><description><![CDATA[<div class="quote">本文最早发布于ifanr，当时地址为：<a href="http://www.ifanr.com/288886" >http://www.ifanr.com/288886</a>
<div>先转回我自己的Blog</div>
</div>
<div><strong>内容提要，请点击文章标题浏览全文</strong></div>
<div>
<h1 class="std_h1">1.<span class="Apple-tab-span" style="white-space:pre">	</span>简介</h1>
</div>
<div>去年8月的时候，我经好友介绍，了解到了当时正在Kickstarter网站上募资的Oculus Rift虚拟现实眼镜项目(后文简称Rift)。虽然那个时候Kickstarter上的项目页面中并没看到Oculus Rift眼镜的实物，不过看过五分钟不到的演示视频的后，我便迫不及待的想预定一台了。</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/001.png" ><br>
</div>
<div>
<div style="text-align: center;">图: Oculus Rift在Kickstarter上的募资页面</div>
<div><br>
</div>
<div>...</div></div><div>
</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/005.png" ><br>
</div>
<div>
<div style="text-align: center; ">图：Oculus Rift宣传视频中宣称的110度视角</div>
<div><br>
</div>
<div>经过了半年多的等待，Oculus团队不负众望陆续将Rift开发套件送到了全球各地的赞助者手上。我也在今年4月底收到了等候多时的Rift。</div>
<div><br>
</div>
<div>那么Rift到底用起来感觉如何？接下来我将向大家分享我的使用体验。并且由于我本身对电子制作和机器人有浓厚兴趣，因此本文也将花一定篇幅探讨Rift背后的技术实现以及针对他进行扩展应用。</div>
</div>
<div>
<div>
<h1 class="std_h1">2.<span class="Apple-tab-span" style="white-space:pre">	</span>开箱照</h1>
</div>
<div>我的Rift是从香港寄来的，快递使用的是EMS。打开纸箱后就会看到Rift定制的黑色箱子，感觉很专业：</div>
</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/006.png" ><br>
</div>
<div></div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/010.png" ><br>
</div>
<div>
<div>做工上我认为只能算中上水平，不过要知道对于一个之前没有涉足硬件制造的团队来说，半年内生产出上万的批量合格产品绝非易事。</div>
<div>在早先的Oculus进度通报邮件中提及，目前所有的开发者套件均由深圳的工厂负责代工。</div>
<div>
<h1 class="std_h1">3.<span class="Apple-tab-span" style="white-space:pre">	</span>使用过程和体验</h1>
</div>
<div>
<h2 class="std_h2">...<br>
</h2>
</div>
</div>
<div>如果将Rift眼镜上的透镜拆掉，就可以看到藏在眼镜底部的LCD显示器。它只是简单的复制了电脑显示器的画面而已。</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/018.png" ><br></div>
<div>...</div><div>
</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/021.png" ><br></div>
<div>很容易猜到这两幅画面其实分别对应了Rift中左右眼应该看到的部分。而之所以扭曲，这便是Rift能实现110度视角的奥秘所在：采用凸透镜将画面放大。</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/022.png" ><br></div>
<div>
<div style="text-align: center; ">图：利用凸透镜将原先长度为x的画面放大至x’</div>
<div style="text-align: center; ">来源：Oculus SDK文档</div>
</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/023.png" ><br></div>
<div>
<div style="text-align: center; ">图: Rift在LCD屏幕前安装了凸透镜，用于扩大视角</div>
<div><br>
</div>
<div>由于凸透镜在放大画面的同时会产生扭曲，因此就需要先将PC的原始输出画面做扭曲的处理，就可以抵消扩大视角范围造成的画面扭曲。</div>
<div><br>
</div>
<div>为了给大家直观的感受，这里将Rift左右眼位置的凸透镜拆除，可以看到背后的LCD显示的对应画面：</div>
</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/024.png" ><br></div>
<div>
<div>虽然这样远距离看上去画面很清晰，但是如果不安装凸透镜，直接将rift带上，双眼就会看到模糊一片的景象，并且也会感觉画面很小。</div>
<div><br>
</div>
<div>那么带上Rift看到的画面是怎样的呢？这里我将相机仿造人肉眼那样直接贴紧Rift拍摄，此时的画面就和亲身的体验很接近。不过亲身的体验是全三维的，很有现场感。这种感觉靠本文难以带给读者。</div>
</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/025.png" ><br></div>
<div style="text-align: center; ">图：相机尚未完全紧贴Rift时的效果，此时基本可以看到画面。</div>
<div style="text-align: center; "><img src="http://www.csksoft.net/data/pic/oculusrift/026.png" ><br></div>
<div>
<div><strong>...</strong></div></div><div>
<div><br>
</div>
<div>
<h2 class="std_h2">视角切换体验</h2>
</div>
<div>作为虚拟现实眼镜另一个很重要的指标就是在人扭头，视角切换时候，所看到画面随着切换的响应速度了。如果传感器或者软件处理的较慢，则会感受到所看到的画面有所滞后。从而产生不真实感，更是会令人晕眩。</div>
<div><br>
</div>
<div>对此Oculus Rift在宣传中申明采用了1000hz刷新率的惯性导航定位算法，可以实现很低的滞后率。</div>
<div><br>
</div>
<div>从我的感受看，前文提到的官方演示程序的确表现很出色。读者不妨先看这段视频感受一下。</div>
</div>
<div>
<div style="text-align: center; "><embed src="http://www.tudou.com/v/jXqE-Fv7z1I/&rpid=70789997&resourceId=70789997_05_05_99&bid=05/v.swf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="480" height="400"></embed>
</div>
<div>
<h2 class="std_h2">佩戴舒适度与晕眩感</h2>
</div>
<div>...</div></div><div>
<div><br>
</div>
<div>
<h2 class="std_h2">支持Rift的应用和游戏</h2>
</div>
<div>...</div></div><div>
<div><br>
</div>
<div>
<h1 class="std_h1">4.<span class="Apple-tab-span" style="white-space:pre">	</span>内部构造和简要分析</h1>
</div>
<div>...</div></div><div>
<div>
<h2 class="std_h2">实现移动感知的探讨</h2>
</div>
<div></div>
<div>下图为我团队所开发的0-6米全向<a href="http://www.robopeak.net/blog/?p=267" >激光测距雷达系统</a>。他可以实时的扫描环境四周（360度）的物体相对于自身的距离，并且可以提供毫米级别的定位精度。用它来结合Rift进行虚拟现实世界中人物移动的判断，当属不错的选择。</div>
</div>
<div style="text-align: center;"><img src="http://www.csksoft.net/data/pic/oculusrift/050_1.png" ><br></div>
<div>
<div style="text-align: center; ">图：使用激光雷达进行Rift使用者的跟踪</div>
<div><br>
</div>

<div>
<h2 class="std_h2">应用的展望</h2>
</div>
<div>
...
</div>
<div style="text-align: center;"><img src="http://www.csksoft.net/data/pic/oculusrift/051.png" ><br></div>
<div style="text-align: center; ">图：Rift代表的虚拟现实技术与机器人技术的融合</div>
</div>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/oculus.rift.eval_3155.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=301</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=301&amp;key=18527570</trackback:ping></item><item><title>基于MK802、Arduino和OpenCV库的互动开发</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/mk802_dev_demos.html</link><pubDate>Mon, 26 Nov 2012 23:20:01 +0800</pubDate><guid>http://www.csksoft.net/blog/post/mk802_dev_demos.html</guid><description><![CDATA[<div class="quote">
<p align="left">这是一个文章系列的一部分，介绍基于MK802这类MiniPC的扩展开发，并展示他在计算机视觉、机器人控制方面的潜能</p>
<p>欢迎转载，但请保留原始作者信息(Shikai Chen, <a href="http://www.csksoft.net/">http://www.csksoft.net</a>)，以及指向本文原始出处的链接！</p>
<p>访问目录：基于MK802 MiniPC的扩展开发应用-简介篇(<a href="http://www.csksoft.net/blog/post/mk802_dev_intro.html">http://www.csksoft.net/blog/post/mk802_dev_intro.html</a>)</p>
<p>&nbsp;</p>
<p>revision: 0</p>
</div>
<p>这是本系列文章的最后一篇了。本文将以如下几个基于MK802的应用实例进行介绍，向大家展示MK802在机器人控制以及计算机视觉方面的应用潜力。<br />
1.&nbsp;基于MK802的摄像头自动光源跟踪<br />
2.&nbsp;基于MK802的人脸摄像机云台跟踪<br />
3.&nbsp;MK802将路由器网络通讯情况显示与VFD屏幕<br />
这些是例子基于了我前5篇文章[1][2][3][4][5]所介绍的各类技巧和环境所形成的，这里我就假设大家已经阅读过先前的文章了，这里将以介绍思路和原理的方式来介绍这些实例。如果想进一步了解他们的实现，可以在本系列文章在github开设的项目中查看他们的源代码，在前一篇文章[5]中我也介绍了如何编译他们的。<br />
</p>
<h2 class="std_h2">Demo applications run on MK802 MiniPC to show MK802 potential in OpenCV and arduino related areas<br />
</h2>
<div class="quote"><a href="https://github.com/cheaven/mk802_demo">https://github.com/cheaven/mk802_demo</a><a href="https://github.com/cheaven/mk802_demo"></a></div>
<p>另外之前也有一些朋友表示这些实例使用的算法并不高级，性能也不佳。这里我就做一个统一的回应，本系列文章介绍的这些实例的目的并不是去实现这些功能本身，这些实例目前的确存在更好地实现。我制作这些实例的目的是为了向大家介绍MK802用于机器人控制和计算机视觉算法处理方面的强大潜能，因此我都尽可能使用了被大家熟知或者存在于OpenCV例子当中的程序作为范本。至于如何将这些例子进行改进扩充，就是靠大家发扬光大了:-)。</p>
<p>另外还有很多人会问这些例子能不能在树梅派、MK802的后续升级版本、XXXXX上面实现？这里我再次重复前几篇文章的说明，这里介绍的一切方法和思路对所有基于Linux的系统有效。当然，如果只是简单的复制这里的步骤，那恐怕只能用于MK802了。</p>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/eMv3zLORfDw/&amp;rpid=70789997&amp;resourceId=70789997_05_05_99&amp;bid=05/v.swf" quality="1" menu="menu" loop="loop" scale="ShowAll" allowscriptaccess="always" allowfullscreen="true" wmode="opaque"></embed></p>
<p align="center"><img alt="" src="/data/pic/mk802dev/demos/001_sm.jpg" /></p>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/wvnv7vbJnGU/&amp;rpid=70789997&amp;resourceId=70789997_05_05_99&amp;bid=05/v.swf" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" scale="ShowAll" loop="loop" menu="menu" quality="1"></embed></p>
<p align="center"><img alt="" src="/data/pic/mk802dev/demos/006_sm.jpg" /></p>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/oubxw-PhL7s/&amp;rpid=70789997&amp;resourceId=70789997_05_05_99&amp;bid=05/v.swf" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" scale="ShowAll" loop="loop" menu="menu" quality="1"></embed></p>
<p align="center"><img alt="" src="/data/pic/mk802dev/demos/010_sm.jpg" /></p>
<p><strong>点击文章标题浏览正文</strong></p>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/mk802_dev_demos.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=297</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=297&amp;key=cfc2fe5b</trackback:ping></item><item><title>在MK802上结合OpenCV库进行计算机视觉处理</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/mk802_dev_opencv.html</link><pubDate>Mon, 26 Nov 2012 22:00:29 +0800</pubDate><guid>http://www.csksoft.net/blog/post/mk802_dev_opencv.html</guid><description><![CDATA[<div class="quote">
<p align="left">这是一个文章系列的一部分，介绍基于MK802这类MiniPC的扩展开发，并展示他在计算机视觉、机器人控制方面的潜能</p>
<p>欢迎转载，但请保留原始作者信息(Shikai Chen, <a href="http://www.csksoft.net/">http://www.csksoft.net</a>)，以及指向本文原始出处的链接！</p>
<p>访问目录：基于MK802 MiniPC的扩展开发应用-简介篇(<a href="http://www.csksoft.net/blog/post/mk802_dev_intro.html">http://www.csksoft.net/blog/post/mk802_dev_intro.html</a>)</p>
<p>&nbsp;</p>
<p>revision: 0</p>
</div>
<p>这里将介绍MK802这类基于Cortrex A8/A9相对于Arduino这类单片机开发版、树梅派、以及PC对于爱好者来说最具有吸引力的优势所在：性能足够强大，可以运行OpenCV这类库的视觉算法，同时体积足够小，也相对于PC足够的省电。<br />
这篇文章正是介绍如何在MK802上使用OpenCV库并利用它进行计算视觉相关应用的开发的。在我实际使用的体验来看，OpenCV在MK802上运行的性能虽然相比PC还有一些差距，一些复杂的算法运行的较慢，但是大部分的算法都可以满足需求。并且如果进一步的优化后，相信可以有更多的性能提升。<br />
需要注意的是本文并不是OpenCV以及计算机视觉方面的教程，对于涉及到的一些视觉算法的知识以及OpenCV本身的背景知识，还需要读者自行学习。本文将着重关注如何在MK802这类MiniPC上使用OpenCV这个问题。</p>
<p align="center"><img alt="" src="/data/pic/mk802dev/opencv/005_sm.png" /></p>
<p align="center"><img alt="" src="/data/pic/mk802dev/opencv/013_sm.jpg" /></p>
<p align="center"><img alt="" src="/data/pic/mk802dev/opencv/017_sm.jpg" /></p>
<p><strong>点击文章标题浏览正文</strong></p>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/mk802_dev_opencv.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=296</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=296&amp;key=5bc8c98a</trackback:ping></item><item><title>MK802与外部硬件设备的通讯</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/mk802_dev_communication.html</link><pubDate>Mon, 26 Nov 2012 01:35:41 +0800</pubDate><guid>http://www.csksoft.net/blog/post/mk802_dev_communication.html</guid><description><![CDATA[<div class="quote">
<p align="left">这是一个文章系列的一部分，介绍基于MK802这类MiniPC的扩展开发，并展示他在计算机视觉、机器人控制方面的潜能</p>
<p>欢迎转载，但请保留原始作者信息(Shikai Chen, <a href="http://www.csksoft.net/">http://www.csksoft.net</a>)，以及指向本文原始出处的链接！</p>
<p>访问目录：基于MK802 MiniPC的扩展开发应用-简介篇(<a href="http://www.csksoft.net/blog/post/mk802_dev_intro.html">http://www.csksoft.net/blog/post/mk802_dev_intro.html</a>)</p>
<p>&nbsp;</p>
<p>revision: 2</p>
</div>
<p>通过了前几篇文章[1][2][3]的介绍，相信大家已经为MK802准备好了适合的自制系统也了解了应用开发的基本过程。从这篇文章开始我们将正式介绍本系列文章的最终目的：使用MK802与Arduino等外部硬件通讯，制作各类应用。<br />
这篇文章将介绍其中的一个重要步骤：如何实现MK802与外部硬件设备的通讯。这是后续进一步开发的必要环节。</p>
<p align="center"><img alt="" src="/data/pic/mk802dev/communication/001_sm.jpg" /></p>
<p align="center">图：利用MK802的2个usb口连接usb外设</p>
<p align="center"><br />
<img alt="" src="/data/pic/mk802dev/communication/006_sm.jpg" /></p>
<p align="center">图：直接将MK802和Arduino相连</p>
<p align="center"><img alt="" src="/data/pic/mk802dev/communication/011_sm.jpg" /></p>
<p align="center">图：在自制舵机云台上安装的USB摄像头（将在后续文章介绍）</p>
<p><strong>点击文章标题浏览全文</strong></p>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/mk802_dev_communication.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=295</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=295&amp;key=8ac09d04</trackback:ping></item><item><title>基于MK802的应用开发和相关的工具</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/mk802_dev_devtools.html</link><pubDate>Sun, 25 Nov 2012 07:12:54 +0800</pubDate><guid>http://www.csksoft.net/blog/post/mk802_dev_devtools.html</guid><description><![CDATA[<div class="quote">
<p align="left">这是一个文章系列的一部分，介绍基于MK802这类MiniPC的扩展开发，并展示他在计算机视觉、机器人控制方面的潜能</p>
<p>欢迎转载，但请保留原始作者信息(Shikai Chen, <a href="http://www.csksoft.net/">http://www.csksoft.net</a>)，以及指向本文原始出处的链接！</p>
<p>访问目录：基于MK802 MiniPC的扩展开发应用-简介篇(<a href="http://www.csksoft.net/blog/post/mk802_dev_intro.html">http://www.csksoft.net/blog/post/mk802_dev_intro.html</a>)</p>
<p>&nbsp;</p>
<p>revision: 1</p>
</div>
<p>&nbsp;</p>
<p>这里将介绍如何在MK802的Linux系统上进行程序开发和开发工程中会用到的一些工具和技巧。虽然文章是针对MK802这个MiniPC写的，但是由于采用了Linux系统，因此文章中介绍的内容其实都是标准Linux系统所支持的，因此自然可以在其他类型的MiniPC（如树梅派）上使用。</p>
<p><br />
</p>
<p>在之前的系列文章中我介绍了如何在MK802运行定制的传统Linux发行版。在此基础上，我们就可以使用标准Linux开发的技巧来为MK802开发程序。如果你很了解Linux的开发知识，不妨跳过本系列直接阅读后续的文章。</p>
<p><br />
</p>
<p>另外需要提醒大家的是本文并不打算写成一个系统的Linux开发教程，因此对于很多背景知识，还需要大家去学习相关的书籍。这里只是抛砖引玉式的通过一些例子让大家了解为MK802开发的大致过程。</p>
<p><strong>点击文章标题浏览全文</strong></p>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/mk802_dev_devtools.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=294</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=294&amp;key=6c0a8894</trackback:ping></item><item><title>基于MK802 MiniPC的扩展开发应用-软/硬件修改和扩展</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/mk802_dev_hacks.html</link><pubDate>Sat, 24 Nov 2012 10:03:20 +0800</pubDate><guid>http://www.csksoft.net/blog/post/mk802_dev_hacks.html</guid><description><![CDATA[<div class="quote">
<p>这是一个文章系列的一部分，介绍基于MK802这类MiniPC的扩展开发，并展示他在计算机视觉、机器人控制方面的潜能</p>
<p>欢迎转载，但请保留原始作者信息(Shikai Chen, <a href="http://www.csksoft.net/">http://www.csksoft.net</a>)，以及指向本文原始出处的链接！</p>
<p>访问目录：基于MK802 MiniPC的扩展开发应用-简介篇(<a href="http://www.csksoft.net/blog/post/mk802_dev_intro.html">http://www.csksoft.net/blog/post/mk802_dev_intro.html</a>)</p>
<p>&nbsp;</p>
<p>revision: 0</p>
</div>
<p>这部分将介绍各种针对MK802硬件以及软件的修改技巧，相对来说，这部分介绍的都属于各种杂碎的小技巧，文章构成上比较零碎，并且相对于整个系列文章其他部分独立。<br />
虽然这些都是各种小技巧，有些甚至属于雕虫小技，不过在必要的地方我也会通过问题本身做一些对linux kernel的进一步介绍。<br />
</p>
<h2 class="std_h2">在本文中将介绍的例子有：</h2>
<ol>
    <li><font color="#333333" face="Arial">引出MK802的内部调试串口信号，用于kernel的调试和开发</font> </li>
    <li><font color="#333333" face="Arial">通过fex脚本配置hdmi的输出分辨率至1080p和其他尺寸以及色彩深度</font> </li>
    <li><font color="#333333" face="Arial">在自制系统内利用MK802的内置Flash存储文件</font> </li>
    <li><font color="#333333" face="Arial">将CPU主频超频至1.1G，以及实现动态频率调节降低功耗<br />
    </font><font color="#333333" face="Arial"></font></li>
</ol>
<p><strong>点击文章标题浏览正文</strong></p>
]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/mk802_dev_hacks.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=293</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=293&amp;key=01980609</trackback:ping></item><item><title>基于MK802 MiniPC的扩展开发应用-系统自制</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/mk802_dev_sysbuild.html</link><pubDate>Wed, 21 Nov 2012 09:15:51 +0800</pubDate><guid>http://www.csksoft.net/blog/post/mk802_dev_sysbuild.html</guid><description><![CDATA[<div  class="quote">
<p>这是一个文章系列的一部分，介绍基于MK802这类MiniPC的扩展开发，并展示他在计算机视觉、机器人控制方面的潜能</p>
<p>欢迎转载，但请保留原始作者信息(Shikai Chen, <a href="http://www.csksoft.net/">http://www.csksoft.net</a>)以及指向本文原始出处的链接！</p>
<p>访问目录：基于MK802 MiniPC的扩展开发应用-简介篇(<a href="http://www.csksoft.net/blog/post/mk802_dev_intro.html">http://www.csksoft.net/blog/post/mk802_dev_intro.html</a>)</p>
</div>
<p>&nbsp;</p>
<p>为嵌入式设备定制系统是一个需要很多背景知识的技能。这里无法假设各位的背景知识结构，因此在文章组织上，我将默认拥有相关经验的直接操作过程写在最前面。随后是为新手提供的简单的背景介绍。最后的部分是对一些问题的深入探讨。对于一些超出本文范围的内容，我也给出了对应的参考文献，方便感兴趣的人进一步的研究。</p>
<h2 class="std_h2">为何需要系统自制？</h2>
<p><br />
MK802出厂内置的是Android 4.0 (ICS) 系统，虽然这个系统在芯片厂家和设备厂家的优化下具有最好的硬件兼容性，但是对于我们接下来所需要进行的二次开发来说，采用其他传统的Linux发行版将比较方便。</p>
<p>当然也有人会坚持继续采用Android，这点其实没有任何问题，但需要注意这个平台的一些不同之处。对此在本文的后半部分我将专门讨论这一问题，大家可以根据自身情况来做取舍。</p>
<p>所谓系统自制，其实就是让MK802运行由我们为他所定制的基于Linux Kernel的系统，在这个过程中我们将加入后面开发所需要的驱动/组件，删除无关的组件，并作必要的性能优化。从而构建出适合于进行扩展开发所需要的系统环境。</p>
<p>而这个过程将包含如下几个阶段：<br />
1.&nbsp;配置并编译Linux Kernel/uboot等核心<br />
2.&nbsp;Rootfs的选取和打包<br />
3.&nbsp;向MK802部署自制系统<br />
</p>
<h2 class="std_h2">MK802支持的系统部署模式</h2>
<p><br />
MK802，或者说采用Allwinner A10芯片的设备，支持从两种渠道启动系统：内部NAND Flash以及外部的SD卡。他的具体运作机制，可以参考[7]。这个方式很类似PC的多重启动：在启动过程中，如果发现SD卡中存在有可以用的系统时，则直接从SD卡引导系统。否则才会去加载内置的NAND flash中的系统。</p>
<p>这对我们来说是一个好消息，这样我们的自制系统可以直接保存在一张外部的SD卡上。一方面可以保证原生的Android系统不被破坏，另一方面也有利于对我们的自制系统进行备份。</p>
<p>当然，如果愿意，也是可以将自制系统写入内部的NAND flash。这部分的操作其实与保存在SD卡上类似，可以参考文献[10]。</p>
<p>本文将采用SD卡上系统的模式进行介绍。</p>
<p align="center"><br />
<img alt="" src="/data/pic/mk802dev/sysbuild/001.jpg" /></p>
<p align="center">图：可以将自制系统安装在SD卡上</p>
<h2 class="std_h2">会不会破坏设备？无法使用？变砖？<br />
</h2>
<p>在前文已经介绍了，如果将系统保存在SD卡上，则完全不会破坏MK802自带的Android系统。除此之外，Allwinner A10芯片设计上也有一个很好用的模式：支持USB固件下载[7]。如果内部的NAND flash上的系统被破坏，只要芯片本身没有损坏，则可以通过usb连接PC，通过官方提供的LiveSuite工具进行原始固件恢复[12]。因此即使是将自制系统部署在内部对NAND Flash上，也完全不必担心变砖。<br />
这里提供给大家三个方案供选择：<br />
<strong>1-&nbsp;完全定制自己的系统<br />
</strong>这是相对繁琐，最本质的操作过程，但有无可比拟的优势。</p>
<p><strong><a href="http://www.csksoft.net/blog/post/mk802_dev_sysbuild.html#method2">2-&nbsp;使用社区有的编译打包脚本</a></strong><br />
使用社区提供的编译脚本，简化第一种方案的流程。同时在必要的时候可以重新按照方案1的部分流程做更进一步的定制。不过这里还需要做一些额外的人手干预修改编译行为。</p>
<p><strong><a href="http://www.csksoft.net/blog/post/mk802_dev_sysbuild.html#method3">3-使用别人提供的系统镜像</a></strong></p>
<p>相对简单，但存在一些限制。具体采用哪个方案，大家可以看每个方案前的介绍自己衡量。</p>
<p><br />
&nbsp;</p>
<h2 class="std_h2">2012/11/22 updated:&nbsp;</h2>
<p>这里也直接发布出我制作的系统完整镜像，大家可以直接按照方案3的描述，直接将镜像写入自己的SD卡。该系统按照本文的描述进行配置，采用linaro 12.07 ubuntu armhf rootfs以及带有USB摄像头等必要驱动支持的linux kernel。</p>
<div class="quote">下载地址：<a href="http://www.4shared.com/archive/3Vqh1veX/mk802_linaro_initialimg.html">http://www.4shared.com/archive/3Vqh1veX/mk802_linaro_initialimg.html</a></div>
<p>可以直接使用命令：</p>
<div class="quote"><font face="Courier New">gunzip -c mk802_linaro_initial.img.gz | dd of=/dev/&lt;你的SD设备名&gt; bs=64k</font></div>
<p>将镜像写入SD卡，请确保SD卡容量&gt;=8Gb。具体细节，请阅读方案3</p>
<p>同时，为了方便大家，这里也给出我预先编译的Linux Kernel/Uboot包，他采用方案2描述的hardware pack形式系统，可以参考方案二了解细节。其中包含了对USB Camera、USB串口的支持。</p>
<p>下载地址：<a href="http://www.csksoft.net/data/mk802/mk802_hwpack_cskbuild.7z">http://www.csksoft.net/data/mk802/mk802_hwpack_cskbuild.7z</a></p>
<p><strong>点击文章标题浏览正文</strong></p>
]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/mk802_dev_sysbuild.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=291</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=291&amp;key=2551729e</trackback:ping></item><item><title>基于MK802 MiniPC的扩展开发应用-简介篇</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/mk802_dev_intro.html</link><pubDate>Wed, 21 Nov 2012 08:29:32 +0800</pubDate><guid>http://www.csksoft.net/blog/post/mk802_dev_intro.html</guid><description><![CDATA[<div class="quote">
<p>这将是一个文章系列的第一篇，介绍基于MK802这类MiniPC的扩展开发，并展示他在计算机视觉、机器人控制方面的潜能</p>
<p>欢迎转载，但请保留原始作者信息(Shikai Chen, <a href="http://www.csksoft.net">http://www.csksoft.net</a>)一直指向本文原始出处的链接！</p>
</div>
<p>为了增加大家兴趣，首先将相关的演示视频贴出。他们的细节将在后续文章中介绍。</p>
<h2 class="std_h2">基于MK802，结合Arduino控制的人脸自动追踪云台</h2>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/wvnv7vbJnGU/&amp;rpid=70789997&amp;resourceId=70789997_05_05_99&amp;bid=05/v.swf" quality="1" menu="menu" loop="loop" scale="ShowAll" allowscriptaccess="always" allowfullscreen="true" wmode="opaque"></embed></p>
<h2 class="std_h2">基于MK802和Arduino的光源追踪</h2>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/eMv3zLORfDw/&amp;rpid=70789997&amp;resourceId=70789997_05_05_99&amp;bid=05/v.swf" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" scale="ShowAll" loop="loop" menu="menu" quality="1"></embed></p>
<h2 class="std_h2">基于MK802的摄像头画面前景学习和提取</h2>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/OCmPiTiK_48/&amp;rpid=70789997&amp;resourceId=70789997_05_05_99&amp;bid=05/v.swf" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" scale="ShowAll" loop="loop" menu="menu" quality="1"></embed></p>
<h2 class="std_h2">基于MK802的网络带宽统计显示</h2>
<p align="center"><embed height="400" type="application/x-shockwave-flash" width="480" src="http://www.tudou.com/v/oubxw-PhL7s/&amp;rpid=70789997&amp;resourceId=70789997_05_05_99&amp;bid=05/v.swf" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" scale="ShowAll" loop="loop" menu="menu" quality="1"></embed></p>
<p>&nbsp;</p>
<h1 class="std_h1">&nbsp;简介</h1>
<p>自从以树梅派(raspberry-pi)为代表的低成本微型电脑问世以来，市面上陆续的就有各种基于Cortex-A8 ARM的Android微型主机出现。其中比较典型的就是MK802，他是国内厂家推出的一款大小与u盘类似的迷你电脑。</p>
<p align="center"><img alt="" src="/data/pic/mk802dev/intro/pic_001.jpg" /></p>
<p align="center">图：MK802 MiniPC</p>
<p>&nbsp;</p>
<p>虽然只有U盘大小，但是它具备了不错的配置： 1Ghz的cortex-A8 ARM处理器: Allwinner A10、最高达1Gb 的DDR3内存、2个usb 口可外接usb设备、内置WIFI网卡，并且使用HDMI接口可输出高达1080p画质的图像。使用的是Google Android 4.0的操作系统。</p>
<p>这样的配置已经和几年前的主流PC性能相仿，而且价格也不贵，一般几百块钱的成本即可买到。并且相比较树梅派来说性能也高出了一截（树梅派使用的是ARM11的处理器，主频仅为700Mhz）。</p>
<p>除了能够出色完成基本的上网、视频播放、游戏娱乐外，这样的配置允许这台U盘大小的机器运行许多以前只能在PC上进行的工作：比如基于OpenCV的计算机视觉运算、视频传输和处理、语言合成和识别、复杂的人工智能算法等等。并且爱好者也可以通过MK802上边的2个USB口以及WIFI与其他设备、传感器或者开发板进行交互，达到更多地功能。</p>
<p>因此它对于电子制作爱好者具有非常大的吸引力。很多方面MK802可以代替一台x86 PC，并且更小的体积/重量以及功耗使得这样的设备可以被航模、无人机、小型机器人这类对体积、重量、功耗非常敏感的设备所搭载，并且强大的运算能力足以胜任一些以前看似不可能再小型设备上进行的算法。</p>
<p><br />
不过厂家推出他的初衷是作为连接电视机用的媒体播放器或者机顶盒使用，因此目前市面上大部分的应用还是围绕着如何用它进行多媒体播放或者日常上网娱乐展开的。鲜有介绍如何基于MK802这类小主机进行扩展开发、使用OpenCV进行视觉识别、与Arduino通讯实现功能扩展的文章。</p>
<p>因此在这个系列的文章中，我尝试结合自己的经验以及整理得到的网上各类有关于MK802的扩展开发的文章，为大家介绍如何基于MK802这类微型主机进行扩展的开发，以及如何与Arduino等开发板进行互连互动，并且使用OpenCV进行计算机视觉方面的应用。希望这个系列对大家能起到参考作用，期待大家充分挖掘出这类迷你PC的潜能，做出更多更有趣的东西。</p>
<p>当然，本文介绍的很多技巧和方法不仅仅适用于MK802，同样任何基于Linux系统的主机（包括PC）都将适用。因此这里提到的方法和代码，也可以在其他类似的迷你主机，例如树梅派、MK802的后续升级版本上使用。<br />
</p>
<p align="center"><img alt="" src="/data/pic/mk802dev/intro/pic_002.jpg" /></p>
<p align="center">图：本系列文章将介绍的例子：使用MK802结合Arduino，实现的人脸跟踪系统</p>
<p><strong>本系列文章的将分为如下几大部分：<br />
</strong></p>
<h2 class="std_h2"><a href="http://www.csksoft.net/blog/post/mk802_dev_sysbuild.html">第一部分：MK802的系统自制</a><br />
</h2>
<p>这部分将介绍如何自行编译Linux Kernel、uboot等核心软件达到对MK802硬件的完全控制和定制的能力，并且将推荐几个适合于MK802的Linux发行版本(主要是rootfs包)。<br />
这将是对MK802进行二次开发和扩展的一个必要环节。<br />
这部分的一些部分会需要读者具有Linux开发的一些背景知识，不过我也会介绍一些便捷的方式使用其他人预先制作的系统，为新手绕过这个步骤。当然凡事都有两面性，对于使用其他人现成的系统，将在后续的扩展开发中丧失一定的灵活性甚至会造成一定的阻碍。</p>
<h2 class="std_h2"><a href="http://www.csksoft.net/blog/post/mk802_dev_hacks.html">第二部分：MK802的软/硬件修改和扩展</a></h2>
<p><br />
这部分将介绍一些hack小技巧，来对MK802的软硬件做出一些的改动达到自身的需求。例如引出调试串口信号，这将是对kernel调试非常重要的。这部分的内容相对后续部分独立，如果不感兴趣也可以跳过这部分。</p>
<h2 class="std_h2"><a href="http://www.csksoft.net/blog/post/mk802_dev_devtools.html">第三部分：基于MK802的应用开发和相关的工具</a></h2>
<p><br />
这里将介绍如何在MK802的Linux系统上进行程序开发和开发工程中会用到的一些工具和技巧。<br />
将介绍如何对MK802这类ARM设备在PC上进行交叉编译，如何部署到目标系统以及如何调试等内容。<br />
这部分是对MK802进行扩展所必须的，不过由于篇幅和时间限制，这部分的介绍只是走马观花式的。其实质是基于Linux这类POSIX系统的开发技巧，以及对gcc工具链的使用知识，这些方面的知识还是需要读者能够参考相关的数据系统的进行学习。</p>
<h2 class="std_h2"><a href="http://www.csksoft.net/blog/post/mk802_dev_communication.html">第四部分：MK802与外部硬件设备的通讯</a></h2>
<p><br />
这部分将以Arduino为主要例子，介绍如何通过MK802经过usb口如何与Arduino设备进行互通。同时也会给出其他通讯方式的实现思路。<br />
这部分末尾将介绍一个使用MK802与arduino通讯并驱动舵机云台的例子。</p>
<h2 class="std_h2"><a href="http://www.csksoft.net/blog/post/mk802_dev_opencv.html">第五部分：在MK802上结合OpenCV库进行计算机视觉处理</a><br />
</h2>
<p>这部分将介绍如何在MK802上扩展摄像头、交叉编译OpenCV库并进行使用的过程<br />
这部分末尾将介绍如何通过MK802在一个128x64分辨率的VFD显示屏上显示摄像头画面的例子</p>
<h2 class="std_h2"><a href="http://www.csksoft.net/blog/post/mk802_dev_demos.html">第六部分：基于MK802、Arduino和OpenCV库的互动开发</a></h2>
<p><br />
这部分将为了本系列文章的几个配套实例的开发思路。包括人脸的跟踪、光源的跟踪、将路由器网络流量信息展示在于MK802连接的屏幕上。<br />
</p>
<p>&nbsp;</p>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/mk802_dev_intro.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=290</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=290&amp;key=29ca90bb</trackback:ping></item><item><title>2007的第一个作品,一个crack</title><author>csk@live.com (csk)</author><link>http://www.csksoft.net/blog/post/176.html</link><pubDate>Sun, 31 Dec 2006 23:54:14 +0800</pubDate><guid>http://www.csksoft.net/blog/post/176.html</guid><description><![CDATA[<p>昨天2006.12.31得知学校comic采取了条措施：一定要安装SJTU自己的windows自动更新服务才能访问网站内容。</p>
<p>我第一反应就是:流氓软件...</p>
<p>其实不是这样，SJTU的自动更新服务只不过是一个配置脚本，不过对于win9x和linux用户那样做也太过分了些..</p>
<p>所以一时兴致，写了这个伪装更新服务去完成所谓的&ldquo;激活&rdquo;的操作：</p>
<p><img alt="" src="http://www.csksoft.net/BlogData/pic/comic_cracker.jpg" /></p>
<p>虽然comic的做法我很理解，但未必有些霸道，希望这个程序能给各位更多选择。</p>
<p>由于最近要为demo sence开发作准备，所以今后的crack程序都带有mod音乐</p>
<p>这次的是：floppi&amp;zalza的snowballs_with_attitud</p>
<p>唉，希望今后老弟来提供给我音乐...</p>
<p>程序和代码：</p>
<p><br />
<a href="http://www.csksoft.net/data/legacyftp/Products/Crack/ComicCracker.rar">http://www.csksoft.net/data/legacyftp/Products/Crack/ComicCracker.rar</a></p>
<p><br />
<a href="http://www.csksoft.net/data/legacyftp/Products/Crack/comic_cheater_src.rar">http://www.csksoft.net/data/legacyftp/Products/Crack/comic_cheater_src.rar</a><br />
</p>]]></description><category>Hacks</category><comments>http://www.csksoft.net/blog/post/176.html#comment</comments><wfw:comment>http://www.csksoft.net/blog/</wfw:comment><wfw:commentRss>http://www.csksoft.net/blog/sydication.asp?cmt=176</wfw:commentRss><trackback:ping>http://www.csksoft.net/blog/cmd.asp?act=tb&amp;id=176&amp;key=14f85b9b</trackback:ping></item></channel></rss>
