开源硬件:极客们的伟大理想
自 Dennis Allison 在 1975 年发布它的 Tiny BASIC 以来,他倡导的开放、共享的思想得到了多数开发者的认同,这些年,软件开源取得了令人瞩目的成绩。同时,他那句 “让我们站在彼此的肩膀,而不是彼此的脚趾上。”也变成了开源软件运动的名言。
如今,基于开放、共享理念的开源软件运动正掀起一场硬件开源运动。开源硬件,指与自由和开放源码软件相同方式设计的计算机和电子硬件。开源硬件开始考虑对软件以外的领域开源。
这个词主要是用来反映自由释放详细信息的硬件设计,如电路图、材料清单和电路板布局数据,通常使用开源软件来驱动硬件。
共享逻辑设计连同可编程逻辑器件之重构,也是一种形式的开源硬件。
自 20 世纪 90 年代末,工程师们就已经想到了一些方法来将开源的概念应用于计算机和电子硬件。而主要的障碍当然是软件很容易复制并且可以被免费复制,而硬件则由实实在在的物体构成的 — 用 Chris Anderson 的话来说就是 “原子的而非比特的”。另外,硬件基本上都是受专利保护,而不是受版权保护的,而专利的获得和捍卫是很昂贵的。
与软件开源相比,硬件开源做起来要困难得多,那么,“开源硬件”将来会进入大众的视线吗?
开源软件流行的秘密
在谈开源硬件之前,让我们先来看一下开源软件为什么会流行。普通的用户绝对不会在乎一款软件是否开放源代码,使用什么许可协议。他们唯一关注的是能不能花最少的钱用上最好的软件。那么,开源软件又是怎么做到便宜和好用的呢?
1、免费
开源软件最吸引人的地方毫无疑问是它的免费。相比于 Windows 几百上千的价格,可以自由传播,自由使用的 Ubuntu 早已向前迈了一大步。对于嵌入式系统而言,开源的系统可以降低设备制造成本,实惠消费者也是不争的事实。
2、高质
优秀的开源项目往往能吸引大量的技术天才来协助开发。于是最终发行的软件在质量上也不会低于收费软件。就质量上 PK,开源的 Virtualbox 也没有比收费的 VMWare 逊色多少。
3、跨平台
作为一个Mac用户,我常常为找不到那些优秀的 Windows 平台软件的 Mac 版而苦恼。但是对于开源软件则没有这个问题。一个优秀的开源软件即使没有“小众操作系统”的版本,也会有爱好者自己编译。最终,优秀的开源软件常常是完美支持多平台的。例如大名鼎鼎的 AutoCAD 不原生支持 Mac,但是同样是 CAD 软件,开源的 Archimedes 却同时支持 Windows 和 Mac。所以如果我常常要在两种系统间来回切换,我显然会选择 Archimedes 来减少麻烦。
4、定制性强
一个优秀的开源软件周围常常会有数不胜数的插件。于是软件也就会可以通过安装插件来迎合每个人的需求——如果不理解,去看看 Firefox 那恐怖的插件库吧。
5、问题修复及时
是软件就会出问题,这是已经被无数次证实的真理。而开源软件总是可以依靠群众的智慧,在第一时间修复问题。根据Ed bott的博客文章,Ubuntu 和 Fedora 的更新发布频率都远高于 Windows。
目前,已经有很多成功的开放硬件项目。
1、Power.org
2004 年,IBM 创建了 Power.org 作为其 Power Everywhere 创意的一部分, 将 Power Architecture® 建成了一个开放硬件项目,具有免费许可的标准、设计和规范。IBM 在 2006 年宣布了向研究和学术机构免费开放 PowerPC® 405 core 的计划,到目前为止,有 40 多家大学参加了这个项目。
2、OpenSPARC T1
Sun Microsystems 也紧跟着在 2006 推出了 OpenSPARC T1,这是其成功的 SPARC 处理器的一次全开放实现。目前,有三个基于 Reduced Instruction Set Computer (RISC) 的 SPARC 架构的全开放实现,源代码用 Verilog HDL 编写,在 GNU Public License (GPL) 许可下发布。
3、BeagleBoard
BeagleBoard 是一个基于 Texas Instruments 的 Open Multimedia Application Platform 3 (OMAP3) system on chip (SoC) 的单板计算机,它包括一个基于 ARM 的微处理器和一个数字信号处理器。BeagleBoard 使用了与很多智能手机和上网本相同的处理引擎,使它足够强大,完全能够运行一个完整的 Linux 发行版和提供高分辨率视频。BeagleBoard 受一个规模很大的社区支持,而它的设计文档,包括生产用的印刷电路板 (PCB) 的架构草图,均可免费下载得到。而且它还孵化了几个相关的项目。
4、Arduino
Arduino 是一个面向终端用户设计的微处理器,具有易学易懂的编程模型、一个可供任何人使用的全开放设计,以及一个由文档、扩展板、派生产品和社区组成的大型生态系统。根据 O'Reilly Publishing 的 Make 杂志及每年的 Maker Faire — 喜欢向项目中添加灵活的电子特性(从闪光发光二极管到复杂的飞机导航系统)的硬件发烧友,它已经被 DIY 爱好者和玩家推崇的、发展得如火如荼的 “Maker” 运动广泛采用。
5、OpenCores.org
OpenCores.org 是一个始于 1999 年的开放硬件机构的先驱,它是开放处理器核的门户,提供了在各种开放许可下提供的诸多处理器核的设计文档,包括一个免费的 RISC 计算平台、几个微控制器、两个 SoC 以及一些算法、通信和其他的核,其中大多都是用 Verilog HDL 描述的。
开源硬件流行的基础:可编程逻辑器件(PLD)
不像硬件,软件的的开发,传播和部署几乎可以做到零成本。 但是如果使用“一次性”的电路,开源硬件别说投入大规模使用,连开发都成问题——开发者必须忍受极其缓慢的模拟器。但是,可编程逻辑器件的存在给开源硬件带来了希望。
简单的说来,可编程逻辑器件就是一个存储器加上一个逻辑门阵列。存储器上的数据可以控制逻辑门之间线路的通断。有的可编程逻辑器件甚至可以反复刷写,多次改变内部的电路排列。
如此,开源硬件也变得如软件一般可以“零成本开发,零成本部署”了。
开源软件的优点可以移植到硬件上吗
毕竟软件和硬件是不同的。开源软件的优势在硬件上仍然存在吗?
1、价格
一眼看来,似乎开源硬件会有价格上的优势,因为产品价格不包含可观的研发成本。但是硬件早已不是可以“动手制作”了。然而,订做小批量的产品是非常昂贵的。让爱好自由的极客统一起来订上大批量的开源硬件又是几乎不可能的事。因此唯一可行的把开源硬件设计“落实”的方法就是把电路置于可编程逻辑器件当中。
2、品质
开源软件往往是由一个庞大的开发者社区“催熟”的。但是开源硬件的开发者还不够多。但这不是个问题,毕竟开发者是可以培养的。最终,优秀的开源硬件设计是完全有可能出现的。
3、跨平台
很遗憾,硬件是无法“跨平台”的。举个大家熟悉的例子:即使是同为 x86 架构,Intel, AMD 和 VIA 的处理器还是差异巨大的。因为整个平台的不同,所谓的移植实施起来难度也大到几乎不可能实现。有人可能会提到全美达的 Efficeon ,但是这样的架构在可编程逻辑器件当中即使能实现也不会有满意的性能,而且还有各平台针脚定义不同的问题。
4、定制性
开源硬件可以通过制订内部总线标准去实现扩展性。但是接下来的问题是可编程逻辑器件的容量往往会极大的限制硬件的扩展性。
5、更新
可编程逻辑器件的使用让零成本更新硬件成为现实。于是更新的问题并不会过多阻碍开源硬件的发展。
可编程逻辑器件使硬件性能和功能失去竞争力
前面提到,可编程逻辑器件让开源硬件的传播成为可能。但立于可编程逻辑器件之上的硬件还可以依靠性能和功能去打动用户吗?
可编程逻辑器件的原理是由存储器内的数据决定逻辑门之间线路的通断。所以可编程逻辑器件的结构决定了它不能承载太复杂的设计,而且功耗高,速度慢。所以,可编程逻辑器件的使用不仅限制开发者的思维空间,而且拖慢速度。对于移动设备而言,可编程逻辑器件还会降低续航能力。
硬件开源流行?极客们的伟大理想
但我们知道,按照现有的科技和组织方式,开源硬件只会在极客当中传播。如果想要“开源硬件” 在大众中得以普及,除非开源硬件设计足够成熟,产品能够满足大众的个性化需求,而且DIY足够简单,这样开源硬件才有可能大众化。
让开源硬件达到跟开源软件一样的程度,现阶段还只是极客们的一个伟大梦想。但我深深得为这种极客精神所折服。
相关文章:

五年12篇顶会论文综述!一文读懂深度学习文本分类方法
作者 | 何从庆来源 | AI算法之心(ID:AIHeartForYou)最近有很多小伙伴想了解深度学习在文本分类的发展,因此,笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度学习在文本分类中的应用。…
Failed to fetch http://mirrors.cloud.aliyuncs.com/
服务器版本:阿里云 ubuntu 16.04 问题:阿里云安装软件时,提示 W: Failed to fetch http://mirrors.cloud.aliyuncs.com/ubuntu/dists/xenial/InRelea se Could not resolve mirrors.cloud.…

【FFmpeg】使用sws_scale将AVFrame转换后的图像数据放入cv::Mat中
1、方法一,伪代码如下 cv::Mat mat; AVFrame avFrame; const int stride[] = {static_cast<int>(mat.step[0])}; ret =

Android之Adapter用法总结
本文转自http://kb.cnblogs.com/a/2328334/,转载请注明原出处。 Android之Adapter用法总结 作者:Devin Zhang 来源:博客园 发布时间:2012-01-20 22:33 阅读:1193 次 原文链接 [收藏] 1.概念 Adapter是连接后端数…

【FFmpeg】ffmpeg命令详解(一)
ffmpeg命令详解(一) 1、命令格式2、简述3、详细说明3.1 过滤器3.1.1 简单的过滤器图3.1.2 复杂的过滤器图3.2 流拷贝1、命令格式 ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...global_options:全局选项 input_…

从流感预测到智能决策,深度学习能帮企业做哪些事?
未来将只有两种公司,一种是有人工智能的,一种是不赚钱的。这句话大概可以总结两层意思,一方面人工智能让更多的企业面对更广阔的商业前景,另一方面是如果要运用人工智能创造价值,就必须拥抱技术,实现真正的…

寻找隐形冠军 支付宝、微信用得那么溜,可谁知道背后有一名“上海功臣
下午三点半,离晚饭时间还有一段时间,可新沪路上的熟食店“尚老居”门口已经人头攒动。 “阿姨你来啦,今天要点什么?” “老样子,称点烧鹅和蹄髈,阿拉孙子老欢喜吃的,买好正好去接伊放学。” “阿…

Lnmp安装与配置笔记
——————————————安装与配置——————————————1.相关软件:yum -y install gcc gcc-c autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-…

【FFmpeg】ffmpeg命令详解(二)
ffmpeg命令详解(二) 4、流选择4.1 自动选择流4.2 手动选择流5、命令行选择详解5.1 命令行选项的值说明:5.2 流说明符5.3 通用选项5.4 主选项5.5 视频相关选项5.6 高级视频选项5.7 音频选项5.8 高级音频选项5.9 字幕选项5.10 高级字幕选项4、流选择 FFmpeg提供了“-map”选项…

谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!
编译 | 琥珀出品 | AI科技大本营(ID:rgznai100)世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性。然而,这些系统中量子态的数量程指数级增长,使得暴力计算并不可…

Python基础之逻辑运算符
1.在没有()的情况下,not的优先级高于and,and的优先级高于or,即优先级关系为()>not>and>or,同一优先级从左往右计算。 例题,判断下列逻辑语句的结果: 3 > 4 or 4 < 3 and 1 1 1 < 2 a…

《Android开发从零开始》——11.AbsoluteLayoutFrameLayout学习
本节课的主要内容有: 1.介绍AbsoluteLayout布局的使用 2.介绍FrameLayout布局的使用 课程下载地址:http://u.115.com/file/f15a9d5411 课件及地址:http://u.115.com/file/f1b56ce345 【转】转载于:https://blog.51cto.com/professor/1573001

【FFmpeg】ffmpeg命令详解(三)高级选项
ffmpeg命令详解(三)高级选项 1、-map2、-ignore_unknown3、-copy_unknown4、-map_channel5、-map_metadata6、-map_chapters7、-benchmark8、-benchmark_all9、-timelimit10、-dump11、-hex12、-readrate13、-re14、-vsync15、-frame_drop_threshold16、-async17、-adrift_th…

重磅!Google推出了Python最牛X的编辑器......
随着和大数据、人工智能绑定在一起,Python可畏是越来越厉害了!前几天, PYPL(即编程语言流行指数,基于 Google 搜索频率而定)出炉了 6 月编程语言排行榜,Python 拿下 NO.1,成为最流行的编程语言。…

ubuntu16.04 ROS安转及RVIZ启动
1、软件中心配置 首先打开软件和更新对话框,打开后按照下图进行配置(确保你的"restricted", "universe," 和 "multiverse."前是打上勾的): 2、添加源 $ sudo sh -c echo &qu…

Ubuntu下自动挂载Windows分区的方法
用过Ubuntu的都知道,在Ubuntu开机时,Windows的文件系统是不会自动挂载的,每次开机都得手动挂载,确实不方便。多次的手动挂载实在是让我有些烦躁了,遂决定要让我的系统开机时自动挂载文件系统。看了一些网上的教程&…

poj3009
一、题意:给定一个矩形区域,代表冰球场。每个单元格可有四种数值:2是冰球的起始位置;3代表冰球最后需要到达的位置;0代表空,球可通过;1代表障碍物,球碰撞一次后,1变成0&a…

谷歌开源新模型EfficientNet,或成计算机视觉任务新基础
作者 | Mingxing Tan,Quoc V. Le,Google AI译者 | 刘畅责编 | 夕颜出品 | AI科技大本营(id:rgznai100)开发一个卷积神经网络(CNN)的成本通常是固定的。在获得更多资源时,我们通常会按…

【FFmpeg】使用过的命令汇总(持续更新中...)
1、将输出文件的视频比特率设置为 64 kbit/s: ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi2、将输出文件的帧速率强制为 24 fps: ffmpeg -i input.avi -r 24 output.avi3、将输入文件的帧速率(仅对原始格式有效)强制为 1 fps,将输出文件的帧速率强制为 24 fp…

HLG 1481 Attack of the Giant n-pus【二分+二分图完全匹配】
题意: 有 p 个水手和一个章鱼,章鱼有 n 个脚,知道了所有单位的坐标,和船长以及船员的速度,船长想去攻击章鱼的头部,但是只有在章鱼所有的脚都被水手控制的情况下才会开始朝章鱼头部进攻,问如何分…

美亚排名超高的Docker入门书,不止简单易懂
在美国亚马逊,有一本书的影响力超高的Docker入门书,在操作系统分类中排行第一,超越了众多实力派Docker书,众多五星好评。也许你有所耳闻,这本书就是《深入浅出Docker》。这是一本关于Docker的图书。这本书的宗旨是从零…

虚拟机配置参数
标准参数:保证所有JVM的实现都可以支持-client设置Hotspot client jvm,64位jdk会忽略该参数并设置-server-Dpropertyvalue用于设置系统属性,如果value中有空格,则需要设置-Dproperty"value value"-server选择Hotspot Se…

【Qt】QAudioDeviceInfo获取不到音频设备
1、问题描述 使用QAudioDeviceInfo在开发机上可以获取本地的音频设备,但是在目标机上获取不到。 已经将libQt5Multimedia库拷贝到目标机上(如果没有将会报错)。 2、原因 没有将audio的插件拷贝到目标机上,audio插件在Qt安装目录…

异常:android.os.NetworkOnMainThreadException
Android 4.1项目:使用新浪微博分享时报: android.os.NetworkOnMainThreadException 网上搜索后知道是因为版本问题,在4.0之后在主线程里面执行Http请求都会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧。那么网上的朋友…

阿里带火的中台到底是什么?白话中台战略
作者 | 王健,ThoughtWorks首席咨询师。 十多年国内外大型企业软件设计开发,团队组织转型经验。一直保持着对技术的热爱,热衷于技术分享。目前专注在企业平台化转型、中台战略规划,微服务架构与实施,大型遗留系统服务化…

【Qt】Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题
1、问题描述 在ubuntu18.04中第一次安装QT5,运行时报错 qtcreator.sh qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be init…

Bootstrap4 更新笔记
在bootstrap4里, 1. 旧版本bootstrap well变成了什么? well原本是‘’淡灰墙‘’样式。 Bootstrap 4 Beta card-block is now card-body, and bg-faded is now bg-light: <div class"card card-body bg-light"> Well </div>ref&am…

二、JavaScript基础 学好jQuery要了解的
JavaScript与ECMAScript ECMAScript 通过ECMA-262标准的脚本程序设计语言 ECMAScript标准下有 javascript jscript actionscript JavaScript分为值类型和引用类型两大类,有时也称为原始值和引用值。值类型:存储在栈(stack)中,一个值类型的变量…

一文综述经典的深度文本分类方法
作者 | 何从庆转载自AI算法之心(ID:AIHeartForYou)笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度学习在文本分类中的应用。Convolutional Neural Networks for Sentence Classification (EMNLP 2014)Kim在EMNLP2014…

【FFmpeg】便捷函数汇总(持续更新中...)
音频相关: 1、由通道布局获取通道数 int av_get_channel_layout_nb_channels(uint64_t channel_layout);2、由通道数获取默认的通道布局 int64_t av_get_default_channel_layout(int nb_channels);3、返回采样格式对应的字符串名字 const char *av_get_sample_fm…