利用现有代码学会自己写程序的智能程序落地

微软和剑桥大学研究人员创建的机器学习系统 DeepCoder 学会了如何自己写代码。它使用的方法让人们在没有掌握必要编程知识的情况下更轻松的构建出简单的应用程序。在不久的将来,非程序员可以通过简单的描述出一个程序的想法,然后让机器学习系统将其构建出来。DeepCoder使用了被称为“程序合成”的技术,将来自现有软件的一行行源代码拼接在一起。给定每一个代码片段的输入和输出列表,DeepCoder 学会要实现预期结果需要使用到哪部分代码。它的一大优势是速度,能在几分之一秒内创建出一个可工作的程序。在了解了哪一部分源代码能工作,哪一部分不能之后,DeepCoder 能改进每一次创建的新程序。相信在不久的将来,大量一般性的程序工作可以由机器取代。其实所有可归纳的逻辑性的工作包括之前报道的文字处理等工作,都可以被机器学习取代。国内的机器学习媒体“机器之心”报道概述了相关内容

有人一直有个误解,说是不是更感性的工作就更有人的意义了,不会被机器学习取代,其实不是的。我已经见过有朋友用机器学习创作音乐,人们难以听出那美妙的旋律是机器的作品。以下梵高风格化作转载自StefanChen的blog,小白法用开源项目组织机器学习创作梵高风格作品

222

后续豆包会把自己相关的实验工作和学习经历陆续免费分享给大家,祝大家工作愉快: )

神秘“Master”被证实就是AlphaGo

1483441940546mmexport1481166423371

Google 子公司 DeepMind 证实,在围棋对弈平台Tygem 和 FoxGo 上接连打败了中日韩顶尖棋手的Master (P)就是它的新版本围棋人工智能AlphaGo。DeepMind CEO Demis Hassabis通过Twitter发表声明(如图所示),称他们在围棋网站上测试了AlphaGo的新原型,如今非正式测试已经结束,它计划在今年晚些时候与围棋组织合作举行正式的比赛。声明引用了古力九段的话称,“人类将与人工智能合作揭开围棋更深层次的奥秘”。AlphaGo在在线的快棋比赛中取得了51连胜,只是在第52场比赛时因为对手下线而被系统判定为和局。在测试结束前它共取得了60场胜利,没有败过一局。

lic4ma2abdco

什么时候我能努力让我家的王破狗像AlphaGo一样给力,我也就满足了哈~

旧版AlphaGo的文章在这里:

Silver D, Huang A, Maddison C J, et al. Mastering the game of Go with deep neural networks and tree search[J]. Nature, 2016, 529(7587): 484-489.

http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html

简明易懂的说明可以参考这里:

http://blog.csdn.net/songrotek/article/details/51065143

 

基于OpenCV的集群三维重建

文档点击这里下载 → cluster3dreconstruction

文档里给出了系统的详细构建方式,但因整个工程巨大且搭建拼接较为复杂,这里没有上传所有的源代码(即便给出也并没有很大的借鉴意义,因为目前已经有类似需求更好的开源实现)。有兴趣的童鞋完全可以用已有的流行开源项目实现类似的功能(当时常见开源项目文中有列举,更可直接搜索维基百科和谷歌学术)。

以下是本系统基于OpenCV 3.1实现的稀疏三维重建示例:

sp3drcv31

 

开源版俱乐部管理系统(ClubWorkBench demo)

本工程来自豆包2016年初至当年夏天的Demo探索实践,和目前维护的商用版本架构、细节、依赖、引用库、第三方组件均不相同,并且已经不再进行实用性维护。看到业内各种类似项目的蓬勃发展,为促进技术交流进步,将之前的探索实践完全开源。

系统功能:

常规俱乐部会籍管理、IC卡拍照发卡刷卡签到、IC卡储值、常规课程开单销单、电话约课客服、各种报表自定义打印、扫条码刷IC卡的商品入库和售卖、IC卡刷卡详细记录、俱乐部自定义OA系统、俱乐部HTML5多媒体文件网盘、微信可集成(部分需简单二次开发)……

概要性的说明可以参考 这个pdf文件

部署使用方法:

在服务器部署配置好Windows Server 2016、SQL Server 2016、IIS等所有基础依赖。使用客户端exe程序的系统推荐使用Windows 10。确保客户端计算机和服务器是可以通过IP网络连通的,如果需要的话,在客户端计算机接入USB扫码枪(用于商品入库和售卖)、USB IC卡刷卡器(用于IC卡会籍管理)、USB Modem(用于电话客服功能来电自动识别客户)。

下载所有源码,在vs2015打开所有解决方案文件,添加所有对应的引用和库(为了节省空间二进制基本都删掉了),编译之后,把所有目录按结构不变直接放到IIS的默认目录下,如C:\inetpub(如果目录改变需要对应修改部署用的站点配置文件appsites.xml),在C盘根下建立目录C:\Temp。其中LoginForm是使用DSkin的客户端程序,其他站点程序很多用到了DevExpress16.1.6,需要自行购买或下载得到。

点击这里下载所有源码
(已集成此处介绍的运动传感器及其数据采集、BLE4GATT心率数据采集、三维或实景视觉前端等)
下载须同意这里文章后半段深蓝色文字描述的AGPL&3mn.netAL 解压密码:3mn.net
文件名:developing.rar
大小: 2319316094 字节
MD5: E84C59A67F796CE731218615F4ABDFBA
SHA1: 435DEA8E403380761C4EF1BEAE0508BF7F683395
CRC32: FC0EBED6
*由于文件较大且存放于公共网络空间,请下载后务必哈希校验再解压使用。
点击这里下载站点配置

参考这里导入站点配置 http://www.cnblogs.com/goody9807/p/3613491.html

安装压缩包里提供的所有第三方软件,如Redis、AForge.NET等。在SQL Server 2016建库CustomerServiceForm(本系统默认配置文件里的连接用户是csf,密码l123456,可自行更改),导入CustomerServiceForm.sql建立数据表结构和必要元数据。直接通过Web访问IP即可进入管理后台,默认管理员用户admin,密码111。在刷卡客户端系统,配置好LoginForm的config文件,运行exe文件,即可进入客户端程序。

 

How to construct an iSCSI encrypt agent

最近两天看了看如何以网络代理的形式加密各种存储协议向后端落地的数据。

其中用于SAN阵列加密的iSCSI代理,在CentOS 7居然一个包都没有yum就搞定了。

只顾着跑步和健身好久没有来更新和审核文章了,先把这个水货放上充充数吧 o(>_<)o

点击这里可以下载 示例脚本文件 <–download script file here. the content is the same as following blog text.

点击这里可以下载彩色版本的word文档 vSAN

Read more

科学家在开源许可证下发布新的农作物品种

一组科学家和活动人士在开源许可证下发布了14种农作物的29种新品种种子。任何人都可以使用这些种子,只要他们不利用专利或知识产权保护限制其他人使用。这一行动称之为开源种子计划(Open Source Seed Initiative),他们公开了萝卜、甘蓝、椰菜和藜谷等作物的种子。种植者必须承诺,任何衍生种子也都必须免费公开。计划组织者、威斯康星大学的植物育种专家Irwin Goldman教授说,种子在这个时代属于知识产权,被发明专利所覆盖,使用必须获得专利所有者的授权, 你甚至不允许收集种子供下一年种植。他不喜欢此种做法,认为这限制改进农作物的能力。

Amherst Researchers Create Magnetic Monopoles

Nearly 85 years after pioneering theoretical physicist Paul Dirac predicted the possibility of their existence, an international collaboration led by Amherst College Physics Professor David S. Hall ’91 and Aalto University (Finland) Academy Research Fellow Mikko Möttönen has created, identified and photographed synthetic magnetic monopoles in Hall’s laboratory on the Amherst campus. The groundbreaking accomplishment paves the way for the detection of the particles in nature, which would be a revolutionary development comparable to the discovery of the electron.

把Tolkien的文学作品打了个包

这是从互联网搜集来的,英文word文档,喜欢托尔金和中土世界的朋友可以留作备份和词句出处查询。

收藏和长期阅读请去amazon购买正版书。

下面的链接可以下载,解压密码是tolkien

tolkien

libvirt support for Xen’s new libxenlight toolstack

Originally posted on jfehlig‘s blog, here.

Xen has had a long history in libvirt.  In fact, it was the first hypervisor supported by libvirt.  I’ve witnessed an incredible evolution of libvirt over the years and now not only does it support managing many hypervisors such as Xen, KVM/QEMULXCVirtualBoxhyper-vESX, etc., but it also supports managing a wide range of host subsystems used in a virtualized environment such as storage pools and volumes, networks, network interfaces, etc.  It has really become the swiss army knife of virtualization management on Linux, and Xen has been along for the entire ride.

The Mathematics of Gamification

The Foursquare blog has an interesting post about some of the math they use to evaluate and verify the massive amount of user-generated data that enters their database. They need to figure out the likelihood that any given datapoint accurately represents reality, so they’ve worked out a complicated formula that will minimize abuse. Quoting: ‘By choosing the points based on a user’s accuracy, we can intelligently accrue certainty about a proposed update and stop the voting process as soon as the math guarantees the required certainty. … The parameters are automatically trained and can adapt to changes in the behavior of the userbase. No more long meetings debating how many points to grant to a narrow use case. So far, we’ve taken a very user-centric view of p-sub-k (this is the accuracy of user k). But we can go well beyond that. For example, p-sub-k could be “the accuracy of user k’s vote given that they have been to the venue three times before and work nearby.” These clauses can be arbitrarily complicated and estimated from a (logistic) regression of the honeypot performance. The point is that these changes will be based on data and not subjective judgments of how many “points” a user or situation should get.

Intel今天发布了长达5000页的Haswell开发文档

英特尔在年底向Linux和开源粉丝送出了一份新年礼物:公布了多达5000页的Haswell文档。《开源图形程序员参考手册》涉及了 2013 Haswell HD Graphics、Iris Graphics和Iris Pro Graphics,其内容覆盖模式设置到3D引擎和GPGPU,到性能加速器和视频加速。在显卡制造商中,英特尔的集显驱动对开源最为友好。眼看明年AMD也要出新架构了,nVidia会不会被逼到左右为难,坐等明年的图形开发界的连台好戏。

数值计算工具Octave终于有了GUI,还是用OpenGL的

from http://www.phoronix.com/scan.php?page=news_item&px=MTU1NDg

GNU Octave, the open-source high-level language for dealing with numerical computations and largely compatible with MATLAB, has a graphical user-interface with its new 3.8 releaseGNU Octave 3.8 hasn’t been officially announced at the time of publishing, but the source package was uploaded just a short time ago to the project’s GNU.org FTP server.

The big feature of Octave 3.8 is a graphical user-interface, which has long been requested by users of this open-source package looking towards it as a MATLAB alternative. While there’s now a GUI, it’s not yet polished now and will not become the default user-interface until the GNU Octave 4.0 release. GNU Octave 3.8 considers the GUI to be in a preview state.

Octave 3.8 also now uses OpenGL graphics by default in conjunction with FLTK widgets. GNUplot is still used in cases where OpenGL or FLTK support is not available for its graphical tool-kit.

Another change to GNU Octabe 3.8 is support for nested functions with scoping rules that are compatible with MATLAB, limited support for named exceptions, new regular expressions, a TeX parser for the FLTK tool-kit, overhauls to many of the m-files, function rewrites, and numerous other changes.

GNU Octave 3.8 also ships many bug-fixes and other improvements. While waiting on the official release announcement, more information on Octave can be learned from GNU.org.

基于OCaml的Mirage OS的1.0版本前不久已经发布

http://xenproject.org/downloads/mirage-os-archives/mirage-os-10.html

What is Mirage OS and why is it important?

Most applications that run in the cloud are not optimized to do so. They inherently carry assumptions about the underlying operating system with them, including vulnerabilities and bloat.

Compartmentalization of large servers into smaller ‘virtual machines’ has enabled many new businesses to get started and achieve scale. This has been great for new services but many of those virtual machines are single-purpose and yet they contain largely complete operating systems which typically run single applications like web-servers, load balancers, databases, mail servers and similar services. This means a large part of the footprint is unused and unnecessary, which is both costly due to resource usage (RAM, disk space etc) and a security risk due to the increased complexity of the system and the larger attack surface.

CloudOSDiagram

Mirage OS is a Cloud Operating Systemwhich represents an approach where only the necessary components of the operating system are included and compiled along with the application into a ‘unikernel’. This results in highly efficient and extremely lean ‘appliances’, with the same or better functionality but a much smaller footprint and attack surface. These appliances can be deployed directly to the cloud and embedded devices, with the benefits of reduced costs and increased security and scalability.

Some example use cases for Mirage OS include: (1) A lean webserver, for example the openmirage.org, website is about 1MB including all content, boots in about 1 second and is hosted on Amazon EC2. (2) Middle-box applications such as small OpenFlow switches for tenants in a cloud-provider. (3) Easy reuse of the same code and toolchain that create cloud appliances to target the space and memory constrained ARM devices.

How does Mirage OS work?

Mirage OS works by treating the Xen hypervisor as a stable hardware platform and using libraries to provide the services and protocols we expect from a typical operating system, e.g. a networking stack. Application code is developed in a high-level functional programming language OCaml on a desktop OS such as Linux or Mac OSX, and compiled into a fully-standalone, specialized unikernel. These unikernels run directly on Xen hypervisor APIs. Since Xen powers most public clouds such as Amazon EC2, Rackspace Cloud, and many others, Mirage OS lets your servers run more cheaply, securely and faster on those services.

Mirage OS is implemented in the OCaml language, with 50+ libraries which map directly to operating system constructs when being compiled for production deployment. The goal is to make it as easy as possible to create Mirage OS appliances and ensure that all the things found in a typical operating system stack are still available to the developer. Mirage OS includes clean-slate functional implementations of protocols ranging from TCP/IP, DNS, SSH, OpenFlow (switch/controller), HTTP, XMPP and Xen Project inter-VM transports. Since everything is written in a single high-level language, it is easier to work with those libraries directly. This approach guarantees the best possible performance of Mirage OS on the Xen Hypervisor without needing to support the thousands of device drivers found in a traditional OS.

MirageDNS-500

An example of a Mirage OS appliance is a DNS server and below is a comparison with one of the most widely deployed DNS servers on the internet, BIND 9. As you can see, the Mirage OS appliance outperforms BIND 9 but in addition, the Mirage OS VM is less than 200kB in size compared to over 450MB for the BIND VM. Moreover, the traditional VM contains 4-5 times more lines of code than the Mirage implementation, and lines of code are often considered correlated with attack surface. More detail about this comparison and others can be found in the associated ASPLOS paper.

For the DNS appliance above, the application code was written using OCaml and compiled with the relevant Mirage OS libraries. To take full advantage of Mirage OS it is necessary to design and construct applications using OCaml, which provides a number of additional benefits such as type-safety. For those new to OCaml, there are some excellent resources to get started with the language, including a new book from O’Reilly and a range of tutorials on the revamped OCaml website.

We look forward to the exciting wave of innovation that Mirage OS will unleash including more resilient and lean software as well as increased developer productivity.

Google利用PNaCl将AmigaOS移植到Chrome

为演示Portable Native Client(PNaCl)技术,Google开发者 Christian Stefansen将上世纪80年代的AmigaOS移植到Chrome。Chrome运行是一个特别的AmigaOS开源版本,Stefansen利用PNaCl将该版本的C语言代码移植运行在Chrome上。Native Client技术让Web应用程序能以接近原生代码的性能运行在浏览器上,Native Client针对的是X86架构处理器,而Portable Native Client则扩展了Native Client,变成了一个架构独立的技术,让应用程序可以运行在X86或ARM平台。最新的演示只支持Chrome 31以上版本,不支持Android和iOS。

liR9UwZrlN0Jc

 

Epic和Mozilla发布虚幻引擎3的浏览器演示

今年早些时候,Mozilla和Epic Games利用asm.js、Emscripten和WebGL,在浏览器上演示了虚幻引擎3的一个DEMO,展示了Web成为一个3D游戏平台的潜力。这一演示吸引了游戏工作室NomNom Games的注意,他们因此开始探索将其开发的虚幻引擎3游戏移植到浏览器的可能性。12月12日,Mozilla和NomNom宣布了第一个基于asm.js技术的3D商业Web游戏——Monster Madness。用户可以在支持WebGL的Firefox、Chrome或Opera上测试游戏的Alpha版本,和之前的演示一样,进入游戏前需要花比较长时间载入纹理素材。

liwFR8EHxPPSE

模拟支持宇宙全息理论

一组物理学家提供了至今最明确的证据证明我们的宇宙可能只是一个巨大的投影。1997年,理论物理学家Juan Maldacena提出了一个大胆的宇宙模型去诠释现有的物理学理论。在这个模型中,引力源于无限小、薄且振动的弦,而弦则存在于九维空间和一维时间中,弦的世界很可能只是一个全息图,真正的行动则发生在一个简化平坦无引力的宇宙中。Maldacena的理论令物理学家非常兴奋,因为它提供一种方法将热门但未获证明的弦论奠定在一个坚实的基础上,同时解决了量子理论和爱因斯坦引力理论不一致的地方。Maldacena理论虽然已广为接受,但仍然没有经过严格证明。现在,日本茨城大学的百武良文和同事在预印本网站上发表了两篇 论文,提供了强有力的证据证明Maldacena的猜想是正确的。

64位低功耗处理器即将爆发

高通、英伟达和博通也计划生产 64 位处理器,而且已经做好在 CES 2014 上发布的准备。
ARM 首席营销官 Ian Drew 最近表示,未来基于 ARM 的 64 位解决方案数量将激增,不只应用在移动设备上,还将应用在网络和服务器市场中。
此外,消息还显示,高通、英伟达和博通已经重新指定 2014 年产品路线图,明年 Q1 和 Q2 发布 64 位处理器。联发科日前发布了真正的八核处理器 MT6592,预计于明年下半年呈上 64 位处理器方案。
谷歌安卓系统已经能够支持 64位处理器,谷歌目前在进行进一步研发,以提供更好的支持。英特尔计划于 2014 年第二季度推出安卓版入门级 Bay Trail 芯片,日前英特尔已经在 Bay Trail中运行安卓 64 内核。

免费开源云平台与VDI的构建

2013年11月28日所说的部分话撤回,愿提供更好的方案给需要的人。 2017年1月24日。

 

下面列举一下如何快速构建开源VDI平台:

总体思路是通过开源项目,依次构建虚拟化平台、IaaS云平台、VDI桌面管理。

 

a) 如果主要需求点是Windows桌面,则通常基于Xen/XenServer/Hyper-V构建。

以最常用的Xen为例,为了直接获得可实际使用的版本,首先你需要下载开源的XenServer, http://xenserver.org/open-source-virtualization-download.html

直接下载安装iso,不要试图从两张源代码DVD从零构建,编译组件后组合没有文档的,如果你不能得到Citrix工程师的支持,需要耗费巨量的时间。

直接安装以后主要部分都很容易从源代码DVD里找到对应,如果你要修改或者山寨,对应的替换就可以了。

然后选择一个IaaS平台,下载安装,例如选择CloudStack,稳定版本可以从官网的下载页面获得,http://cloudstack.apache.org/downloads.html

如果想体验最新开发版本,可以从github直接checkout,https://github.com/apache/cloudstack

写这篇blog的时候,github上的4.4版本的CloudStack可以直接成功编译使用。使用OpenStack相对繁琐一些。

安装文档可以参考官方的指南, http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.2.0/html/Installation_Guide/index.html

最后,你需要一个RDP或者SPICE的远程桌面分配平台,并自己写几个脚本,让用户的虚拟机可以在访问桌面的时候自动启动,即可完成VDI的构建。

RDP客户端的开源项目一样是铺天盖地,如果考虑到实际的桌面需求,需要跨平台支持各种终端,又不想安装客户端程序和Agent,为何不考虑用Flash或HTML5的桌面呢。

例如Guacamole,一款完全开源的HTML5桌面代理,http://guac-dev.org/#download ,你可以轻松的用它构建VDI,并支持动态分配桌面、AD域集成身份认证等,官方有详细的文档。

如果想要性能好一点,可以基于rdesktop http://sourceforge.net/projects/rdesktop/files/?source=navbar 或其他开源的RDP/SPICE客户端稍加改造,甚至不用改造,直接使用原本的Windows远程桌面即可。http://cgit.freedesktop.org/spice/spice-html5 这里有html5的spice。

最可笑的是现在很多卖瘦客户端的,就是弄个破ARM开发板上面跑个远程桌面,还说什么1080p,你去看看随便买个几百块钱的破ARM板子多少都支持1080p显示?怎么能有脸卖几千块呢。。

比如飞凌的板子: http://item.taobao.com/item.htm?spm=a1z10.1.w4004-185985825.11.Ntntya&id=18449162554 类似的CortexA8 A9的板子大量支持HDMI高清显示,

不要说1080p,就算4k的视频输出的板子,也卖不到几千块钱啊~ 而且买个板子,源代码本身是cpu厂商连同BSP一起提供的,真心对瘦客户端VDI宣传什么云主机还注册专利的,表示呵呵~

开关虚拟机用CloudMonkey写几行python脚本就搞定了,https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+cloudmonkey+CLI 。

b) 如果主要需求点是linux或BSD的服务器虚拟化,则通常基于KVM构建。

KVM的更好办,直接装个CentOS,把虚拟化支持打开就ok了,装CloudStack需要额外装个Agent,然后就可以把KVM当底层Hypervisor了。其他部分和上面一段一样。

另外,红帽比较喜欢SPICE桌面,http://www.spice-space.org/download.html ,但实测一般应用场合感觉这东西用户体验没比RDP好多少。

 

 

费曼物理学讲义第三卷上线

加州理工和费曼物理学讲义网站正在整理HTML5版费曼物理学讲义,今年9月发布了第一卷,刚刚上线了第三卷。费曼物理学讲义网站的Mike Gottlieb宣布,他们发布了付费的PDF版,读者可以通过购买PDF电子书来支持他们的活动。《费曼物理学讲义》由理查德·费曼、罗伯·雷顿及马修·山德士合著,分为三卷。第一卷主要讲力学、光学、电磁辐射和热力学;第二卷主要讲电动力学和电磁学;第三卷主要讲量子力学。第二卷的HTML转换工作还没有完成。

英特尔未来的桌面CPU也将整合128MB四级缓存

英特尔今年为移动版Haswell架构处理器引入了容量高达128MB的L4缓存,L4缓存不是直接整合在芯片上面,而是封装在一起。L4缓存容量比L1/L2/L3要大得多,其响应时间约为50-60ns,比L3缓存的响应长,但只有主内存的一半。引入L4缓存被认为能提升某些工作负荷下性能,但目前还没有多少基准测试软件能检验这一说法。现在,根据最新的消息,英特尔下一代处理器架构的桌面版本Broadwell-K(k系列比标准版更贵)也将引入128MB的L4缓存

突然想到2001年写的一篇文

凡学法因人而异,吾言之不尽。故仿白氏,截六百一十六言于吾旧文,简言吾行学途之心境,望励同窗。
吾好置身于山间,叹万物之生气。望白云抚清风以修身,衔芳草拨碧水以养德。欲求此境,不免越岭而寻之。登山越岭之长途跋涉,人尝疲累而叹其苦。是时便昂首观山景,看云雾缭绕,望绿莽丛生,方可出荡胸生层云,决眦入归鸟之佳句。心境豁开,不免随风而呼其乐。此诚乃踏漫漫学途之缩影。置身于山景之外者叹其苦,昂首入佳境者呼其乐。乐者欲求雾后之景而甚乐,苦者欲求止步之时而甚苦。夫观二者之步,乐甚方可疾,苦甚只可缓。汝或道:“由此观之,生于忧患,死于安乐,岂不胡言?”否也。彼安乐乃委靡之乐,而非此作学问之乐;彼忧患乃天降之忧患,而非此叹苦之忧患也。作学问乃以人心为本,人心苦则志不定。而追心苦之源,乃作学问之心不专也。未入其境,未见其景,只见脚下路,只知行路难,悲哉。若学无止境又无乐境,而人终不倦于终生作学问,此人生舍乐而求苦,岂不笑料!学海既无涯,岂能苦作舟?!求知乃人之德,踏求知之途即为乐,即为观山景之甚乐!
汝或于观山景之途遇霪雨霏霏连月不开之境,而徘徊低回盼得云散时之山景,熟不知此举误旷世之佳景也。凡山间霪雨,云浓而低。若加疾阔步攀于云之上,便可得脚下之青云梯,倚云岸之峻峭壁,叹壁前之云涛起,闻莽间之奇鸟鸣。此属羽化而登仙者之极乐境也,惜只惜霪雨诚难遇!云中之道,荆棘为雾所避。踏之不免伤身,疾行不免失路。浓云难拨?笑罢强拨之!身着信念,脚下毅力便可强作路。吾以为心衔芳草方来毅,壮志自存不尽力。故人心存则志不陨,志不陨则定得境。古之人知其不可而为之,今之士心竹信手绘,甚乐而为之。作学问亦如此也,心无强拨云之魄,安求山后景致?彼天降之忧患非吾心之忧患也!忘身而取本心,再求太白一句:“长风破浪会有时,直挂云帆济沧海!”

一种新的单目视觉3D重建算法

想和人眼一样拍摄3D立体图像通常需要2个镜头。哈佛大学研究员《光学快讯》上发表的文章通过改变单个镜头焦距拍摄两幅图像,使用数学模型重建3D图像,其效果相当于单眼摇头视物。主要原理是:像素上的光线角度包含了重要信息,通过改变焦距拍摄两幅图像的细微差别推算出每个像素上的光线角度,通过数学计算重建新图像,模拟镜头移动的效果(视频演示)。

OpenGL 4.4 and OpenCL 2.0 Specs Released

Via Ars comes news that the OpenGL 4.4 and OpenCL 2.0 were released yesterday. OpenGL 4.4 features a few new extensions, perhaps most importantly a few to ease porting applications from Direct3D. New bindless shaders have access to the entire virtual address space of the card, and new sparse textures allow streaming tiles of textures too large for the graphics card memory. Finally, the ARB has announced the first set of conformance tests since OpenGL 2.0, so going forward anything calling itself OpenGL must pass certification. The OpenCL 2.0 spec is still provisional, but now features a memory model that is a subset of C11, allowing sharing of complex data between the host and GPU and avoiding the overhead of copying data to and from the GPU (which can often make using OpenCL a losing proposition). There is also a new spec for an intermediate language: “‘SPIR’ stands for Standard Portable Intermediate Representation and is a portable non-source representation for OpenCL 1.2 device programs. It enables application developers to avoid shipping kernel source and to manage the proliferation of devices and drivers from multiple vendors. OpenCL SPIR will enable consumption of code from third party compiler front-ends for alternative languages, such as C++, and is based on LLVM 3.2. Khronos has contributed open source patches for Clang 3.2 to enable SPIR code generation.” For full details see Khronos’s OpenGL 4.4 announcement, and their OpenCL 2.0 announcementUpdate: 07/23 20:17 GMT by U L : edxwelch notes that Anandtechpublished notes and slides from the SIGGRAPH announcement.

迪士尼演示2D照片生成高清3D模型算法

Disney研究院开发出一种算法,可以将2D照片生成高清3D模型。和此前的3D全景技术类似,这项技术也有十多年的历史。但迪士尼的新算法赋予了3D模型更多的细节,能计算每个像素的深度,足以满足视频游戏和电影制作的需要。它的3D模型仍然受限于原始2D照片提供的视觉信息,不能自动填充数据。

Disney Research has developed an algorithm which can generate 3D computer models from 2D images in great detail, sufficient, it says, to meet the needs of video game and film makers. The technology requires multiple images to capture the scene from a variety of vantage points. The 3D model is somewhat limited in that it is only coherent within the field of view encompassed by the original images. It does not appear to fill in data

在Linux运行Direct3D 9游戏,性能胜过Wine

借助新的Gallium3D状态跟踪器,Linux桌面系统现在能支持微软的Direct3D 9 API ,不同于早期的Direct3D 10/11实现,新的代码确实可以在Linux上运行Direct3D 9游戏,而且游戏性能强于Wine。Gallium 3D是一个自由软件和开源OpenGL实现。2010年,Direct3D 10/11以Gallium 3D状态跟踪器的形式在Linux上原生实现,但由于上游的Wine开发社区对此不感兴趣,最终无疾而终。Nouveau开源显示驱动的开发者Christoph Bumiller本周宣布了一个Direct3D 9状态跟踪器。虽然Direct3D 10/11支持很短暂,但Bumiller相信Direct3D 9情况要好得多。通过Gallium 3D,Direct3D 9 支持开源Linux驱动,不需要将Direct3D指令翻译到OpenGL,就可以用开源Radeon和Nouveau驱动运行游戏如《上古卷轴V:天际》、《文明五》、《Anno 1404》和《星际争霸2》,测试显示游戏fps最高是Wine目前代码的两倍。

小车使用的系统平台详细介绍

双目视觉小车使用的是三星处理器s5pv210,s5pv210又名“蜂鸟”(Hummingbird),是三星推出的一款适用于智能手机和平板电脑等多媒体设备的应用处理器。s5pv210和s5pc110功能一样,110小封装适用于智能手机,210封装较大,主要用于平板电脑和上网本,苹果的iPad和IPhone4上有的A4处理器(三星制造的),就用的和s5pv210一样的架构(只是3D引擎和视频解码部分不同),该处理器还被用在了Nexus S,魅族M9,三星GT-S8500 Wave,三星P1000(Galaxy Tab),三星i9000(Galaxy S)。s5pv210是旧时的叫法了,2011年2月,三星电子正式将自家基于ARM构架处理器品牌命名为Exynos。Exynos由两个希腊语单词组合而来:Exypnos和Prasinos,分别代表“智能”与“环保”之意。s5pv210获得了新的代号Exynos 3。Exynos 3是Exynos系列中唯一的单核处理器。下面是这款处理器的架构图:

Exynos3110_Diagram3110

 

将这款处理器的平台作为双目视觉小车的主控系统考虑到以下几方面原因:1.优秀的性能功耗比,性能不愁电池也不愁;2.官方提供linux和android的bsp不需要移植,视频传输也可以用以往开发移植的方案;3.我喜欢用消费类电子处理器做自控,因为比较好玩~

小车使用的是改造的三星Exynos 3标板,借鉴的开发板是飞凌的ok210:

63265143

 

 

三星的资料,包括电路原理图、cpu手册等 ok210-downloadfromsamsung

ok210的原理图和器件手册 ok210-schanddatasheet

引导用的uboot ok210-uboot_1.3.4.tar

移植好的linux 2.6.35内核 ok210-linux2.6.35.7.tar

NandFlash使用的Yaffs2文件系统 ok210-Yaffs2.tar

 

小车直流电机驱动L9110H和L298N的选择

L9110H是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片 IC 之中,使外围器件成本降低,整机可靠性提高。该芯片有两个 TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过 750~800mA 的持续电流,峰值电流能力可达 1.5~2.0A; 同时它具有较低的输出饱和压降; 内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。L9110H被广泛应用于玩具汽车电机驱动、步进电机驱动和开关功率管等电路上,我所拆卸的遥控车玩具,大多使用L9110H。

当前的小坦克上在电机输入前接了L9110H,所以cpu的gpio可以直接通过74HC244后连接小坦克。我记得很多年前有人曾经问244能不能取代光耦隔离,实际上,如果回灌电流不是很猛,是可以起到隔离作用的,因为244有比arm cpu更大的承受能力,如果244烧不穿,自然也就保护了cpu,但如果244击穿,情况就另当别论了,所以,应该说能够部分取代光耦,并不能完全取代。

11

相比之下,在选择直流电机的情况之下,L298N显得杀鸡用牛刀。L298N主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。

L298N驱动小车直流电机的典型模块电路和实现:

 

16059114562605911456

 

 

如果使用万向轮小车底盘,选用这个驱动模块是合适的,我习惯杀鸡用牛刀,哈哈。

 

小车底盘选型组装完毕,开发板到手,零碎器件到手

双目视觉小车的底盘初步定型为两款。分别是一个橡皮履带的坦克底盘和一个带万向轮的双轮小车底盘(最常用的寻迹小车底盘模型)。

1

第一款是带测速方波和减速直流电机的坦克,准备用210开发板的gpio直接经过74hc244后连接电机驱动L9110或L298,这款速度控制比较好,行驶可以非常慢,有助于第一步目标中各种实验的进行。

2

第二款是我以前非常常用的两个轮子带一个万向轮的小车底盘,这是最常用的寻迹小车的底盘模型,但是这款测试时十分灵活,速度较快,无法很慢的行驶(和电机与减速箱有关),在坦克上充分测试调试,算法足够健壮的情况下,可以使用这款经典的底盘。

3

 

开发板使用的是飞凌嵌入式的ok210,找一款靠谱的210开发板真不容易,难得有这么一款不错的产品,我自己投板的还不知道需要焊到哪年哪月。。初步计划把键盘按键拆了改成gpio经过74hc244增益连接电机驱动控制,在linux直接用字符驱动写方波即可,另外配置两个输入的gpio或者中断,从红外遮挡测速那里把信号读回来(坦克底盘上有现成的测速器,而万向轮双轮小车需要我自己接一下,主要是模具费劲,暂时先用坦克的吧)。

另外,今天去了中海园和中发,状况和当年差不多啊唉,中海园还是那样,周末没什么人,柜台大多数都锁门了,连个人影都看不见。。马路对面的知春电子城还不错,买到了74hc244和需要的零散器件,电池也找到了大容量锂电池排,重量可以接受,不过那卖电池的有点头晕,逆变升压电路参数说不清楚,看了半天我也不知道那个小电路从3.7逆变到5V能承受多大电流,改天再找家靠谱点的。。

先写这么多,组装像样了,驱动写差不多了再继续更新~ 期待吧~

Harlan:简化GPU编程的新语言

印第安纳大学研究员Erik Holk 发布了一个简化GPU应用程序开发的声明式编程语言Harlan

Harlan的语法是基于LISP语言方言Scheme,旨在让开发者能更高效的使用GPU,而不必处理会干扰实际工作的日常性GPU编程任务。两大最流行的GPU编程模型是OpenCL和CUDA ,Harlan可以编译到 OpenCL。Holk还为新语言赋予了部分函数编程语言特性,他是在开发Mozilla的RUST语言过程中学到了GPU编程经验。Harlan这个名字取自肯德基招牌人物Sanders上校的第一个名字Harland,Harlan的所有文件扩展名是.KFC。

显然Erik Holk是个天天吃肯德基或者和肯德基有神马关系的人。。真心无力吐槽。。

 

双目视觉小车的前端3D展示放弃xbap+xna,改用webgl或unity3d

如题,在尝试过ie11以后,又考虑到 http://news.xbox.com/2013/06/xbox-one-unity-announcement 的影响,为了后续的兼容性和进一步扩展,不再使用xbap+xna,具体更改为webgl还是直接使用unity3d,有待进一步评估。

有一部分原因是因为xna后续没有版本了,而前几天unity3d对windows用户免费了(可参考先前的链接或搜索相关新闻)。周末除了去中发以外,我还会具体评估unity3d的新版本和ie11所支持的webgl。

双目视觉小车实时重建场景3D模型的娱乐项目今天启动

2013年7月2号是美好的一天。整整8年过去了,历经8年,我终于找到了一位合适的导师,我的热情娱乐终于可以重新开始了。

今天是2013年7月3日,我的双目视觉小车正式开始制作开发,整个系统的第一步的目标结构如下图所示:

MoridaEyes-sysarch

 

系统结构图visio文件下载 MoridaEyes-sysarch

暂定本项目代号为 MoridaEyes (ME.) 意为森田之眼。

 

总有人问我森田幻羽的森田是否和日本话有关系,这里解释一下,部分是的。

森田,一是出自我是极端热爱大自然的人,讨厌钢筋混凝土的世界,喜欢绿树和田野;

二是出自漫画《蜂蜜和四叶草》中的森田忍,具体为什么,一言难尽,相信看过这部漫画又熟知我的朋友会非常清楚。

 

明天开始组装小车的硬件底盘和车身,本周末去中发中海园买缺少的小零部件。

另外需要买244增加io的驱动能力再连接直流电机驱动,懒得投板了先用面包板和飞线凑合吧,

不知道整个系统需要多大功耗,我估计可能需要若干手机电池并联才能玩得转。

多向跑步机控制在游戏中跑步

你或许会觉得在跑步机上跑步太单调,那么为什么不尝试在虚拟现实,在你最喜欢的游戏中跑步?一家叫Virtuix的美国德州公司在kickstarter上发起集资活动,筹集15万美元开发Omni虚拟现实跑步机。目标已被远远甩在后面,距离结束还有21天融资金额已接近百万美元。受到kickstarter用户如此热烈的支持响应,无疑与其创新理念离不开。Omni让玩家戴着虚拟现实眼镜穿着特别定制的鞋子在跑步机上跑步,软件将跑步动作翻译成按键,在游戏中执行走跑跳蹲等动作。Omni计划在明年1月交付。

今天把09年以前的blog文章选了一些转移了过来

一共没几篇文,也懒得写转移程序了,手工转,呼呼~

森田幻羽最近要复活了,因为我有一些新的实验要做,涉及新学习的计算机视觉和人工智能相关。

我打算把以往用红外和超声传感器避障循迹的单片机步进电机小车大改造一番,变成用arm系统背电池的高级小车,使用更高精度的电机,同时用摄像头采集视频信息,用计算机视觉的方法,进行避障循迹和各种应用的尝试。因为很多涉及视觉和人工智能的算法计算量较大,考虑将图像实时传给我的x64并行计算系统,做尽可能的多线分解,最理想的情况是能实时生成环境的3D模型,然后在上位机计算如何运动,直接给小车发送控制指令。同时,我要深入学习之前没接触过的各种比较冷门的数学物理方法,希望能从中找到一些我一直以来困惑的问题的解答。希望能找到学数学的有兴趣的朋友和我一起玩,那样不懂的问题能得到立即的解答,会轻松好多额。

几个以往用过的小系统回忆

已经很久没有做低功耗便携系统了,最近翻出以往的开发板,颇有味道的回忆了一番。尤其是想起第一次投板六层板的那一次,南京的那哥们答应给特价盲埋孔打样,高兴了一晚上。当年9000块钱就觉得好多好心疼哈,现在看看,还不够交一次房租…唉……还有后来合作卖2410开发板的硬件高手吴兄,不知道现在过得怎样了,还在飞思卡尔么…回忆起来很是想念…每次路过北交大都想起当年一起开发,好巧在北理工的刘老师和当年的吴兄长得特别像哈哈。

现在的系统能力真是强悍,当年这些arm9的片子,如今恐怕博物馆都找不到了吧。

44615_071016182928

 

05年最初使用的s3c2410开发板,我自己编写的多线程操作系统和第一次编写GUI的尝试是在这个板子上进行的,对我来说,这个开发板非凡的意义还有一点,那就是带我了解了诸多底层总线协议的具体实现和相关软件开发,诸如IDE、I2S、I2C、ISA等等。

 

44615_071016135026

这是一个ep9315的开发板,在这个板子上我第一次尝试了高频硬件驱动,它可插接的数据和地址总线,让我得以把很多外设挂载总线上进行各种调试,用总线直接驱动一下子就屏蔽了IO不够用的问题,但是有些貌似要挂244增大驱动能力才能带的动。

44615_071016135114

这是一个can总线和232/485的调试板,用单片机做了一些基本的实验,有了这些实验,才得以把这些总线顺利的挂到频率比较高的arm系统上去。

44615_071016182959

这同样是一个做低频实验用的arm7的板子。

 

44615_071207232232

这是一个ep9315的开发板,在上面扩展了很多实用的接口,如PCI、CF/SD卡、各种常用的扩展总线等。

 

NDS游戏开发起动 很多东西游戏开发前辈已经写了,转几个有用的地址来

【2009.1】
有了的就不再写了,DS的年龄比较长,寻找资料和开发很顺利,概括一下,转几个地址来~
想花几分钟立刻建立DS游戏开发环境的朋友请直接阅读黄色和蓝色底色的文字。
NDS开发环境配置(官方开发环境 实际上就是开发裸机ARM程序的ADS)
陈超的专栏 ——NDS开发揭秘
实际上就是按ARM系统裸机开发的方式使用老版ADS里的CodeWarrior,对于业内的朋友应该是相当的熟悉和顺手~因为我当年在ADS的CodeWarrior写过好多程序,所以看到DS直接用这个真是倍感亲切,其实这也是意料之中的事情,Nintendo肯定懒得自己做IDE,而且ARM还提供了这么方便的。。另外需要提及的是,我没具体尝试,不知道04年左右流行ADS开发的时候流传的无限期license能不能直接用在这里提供的CodeWarrior之上,如果能直接用的话,就不存在什么时间限制问题了,我估计没有什么问题,这里提供的CodeWarrior应该没有什么特别的改动。
陈超的图链接好像断了,这个帖子里有:
官方的注册帐号比较麻烦,要一堆公司的信息之类的。。下面看看fans的~
NDS开发环境配置(fans开发环境 可以用VisualStudio或linux下的一些IDE配合交叉编译)
jiaweihao1987的专栏(一份可行性分析报告)
还有这里
类似的google就可以,教程和资源十分丰富。
fans之前是用arm-linux-gcc编译过DS程序(比如甚至移植了uClinux2.6到DS上,”dslinux”),CodeWarrior所使用的armcc.exe实际上和arm-linux-gcc极其相似,用什么编译器都是可以的。DS实际上是个裸机环境,而且cpu没有mmu,全是直接寻址,也没有什么程序装载的问题,全裸上阵。
fans方案大多就是用传说中的devkitpro, PSP等东西的开发也可以用这个kit:
使用PAlib(一个基于fans用的devkitPro的更方便开发的工具包)结合VC++9.0的具体安装步骤 (2009.02.06补充,解决新版本的PAlib和devkitPro的兼容性问题)
00 – Visual C++ 2008 Express Edition
01 – devkitPro Updater
v. 1-4.7
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=160396
02 – devkitARM
r21
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=124207&release_id=549080
     delete c:devkitProdevkitARM and extract to C:devKitPro
03 – libnds
20071023
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=151608&release_id=549081
     delete all contents inside C:devkitProlibnds and extract in the folder
04 – PAlib Community Update
BETA 080203
http://palib.info/downloads/Beta/PALib_CommunityUpdate_BETA-080203.7z
     extract to C:devkitPro
     080823
     extract and copy PAlib/lib/* to C:devkitProPAlib (fix some bugs)  
05 – libfat-nds
20070127
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=197264

extract the files in the include folder to C:devkitProlibndsinclude and the files in the lib folder to C:devkitProlibndslib
06 – dswifi
0.3.4
http://sourceforge.net/project/showfiles.php?group_id=114505&package_id=199021
     The same method as 05
07 – StartComputerright clickpropertiesadvanced tabenvironnement variables
Add a new user variable
name : PAPATH
Value : C:/devkitPro/PAlib
Add a new system variable
name : DEVKITPRO
value : /c/devkitPro
08 –
     VC8.0 setup
09 – Open VC++ and new a PAlib project, build it, create an .nds file,
     just run it.
        
NDS系统概览
参见我这个blog收藏的相关链接和之前的文章.
还有 这里写得相当不错
blog “猴子灵药”:
当然,可以不用PAlib,那样就直接按devkitPro官方站点的说明来配置IDE。只使用devkitPro只需要做前面叙述的一堆步骤中的00和01即可。 
NDS游戏程序demo
官方开发环境的demo warioworld.com里有。
fans在linux开发的可以看一下http://www.dev-scene.com/NDS/Applications_2007

NeuroSky与Square Enix推出脑波控制的游戏控制器

【2008.10】

用脑波来玩游戏的新玩法似乎已经走出实验室阶段了,这家名为「NeuroSky」的厂商在心智控制领域方面钻研,继上次的脑波侦测器,这次与Square Enix合作,推出可以应用在游戏的脑波控制器,透过额头前的侦测器读取脑波,进而在游戏中来进行动作与操作。这个脑波控制器套件目前只支持Windows平台,会在今年的日本电玩展展示,有了Square Enix的支持,相信用脑波来玩的游戏推出指日可待。

NeuroSky Intro: Neurons that comprise the brain work on electrical impulses known as brainwaves. The last century of neurological research has demonstrated that brainwaves of different wavelengths can be indicative of unique emotional and mental states, like a focused awareness, a meditative state, or drowsiness. Brainwaves have been used in medical research and therapy for years. NeuroSky is introducing it to the consumer world.

NeuroSky Inc. has developed a non-invasive, dry, bio-sensor family of products that capture the electrical waves generated by neurological activity and eye movements and translate mental state information into digital signals for simple Brain-Computer Interfaces (BCI). Our wearable technology unlocks worlds of new applications in consumer electronics, health, wellness, safety, education, training, market research and a host of many more.

sanicle注: 最另人兴奋的领域已经逐渐成熟和深入,电子系统和生命系统的融合正在一步一步的打开我们的梦想, 从Meet Gordon,Blue Brain,ThinkGear-EM™..我们看到了崭新的领域, 人类对自身的改造和扩展似乎不会是非常遥远的梦想.

低功耗再创奇迹:采用树木为无线电网络供电,树木遭殃

【2008.10】
美国林务局利用由各种自动化工作站构成的网络来跟踪气候条件,特别是在火灾季节。然而,这种太阳能供电的遥控网络需要大片的森林空地,以便阳光能够到达太阳能采集板。
与此同时,美国林务局官员希望他们能够在更大的树木上安装传感器。
目前,研究人员表示,通过利用树木与地面之间的电压差,新的超低功耗传感器能够从几乎任何树木上发射传感器数据。该方法还不必清扫森林植被来接收太阳能。
“我们认为,通过在每英亩仅仅4颗树上安装无线电传感器,我们能够提供更佳的火灾预测建模,更早的报警,以及较之于目前在任何森林中可用的更好的局部气候数据,”麻省理工学院的Andreas Mershin教授说。

 

44615_081009195856

 

 

MIT研究人员还预测,树木提供的电力将最终对其它类型的环境监测有用,如观测加拿大森林边界的长期膨胀扩张趋势。MIT科学家试图确定为什么树木有着不同于地面的电势。在排除了若干其它可能性之后,如电磁辐射,他们从19世纪的研究中发现了其原理:pH值的差异能够产生电势。“正是树木内部与栽培树木的土壤的pH值之间的不平衡产生了一个电压,”Mershin表示,“对于每一步的pH失配来说,你获得大约59毫伏的电压差。”Mershin透露说,树木和周围土壤之间存在电势差的重要性在于,树木本身的新陈代谢维持该电势;不论是白天或是黑夜,秋天和春天,夏天和冬天,下雨或出太阳。“因为树木必须在它的内部具有一定浓度的不断新陈代谢以及执行其它生物功能的离子,树木本身积极的调节它自己的pH值。因此,不论你把树栽培在具有什么pH值的土壤中,它均将努力地采用它的新陈代谢能量来保持它自己的pH值恒定,”Mershin说道。

 

44615_081009195914

 

 

其电势是微弱的,但是,它持续维持该电势的能力意味着它能被可靠地用于连续地给电池或电容充电。这个电池或电容接下来可以被用于每天给一个无线电传感器节点供电四次,以发送数据。通过在安装于树木上的各个节点之间实现网状网,研究人员计划把传感器数据从一个节点传输至另一个节点,直至它抵达一个地区的气象站。该气象站然后把来自各个树的不同的传感器读数中继至中央火灾预测计算机。MIT 最近成立了一家称为Voltree Power的公司,Mershin是它的科学家顾问,以利用它在树电(tree power)上的发现。MIT高级研究人员Christopher Love担任Voltree公司的研发副总裁。Mershin、Love以及MIT生物医疗工程中心总监Shuguang Zhang一道,已经能够把最初的毫伏级电势提升至超过1伏,足以为电池充电,为射频设备供电,并把各个传感器的输出广播至一个网状网络。

 

44615_081009195937

 

 

“通过利用专门选择的金属作为电极而地下的盒子由一颗钉子在树的根部穿透树木,Voltree已经完善了它的技术,”Mershin表示。在周围土壤中的第二个电极为无线电传感器节点的电子系统提供接地。天线导线沿着树木盘缠而上,把树上安装的传感器与地下的电子系统连接起来。美国林务局预计2009年春对目前正准备之中的树木供电的无线传感器网络进行现场测试。树木供电研究项目由MagCap Engineering以及MIT研究生研究机会计划提供。

使用linux的小型消费类系统上的常见应用层程序移植

【2008】

1.Web服务器: BOA 与 cgic库

本节内容摘自网络流传的教程,我曾经在s3c2440和ep9315系统亲手移植过BOA,没有遇到问题.
cgic只是需要交叉编译一下,不需要做什么修改和配置.

移植
第一步:从www.boa.org下载Boa源码,将其解压并进入源码目录的src子目录。
# tar  xzf  boa-0.94.13.tar.gz
# cd  boa-0.94.13/src
生成Makefile文件
# ./configure
修改Makefile文件,找到CC=gcc和CPP=gcc -E,分别将其改为交叉编译器安装的路径CC=某路径下arm-linux-gcc和CPP=某路径下arm-linux-gcc -E并保存退出。
然后运行make进行编译,得到可执行程序boa
# make
# 某路径下arm-linux-strip boa

第二步:Boa的配置。
Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf。在Boa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。
1.    Group nogroup修改成Group 0,由于在/etc/group文件中没有nogroup组,所以设成0
另外在/etc/passwd中有nobody用户,所以User nobody不用修改。
2.    ScriptAlias /cgi-bin/  /usr/lib/cgi-bin/ 修改成 ScriptAlias /cgi-bin/  /var/www/cgi-bin/
其它默认设置即可。
还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(可以将主机/usr /share/doc/HTML/目录下的index.html文件和img目录复制到/var/www目录下),创建CGI脚本所在目录/var /www/cgi-bin,将cgi的脚本存放在该目录下。另外还要将mime.types文件复制/etc目录下,通常可以从linux主机的/etc 目录下直接复制即可。

第三步:测试
1.静态HTML网页
在目标板上运行boa程序,将主机与目标机的ip设成同一网段,然后打开任一个浏览器(linux或window下都可),输入目标板的ip地址(http://10.10.10.2)即可打开/var/www/index.html网页
2.CGI脚本测试
boa源码中有cgi-bin测试脚本(examples/cgi-test.cgi),但由于它不是在我们目标平台下编译的,所以不能将它复制到/var/www/cgi-bin目录下进行测试。
下面是一个简单的hello, world!程序,代码如下:
#include <stdio.h>
void main(){
printf(“Content-type: text/htmlnn”);
printf(“<html>n”);
printf(“<head><title>CGI Output</title></head>n”);
printf(“<body>n”);
printf(“<hl>Hello, world.</hl>n”);
printf(“<body>n”);
printf(“</html>n”);
exit(0);
}

Boa移植时常出现的问题
1.    当运行boa程序时出现错误,如下:
# ./boa
[27/Nov/1990:13:22:25 + 0000]boa.c:266.icky Linux kernel bug!:No such file
将 User 0修改成 User nobody
2.    打开网页时,网页中的图片无法显示
就将存放图片的子目录/var/www/images修改成/var/www/img
3.    在测试cgi脚本时,当在浏览器地址中输入“http//10.10.10.2/cgi-bin/helloworld.cgi”时,浏览输出下述错误:
502 Bad Gateway
The CGI was not CGI/1.1 compliant
(sanicle注:此种错误在使用BOA时十分常见,原因基本都是自己写的cgi程序的输入输出问题)
在目标板的调试终端中输出下述错误:
……cgi_header:unable to find LFIF
上述错误是在boa原码中的cgi_header .c文件中的process_cgi_header函数产生,如下:
buf = req->header_line;
c = strstr(buf, “nrn”);
if (c == NULL) {
c = strstr(buf, “nn”);
if (c == NULL) {
log_error_time();
fputs(“cgi_header: unable to find LFLFn”, stderr);  //出错信息
#ifdef FASCIST_LOGGING
log_error_time();
fprintf(stderr, “”%s”n”, buf);
#endif
send_r_bad_gateway(req);
return 0;
}
}
我们可以定义FASCIST_LOGGING,使产生该错误时将buf内容打印出来,结果如下:
……cgi_header:unable to find LFIF
Content-type: text/html
<html>
<head><title>CGI Output</title></head>
<body>
<hl>Hello, world.</hl>
<body>
</html>
原来buf中的内容就是helloworld.c中输出的内容,查看输出结果,再看process_cgi_header函数中的语句:c = strstr(buf, “nn”),很明显buf中没有两个连续的换行符”nn”,所以是helloworld.c文件中的语句:printf(“Content- type: text/htmlnn”);错写成了printf(“Content-type: text/htmln”);
上述行通过标 准输出将字符串″Contenttype:text/plainnn″传送给Web服务器。它是一个MIME头信息,告诉Web服务器随后的输出是以纯ASCII文本的形式。在这个头信息中有两个新行符,这是因为Web服务器需要在实际的文本信息开始之前先看见一个空行。

WEB应用开发
CGIC库的移植
从CGIC的主站点http://www.boutell.com/cgic/上下载源码,将其解压并进入源码目录。
# tar  –zxvf  cgic.tar.gz
# cd  cgic205
修改Makefile文件,同样是改为使用交叉编译。
然后输入make进行编译,可以将生成的capture和cgictest.cgi文件复制到目标板目录/var/www/cgi-bin/下,以测试正确性。

2.数据库: sqlite (结合web服务器,小型嵌入式设备也可以做各种BS结构的应用和web服务)

网上同样有教程,我就不再转载了,我在ep9315上的linux2.4.21和s3c2440上的2.6.14都曾用过sqlite3,这里我直接把移植好的一个版本提供过来(sqlite3.3.14).

下载 sqlite3-arm-linux (扩展名改成z01,和其他压缩包放在一起解压) sqlite3-arm-linux
3.GUI: MiniGUI QT

涉及商业使用中的文档,暂略,等有适合放出的再放吧.

4.USB摄象头获取视频并由以太网传出: 驱动spca5xx 视频服务器servfox 视频客户端spcaview

我曾经在各种系统上(如s3c2410,ep9315,rm9200等)尝试使用常见的301p摄象头,用spca这些东西感觉很不错,移植容易,基本也就是交叉编译一下,作者是一个和蔼可亲的法国大胡子老爷爷.这一堆东西具体可以看这里:
http://mxhaard.free.fr/embedded.html (我刚才上不去..不知道是我的网络人品还是那个站人品了..汗)

我07年的时候对这些还是蛮有兴趣的,但可惜的是经常使用的Video4Linux相关的东西,由于时间安排,我还没有详细研究.
spcaview在fifth的努力下可以在windows使用,代码简明易懂,以下是fifth的blog中的相关内容:
http://blog.chinaunix.net/u/27015/showart_223753.html

我曾经用过的ARM系统MCU厂商列表

【2008】

以下是我曾经接触过的一些板子,简单总结对比一下,供大家参考. 现在这些系统标板在我们大陆市场上很容易买到,ic的货源也相对充足.

 厂商 当前主要型号 特点 官方资讯站点
 Cirrus Logic  EP93xx  资料全,有2D显示加速;但功耗往往都稍大,不适合做手持设备,适合做定点应用.  http://arm.cirrus.com/
 Samsung  S3C244x S3C64xx  起家早,质量较差,但功能迎合大众市场,适合普通消费类电子产品.  http://www.samsung.com/global/business/semiconductor /products/mobilesoc /Products_ApplicationProcessor_developmenttool.html
 Atmel  RM92xx  运行稳定,功耗控制优秀,军工级方案首选;性价比较高.  http://www.atmel.com/products/at91/default.asp
 Freescale  Mx31  高端pmp的典型方案  http://www.freescale.com/webapp/sps/site/taxonomy.jsp?nodeId=0162468rH31143
 Marvell  PXA27x PXA3xx  Intel扔掉的东西,给人感觉很一般,成本相对较高.  http://www.marvell.com/products/cellular /applications.jsp
 NXP  LPC291x  标板带有CAN和LIN,适合工业和汽车电子应用.  http://www.nxp.com/#/homepage/cb=[t=p,p=/50809/53962]|pp=[t=pfp,i=53962]

iDSL入手,开始解剖

【2008】

买了DS,我将对这个系统进行全面的研究解析学习,从硬件改造到系统内核,然后是游戏和工具软件开发,所以专门在blog里面建立了这样一个板块.说实话,这确实有点过时,但是作为一个经典的业内系统案例,我还是决定研究一下.小DS要拆开比较费劲,还要买个三角螺丝刀.解析的第一步自然是了解硬件系统结构,所以这里我将其他站点的一些资料转来(本文的后半部分),结合pcb阅读一下.详细的原理图我正在寻找,但是尚没有找到,所以也只是粗看,具体的问题碰到以后再做具体分析吧.

附图:我买的iDSL现场新鲜解剖

44615_080924172129

图1.拆开来先看到的主板反面

44615_080924172045

图2.翻过来看到了主板正面

cpu在屏幕的后面,我没拔掉屏幕拍照,直接转个别的站的日版nds拆机的相关部分吧(可能会有细节差异,这里仅是示意一下)。

44615_081105203613

图3.NDS的cpu照片(来自日経BP社)

实际上DS是一个由不带mmu的一片ARM946和一片ARM7构建的系统,初看起来挺像普通的手机或pmp方案.但和现在的多数类似的消费类电子产品相比,他并没有安排多线操作系统,从网上找来的以往的反向工程研究资料来看,他的构建比我想象的要简单很多.我昨天晚上大体阅读了一下网上流传的libnds的代码,发现操作果然是全裸式的,这也让喜欢做底层的我感觉十分亲切.可以直接和registers打交道,总归要比结合mmu的系统简单得多.我想,如果当年我不是做三星的开发板的话,大概在DS这种东西上尝试写个操作系统要更有趣一些.

以往已经有人把uClinux2.6跑在了DS上,可惜那群人的网站不知道为什么挂掉了(dslinux.org),联系不上他们(我都跑去linux.com的论坛上灌水找了),我也搞不清楚他们最开始的时候具体是怎么入手寻找切入点的,毕竟如果什么资料都没有的话(Nintendo并没有开放研发资料),这个porting还是很有难度的.今天我找到了NDS wiki这个站点,上面有不少关键有用的资料,我想这些基础研究应该是在uClinux移植之前完成的,大概的有了点头绪.

我还有些数学书没看完(最近在学些东西),今天先写到这里.

另外,偶要感谢动物之森联谊会和其他DS群组里的朋友给偶的帮助,谢谢大家.

—-以下内容供参考———————————————-

sanicle注:idsl/ndsl,ids/nds是有细节差异的,部分配件不太一样,现在网络上的很多详细资料是针对日版nds的(日版nds的主板上写着C/NTR-CPU-01,而我买的idsl主板上的title是C/USG-CPU-01)。

《日经电子》拆卸小组的DS剖析(针对日版NDS)
http://china.nikkeibp.co.jp/china/news/digi/200411/digi200411260113.html
http://techon.nikkeibp.co.jp/members/NEWS/20041123/106554/

NDS硬件系统非官方解析(针对日版NDS)
http://www.bottledlight.com/ds/index.php/Main/Hardware

英国诞生有生物脑的机器人

【2008.8】

据国外媒体报道,英国科学家日前揭开全球首个有生物脑的机器人神秘面纱,这个机器人名为“米特 咯噔”(Meet Gordon),也许是世界上第一个专由活大脑组织控制的机器人。

“ 戈登”的原始大脑灰质由30万个经培育的老鼠神经细胞缝合而成,由英国雷丁大学科学家设计,他们于8月13日揭开这个由神经细胞驱动的机器的神秘面纱。该 小组成员在接受法新社采访时表示,他们开创性试验将探索自然灵性和人工智能之间正在消失的界限,同时揭示记忆和认知最基本的构造单元。

雷 丁大学教授、“戈登”机器人主要设计者之一的凯文·瓦维克(Kevin Warwick)说:“我们的目的是搞清楚记忆如何存储于生物大脑之中。”据他介绍,观察神经细胞在发出电脉冲时如何粘合成一个网络,还有助于科学家找到 攻击大脑的神经变性疾病的治疗方法,比如阿尔茨海默氏病和帕金森氏综合症。

瓦维克说:“如果我们可以对人类大脑模型中发 生情况的基本原理有所了解,这可能会在医学上具有巨大的益处。”“戈登”外表看上去有点像好莱坞卖座动画大片《机器人总动员》中的主人公,其大脑由5万至 10万个活跃的神经细胞构成。研究人员从老鼠胚胎中取出专用神经细胞并用酶清洗分离后,将其放到富含营养物的培养基中,培养基被置于长宽均为8厘米、由 60个电极组成的列阵上。

这种“多电极列阵”(MEA)起到连接活组织和机器之间的作用,大脑发出电脉冲,驱动机器人的车轮运转,接收对这一环境做出反应的感应器发出的脉冲。因为大脑是活组织,它必须放在一个特制的温控装置内——它经由无线电连接同其“身体”沟通。

这 种机器人不需要人或者电脑进行额外控制。从一开始,神经元便紧张地忙碌着。瓦维克说:“大约24小时内,它们彼此伸出触毛,建立链接。一周之内,我们便可 以看到一些自发放电以及类似大脑的活动,与普通老鼠或人类的大脑活动类似”。虽然没有额外的刺激,但这个大脑几个月内不会出现萎缩或者死亡。瓦维克解释 说:“现在,我们正寻找最理想的方式教会它以确定的方式活动。”

从一定程度上说,戈登是自学成才的机器人。举个例子来说,撞墙的时候,它能够在传感器帮助下获得电刺激。随着遭遇类似情况,它逐渐养成学习的习惯。为了帮助戈登完成这一过程,研究人员利用不同的化学物质增强或抑制在特殊活动中活跃的神经通路。

戈登实际上拥有多重性格,因为科学家可以为它植入几个多电极阵列大脑。瓦维克说:“非常有趣的是,大脑之间也存在差异。这一个比较活跃,另一个则并不会做我们希望的事情。”

出 于伦理和道德上的考虑,雷丁大学的研究人员或者世界其它实验室不可能短期内在同样的实验中使用人类神经元。幸运的是,老鼠大脑并不是一个难当大任的“替身 ”。啮齿类动物和人类虽然在智力方面存在很大差异,但据沃里克推测,这种差异是由数量导致的,而不是质量。老鼠大脑由大约100万个神经元组成,这种特殊 细胞通过被称之为“神经传送体”的化学物质在大脑各部分之间传递信息。相比之下,人类大脑则拥有1000亿个神经元。

火影op-bluebird歌词

op timestamp:

[00:01.36]飛翔(はばだ)いたら 要是振翅高飞
[00:04.78]戻(もど)らないと言(い)って 我说过不会再回来
[00:07.36]目指(めざ)したのは 目标就是
[00:10.74]苍(あお)い 苍(あお)い あの空(そら) 蔚蓝的蔚蓝的天空
[00:20.30]“悲(かな)しみ”はまだ覚(おぼ)えられず 还没记住那份悲伤
[00:24.31]“切(せつ)なさ”は今(いま)つかみはじめた 就开始了解到了苦闷
[00:26.99]あなたへと抱(りだ )く  この感情(がんじょう)も 怀着对你的这份感情
[00:29.86]今(いま)“言葉 (こどば)”に変(か)わっていく 现在化作千言万语
[00:33.01]未知(みち)なる世界(せかい)の 游迷(ゆめ)から目覚(めざ)めて 从未知世界的梦中醒来
[00:40.27]この羽根(はね)を広(ひろ)げ 飛 (と)び立(た)つ 展开翅膀 飞向天空
[00:45.50]飛翔(はばだ)いたら 要是振翅高飞
[00:48.59]戻(もど)らないと言(い)って 我说过不会再回来
[00:51.52]目指(めざ)したのは 目标就是
[00:54.60]苍(あお)い 苍(あお)い あの空(そら) 蔚蓝的蔚蓝的天空
[00:58.74]突(つ)き抜(ぬ)けたら 如果能够穿越
[01:01.50]みつかると知(し)って 我知道能够找到
[01:04.68]振(ふ)り切(き)るほど 像竭力争脱那样的
[01:06.83]苍(あお)い 苍(あお)い あの空(そら) 向那蔚蓝的天空飞去
[01:10.42]苍(あお)い 苍(あお)い あの空(そら) 向那蔚蓝的天空飞去
[01:13.64]苍(あお)い 苍(あお)い あの空(そら) 向那蔚蓝的天空飞去

完整版:
见 我的生活娱乐blog http://lmnsky.blog.163.com/blog/static/3236928720089534937316/

又看到有人引用了那段难懂的C代码,简单说两句

#include <stdio.h>
main(t,_,a)
char *a;
{
return!0<t?t<3?main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,”%s %d %dn”):9:16:t<0?t<-72?main(_,t,
“@n’+,#’/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#
;#q#n+,/+k#;*+,/’r :’d*’3,}{w+K w’K:’+}e#’;dq#’l
q#’+d’K#!/+k#;q#’r}eKK#}w’r}eKK{nl]’/#;#q#n’){)#}w’){){nl]’/+#n’;d}rw’ i;#
){nl]!/n{n#’; r{#w’r nc{nl]’/#{l,+’K {rw’ iK{;[{nl]’/w#q#n’wk nw’
iwk{KK{nl]!/w{%’l##w#’ i; :{nl]’/*{q#’ld;r’}{nlwb!/*de}’c
;;{nl’-{}rw]’/+,}##’*}#nc,’,#nw]’/+kd’+e}+;#’rdq#w! nr’/ ‘) }+}{rl#'{n’ ‘)#
}’+}##(!!/”)
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a==’/’)+t,_,a+1)
:0<t?main(2,2,”%s”):*a==’/’||main(0,main(-61,*a,
“!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m .vpbks,fxntdCeghiry”),a+1);
}

这段C代码的阅读可以考验读者作为地球人的毅力哈哈,是以前世界最难懂C代码比赛的一段代码~当时我看了好久才隐约明白过来~ 最近看到有博友发了这个,简单分析两句~
这段代码之所以难以理解主要是因为 1)尽可能的利用递归,2)分明就是只有putchar输出字符而已,却故意把字符串搞成很难阅读,3)把逻辑分支都搞成问号冒号的形式。。。分解的第一步自然是把绕眼的字符串先砍掉。

去掉双引号的部分先分析逻辑
双引号故意乱眼的部分是:
“@n’+,#’/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#
;#q#n+,/+k#;*+,/’r :’d*’3,}{w+K w’K:’+}e#’;dq#’l
q#’+d’K#!/+k#;q#’r}eKK#}w’r}eKK{nl]’/#;#q#n’){)#}w’){){nl]’/+#n’;d}rw’ i;#
){nl]!/n{n#’; r{#w’r nc{nl]’/#{l,+’K {rw’ iK{;[{nl]’/w#q#n’wk nw’
iwk{KK{nl]!/w{%’l##w#’ i; :{nl]’/*{q#’ld;r’}{nlwb!/*de}’c
;;{nl’-{}rw]’/+,}##’*}#nc,’,#nw]’/+kd’+e}+;#’rdq#w! nr’/ ‘) }+}{rl#'{n’ ‘)#
}’+}##(!!/”

“!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m .vpbks,fxntdCeghiry”

去掉以后,把问号冒号和递归逻辑展开,这里比较麻烦,因为实在套了不少。
但先不用展,我们也能分析一些东西。我们知道,要控制递归结束,嵌套执行的次数运气好的话会在程序里找到常数。暂且假设作者没有变态到连这个控制用的数都隐藏起来了,试着从表面查找它。程序中大小比较只有“<”,查找所有的“<”,发现变量和常数比较的时候出现的正数只有13,又因为程序中没有出现递减1,但有很多递加1,可以感觉到,貌似是循环13或12次输出什么东西,而具体输出的东西自然应该和那两段乱人眼的引号之间的字符串有关系,因为连续重复的字符貌似没太有,所以可以暂时先试着排除作者要输出某种字符组成的图形的可能性,往后再展开程序具体分析那两段怎么变成正常的地球语言~ 有空的朋友可以具体分析下哈~ 不过感觉这个过程比较需要耐心~

运行结果是:

On the first day of Christmas my true love gave to me
a partridge in a pear tree.

On the second day of Christmas my true love gave to me
two turtle doves
and a partridge in a pear tree.

On the third day of Christmas my true love gave to me
three french hens, two turtle doves
and a partridge in a pear tree.

On the fourth day of Christmas my true love gave to me
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the fifth day of Christmas my true love gave to me
five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the sixth day of Christmas my true love gave to me
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the seventh day of Christmas my true love gave to me
seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the eigth day of Christmas my true love gave to me
eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the ninth day of Christmas my true love gave to me
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the tenth day of Christmas my true love gave to me
ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the eleventh day of Christmas my true love gave to me
eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

On the twelfth day of Christmas my true love gave to me
twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.

有了结果,规则基本可以看见了,再倒回去分析可能会容易一些。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

刚才我在网上搜了一下这段文字,发现有人把这段程序解析成地球版本了已经~
以下程序来自这里

///////////////////////////////////////////////////////////////////////
//"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m .vpbks,fxntdCeghiry";
// !-------------------------------!
///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////
//
// @n'+,#'
// on the
//---------------------------------------------------------------------
// /*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/
//  first second third fourth fifth sixth seventh eighth ninth tenth eleventh twelfth
//---------------------------------------------------------------------
//  'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!
//   day of Christmas my true love gave to me
//---------------------------------------------------------------------
// /+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!
//  twelve drummers drumming,  eleven pipers piping,  ten lords a-leaping,
//---------------------------------------------------------------------
// /n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!
//  nine ladies dancing,  eight maids a-milking,  seven swans a-swimming,
//---------------------------------------------------------------------
// /w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlw]!
//  six geese a-laying,  five gold rings,
//---------------------------------------------------------------------
// /*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!
//  four calling birds,  three french hens,  two turtle doves
//---------------------------------------------------------------------
//   nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/
//  and  a partridge in a pear tree.
//
///////////////////////////////////////////////////////////////////////

#include <stdio.h>

#ifdef __TURBOC__
#include <conio.h>
#endif

#define END_DAY     12
#define START_DAY    1

#if !(START_DAY>0&&END_DAY<=12&&START_DAY<=END_DAY)
    #error "error! START_DAY or END_DAY is not in range!"
#endif

const int START_DELIMITERS   =  0;
const int NUMBERS_DELIMITERS = 13;
const int GIFTS_DELIMITERS   = 13;

const char * decodeTbl=
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m .vpbks,fxntdCeghiry";
const char * cryptograph=
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l 
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# 
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' 
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlw]!/*de}'c 
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# 
}'+}##(!!/";

void decodeAndPrint(int d)
{
    const char *pc = cryptograph;

    while (d < 0)
    {
        if (*pc++ == '/')
        {
            d++;
        }
    }

    while (*pc != '/')
    {
        const char *p = decodeTbl;
        while (*p != *pc) p++;
        putchar(p[31]);
        pc++;
    }
}

void start()
{
    decodeAndPrint( - START_DELIMITERS );
}

void number(int n)
{
    decodeAndPrint( - (START_DELIMITERS+n) );
}

void dayToMe()
{
    decodeAndPrint( - (START_DELIMITERS+NUMBERS_DELIMITERS) );
}

void gift(int g)
{
    decodeAndPrint( g - (START_DELIMITERS+NUMBERS_DELIMITERS+GIFTS_DELIMITERS) );
}

void gifts(int g, int n)
{
    if (g < n)
        gifts(g + 1, n);
    if (g > 0)
        gift(g);
}

void printBible(int n)
{
#ifdef __TURBOC__
    static int temp = 0;
    if(++temp%5==0)
        getch();
#endif
    start();
    number(n);
    dayToMe();
    gifts(1, n);
    if( n < END_DAY)
        printBible(n + 1);
}

void main()
{
#ifdef __TURBOC__
    clrscr();
#endif
    printBible(START_DAY);
#ifdef __TURBOC__
    getch();
#endif
}

研究人员力图打开潘多拉的盒子,模拟大脑和地球的设计面临重重挑战

【2008.6】

根据Blue Brain Project(蓝脑计划)咨询理事会主席Robert Bishop的介绍,对人脑以及地球的气候进行仿真是科学上两个最重要的挑战。

瑞士Ecole Polytechnique的Fdrale de Lausanne以及IBM公司正在就大脑的仿真进行合作,这是一个起始于两年前的项目。NEC的Earth Simulator是后一个项目的主要构成部分。

“ 蓝脑计划为期10年,目前尚处于1.5阶段,仍然有很长的路要走,”Bishop这个位于日内瓦的咨询公司的主席在一次研讨会上进行的采访中告诉EE Times电子工程专辑,“它需要6至7个步骤,从哺乳动物链条上的耗子、老鼠、猫向灵长类动物以及最终人类的方向深入研究,每一个步骤要解决的问题会越 来越复杂。”

“如果我们能够精确地掌握人脑的结构和功能,那就相当可能最终在我们的半导体设计中模仿人脑,”Bishop补充说,“如果我们能够掌握地球的所有细节的构造和功能,我们就最终能够预测在自然灾害发生以前对它进行预测。”

Bishop预测,从现在开始10年内,设计工程师在针对特殊应用的集成电路(ASIC)设计中将分别考虑我们积累的关于人脑和地球的知识。这样的ASIC将被结合进更加广泛的系统,涉及标量、向量、现场可编程门阵列以及图形处理单元,以解决手头上的全盘工作,他说道。

要仿真的人脑神经细胞有1000亿并且神经突触超过了100万亿。“我们尚未对所有这些神经构建完美的数学模型,”Bishop表示,“尽管在一个小型且重要的构建模块——皮层柱上进行了很好的研究。”

对地球的仿真也是同样令人畏惧的任务。“无数的物质和材料混合在复杂的结构以及过程之中,构造层的运动、动态磁场、地球自转和公转、空间的天气以及本地的天气,这一切均会同时改变着地球的运行状态,”他说道。

Bishop表示,研究工作位于科学、仿真和超级计算这个三角形之内。IBM公司安装在加州Lawrence Livermore实验室的BlueGene/L提供478Teraflops的峰值速度。Bishop预计,在2008年底,超级计算机将超越Petaflop的标杆,并且将来的超级计算机将在未来十年突破Exaflop的瓶颈。

大脑和地球的仿真将利用日益增长的计算能力以及软件的进步,Bishop表示,最终产生可以被精确地建模和仿真的新的见识。

与此同时,各国政府和其它机构需要加快先进仿真技术的应用,这位未来学家表示,“大脑仿真器和地球仿真器最终将创建可商用的知识产权,但是,我们在短期内无法指望商业价值的产生。”

从地震想到的廉价应急通信网解决方案和生命探测器的实现

【发表于当年的汶川大地震之后】
sanicle写在前面的话:
首先祝灾区的所有人好运.
我们知道在地震中,互联网(Internet和电话网)和移动通信(手机网和各种AMFM无线电网)的中断带给人们太多不便,保持通信是十分重要的.我们所构建的通信系统或者说计算机系统对于人类社会的作用将会越来越重大,因为当我们每一个人都被部署在一个高效运行的网络上的时候,我们之间的联系能使我们获得更大的能力.在各种计算机系统解决方案中,如果按通信来分,系统无非部署在网络的各个结点,不同的结点有不同类型的计算机系统(一部电话,一台pc,一台服务器,一个voip网关,一个路由,一部手机 etc.).如何使我们的网络尽可能的始终保持运作?
1.适时建立足够健壮的无线互联网 保持应急通信
当地震发生时,光缆和电缆被破坏,有线通信很容易中断;而无线通信因为地面基站也容易被破坏,所以也很容易中断.我们更多的想到如何尽可能的保持无线通信,很容易想到卫星通信,但就我个人体会到的环境来说,个人利用简便设备进行卫星通信基本上还是很少见的.剩下的只有利用我们手里的手机等常用终端了,但是如果基站被毁坏了,我们如何继续和外界保持联系呢?自然会想到短距离p2p无线网.我们可以设计这样一种p2p双工无线网络,当网络覆盖范围最边缘的结点或一些结点能和外界取得联系时,所有网内的其他结点都可以将他们作为桥梁和外界取得联系.可以利用现今手机常见的各种类似wifi蓝牙,wimax的短距离无线通信建立网络,每一个终端都在网络中的所有其他终端上注册(并不绝对,可以设置一定的数量进行分片),任意两终端都可以互相通信,并且,只要有一个终端能和外界保持联系(所谓”外界”可以结合实际情况按不同的范围大小理解,更可以根据实际情况动态的改变网络自身的大小以适应通信需求),所有其他终端都可以借由这个终端(将其作为网关)和外界取得联系(暂不考虑性能问题和具体动态分片的复杂性),另外做专用的抗破坏能力强的这种网络和外界联系的基站,在容易发生破坏的位置专门设立.一旦建立这样的应急网络,即便附近的基站全部毁坏,密集度相对较高的人群也可以暂时互相通信.再结合GPS,我们可以通过这样的手持终端方便的进行互相定位.这种以尽可能保持通信为第一目标设计的p2p网络模型在Internet中已有实现的先驱,这里我不方便具体点名~大家也应该想到是什么了~~这种网络虽然对结点性能要求较高(因为协议势必比较复杂),但其健壮性极强,其最直观的理解就是,每个结点都尽可能的和附近的结点手拉手,并且始终尽自身的最大努力为别的终端服务.如果将其开发成一个基于短距离无线物理层的网络协议,在人口密集区发生地震或战争等灾害时,势必会成为我们强有力的救援导航工具.
2.生命探测器的实现
下面简单介绍一下现在灾区常用的生命探测仪的实现(日本是地震超级多发国家,他们肯定不缺这种东西,而我们大陆的行业圈里很少有听说哪个公司做这个开发的,而实际上多储备一些这种大天灾后救命的东西是必要的…生命探测仪做得成熟的话,应该可以区分老鼠等小动物和人的生命反映区别,这里就不再多写),本来想自己写一个,后来发现网上有文介绍,直接转来.以下内容为转载:

地震几乎将汶川夷为平地,到处是残墙断瓦,大部分人在地震中来不急逃生被压在废墟之下。如何快速的救援被掩埋在废墟下奄奄一息的伤员,成为救灾的焦点,但也是难点。除大型机械的缺乏,随着时间的推移,生命迹象也越来越弱。消防队员为了及时发现废墟下的伤员,广泛使用一种高科技救生仪——专用于搜救灾难中被困人员的”生命探测仪”。 通过这种探测仪,可以探测人力无法到达的区域是否还有人员被困,从而实施援救。在分秒必争的营救工作中,生命侦测仪可以帮助搜救人员迅速准确安全地发现仍然存活的遇险者, 从而为营救工作争取到宝贵的时间。

生命侦测仪可以即时移动侦测, 可以透过混凝土,砖, 雪, 冰和泥浆,专用于震灾、雪灾、泥石流等大型自然灾害。生命侦测仪移动探测系统是一个由以下主要部件组成的传感器,它包括一个发送超宽频信号的发送器、一个侦测接收返回信号的接收器、一台用于读入接收器的信号并进行算法处理的电脑,传感器包含了可编程的固件。传感器产生的信号通过无线传输传送给掌上电脑进行显示。传感器和控制器有各自相互独立的电源。原文地址:

http://www.industrialcontrols.eetchina.com/ART_8800523153_2500007_NT_8eaca3d9.HTM?click_from=0,0,2007-12-21,EETCOL,ARTICLE_ALERT

 

简单的说生命侦测仪实际上是一个呼吸和运动探测器(sanicle补充:当然还应结合热源探测,红外)。它的工作原理是:雷达信号发送器连续发射电磁信号,对一定空间进行扫描.,接收器不断接收反射信号并对返回信号进行算法处理。如果被探测者保持静止,返回信号是相同的。如果目标在动,则信号有差异。通过对不同时间段接受的信号进行比较等算法处理,就可以判断目标是否在动。生命侦测仪是通过测试被探测者的呼吸运动或者移动来工作的。由于呼吸的频率较低,一般每秒1到2次,就可以把呼吸运动和其他较高频率的运动区分开来。相比其他救生系统除了无法穿透障碍物侦测移动外,大部分的系统,例如摄像系统,侦测的范围非常有限并且只有在移动的遇险者进入摄像机镜头或传感器的视野后才能报警。基于音频的侦测系统大大受限于距离,障碍物,残垣以及遇险者是否还强壮和清醒到能够发出声音。

HP新发现改写教科书,传说中的“忆阻器”得到证实

【2008.5】

惠普实验室(HP Labs)的资深院士R. Stanley Williams不久前成功地证实了有关”忆阻器(memristor)”的学说──所谓的忆阻器是指电子电路中除了电阻、电容与电感之外的第四种被动元素,早在1971年就由美国加州柏克莱大学教授Leon Chua所提出,不过当时仅是初步发现,直到日前才由HP正式发表。而此一成果也意味着相关教科书必须重新改写。

 

忆阻器概念的创始人Chua表示:“我的处境跟1869年发明化学元素周期表的俄罗斯化学家Dmitri Mendeleev很类似;Mendeleev当时假设该周期表上有许多失落的元素,而现在所有的化学元素都已经被发现了。同样的,来自HP Labs的Stanley Williams发现失落的电路元素──忆阻器。”

 

Chua当时是以数学推论电子电路在电阻、电容与电感之外还有第四种元素;他将之命名为忆阻器的缘故,是因为该元素会透过电阻的改变“记忆”电流的变化。而现在HP则宣称发现了首个忆阻器的实例──它是由一片双层的二氧化钛(bi-level titanium dioxide)薄膜所形成,当电流通过时,其电阻值就会改变。

 

“此一新发现的电路元素可解决今日电路学上的许多问题,因为当其尺寸缩小,其性能也会提升。”Chua表示:“忆阻器可实现非常小的纳米组件,且不会产生现今将晶体管尺寸缩小的过热问题。”

 

HP已在其超高密度纵横式交换器(crossbar switches)中测试过以上元素,该交换器使用纳米线(nanowires)达到在单芯片中储存100Gbits容量资料的记录;而目前最高密度的闪存芯片则可储存16Gbits的资料。

 

“我们花了多年时间寻找应用在超高密度纳米线纵横式交换器中的最佳材料,以实现在一平方公分的面积内容纳1,000亿个纵横闩(crossbars)的目标。后来我们发现,最理想的材料就是忆阻器。”Williams表示。

 

Williams除了是忆阻器以二氧化钛为基础的材料的主要发明人之外,亦是HP成立了12年的信息与量子系统实验室(Information and Quantum Systems Lab)的创始主管;他所率领的研究团队并将该材料的配方最佳化。

 

Chua则表示,在过去的37年来,忆阻器所遇到的障碍是电子电路学说中一个普遍的错误想法──即被动电路中,有关电压与电荷之间的基础关系。研究人员认为,电压与电荷间的基础关系,应是在电压的变化值,或称电通量(flux),与电荷之间;而这也是让HP能研发出电阻器的关键原因。

 

“电子理论学者在这些年来都使用了错误的变量比对──即电压与电荷;事实上,电子理论所遗漏的一个部份,是有关电通量与电荷之间的变量比对。“Chua表示,以上的错误观念与亚里斯多德运动定律(Aristotle’s Law of Motion)的谬误十分类似,该定律认为力与速度(velocity velocity)应该是成正比的,但两千年之后牛顿(Newton)指出其错误,表示亚里斯多德用了不正确的变量,力应该是与加速度(acceleration)成正比;加速度是速度的变化值。

 

Chua指出,以上的例子与今日电子电路学中的错误观念如出一辙,但所有的教科书给的信息都使用了错误的变量,即电压与电荷;事实上,电压与电荷间的基础关系,应该是在电通量与电荷之间才正确。

 

HP曾在多年前邀请Chua前往发表其学说,不过当时并未透露他们正在积极寻找忆阻器;直到最近,Williams才告诉Chua,他已经使用了正确的变量,也就是电通量与电荷,发明了世界上第一个可以运作的忆阻器。

 

忆阻器的运作模式类似一个带着内存的非线性电阻(non-linear resistor),可做为一种尺寸小巧且高能源效率的存储元件。不过Chua与Williams表示,忆阻器是一种新型态的电路元素,可制造出的新组件会是大家无法预料的。

 

Williams与其研究团队所发明的首个忆阻器,是以两层三明治型态的二氧化钛薄膜为基础;做为一种记忆元素,其运作方式是透过耦合该种材料中的原子运动与电子运动,来改变薄膜的原子结构。

 

HP所使用的底层材料,是由钛原子与氧原子组成的对称晶格(lattice),可做为良好的绝缘体;但顶层则掺杂了氧空缺(oxygen vacancies),使其能成为导体(空缺越多导电性越好)。HP在二氧化钛中制造这种氧空缺的秘诀,是使用溅镀沉积法(sputter deposition)产生大量的氧,然后再削减氧气流量产生空缺层。

 

透过在三明治层的上方与下方放置纳米线纵横闩,电荷就会穿越该材料。Williams指出:“我发现忆阻器材料的方法,就是透过研究二氧化钛传感器的运作模式;这让我想到,可以透过移动该材料内的氧空缺来制造忆阻器。”

 

Williams表示,对该组件通电之后,就能推动材料层中的氧空缺到没有氧空缺的地方,因而改变其电阻系数值达1000以上,将忆阻器“开启”;而若将电流逆转,让氧空缺回到原地,就可“关闭”忆阻器。

 

就像Chua所预言的,Williams已经在计划利用HP的纵横闩结构,研发超越一般内存的全新型态组件。“如果我们用快速猛烈的方式来对忆阻器通电,它的运作方式会像是数字组件;但是如果我们用缓慢温和的方式来对其通电,它就会像是模拟组件。”他表示,该团队已经利用其纵横闩结构,设计了一种同时具备数字与模拟功能区块的新型态电路。

 

Williams透露,在模拟功能的那部份,他们希望能创造一种以忆阻器为基础的模拟计算组件,其运作方式类似人脑神经元突触,执行功能控制时会以比较对照的方式来进行,例如判断某样东西的尺寸比另一样东西大或是小。

 

该研发团队尚未建立一个神经元网络,不过相信在其纵横闩的模拟功能部份应用忆阻器,将可对神经元网络有很大助益。

 

HP计划在2008年稍晚公布其忆阻器材料的运作细节,以及该研发团队已经最佳化的、在不同型态电路中的纳米级纵横式交换器架构。“忆阻器不只可做为现有内存组件的替代品,也可望应用在人们从未想象过的各种新型态组件中。”Williams表示。

英雄无敌5人类城堡haven拉丁文背景音乐赏析

下载 Town-Haven(扩展名改为z01,和其他包放在一起解压) Town-Haven

这里的附件就是魔法门之英雄无敌五的人类城堡背景音乐.从初中玩英雄无敌第一部开始,我就十分喜欢这个游戏.后续的几部中,除了第四部因为学业繁忙没有接触,其他的都比较了解.我认为这套游戏是游戏文化中经典之中的经典,其所蕴涵的各种内容可以说是一部魔幻派欧洲中世纪风格的大作,也正是因为这个游戏,让我对古代欧洲文化产生了一定的兴趣.英雄无敌五中的人类城堡音乐很迷人,当然其他英雄无敌中的城堡音乐也有十分动人的,大家可以搜集欣赏.

英雄无敌5的作曲是green street工作室完成的(网址是http://www.greenstreetstudios.net/site.html,看看他们的作品,真是个了不起的工作室),美妙的旋律真是让人心醉.和英雄无敌5中其他城堡不同的是,人类城堡haven的背景音乐是有歌词的,这个歌词我听了几遍,感觉不像是我们现在说的英文,就在网上搜索了一番,没想到真的有人已经找到了这个歌词的出处.

下面是我从网上搜集来的这支曲子中歌词的渊源——莫扎特的《安魂曲》.需要说明的一点是,我听过莫扎特的安魂曲,就在写这篇文之前刚刚又听了一下,英雄无敌5中借鉴歌词的部分和安魂曲中对应的部分的曲调并听不出什么相同,那曲子应该完全是green street工作室的杰作.

以下内容全部是转载

现在来谈谈我听到的人类城堡的背景音乐所唱的内容(拉丁文)

Lacrimosa dies illa, 那些充满悲伤的日子

qua resurget ex favilla 将随着尘埃扬起的时刻远去

judicandus home reus. 有罪的人将得到审判

Huic ergo parce, Deus, 主啊,给他施以您的仁慈吧!

pie Jesu, Jesu Domine! 仁慈的主耶稣基督!

Dona eis, eis requiem! 赐予他们安息!

Amen. 阿门!

前面一段是之前比较舒缓的

后面一段是比较快的

——————————-

(以上是我下午自己反复听了OGG文件后翻译的 以下是晚上的新研究成果)

把自己听出来的结果搜了下 发现…

是Mozart(莫扎特)安魂曲的第六章

下来我把搜到的原文和他们翻译的版本贴出来

《6. Lacrimosa 哀憐頌 》

Lacrimosa dies illa

當那痛哭之日

qua resurget ex favilla

罪人從灰燼中

judicandus homo reus:

復活受審判。

huic ergo parce, Deus.

以慈愛對待他們,哦主。

Pie Jesu, Domine, dona eis requiem.

耶穌慈悲的主,賜他們安息。

Amen.

之后有网友要我听主题和LOADING时的音乐

主题画面和LOADING的时候唱的应该是文件夹里的MAINMENU-THEME,我初步听下来开始是重复”Dies irae, dies illa,solvet saeclum in favilla”两句

意思应该是”这一天,这愤怒的一天,最终将把世界毁灭成灰烬”

用这两句去我上面提到的安魂曲里搜 果然在”《Ⅲ. Sequenz 續抒詠 》

《1. Dies irae 末日經》”部分搜索到了

后面高昂的男女高音应该是末日经的剩余部分

所以完整的应该为”Dies irae, dies illa,

solvet saeclum in favilla,

teste David cum Sybilla.

Quantus tremor est futurus,

quando judex est venturus,

cuncta stricte discussurus”

全文的翻译我就偷懒粘贴那个安魂曲网站的了” 震怒之日,這一日

世界將被燒成灰燼,

正如大衛與西維拉所預言的。

將會有如何可怕的顫慄,

當審判來臨時

深受嚴厲的苛責。 ”

因此 这个游戏里的背景音乐都应该取自莫扎特的《安魂曲》(sanicle注:应该仅是歌词取自安魂曲) 有祈求上帝宽宥死者 在末日审判的时候让死者的灵魂安息之意 而HAVEN作为一个典型的中世纪欧洲风格的城 自然很明显的也属于”Christianity”(基督教文明)的象征 也加入了其中一段歌词 这是所有城市的背景音乐(TOWN THEME)中唯一带有歌词的了吧~

怀旧用dx7的一个踢小球的2D游戏demo

【2007.12】
下载
这个包里面有编译好的小游戏,这个小游戏的VC6代码工程,以及使用到的3dmax模型.
ps.这个demo写得很烂,仅仅是为一篇感怀以往的回忆录存在的 o(^3^)o,,,
最近因为又要离职踏上新的道路,有空整理了一下以往的代码,从在dos时代用TC写的飞机打小球游戏,到初中时候BASIC的猴子打香蕉代码分析,windows9x时代VB5写的日记本,高中的时候用VB6写的数学函数图线绘制,VC6用dx7 api搞的这个小游戏demo,VB6写的ssa字幕时间戳软件,到.net出现后用C#写的聊天室,用j2me结合asp做的类似移动qq的手机聊天软件,用jsp1.0做的初期的3mn.net…等等等等..我在闲暇时写的pc上跑的软件攒起来也算有不少,主要以windows上的代码为主.从一堆堆的代码中,我回忆着各种程序陪我度过的美好时光,和现今在社会与学校混比起来,往日平静的学习和研究生活感觉要好得多,我的人生 从小时候刚接触计算机到从事开发工作 因为那些带着感情的小程序而充实幸福起来~
给我感触最深的要算是几个带着不少感情的小程序,可惜这几个小程序都写得很烂哈哈 XD, 这个gamedemo是其中之一.记得当时我读了一本蛮厚的Andre Lamothe的书,具体的名字不太记得了,墨绿色皮的,讲使用directx的2d游戏编程.当时我十分喜欢游戏编程,构建一个游戏的时空很能满足我的创造欲.这个小程序的编写没有使用C++,而是以C为主,我记得那本书中的demo程序也是用C的好象..其实一直以来我更喜欢用C,大概是因为和硬件方面的控制接触多了,用C++总有一种摸不到cpu的感觉,而用C在熟悉的cpu体系上不需要编译就能知道对应的汇编大概是什么样子,都怪我对C++造化不够,其实到现在为止我都不熟悉STL,让我用C++我完全不会考虑到模板,就如同用早期的java写程序一样的感觉.之所以对这个小demo很有感情,主要是因为所有的美工都是我自己做的,为了画那两个小人,我还专门研究了一番3dmax哈哈,真是很麻烦的记忆哈,当时本来以为不看书也可以很快上手这种大众化的软件,后来折腾了好几天觉得麻烦,还是买了一本3dmax的参考书 =_=bb ..看来尽管有点经验,一些想法真正实施的时候,事情往往都不像想象的那么简单.
这个小demo实话说写得很烂,现在看来,代码罗列严重,复用性差,技术含量很低.真想不到那个时候的自己居然还写出了如此烂的程序,我本以为高中以后我的编码水平没有什么进步的,现在回头看一些代码才发现,大学以后的进步还是有的,哈.现在看来,不管是算法上还是模式上,这完全是一个失败的工程,大概是因为当时我并没有详细阅读linux kernel等一些比较优秀工程的代码,程序完全是堆出来的,寻迹也是使用最白痴的算法,和小学初中时的水平没什么两样.后来用C做工程逐渐习惯用结构中的函数指针的形式来模仿面向对象,这种习惯对我的工作选择有不小的影响,前两年所做的嵌入式系统底层开发工作中,我也一直热忠于使用C的面向对象开发.有点扯远了,总的说来,就是只要保持开心奋进的状态,平淡人生中的每一步都会是有进步和有意义的.
让我有感触的不仅仅是这个小游戏,还有很多其他工程..不过相比起来比这个写得还烂,哈哈(^0^),不过都很有感情,以前都是想到一个什么应用,就顺手写个方便自己用的小软件,比如记得上大学的时候我在战部渡的家魔神论坛还有狂客动漫论坛的时候(现在狂客论坛还在http://bbs.enetxp.com http://comicdna.com ),我搞过几集动画片的字幕,当时ssa的字幕脚本时间戳和特效还专门写了个软件..现在很多动画片字幕组都有自己的特效和时间戳软件,年轻的地带总是充满新鲜活力的哈~ 说到这里,我应该感谢全国各地所有的朋友对我以往写的一些小破东西的支持~不管是发布在哪里的,有人用的东西好歹是米有白做哈~也感谢所有漫友以往在各个动漫论坛的吐槽八卦交流,你们给了我很BT的动力~ 不管如何,我觉得既然活着,就感恩的活着,充满活力的活着,BT的活着,个性的活着,享受生命的幸福.
说到最后,可以download运行下这个破烂demo,感受一下这个无聊game哈哈~ 按上下左右方向键可以滚屏,选小人和控制他们走动就和其他即时战略游戏里一样哈,他们踢小球小球可以撞掉砖头…没做游戏结局 = =bb…

在EP9315(arm920t)标板外扩can总线控制 其他ARM9可类比实现

【2007.10】
压缩包里有原理图和对应的linux标准字符设备驱动程序,原理图中的标号与edb9315a标板中的标号对应.
汽车总线can在工业控制中因其低功耗优于ip互联网,因其性能优于传统485等总线,越来越受应用开发和系统集成者青睐.这里给出一个在arm9平台ep9315实现的can总线外扩的解决方案.方案将常用can总线控制器sja1000t挂在数据总线,使用一个外部片选和两个gpio控制,提供了在linux2.4的sja1000字符设备驱动程序,实现sja1000在peliCAN模式下(支持CAN2.0)的can数据侦收发,经测试可以正常使用.
像类似的扩展在arm9或其他应用中十分常见,最常见到的是一些arm9结合dsp ic的平台,它们也是使用这种方式,以前我做过一个2410控制ac488的ip电话方案就也是如此.一般的控制扩展都是将外部控制ic挂在数据总线,用cpu的外部片选,gpio或地址总线组合控制时序.在linux系统中,对这种扩展经常使用常规字符驱动程序编写具体的时序控制,为应用软件提供控制接口.这里给出的sja1000驱动程序十分简单,和其他此类的应用类似(简单的实现sja1000的初始化,开辟一个小数据缓冲,实现can总线数据的读写,request一个irq,处理sja1000发出的中断).
在开发中主要遇到的问题有以下几点.
一是对peliCAN模式下can2.0b扩展侦的收发尝试,因为sja1000对于29bitID数据侦那部分数据存储器是多出来交叠复用的寄存器,驱动程序想弄个标准数据侦和扩展侦复用的比较麻烦,懒得写了,给出的这个是写死了只支持标准11bitID数据侦的,如果需要扩展的can2.0b收发,就麻烦点自己再改改弄弄吧..
二是起初can总线连接线无法过长,才几十厘米就发不通了,很短的时候可以收发正常.我的数据收发测试是使用microchip的pic单片机pic18f2580外接2551can收发器直接与这里arm板外扩的can总线相连的,直接测线比较长时传输线上的扰波十分猛..最开始认为是端电阻没加会不会有问题,后来发现其实加不加似乎都一样,又怀疑了其他地方的干扰或不同的can收发器ic会不会带来兼容性问题,后来这方面也排除了..最后发现居然是电源干扰过大引起的,再次印证了那句话,”管什么不好,先查电源”..ft~
这个ep9315平台扩展can总线的方案主要用于以下网络模型:
一个ep9315的系统作为核心结点,下面通过can总线接很多单片机板做成的结点,一个个单片机结点可以控制或采集一些io等,而这些单片机又通过一定的协议被核心ep9315结点控制,这样一个ep9315结点就可以通过can总线控制和采集很多io或其他信号(如rs232,spi,iic etc.),而ep9315自身的接口如uart,spi,iic等也可以另外单独使用,每个ep9315结点实际上相当于一台嵌入式工控机.多个9315的核心结点再用以太网连接组成局域网,最终数据汇总到一台互联网上的服务器,服务器可以分别控制各个ep9315结点(一般直接使用普通tcp连接即可,不同操作系统间进行socket通讯).整体形成一个低功耗高性能的优质工业控制网络.实际上类似的网络我几年前已经实现过一个(以太网和485,没用can总线),当时没有项目可以具体应用,所以后来搁置不理了.
ps. 在写这篇文的时候ep9315的所有开发资料是在cirrus logic网站公开的,不需要签什么保密协议就可以全部免费download到,其实大多数厂商都是很开放的,包括atmel等,用9200的时候获得资料也很容易..不像marvell那么变态,搞几片破arm还要签保密协议,鄙视(-n-)…cirrus logic本身做的开发十分到位,这也是我喜欢用9315的原因之一哈~

转篇宋宝华的Linux设备驱动编程之内存与I/O操作

还是十分不错的,最近看了一些相关的代码,想找篇比较系统的应用笔记,搜了一搜,发现宋兄有这么好的文~ 不用自己写了,直接转来~
操作IO和总线上的设备是很多情况下最基本的必须操作.我搞过的机器人玩具操作步进电机,ARM9扩展CAN总线等,都是通过普通字符设备驱动直接操作地址和数据总线或GPIO来和外设交互.这篇文对使用linux系统的设计来说很有用~

无线传感网络专用IC有多节能?5号电池可支持工作5年

【2007.10】

硅谷的风险公司GainSpan开发出了面向传感器网络用途的节能无线LAN用IC,目前已开始向部分厂商供应样品。这款无线LAN用IC的特点是能够大幅降低待机时的耗电。在消耗电流最小的待机模式下,1.8V工作时为2μA,3.6V工作时为5μA,耗电量仅为数μW,相当于以往产品的1/10~1/100。10mm见方芯片集成了RF收发电路、MAC及基带处理电路,还将微控制器也集成到了该芯片中。
GainSpan是原任职于英特尔的技术人员为开发传感器网络用半导体,于2006年9月创办的风险公司。最初从事ZigBee/IEEE802.15.4规格收发IC的开发,之后转向了无线LAN规格IC的开发。其原因在于“ZigBee和IEEE802.15.4的基础设施尚未得到普及。也就是说,即使制造相应的芯片,能够应用的市场也非常有限。另一方面,无线LAN的基础设施随处可见。尤其是美国,各种场所都有能够利用无线LAN的区域(热点)。因此我们认为,制造能够使用无线LAN基础设施的传感器网络用芯片肯定会有很大的市场”。

但是此前的无线LAN用芯片在待机时的消耗电量也高达数百μW,无法直接应用于传感器网络。为了在传感器网络中利用,消耗电量需要达到使用5号干电池可连续工作两年的程度。

为此,GainSpan开发出了待机时的消耗电流与ZigBee芯片相当,仅为几μA的收发IC。“使用我们的芯片时,在1分钟只收发1次数据的情况下,使用5号干电池可工作5年以上”(Parmar)。耗电量的降低归功于彻底的电路架构改进和门控时钟。虽然该公司还未公布详细情况,但估计电路采用了待机时停止向乎所有部分提供时钟的结构。芯片内部的CPU内核采用两个ARM7,在嵌入主机侧产品时能够减轻主机侧的负荷。

新芯片的名称为“GS1010”。GainSpan计划把该芯片应用于工厂内管理、大厦内设备管理、家庭安全等用途。“只要有无线LAN接入点,任何场所都能成为传感器网络区域”(Parmar)。应用于嵌入产品所需的软件开发工具包也已开始提供。该公司计划首先使该芯片符合利用2.4GHz频带的IEEE802.11b/g规格,今后再推出符合高速版IEEE802.11n规格的版本。未来还希望嵌入手机等产品。 

从算法开始从零编写的RSA密钥生成和文件加密软件

【2006】

下载 textrsa

源代码包下载 sanpack_rsa_vs2003sln_src

后来我也在华军发表过这个软件 http://www.onlinedown.net/soft/46622.htm

底层用C++实现,上层界面用C#实现.VS2003的工程.

 

里面包括我的五流本科毕业论文,回头看看真是2到无语,论文里不能提到“本文”二字不知道是哪来的规矩,还有那蹩脚的英语摘要,要把汉语逐句对应过去,真是脑残没有极限,我自己译的不蹩脚的被否了,这个摘要是软件生成加哪个同学改的,居然合格。

不过这个软件里有几个可借鉴的地方,一是C++大整数运算类,二是C接口dll在C#古老版本的引用。

 

我05年在2410标板上写的时间片多线操作系统

旧版本下载 SanOS_public_0.1_s3c2410x 往下看,有更新过的
有GUI(640*480),
可以把2410的lcd信号直接接adv7121做成VGA输出接显示器显示.
有英文和数码字库,
带有串口鼠标驱动程序,
支持时间片均分调度,
支持有优先级的64个线程
代码/ADS工程
年代有点久远,
我自己的备份找不到了,
网上居然有转载的要收费才能下,真晕~
这份是拜托arronwu兄提供的,
在此十分感谢 🙂
构建这个小系统主要参考了WinCE4.2的nboot和uCOS2系统内核.
———————————————————————-
今天是08年3月20号,我今天突然发现,去年放这里的这个版本GUI不带字库…
昏迷..把大家给忽悠了…@_@
实在不好意思,我自己也不知道,今天找到了05年9月的版本,对比的时候突然发现的…
下面赶紧放出我今天收拾旧电脑硬盘找到的05年9月的比较新的版本,
这个版本是我当年参加电子设计比赛的时候修改的,
连比赛的试题和我做的示例也一起提供给大家了,都在里面.
新版本下载 SAOS_2410

诺贝尔物理学奖授予“巨磁电阻效应”发现者

【转自以往的博客 2007.10】

瑞典皇家科学院近日宣布,法国科学家阿尔贝-费尔和德国科学家彼得-格林贝格尔,由于先后独立发现了”巨磁电阻”效应而共同获得2007年诺贝尔物理学奖

获得今年诺贝尔物理学奖的两名科学家在基础研究中发现,像三明治一样被”压”在一起的几种薄膜材料在磁场环境中出现”巨磁电阻”(GMR)效应。这一发现揭开了硬盘革命的序幕。

IBM公司将这项基础研究成果用于硬盘开发中,于1997年生产出第一个应用”巨磁电阻”技术的硬盘。随着这项技术的产业化,硬盘的块头越来越小,信息存储量越来越大,价格快速下跌。

“巨磁电阻”技术通过改进硬盘的读取磁头,催生了这场硬盘技术革命。磁头的读取灵敏度越高,硬盘的单碟容量也越大。单碟容量上去了,硬盘总容量自然会有提高。正是由于采用”巨磁电阻”技术,电脑硬盘的存储能力与日俱增。如今,内置上百G容量的硬盘已成为电脑的标准配置。

看看你的计算机硬盘存储能力有多大,就知道他们的贡献有多大。由于“巨磁电阻”效应,易使器件小型化,廉价化,除读出磁头外同样可应用于测量位移、角度等传感器中。此外,利用”巨磁电阻”效应制成的随机存储器,具有可在无电源的情况下继续保留信息的优点,已成为手机、数码相机、MP3等电器必备的存储元件。

 

GMR效应也是量子计算机研究的重要推进。

在点阵lcd上显示上位机点阵字模库中的汉字字符

我在2006年开发usb电话的时候,需要将上位机的点阵字库中的汉字显示到电话机的屏幕上,本文略去usb传送汉字编码,显示控制等数据的自定协议不谈,仅说明一下一些常见的字符编码转换.
我需要做的一个工作是: 用字模软件提取一个gb2312字符点阵集,将windows程序中字符串使用的汉字从点阵集中找出来,把点阵数据送到单片机以显示.
我们用VC6编写的应用程序中使用的汉字字符串(比如使用一个lpstr),在编译后以机器内码的形式保存在应用程序中.我们需要将机器内码转换成汉字在字模软件提取的gb2312点阵集中的位置.
首先需要将机器内码转换成区位码,这一步只需要把机器内码的高低字节分别减去0xa0即可.然后我们需要通过得到的区位码,找到对应汉字在gb2312字符点阵集中的位置.
假设每个字符点阵汉字都是16×16大小的,一个汉字站用32字节.设我们得到的区位码为AB,A为高字节,B为低字节,则我们需要的”对应汉字在gb2312字符点阵集中的位置”(即对应的汉字点阵数据开头离整个字符点阵集开头的字节数,下文简称”偏移码”),根据gb2312和区位码的编码规则,可以通过如下计算获得:
 [(A-1)x94+(B-1)]x32
=[Ax94-94+B-1]<<5
=(Ax94+B-95)<<5 …①
根据以上的论述,可以得到VC6中汉字字符在内存中使用的机器内码直接转换成字模偏移码的算法:
设机器内码位CD,C为高字节,D为低字节.
有 A+0xa0=C, B+0xa0=D.
代入①得:
 [(C-160)x94+(D-160)-95]<<5
整理出最快式得:
 (Cx94+D-15295)<<5 …②
由②知:
 对应汉字在gb2312字符点阵集中的位置=(机内码高字节x95+机内码低字节-15295)<<5;
其他可能需要的是一些windows api可以直接提供的转换,还有就是简单的三字节utf-8与unicode的转换等,只需要简单的移位或加减操作即可完成.
在usb电话上显示出好看的楷体和宋体汉字字符后,喝了口茶,感觉很不错~

ST7565小黑白LCD在单片机上的使用

这是我在2006年USB电话开发中的显示屏幕驱动笔记的摘抄.
Skype-usb电话一般使用小黑白lcd,我选了一些lcd,最终确定使用了一款ST7565核心的点阵lcd,屏幕大小是128×64.本来想选oled的,可是成本比较高,我06年问的一个双色128×64大小的oled一般卖到17块左右,用不起中= =b.而同样大小的lcd一般只有10块左右.
这里首先说一下我选lcd调试时遇到的一些问题,帮助大家少走一些弯路.因为单片机的io往往比较有限,所以我们在选这种小lcd的时候往往使用串行控制的lcd,一般都是标准的spi接口的.而一些初次尝试驱动小lcd的朋友通常回想到,在没有spi的单片机用io模拟时序略显复杂,所以想直接选用并行数据控制的lcd,这种小黑白lcd往往使用一组8位的数据总线D0–D7来交互显示数据,看起来io写时序控制比较容易.我起初也是用了一款并行数据控制的lcd,然而却没调试成功.问题出在时序的匹配上.我们必须考虑lcd所能接受的最慢时序单片机性能是否能满足.如果单片机不仅仅用来显示,而还要同时完成一些其他的必须及时进行的操作,这个问题尤其突出.所以,最终我的感觉是,能用spi则用spi,否则也还是用io模拟串行时序做起来简单一些,否则一但遇到性能问题,将十分棘手.一般来说,如果你纯粹使用io做时序,连接一个使用ST7565核心的lcd需要使用至少5个io管脚,分别接lcd的信号SI(串行数据),SCL(串行时钟),A0(数据指令选择),RES(复位),CS(片选).
下面说一下ST7565P的使用中遇到的一些问题.首先,lcd要使用一般必须外部接电容构成正倍压电路,有了pump才能显示.我在开发usb电话时使用了一组datasheet上说明的4倍压电路.在用电容时遇到了问题,一般我们调试的时候喜欢焊接直插件,而电容一般有极性.很多ST7565P核心的lcd在管脚标识的时候,正负号与电容的正负正好相反,所以出现调试的时候倍压不能的情况,一般显示器的厂商会提醒全部使用无极性电容,一般直接用产品化后设定的贴片电容来焊接即可,不需要刻意买一些直插的.
我使用的holtek hr82a832r单片机来做的usb电话,这个片子有现成的spi接口,所以使用lcd不需要使用io模拟,比较容易.用io模拟时序的方式我也试了,完全可行.用单片机的spi记得调整SCL上升沿还是下降沿锁定数据,否则这样的低级错误被遗忘会浪费不少时间迷茫~ 其他时序完全参照mcu和lcd核心ic的datasheet搞定即可.
一般屏幕的初始化和显示测试程序可以向lcd提供商索要,他们一般有pic或是普通51的测试程序.有了初始化的demo做起来省很多时间.这里还要补充一点,如果屏幕初始化了不显示,各种电气信号又都测量出正常,不要着急,调整一下lcd的显示亮度.我一开始就是因为lcd的显示对比度设置不妥当,导致全是黑屏.对于ST7565P,微调指令是0x81 0xmm (mm=00–3f) 粗调指令是0x2n (n=0–7),我使用不同厂家的屏幕,发现显示对比度设置后,效果差距较大,一个设置0x0d 0x26正好,一个需要设置0x0a 0x27才可以,第一个屏幕使用第二条设置会几乎黑屏.
调试ok以后,显示几个图形,心情很不错.

站点今天终于重新开放了

经过一系列折腾,站点终于重新开放了。

以往的各种内容都已经存档,未来会继续放出全新的各种开发研究资料。

需要以往的任何东西随时邮件联系我即可。祝大家学习工作愉快~

Contact Magic Zestination | 联系豆包