APP下载

基于开源软硬件的嵌入计算平台研究与实践

2013-09-21

单片机与嵌入式系统应用 2013年11期
关键词:清华大学出版社开源嵌入式

王 伟

(西华大学 电气信息学院,成都 610039)

引 言

计算机的发展经历了半个多世纪,从体积大运算慢的计算机,往运算速度快的巨型机与体积小的微处理器两个方向发展,单位体积的运算速度大大提高,功耗大大降低。从微处理器的发展来看,各种MCU、FPGA、SoC五花八门层出不穷;软件的角度来看,操作系统方面包括Scheduler、RTOS等,应用软件方面包括计算软件等。本文给出了一种基于开源软硬件技术的嵌入计算平台,用于某一具体项目中来证明开源软硬件技术在实际工程应用中的高效率。

1 嵌入计算平台系统

嵌入计算平台有别于一般意义的嵌入式系统,目前市面上的很多嵌入式智能产品其实并不具有或者只有少量先进的智能算法,很少用到现代信息处理和现代控制理论的最新成果。传统的学术研究开发模式基于某些先进的算法,都是在Matlab上实现的,真正转换为嵌入式C或其他能运行在小型嵌入式系统中的算法很少,这就影响到产学研的过程。借助敏捷开发的思想,让开发的迭代过程加快,真正实现产学研结合。

1.1 总体架构

本文中,硬件选用 Arduino(AVR单片机)、Raspberrypi(ARM11),软件在AVR芯片上采用Scheduler或者RTOS,在ARM芯片上采用Linux,计算软件采用Scilab。

开放源码与封闭源码的对比如表1所列。单片机一次投板成本在200元左右,周期1周。片上系统一次投板版成本在2 000元左右。

表1 开放源码与封闭源码的对比

开源技术开启了一场新工业革命,打破了原有的嵌入式开发模式。现有的计算平台系统结构框图和嵌入计算平台结构框图分别如图1、图2所示。

两块名片大小的开源硬件结构如图3所示,与名片的尺寸对比如表2所列,与PC的功耗对比如表3所列。

图2 嵌入计算平台结构框图

图3 两块名片大小的开源硬件开发板(标尺为inch)

表2 Arduino、Raspberry和名片的尺寸对比

表3 Arduino、Raspberry和PC的功耗对比

从图1~3以及表2~3,可以看出,采用开源的Arduino和Raspberrypi,无论从尺寸大小还是功率消耗方面,在嵌入计算应用领域上都具有明显的优势。

在过去的半个多世纪里,计算机软硬件技术和电气工程理论水平得到了长足的发展,但是智能控制、软件算法、软件工程、芯片技术、电路设计与制造、传感器技术都在各自的方向不断发展,这一发展又与日益增长的客户需求发生了矛盾。工程师们可以充分减少产品开发成本、技术风险和开发时间,在比过去短得多的时间里将更可靠、更便宜的产品投放市场,迎接市场的挑战。为此我们尝试从软硬件角度、算法理论、项目管理思想等多角度去理解一个典型实时声音图像识别控制系统。

1.2 硬件架构

(1)SPI总线

SPI(Serial Peripheral Interface,串行外设接口),一般由 MOSI、MISO、CLK三条线组成,三线制串行通信接口。Raspberrypi与Arduino的SPI总线连接如图4所示。

图4 SPI通信接口连接

(2)实现基于中断方式的流控通信机制

Raspberrypi为700MHz的处理器,而Arduino为16 MHz的处理器,两片不对称的芯片要进行通信,采用基于中断控制的流控方式通信机制,具体实现流程如图5所示。

以上流程实现了慢速的从处理器主导通信的流程,也就是慢速处理器决定通信状态机的状态关系。

1.3 软件架构

①FreeRTOS,基于时间触发的调度器和实时操作系统设计,包含内存管理、队列管理、任务调度几个部分。抽象的内存管理算法来自μC/OS,原因是在ANSI C中,malloc和free的使用是危险的。队列管理包括数据队列、任务队列,原因包括计算机是基于流水线的串行处理的原理实现的。

②Linux,源于Unix,诞生于1993,由程序爱好者编写。

图5 中断控制的流控方式通信机制

③Scilab,诞生于1990年代的法国自动化信息学会。从用户体验的角度来说,它与Matlab这类的数值计算软件类似。唯一不同的是,这是一款开源的数值计算软件,并且可以稍加修改移植到ARM-Linux系统之上,实现低成本的智能计算与控制的解决方案。

2 开源软硬件分析和改进

①Arduino,一种来自意大利的开源社区的成熟的单片机方案。开源的开放环境使用Java语言写成,基于processing,avr-gcc和其他开源软件。.net microframework简单实用,用上层开发模式来开发。Processing、Wiring则是一种新型的编程语言实现。

②Raspberrypi,来自英国剑桥大学的开源的SoC片上系统,基于 ARM11,集成 CPU、GPU、内存,外部接GPIO、USB、RJ45。具体电路采用成熟方案,或者采用厂家的OEM模块进行积木式搭建设计。既保证了系统的稳定性,也减少系统搭建的时间。当然并不代表我们就可以忽略电路知识以及电路设计的一些技术积累和细节。

Posix是开源软件领域的一个重要标准,Linux基于Debian,由业余爱好者整合和移植上万个软件包。

3 声音图像识别控制算法实现

这部分将成为本系统中最核心、最有难度的部分,也是决定产品成败的关键点。数学很重要,除此之外,便是实践。这是嵌入式系统开发工程师应该秉承的理念。

① 数值计算:采用Scilab开源数值计算软件,并移植到ARM-Linux环境中。

② 图形识别:采用Opencv开源嵌入式图像识别库,二值灰度表示图像和图像的几何学变换。

③ 声音识别:采用Simon开源嵌入式声音识别库,两阶段识别算法,在英语语音识别系统中,常用的声学模型基本单元是单词(word),上下文无关音素(monophone),上下文相关音素(triphone,biphone)和音节(syllable)。

4 应用系统分析及管理思想

当前阶段,本系统已经搭建起来。实现基本功能的移植,已经展现出其开放开源的好处,以及低成本的实现。

对于软件产品来说,软件开发就是其所有。对于嵌入式产品来说,除了硬件电路,还有大量的软件开发,甚至还有机械结构或者工业设计。这样看来,嵌入式系统的开发,特别是优秀的嵌入式产品的开发的过程,是一个比较复杂的项目管理过程。

技术、过程、人是嵌入式系统开发的三要素,过程起到了枢纽的作用,将技术和人贯穿起来,如何使技术和人能最大程度的发挥其作用,也成了开发者和项目管理者所面临的重大挑战。

[1] 张晓丹.应用计算方法教程[M].北京:机械工业出版社,2008.

[2] 胡广书.数字信号处理[M].北京:清华大学出版社,2006:71-76.

[3] 严蔚敏.数据结构[M].北京:清华大学出版社,2012.

[4] 马龙华.基于Scilab的ARM-Linux嵌入式计算及应用[M].北京:科学出版社,2011.

[5] 谭浩强.C程序设计[M].北京:清华大学出版社,2011.

[6] 钱能.C++程序设计教程[M].北京:清华大学出版社,2011.

猜你喜欢

清华大学出版社开源嵌入式
清华大学出版社期刊中心
五毛钱能买多少头牛
2019开源杰出贡献奖
TS系列红外传感器在嵌入式控制系统中的应用
Desperate Love towards the Dark Lady in Shakespeare’s Sonnets
搭建基于Qt的嵌入式开发平台
《秘书工作手记》
嵌入式软PLC在电镀生产流程控制系统中的应用
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0