欢迎来到天天文库
浏览记录
ID:27903759
大小:26.50 KB
页数:5页
时间:2018-12-06
《开源硬件_最流行的几个开源硬件平台_Ardurino开源硬件平台.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、开源硬件_最流行的几个开源硬件平台_Ardurino开源硬件平台开源硬件概况 相对于源代码开放的开源软件,开源硬件似乎今人费解。因为传统的硬件体系中没有数字化代码,何来开源?因此,开源硬件的开源内涵主要体现在开源文化中的开放、低成本、可二次开发与可任意裁剪上。开源硬件的开放不仅是电路系统的开放,还在于对软件工程师的开放,因此,开源硬件诞生后,吸引了众多软件工程师进入嵌入式应用领域。 可二次开发的开源硬件,是一个基于软件开发的软硬件综合开发平台;基于软件的开发模式有利于软件工程师介入嵌入式产品开发;开源硬件可任意裁剪、任意选
2、择的特点,为开发众多个性化嵌入式产品提供了低成本、低门槛、灵活、便捷的手段。 “开源硬件”:描述如今基于嵌入式产品平台、基于硬件描述语言、以软件技术为主的智能硬件的开发模式。当今的开源硬件有以下几类: 一类是由用户板进化出的可二次开发的板级开源硬件(早期以树莓派为代表); 另一类是开源硬件描述语言(以Chisel为代表源代码开放的开源硬件); 还有一类是开源操作系统中的开源硬件数据结构(如ARMDeviceTree)。开源硬件描述语言: 硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。 硬件描述语言发
3、展至今已有20多年的历史,它将硬件设计软件化,通过EDA工具(电子设计自动化)进行仿真验证,最终通过微电子的ASIC手段或半定制的FPGA来实现一个真实的硬件系统。这是一种非主流电子工程师的非传统硬件系统设计方法,成功地应用于硬件设计的各个阶段,如建模、仿真、验证与数字化模块的综合等。 随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言。硬件描述语言从一开始就是一种用软件工具、在
4、软件方法基础上实现的电路系统设计方法。 Chisel是加州大学伯克利分校研究人员设计并发布的一种新的开源硬件设计语言。他们认为现有的硬件描述语言VHDL、VerilogHDL等最初设计的目的是用来仿真的,所以有很多不可综合的语法,此外,VHDL、VerilogHDL缺少目前高级语言具备的一些特性,比如:对象、继承等,于是设计了Chisel,并将其开源。 Chisel建立在Scala语言之上,可以支持高级硬件设计。用户使用Chisel时,以编写Scala程序的方式来设计硬件电路。采用Chisel设计的电路,经过编译可以得到F
5、PGA、ASIC的VerilogHDL的相关代码。目前国内外已有人使用Chisel语言成功地实现了多种开源处理器。有多个开源项目使用Chisel作为开发语言,包括:采用RISC-V架构的开源标量处理器Rocket、开源乱序执行处理器BOOM(BerkeleyOut-of-OrderMachine)等。 此外,Chisel的开源特性,也有助于用户了解硬件设计语言的内部实现机理,并在此基础上进行特定的优化与改进。开源设备树 设备树是嵌入式操作系统中的一种开源硬件数据结构,是嵌入式操作系统中板级支持包(BoardSupportP
6、ackage,BSP)的华丽转身,其源头是PowerPC的DeviceTree技术。目前,最著名的是ARMLinux中的扁平设备树FDT(FlattenedDeviceTree)。 早先在嵌入式系统中引入操作系统时为了满足操作系统对硬件单元的有效管理,设置了板级支持包,并添加有大量的驱动程序固件。板级支持包介于主板硬件与操作系统之间,是操作系统的一部分。程序员在使用嵌入式操作系统时,可以根据硬件结构的变化,在BSP中添加一些和系统相关的驱动程序。因此,随着主板的升级与变更,BSP也愈加庞杂。 以ARMLinux为例,早期的
7、ARMLinux中充斥着大量的垃圾代码,相当多的代码只是在描述板级细节,而这些板级细节对于内核来讲,只是垃圾。后来引入了PowerPC已成熟应用的DeviceTree技术,使得ARMLinux内核中的BSP华丽转身为扁平设备树(FDT)。 DeviceTree是一种描述硬件的数据结构,基本上是一个描述电路板上CPU、总线、设备组成的树形结构,由一系列的结点(node)和属性(property)组成,结点本身可包含子结点,可用来描述原先kernel中的大量板级细节与硬件细节,直接透过它传递给Linux。Bootloader会将
8、这棵树传递给内核,然后内核可以识别这棵树,并根据它展开出Linux内核中的众多设备,而这些设备用到的内存、IRQ等资源,也被传递给了内核,内核会将这些资源绑定给展开的相应设备。使用FDT后,Linux内核可以直接通过FDT获取硬件的细节信息。 由根结点、子结点、叶结点形成了
此文档下载收益归作者所有