开源硬件概况
相对于源代码开放的开源软件,开源硬件似乎今人费解。因为传统的硬件体系中没有数字化代码,何来开源?因此,开源硬件的开源内涵主要体现在开源文化中的开放、低成本、可二次开发与可任意裁剪上。开源硬件的开放不仅是电路系统的开放,还在于对软件工程师的开放,因此,开源硬件诞生后,吸引了众多软件工程师进入嵌入式应用领域。
可二次开发的开源硬件,是一个基于软件开发的软硬件综合开发平台;基于软件的开发模式有利于软件工程师介入嵌入式产品开发;开源硬件可任意裁剪、任意选择的特点,为开发众多个性化嵌入式产品提供了低成本、低门槛、灵活、便捷的手段。
“开源硬件”:描述如今基于嵌入式产品平台、基于硬件描述语言、以软件技术为主的智能硬件的开发模式。
当今的开源硬件有以下几类:
一类是由用户板进化出的可二次开发的板级开源硬件(早期以树莓派为代表);
另一类是开源硬件描述语言(以Chisel为代表源代码开放的开源硬件);
还有一类是开源操作系统中的开源硬件数据结构(如ARM Device Tree)。
开源硬件描述语言:
硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。
硬件描述语言发展至今已有20多年的历史,它将硬件设计软件化,通过EDA工具(电子设计自动化)进行仿真验证,最终通过微电子的ASIC手段或半定制的FPGA来实现一个真实的硬件系统。这是一种非主流电子工程师的非传统硬件系统设计方法,成功地应用于硬件设计的各个阶段,如建模、仿真、验证与数字化模块的综合等。
随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言。硬件描述语言从一开始就是一种用软件工具、在软件方法基础上实现的电路系统设计方法。
Chisel是加州大学伯克利分校研究人员设计并发布的一种新的开源硬件设计语言。他们认为现有的硬件描述语言VHDL、Verilog HDL等最初设计的目的是用来仿真的,所以有很多不可综合的语法,此外,VHDL、Verilog HDL缺少目前高级语言具备的一些特性,比如:对象、继承等,于是设计了Chisel,并将其开源。
Chisel建立在Scala语言之上,可以支持高级硬件设计。用户使用Chisel时,以编写Scala程序的方式来设计硬件电路。采用Chisel设计的电路,经过编译可以得到FPGA、ASIC的Verilog HDL的相关代码。目前国内外已有人使用Chisel语言成功地实现了多种开源处理器。有多个开源项目使用Chisel作为开发语言,包括:采用RISC-V架构的开源标量处理器Rocket、开源乱序执行处理器BOOM(Berkeley Out-of-Order Machine)等。
此外,Chisel的开源特性,也有助于用户了解硬件设计语言的内部实现机理,并在此基础上进行特定的优化与改进。
开源设备树
设备树是嵌入式操作系统中的一种开源硬件数据结构,是嵌入式操作系统中板级支持包(Board Support Package,BSP)的华丽转身,其源头是PowerPC的Device Tree技术。目前,最著名的是ARM Linux中的扁平设备树FDT(Flattened Device Tree)。
早先在嵌入式系统中引入操作系统时为了满足操作系统对硬件单元的有效管理,设置了板级支持包,并添加有大量的驱动程序固件。板级支持包介于主板硬件与操作系统之间,是操作系统的一部分。程序员在使用嵌入式操作系统时,可以根据硬件结构的变化,在BSP中添加一些和系统相关的驱动程序。因此,随着主板的升级与变更,BSP也愈加庞杂。
以ARM Linux为例,早期的ARM Linux中充斥着大量的垃圾代码,相当多的代码只是在描述板级细节,而这些板级细节对于内核来讲,只是垃圾。后来引入了PowerPC已成熟应用的Device Tree技术,使得ARM Linux内核中的BSP华丽转身为扁平设备树(FDT)。
Device Tree是一种描述硬件的数据结构,基本上是一个描述电路板上CPU、总线、设备组成的树形结构,由一系列的结点(node)和属性(property)组成,结点本身可包含子结点,可用来描述原先kernel中的大量板级细节与硬件细节,直接透过它传递给Linux。Bootloader会将这棵树传递给内核,然后内核可以识别这棵树,并根据它展开出Linux内核中的众多设备,而这些设备用到的内存、IRQ等资源,也被传递给了内核,内核会将这些资源绑定给展开的相应设备。使用FDT后,Linux内核可以直接通过FDT获取硬件的细节信息。
由根结点、子结点、叶结点形成了硬件相关的树形结构,树结构将在节点之间创建父子关系,此父子关系是体系结构无关性的关键。当叶驱动程序或总线结点驱动程序本质上需要依赖于体系结构的服务时,该驱动程序会请求其父级节点提供该服务。采用此方法,不管计算机或处理器的体系结构是什么,驱动程序都可以正常运行。使用FDT后,Linux内核可以直接通过FDT获取硬件的细节信息,这使得ARM Linux内核中的冗余编码大大减少,同时也使得用一个内核镜像去引导同一类ARM芯片集的硬件平台成为可能。
2017年《单片机与嵌入式系统应用》第3期罗名驹等人的“扁平设备树FDT在ARM Linux中的应用研究”详细地介绍了ARM Linux中的FDT,以及如何通过FDT获取板级硬件的细节信息。
#e#
全球最流行的几个开源硬件平台
随着物联网的推广和普及,五年内全球会有200亿台智能设备的需求,而如今随着创客概念的兴起,开源硬件也越加的火热,让我们来看看现在都有哪些主流的开源硬件平台,这些平台又是用什么芯片呢,全志、三星、瑞芯微、飞思卡尔?下面让我们来数一下吧!
1.树梅派(Raspberry Pi)-ARM1176JZF-S核心
树莓派
树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,Eben·Upton/埃·厄普顿为项目带头人。2012年3月,英国剑桥大学埃本·阿普顿(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就是Raspberry Pi电脑板,中文译名“树莓派”!它是一款基于ARM的微型电脑主板,以SD卡为内存硬盘,卡片主板周围有两个USB接口和一个网口,可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。 Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。
2.Armcore-全志A20
Armcore
Armcore是由视美泰公司为企业级DIY定制的一款开源硬件,其标准都是按照工业级制定。为了更方便企业开发产品,Armcore将CPU、DDR、FLASH、PMU等核心模块封装到一个核心板之上,而且将安卓系统集成到系统上,基本上市面上的主流标准设备的驱动都应有尽有,以此来节省企业开发项目的时间周期和成本。更诱人的是这些都是开源的!不过该平台不足的地方就是对于个人创客的支持力度很低,主要还是针对企业用户。
3.Arduino-Atmega328
填写图片摘要(选填)
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于爱好者、艺术家、设计师和对于“互动”有兴趣的朋友们。
4.BeagleBone-AM3359
填写图片摘要(选填)
BeagleBone是一个开源软件和嵌入式硬件设计非营利公司。BeagleBone为开源爱好者提供了一个很好的开源硬件和软件交流的平台。BeagleBone可以说完全是靠开源爱好者推动的一个硬件平台。
5.Cubieboard-全志A10
填写图片摘要(选填)
Cubieboard是由一支中国珠海的技术团队Cubieteam开发的一个开源MiniPC,有些类似于英国人开发的树莓派。适合个人创客,在这个平台开发产品不需要看英文资料是最大的优势,哈哈!我们一直坚信中国品牌总有走出国门的一天,虽然Cubieboard在国内名气不大,但是凭借其过硬的品质已经在国外赢得了一部分市场。
6.Armpc-全志A20
填写图片摘要(选填)
Armpc是基于全志A20开发的一款供个人DIY玩家使用的开源开发平台,其丰富的扩展性,是其最大的特点,因为它几乎包含了Arduino和树莓派的所有接口,所以,它支持的DIY模块会比前两者多出许多。Armpc和Beaglebone一样是由开源社区推动的一款开源硬件。其不足就是只开放软件源码,而没有开放硬件原理图,不过这也丝毫不影响创客们对它的宠爱。
7.UDOO-飞思卡尔 i.MX6 ARM
UDOO和Raspberry Pi一样,是一个ARM架构的Linux板,而在电路板上也装有第二颗ARM处理器用来模拟Arduino Due。
UDOO拥有双核与四核两个版本的ARM cortex-A9 CPU,采用了与Arduino Due一样的ARM SAM3X处理器。UDOO还内置OpenGL加速器、54数位I/O和模拟输入(有和Arduino R3兼容的pinout)、Ethernet、内建WiFi、HDMI、USB、SATA及类比声音讯号。
8、SparkCore-单片机
SparkCore是一个拥有配套云服务的平台,可兼容Arduino,并内置有WiFi功能。和Yún一样,SparkCore也可以通过WiFi连接并进行程式开发。而除了无线局域网络,SparkCore也可以同时通过云服务随处存取更新自己的进度。
9.DigiSpark-单片机
DigiSpark也是一个基于ATTiny85架构的开发板,并且体积也足够小,支持Arduino IDE 1.0+ (OSX/Win/Linux)。
虽然DigiSpark只有6个 I/O Pins,但可利用各式各样的扩充工具延伸它的可能性。并且DigiSpark的售价只有12美元,无论是学习开发入门还是功能拓展都是一个不错的选择。
10、pcDuino-全志A10
pcDuino可以运行完整的PC操作系统,如Ubuntu和Android的ICS,并且易于使用工具链,又兼容Arduino开放的生态系统,包括Arduino shield和开源项目。值得注意的是它能够兼容使用大部分的Arduino扩充板,且所有的Arduino扩展引脚都可以通过API访问,包括UART、ADC、PWM、GPIO、I2C。
#e#
关于Ardurino开源硬件平台
在Maker Faire现场展台上展示的开源硬件平台可见一斑:基于Ardurino开发的创意产品占绝大部分,由此可见,由Ardurino构建的创客生态系统已蔚然成风,各类基于Ardurino的软硬件开发平台、技术资料、配件等已经非常完善。
而对其他开源硬件平台而言,使用者偏少。无外乎有以下几大原因:第一,Ardurino是创客的“开山鼻祖”,江湖老大的地位不可动摇;第二,Ardurino功能简单,对初学者而言上手更快;第三,关于Ardurino的所有配套资料、使用群体最庞大,志同道合者居多。
事实上,当使用Ardurino基本的控制功能达不到创客们的更高级、更先进的要求(如通讯、互联、互动等)时,创客们会另寻出路,会选择采用基于ARM架构或X86架构的开源硬件平台。举几个简单的例子,仅供参考。
Ardurino:适用于入门级新手创客。开发工具有Arduino IDE,具有丰富的Arduino驱动代码。对于入门级创客来说,大家更多的是看中Arduino庞大的网络资源,各种叠加扩展板和传感器板。
AVR单片机:Arduino的核心芯片用的就是Atmel的AVR 8位单片机,可以说Atmel是Arduino的鼻祖。 Atmel Xplained / Xplained Pro 开发板:作为低成本单片机,Atmel Xplained / Xplained Pro 开发板有很多型号可供大家选择,如:8位或32位AVR单片机、ARM Cortex-M0+ 或 Cortex-M4 或 Cortex-M4F、ARM Cortex-M0
+ 加无线 SoC、ARM Cortex-A5 微处理器等。基于ARM Cortex-M0+ 架构的开发平台,低外围资源,但同时具备低功耗,二次开发简易,拥有32位ARM的计算性能等优势。Xplained Pro开发板同样具有可扩展性,可以使用标准排针在开发板侧面连接扩展板。 树莓派RaspberryPi:相比Arduino,树莓派提供更高性能的处理能力,可以轻松实现I/O控制、高速数据通信、视频处理、实时运算等,创客可以在Debian Linux环境下编程,实现各种过去需要在PC环境实现的功能。树莓派是初级创客向高阶创客演进的理想平台。目前全球用户超过300万,每年以200万的速度递增。
CooCox开发工具:用于ARM Cortex-M设备的开发,CoIDE具有强大的工程管理和调试功能,集成了一个开放和分享的组件代码平台,支持Arduino编程语言,Arduino驱动代码可平滑移植到CoIDE,基本不需改动代码,适用于有进阶需求的创客。
MSP430 LaunchPad:LaunchPad是TI专门推出的一系列开发平台,其特点是使用简单:下载使用一体,无需额外硬件。与此同时,来自美国的工程师还向创客们演示直接在电路板上方加上“Booster Pack”外围板(相当于扩展板),去完成不同外设的二次开发。有用过Launchpad开发办的工程师评价到:将Arduino的程序移植到Launchpad上几乎是一件非常简单的事情,有时候甚至不需要任何的更改,只要对端口进行相应的调整即可。总体来说,Launchpad的性价比是非常高的,低功耗,低价格,性能也有保障,可以说是一个Arduino玩家的理想替代选择。LaunchPad非常适合学习和低资源需求的应用。
Galileo(伽利略)开发板 & Edison平台:英特尔嵌入式事业部产品经理王景佳指出,伽利略开发板是基于英特尔架构全新兼容Arduino(接口、开发环境均可与Arduino兼容)的可开发电路板系列的首款产品。此次,Intel展位上来自北京高校的大学生们展示着基于伽利略开发板开发的各种硬件创作成果。基于Quark处理器的伽利略开发板在本次制汇节上可谓大赚眼球。如果说Arduino是创客运动的导火索,那么Edison则是创客运动的新里程。尽管本次没有展出Edison实物,但创客们还是很期待Intel为大家带来更多惊喜。 与此同时,适合创客的其他高级平台还包括: 基于Freescale i.MX6 SOLO (1GHz Cortex A9) RIoT Board, 基于Ti Sittara Cortex A8 BeagleBone Black, 基于Atmel Cortex A5 的SAMA5D3-Xplained等等,他们提供更强大的计算性能和更灵活的应用能力。
无一例外,以上谈及的开源硬件均是与Ardurino兼容的智能硬件平台。事实上,从这里我们也能看到Ardurino在创客运动中不可动摇的地位。
事实上,创客们需要的是一个开放、分享的氛围。谁能为他们营造这种氛围,谁才能占据创客硬件市场的领导地位,Ardurino就做到了这一点。对于其他硬件平台而言,打造一个“类Ardurino”经营模式的生态系统是有很多问题亟待解决的,譬如,如何引起创客对新的软硬件平台的关注并选择使用;如何完善软硬件支持;创客们在实现产品创作时是否能拥有跟Ardurino类似的开放、分享平台等等。
不过有挑战才有创新,这是值得赞颂的,因为这才是“创客精神”。对于创客们而言,越多开源硬件平台,他们的选择就越多,创客的群体才会日益壮大。创客文化的精髓——“开放”、“分享”,才会传遍大江南北!创客运动来袭,连接你我他,你准备好了吗?
评论
查看更多