基于OMAP3530嵌入式最小系统的开发

2016-11-23 10:02马云彤邵云峰
计算机测量与控制 2016年5期
关键词:双核队列串口

李 攀,马云彤,邵云峰,彭 涛

(1.哈尔滨工业大学电气工程及自动化学院自动化测试与控制系,哈尔滨 150080;2.北京电子工程研究所,北京 100854)

基于OMAP3530嵌入式最小系统的开发

李攀1,马云彤1,邵云峰2,彭涛2

(1.哈尔滨工业大学电气工程及自动化学院自动化测试与控制系,哈尔滨150080;2.北京电子工程研究所,北京100854)

随着嵌入式系统日趋复杂,类似机载状态监测系统,对嵌入式处理器在高性能计算和复杂控制方面的性能提出了更高的要求;针对复杂嵌入式系统的高性能需求,介绍了TI公司ARM+DSP架构的双核异构处理器OMAP3530,并进行了OMAP3530嵌入式最小系统的开发,包括硬件、软件设计两个方面;硬件设计包括电源、时钟、存储器以及外围接口等模块,实现了OMAP3530启动以及和外围通信的最基本硬件组成;软件设计包括ARM端操作系统移植、ARM和DSP双核通信,在此基础上设计了双核的应用程序;最后采用Lab VIEW在上位机上设计了软件部分的测试程序,测试了系统的完整性;OMAP3530作为一款高性能的嵌入式处理器,为复杂的嵌入式系统应用提供了解决思路。

高性能计算;复杂控制;OMAP3530;嵌入式最小系统;双核通信

0 引言

随着科技的发展,嵌入式系统面向的应用越来越复杂,所需要的功能也更多样。例如在机载状态监测系统中[1],系统首先需要采集飞机的振动信号,温度信号、应力信号等,然后将信号传给数据处理中心通过复杂的算法进行实时分析处理,最后将分析的结果通过人机交互接口呈现给技术人员[2],以此来对飞机的状态进行分析和预测,为飞机安全飞行和维护提供依据[3]。在整个系统中,需要采集大量的数据,利用复杂的处理算法,要求系统同时具备高性能的实时计算和外围设备控制能力,对系统功耗的要求也非常严格。目前,在嵌入式系统领域,类似机载状态监测系统,对兼具高性能实时计算和复杂控制需求的系统越来越多。

针对上述的需求,对系统的处理核心嵌入式处理器提出了较高的要求。在嵌入式处理器领域中,DSP由于其独特的硬件结构,在数字信号处理方面具有很大的优势;ARM具有强大的控制能力,可以运行嵌入式操作系统,为用户提供了强大的软硬件开发平台;但二者主要针对单一的应用,对于复杂的嵌入式系统的需求难以胜任。

随着集成技术的发展,嵌入式多核处理器已经成为发展趋势,针对需要同时处理高性能计算和复杂控制的应用,各大公司推出了相应的嵌入式处理器方案,主要是异构多核处理器[4]。典型代表是TI公司的OMAP系列处理器,采用ARM +DSP的双核架构,使得数据处理能力得到大大的增强[5]。

本文针对复杂嵌入式系统的需求,基于TI公司的OMAP3530处理器,介绍ARM+DSP架构的嵌入式处理器的软硬件设计方法。

1 OMAP3530最小系统硬件设计

1.1OMAP3530简介

如图1所示为OMAP3530框架图,它在一片硅片上集成了720MHz的ARMCortex-A8核和520MHz的DSPTMS320C64x+核,处理性能优越,而且支持丰富的外设资源。在功耗方面,OMAP3530集成时钟门控与睡眠模式,可在不降低性能的情况下降低功耗。

图1 OMAP3530硬件结构

1.2硬件设计

OMAP3530最小系统是OMAP3530正常工作的最基本硬件构成,满足基本的数据处理和系统控制功能,主要包括OMAP3530启动必需的电源模块、时钟模块、存储器模块。外围接口方面,需具备调试所需的接口如JTAG接口、串行通信接口、SD卡模块,考虑到后期应用开发过程涉及到人机交互,还需考虑设计USB接口、视频显示接口等。如图2所示为OMAP3530最小系统的硬件设计框图。

OMAP3530嵌入式最小系统的核心部分是电源、时钟和存储器部分。

OMAP3530需要多种电压值供电,采用TI为集成电源管理芯片TPS65930为系统供电,其集成了多路电源管理转换通道,同时还支持音频编解码器、USB2.0收发器、键盘等接口资源,简化了系统设计,同时在功耗也进行了优化[6]。

在时钟设计方面,针对OMAP3530的低功耗特性,本文为OMAP3530提供了两个外部时钟,一个是26 MHz的高频时钟,作为系统主时钟;一个是32 k Hz的低频时钟,作为OMAP3530低功耗模式下的时钟。

图2 OMAP3530最小系统硬件设计框图

OMAP3530处理器内部集成了80 KB的ROM和64 KB的RAM,容量太小,本文采用镁光MT29C4G48 M存储芯片扩展存储,该芯片将512 MB的16位NAND Flash和256 MB的32位LPDDR SDRAM集成在封装在一起,但二者的地址线、数据线、控制线、电源引脚相互独立,有效的节省了PCB面积。

2 OMAP3530软件设计

2.1软件总体设计框架

OMAP3530软件设计主要分为系统软件和应用程序两个部分,图3所示为软件设计框图。

图3 软件设计整体框图

系统软件方面,本文在OMAP3530系统ARM端运行嵌入式Linux系统,用于实现系统的启动,外围设备资源的管理以及应用程序的运行;在DSP端运行DSP/BIOS系统,主要工作是算法的实现;为了发挥OMAP3530双核架构的优势,使ARM核和DSP核协同工作,需要实现双核通信,本文采用TI开发的DSP/BIOS Link(简称DSPLINK)驱动模块实现双核通信[7]。

应用程序方面,在ARM端,设计了应用程序通过串口和上位机通信,同时利用DSPLINK模块实现和DSP通信;相应地,在DSP端,除了实现和ARM,以FFT算法为例,实现在DSP端进行算法处理。

2.2系统软件实现

2.2.1嵌入式Linux系统移植

ARM端嵌入式Linux系统的移植,主要分为4个层面:xloader、u-boot、kernel和文件系统的移植。

图4 嵌入式Linux系统移植流程

嵌入式操作系统在硬件上电后利用引导程序将Linux内核加载到目标硬件上,这就是xloader和u-boot需要完成的工作。xloader是一级引导程序,程序短小、功能简单,用作简单初始化,加载并执行u-boot;u-boot是二级引导程序,完成初始化系统时钟和SDRAM,关闭看门狗等工作,从Flash中读出内核写到SDRAM中。

嵌入式Linux内核是操作系统的核心,其主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。

根文件系统的功能主要是将操作系统中与管理相关的所有软件和数据进行目录结构式的统一管理[8]。

2.2.2OMAP双核通信机制

本文采用TI公司提供的DVSDK软件进行应用程序的开发,利用DVSDK的DSPLINK模块实现ARM 和DSP之间底层通信。DSPLINK的核心是ARM和DSP共享内存,其具体机制是ARM或DSP将数据写到共享内存,然后通过邮箱(Mailbox)发送消息并产生中断,通知对方可以读写共享内存中的数据,从而实现了有效的通信机制。当小数据量的通信时,一般使用片内的共享内存,速度最快,当需要大数据量的通信时,可以分配片外的DDR作为共享内存[9]。

DSPLINK以设备驱动的形式加载在Linux系统中,将ARM与DSP的物理连接特性抽象出来,为ARM端应用程序提供了一套API,即DSPLINK API。在DSP端与其连接的是DSP/BIOS实时操作系统,作为驱动形式存在,为DSP端应用程序提供API,即DSP/BIOSAPI,其结构和作用和DSPLINK API相似。在应用层实现了ARM和DSP之间的通信,降低了用户开发程序的复杂度[7],DSPLINK模块的结构如图5所示。

图5 DSPLINK模块结构

基于ARM端DSPLINK包括以下几个部分:

操作系统抽象层,包含DSPLINK需要的一些通用的操作系统服务组件,提供一套通用的API与操作系统的其它组件隔离,使DSPLINK可以方便地移植到不同的操作系统中[10]。

LINK驱动器,包含基于ARM与DSP的物理连接的底层控制操作,负责ARM与DSP之间的数据传输和DSP的运行等操作[10]。

进程管理器,维护针对所有模块的Book-Keeping信息,通过API给用户提供通过LINK驱动器的控制操作[10]。

在DSP端,LINK驱动器是DSP/BIOS驱动中的一部分,只负责基于物理连接之上与ARM之间的交互。

DSPLINK为ARM应用程序提供的常用API组件有PROC、CHNL、MSGQ、POOL等[10]。

PROC组件,其功能是基本的处理器控制,在OMAP3530中主要是ARM对DSP的控制。包括初始化DSP、加载DSP的程序、从DSP代码指定的地址运行DSP程序等。

CHNL组件,功能是在应用空间提供一个逻辑数据传输通道,是一种ARM和DSP数据传输的方式。

MSGQ组件,负责ARM与DSP之间可变长度的短消息交互,消息的发送接收都通过队列实现,发送者将数据写入到消息队列中,接收者从消息队列接收信息。一个消息队列只可以有一个接收者,但可以有多个发送者,DSP/BIOS系统为DSP也提供相应的API组件。

POOL组件,用于控制存储器池的创建和关闭,POOL创建的存储器池可供CHNL和MSGQ组件使用,用于创建数据和消息传递的缓存区,DSP/BIOS系统为DSP也提供相应的API组件。

2.3应用程序设计

通过在ARM端和DSP端应用程序分别调用DSPLINK和DSP/BIOS提供的API可以实现双核通信,在此基础上实现应用程序。

2.3.1应用程序总体结构

如图6所示为应用程序的总体结构,整个程序的核心思想是从上位机串口获取波形数据并在DSP中进行FFT处理,在实际应用中数据还可以来自传感器采集通过AD转换而来,也可以来自USB接口等。串口的收发控制在ARM中完成,通过调用嵌入式Linux系统的串口驱动实现;ARM将波形数据通过消息队列发送给DSP进行FFT处理;DSP处理完成后,通过消息队列将结果发送给ARM;ARM再将处理结果通过串口发送给上位机,进行显示或进一步分析处理。

图6 应用程序总体结构

2.3.2ARM端应用程序

如图7所示为ARM端应用程序流程图,主要分为两部分:消息队列的创建、发送和接收;串口数据的收发。

图7 ARM端应用程序流程图

1)消息队列:

如图8所示为消息队列创建流程图,消息队列主要是利用DSPLINK的PROC、MSGQ、POOL等API组件实现ARM和DSP的通信,通过调用这些API实现对消息队列的创建和消息的收发等。

由图8所示,ARM端通过以下顺序调用API打开消息队列[11]:

(a)PROC_setup(),对PROC组件进行创建和初始化;

(b)PROC_attach(),建立与ARM端通信的DSP的连接,调用时通过ID号ARM就能连接到指定的DSP;

图8 ARM端消息队列创建流程

(c)POOL_open(),打开共享内存池;

(d)MSGQ_open(),打开消息队列,使用消息队列通信前,通信双方需要打开一个消息队列,每个消息队列有独立的name,当通信双方消息队列的name相吻合时,消息队列才能成功创建;

(e)PROC_load(),将编译好的DSP程序加载到指定ID的DSP中;

(f)PROC_start(),开始运行指定ID的DSP的程序;

(g)MSGQ_locate(),等待已经连接的DSP方打开消息队列,才能进行通信;

通过调用上述的API,ARM端的消息队列创建完成,当DSP端消息队列创建完成后,就可以调用MSGQ组件的MSGQ_put()和MSGQ_get()两个API,进行消息的发送和接收,在传输完成后,需要调用MSGQ_release()释放消息队列内存。

2)串口:

Linux系统下驱动以文件的方式放在文件系统/dev目录下,串口的驱动也是如此,如串口1是/dev/ttyS0。在Linux下对串口的操作相当于对文件的操作,采用文件操作函数的“open”、“close”、“read”、“write”等可以实现对串口打开关闭和数据读写,如图9所示为串口应用程序流程图。

图9 串口应用程序流程图

(a)打开串口,利用open()函数以读写方式打开串口;

(b)设置串口参数,打开串口成功后需要对串口参数进行设置,主要对串口波特率、校验位、停止位等的设置;

(c)读串口,使用read()函数,将串口缓冲区的数据读出来;

(d)写串口,使用write()函数,给串口缓冲区写数据;

(e)关闭串口,使用close()函数,关闭之前打开的串口。

通过以上步骤,ARM就可以利用串口和上位机进行通信。

2.3.3DSP端算法程序

如图10所示为DSP端程序流程图,该程序主要是基于DSP/BIOS提供的API实现消息队列的创建以及和ARM的通信,在实现通信的基础上实现FFT算法。

图10 DSP端程序流程图

1)消息队列

如图11所示为DSP端消息队列创建流程图,DSP端消息队列的创建主要是利用DSP/BIOS提供的MSGQ组件实现的,和ARM端类似,MSGQ为DSP端提供了相应的API,通过调用这些API实现对消息队列的创建、数据的收发等。

DSP端按如下顺序打开消息队列[11]:

(a)建立TASK任务,由于双核通信是基于两端操作系统进行的连接,因此,在DSP端同样必须采用操作系统作为通信的媒介,DSP端采用DSP/BIOS操作系统,以任务的形式运行程序;

图11 DSP端消息队列创建流程图

(b)创建和初始化MSGQ传输属性,在进行MSGQ的创建打开之前,要先指定MSGQ的相关属性;

(c)MSGQ_open(),打开DSP端消息队列;

(d)MSGQ_locate(),等待连接ARM创建的消息队列;

(e)当ARM和DSP端消息队列都建立完成并连接,就可以开始通信,DSP通过调用MSGQ_put()和MSGQ_get()可以实现消息的发送和接收。

2)算法设计

DSP具有高性能的数字信号处理能力,本文为了说明开发流程,以频域抽取的FFT算法为例进行说明,在实际应用可以根据实际情况设计更为复杂的算法。

3 测试程序设计

本文利用Lab VIEW软件设计了上位机测试程序,程序结构图如图12所示。测试程序是为了验证系统功能的正确性和完整性,本文主要验证OMAP3530最小系统串口通信和算法程序的正确性。

图12 测试程序结构

如图12所示,测试程序主要包括波形数据产生、串口收发、FFT计算:

1)波形数据产生,本文设计三路正弦波叠加,采样率为1000Hz,采样点数为16点,这里的波形数据可以根据应用需要进行产生;

2)串口收发,调用NI提供的VISA库实现串口的数据收发功能,主要包括串口参数的设置,串口数据的读写,和OMAP3530最小系统的通信;

3)FFT处理,本文采用Lab VIEW的FFT模块对产生的波形数据实现FFT处理,作为DSP的FFT处理结果的验证参考标准,如果需要验证其他算法可以在Lab VIEW上实现其他算法,也可以利用Matlab和Lab VIEW混合编程实现。

通过多次测试,OMAP3530和上位机的串口通信是正确的,同时DSP FFT计算所得的结果和上位机Lab VIEW中FFT模块所得的结果在误差范围内是一致的,符合要求,因此验证了整个软件设计的正确性和完整性。

4 总结

本文根据机载状态监测系统等复杂系统的数据处理需求,提出了采用TI公司的ARM+DSP架构的处理器OMAP3530作为数据处理核心的方案,并介绍了基于OMAP3530最小系统的硬件设计。软件方面,在ARM端移植了嵌入式Linux操作系统,利用DSPLINK实现了ARM和DSP的双核通信,介绍了DSPLINK API的调用方法,在此基础上设计应用程序,实现了ARM和DSP的协同工作。最后,针对应用程序的功能验证,利用Lab VIEW设计了上位机测试程序,验证了应用程序功能的完整性和正确性。以上的开发流程针对TI的ARM+DSP架构的处理器皆可使用。

OMAP3530作为一款双核异构的处理器,在ARM端运行的是Linux系统,用于控制外设接口,如串口、USB接口、HDMI接口等,串口的功能主要用于打印调试信息和通信;USB接口用于连接键盘、鼠标、U盘等设备,或者用于通信;HDMI接口主要用于连接显示器进行界面显示。DSP端,为TMS320C64x+核,能胜任复杂的数字信号处理应用,本文设计了算法程序,用于处理ARM通过消息队列发送给DSP的数据,处理完后通过消息队列发送给ARM。在系统运行的过程中,DSP端可以看作是ARM的一个外设,ARM负责DSP程序的启动、执行、结束等。

由以上的分析可以看出,ARM和DSP是并行运行的,ARM负责界面的运行和外围设备的控制,DSP负责算法的执行,实现了在复杂嵌入式系统应用中ARM和DSP的协同工作。

随着嵌入式系统应用越来越复杂,目前单一的处理器已经不能满足复杂的嵌入式系统应用,根据本文针对OMAP3530的分析和软硬件设计,可以看出,异构的嵌入式处理器能够很好地应用于复杂的嵌入式系统中。目前,异构的嵌入式处理器已经成为一种发展趋势,为复杂的嵌入式系统应用提供了新的解决方案,因此,开发异构的嵌入式处理器具有重要的价值。

[1]孟宏伟,马建仓,张国强,等.飞机振动及应变状态监测的无线传感器网络系统研制[J].计算机测量与控制,2014,22(3):860-862.

[2]李文明,张涛,陈俊江.无人机载设备状态监测系统的设计与实现[J].长春理工大学学报,2008,31(2):17-20.

[3]曹霞,黄圣国.ACMS的飞机状态监控新概念[J].江苏航空,2000,(3):36-7.

[4]Gepner P,Kowalik MF.Multi-core processors:New way to achieve high system performance[A].Parallel Computing in Electrical Engineering,2006.PAR ELEC 2006.International Symposium on[C].IEEE,2006:9-13.

[5]Morozov S,Tergino C,Schaumont P.System integration of Elliptic Curve Cryptography on an OMAP platform[A].Application Specific Processors(SASP),2011 IEEE 9th Symposium on[C]. IEEE,2011:52-57.

[6]刘立哲.基于双核处理器(OMAP3530)的嵌入式开发平台研究与实现 [D].北京:北京工业大学,2012.

[7]Cui Y,Li B.A Palm-Print Recognition System Based on OMAP3530[A].Proceeding of IEEE 2010 sixth International Conference on Wireless Communications Networking and Mobile Computing[C]. Chengdu,Sichuan,China,2010:1-4.

[8]李文婷,林岩.基于 OMAP3530的多媒体信息处理及通信系统设计[J].信息与电子工程,2010,8(2):149-54.

[9]鲁琴,胡冰,罗武胜.基于OMAP的无线多媒体传感网图像节点设计[J].计算机测量与控制,2009,17(9):1831-1833.

[10]Texas Instruments Incorporated.DSP/BIOS Link User Guide [EB/OL].//http:www.ti.com,USA:Texas Instruments Incorporated,April 2006.

[11]栾小飞.OMAPL138双核系统的调试方案设计[J].单片机与嵌入式系统应用,2012,12(1):16-19.

Development of Embedded Minimum System With OMAP3530

Li Pan1,Ma Yuntong1,Shao Yunfeng2,Peng Tao2
(1.Department of Automatic Test and Control,Harbin Institute of Technology,Harbin150080,China;2.Beijing Institute of Electrical Engineering,Beijing100854,China)

With the increasing complexity of embedded systems,like airborne monitoring system,require high-performance computing and complex control performance of embedded processors.For high-performance requirements of complex embedded systems,introduce the TI's ARM+DSP dual-core heterogeneous processor,OMAP3530.Develop OMAP3530 embedded minimum system,including hardware and software designs.In hardware,design power,clock,memory and peripheral interface module,which are the basic hardware components of start and communications.In software,migrate operating system for ARM,and achieve ARM and DSP dual-core communication,and design the ARM's and DSP's application based above.Finally,design test program using Lab VIEW on the host computer,testing the integrity of the system.As a high-performance embedded processor,OMAP3530 provides solution ideas for complex embedded systems applications.

high-performance computing;OMAP3530;embedded minimum system;dual-core communication

1671-4598(2016)05-0190-05

10.16526/j.cnki.11-4762/tp.2016.05.054

TP274.2

A

2015-11-02;

2015-12-24。

李攀(1993-),男,四川阆中人,硕士研究生,主要从事嵌入式系统开发、异构DSP的开发。

猜你喜欢
双核队列串口
边角双核互相转,环环相扣不变心——解三角形经典题突破
全球金融“F20”在此召开!横沥进入“双核”时代
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
队列队形体育教案
队列里的小秘密
基于API函数库实现串口数据通信的分析与设计
基于多队列切换的SDN拥塞控制*
基于EM9000工控板高性能双串口通信模型设计与实现
在队列里
船舶电子设备串口数据的软件共享方法