当前位置: 首页 > >

基于ARM_DSP架构的新型智能仪器开发

发布时间:

《工业控制计算机》2008 年 21 卷第 1 期

67

基于 ARM- DSP 架构的新型智能仪器开发
De ve lop me nt of Nove l Inte llig e nt Ins trume nt Ba s e d on ARM- DSP Arc hite c ture

问治国 马旭东 鲁 艳 张云帆 ( 东南大学自动化学院, 江苏 南京 210096)

摘要 论述了一种智能仪器的嵌入式解决方案, 采用 ARM- DSP 双处理器体系结构, 充分发挥嵌入式系统软件丰富、界面通 信灵活多样、DSP 控制器处理控制能力强的特点。详细给出了嵌入式系统的总体软硬件结构, 论述了 ARM 和 DSP 控制器 的通信接口设计和驱动程序设计。 关键词: 智能仪器, 嵌入式处理器, DSP 控制器, ARM, Linux
Abs tra ct An inte llig e nt ins trume nt b a s e d on e mb e d d e d s ys te m is p re s e nte d in this p a p e r,in whic h ARM- DSP s ys te m s truc ture is a d op te d.It ma ke s the b e s t of b oth the s ys te m s oftwa re a nd the inte rfa c e c ommunic a tion func tions of the e mb e d d e d s yste m, a nd the p owe rful p e rforma nc e of DSP c ontrolle r in c ontrol a nd op e ra tion fie ld.The ha rd wa re a nd s oftwa re imp le me ntation a re g ive n in d e ta il a nd the c ommunic a tion inte rfa c e b e twe e n ARM a nd DSP,a nd d e vic e d rive r d e s ig n for Linux p rop os e d. Ke ywords :inte llig e nt ins trume nts ,e mb e d d e d p roc e s s or,DSP c ontrolle r,ARM,Linux

本文将 DSP 和 ARM 这两种嵌入式处理器结合起来以达到 新型智能仪器的设计要求。 1 系统硬件架构
传统智能仪器的工作原理是: 首先被测量通过传感器转化 为电信号, 经过放大和滤波后送入 A/D 转换器转换成相应的数 字量后送入单片机, 单片机根据仪器所设定的初值进行相应的 数据运算和处理( 如非线性校正等) , 运算的结果被转换为相应 的数据进行显示和打印并保存, 此外, 传统智能仪器还可以与 PC 机组成分布式测控系统, 由单片机作为下位机采集各种测量 信号与数据, 通过串行通信将信息传输给 PC 机, 由 PC 机进行 全局管理。传统智能仪器的硬件结构如图 1 所示。
图 1 传统智能仪器硬件结构 由图 1 可知, 传统智能仪器一般采取单机结构, 使用单片机 完全负责数据采集和处理、数据显示存储、打印、通信等任务, 而 单机系统只能构成简单的处理或控制系统, 很难满足复杂人机 接口和复杂网络接口的性能要求。本系统将全部功能分割成数 据采集和处理、数据显示存储和人机交互两大模块, 充分发挥 DSP 和 ARM 处理器的处理和控制优势 , 构 成 控 制 /管 理 一 体 机 共同完成新型智能仪器的设计要求。设计中使用 TI 公司的高性 价比的 32 位定点 DSP 控 制 器 TMS320F2812 作 为 控 制 机 ( 数 据 采 集 和 处 理 单 元 的 CPU) , 使 用 Samsung 公 司 的 基 于 ARM920T 内核的 32 位 RISC 微控制器 S3C2410A 作为管理机 ( 数据显示存储、人机交互单元 的 CPU) 。 两 者 通 过 高 速 同 步 串 行接口 SPI 来通讯。硬件总体框架如图 2 所示。 TMS320F2812 运 算 速 度 可 以 达 到 150MIPS, 基 于 可 调 整

图 2 新型智能仪器硬件框图 的哈佛总线结构和循环寻址方式, 有 8 级流水线, 可以完成指令 的并行处理和单周期内完成指令和数据的同时提取。内核还包 括了一个 32×32 位的乘法累计单元, 能够完成 64 位的数据处 理。这些都是普通 MCU 无法比拟的。而且由于 DSP 芯片的高 处理能力, 能以非常快的速度实现较复杂的控制算法, 从而以软 件程序取代复杂的硬件电路, 相应降低硬件成本, 提高系统可靠 性和降低测试维修成本。芯片内部集成高达 56 个可配置通用目 的的 I /O 引脚, 适用于需要大量开关量控制的场合。片上存储器 包括多达 128K×16 位的 FLASH 存储器和 18K×16 的单周期访 问 SARAM, 可 以 分 别 被 映 射 为 程 序 和 数 据 存 储 器 , 对 于 多 数 应 用场合, 都无需扩展外部存储器, 简化硬件设计。片上集成可配 置 的 16 通 道 12 位 高 速 ADC 模 块 , ADC 时 钟 可 以 配 置 为 高 达 25MHz, 最高采样带宽为 12.5MSPS, 具有可软件编程选 择 的 自 动排序功能, 能够实现各通道的独立循环转换, 而且触发方式灵 活。DAC 可以使用外部扩展接口 XINTF 或者使用串行通信模块 SPI、SCI、Mc BSP 等实现, 串行通信模块还可以实现多处理器的 通信。
S3C2410A 以 ARM920T 为 核 心 , 采 用 5 级 流 水 线 和 哈 佛 总 线 结 构 , 运 行 频 率 可 以 高 达 203MHz, 具 有 存 储 管 理 单 元 MMU 和 高 速 缓 存 , 内 部 集 成 SDRAM 和 NAND FLASH 控 制

68

基于 ARM- DSP 架构的新型智能仪器开发

器, 最多支持 1GB 的存储空间, 使得处理器可以轻松运行各类

嵌入式操作系统如 Wind ows CE、Linux 等。S3C2410A 片上集

成 LCD 控制器, 可以方便地支持 STN 和 TFT 液晶屏; 2 个 USB

主机接口, 可 用 于 外 接 U 盘 、USB 摄 像 头 等 设 备 , 1 个 USB 设

备接口, 可用于外扩 USB 打印 机 等 USB 主 机 设 备 ; 片 内 包 括 3

个 UART, 通 过 电 * 转 换 芯 片 SIPEX3232 扩 展 串 口 ; 为 了 实 现

大容量数据的存储, 可以借助于片内的 SD 卡接口扩展 SD 卡,

或者通过 S3C2410A 开放的数据和地址总线结合通用片选信

号, 通过 CPLD 来扩展 IDE 硬盘接口。为了支持人机交互, 可以

使用 S3C2410A 片内的触摸屏接口扩展触摸屏, 也可以使用

I2C 总 线 通 过 ZLG7290 键 盘 驱 动 器 来 扩 展 键 盘 , 或 者 使 用 PC

键盘, PC 键盘可以 利 用 CPLD 与 IDE 硬 盘 同 时 实 现 ; 对 于 需 要

网络功能的 仪 器 , 可 以 通 过 以 太 网 接 口 芯 片 DM9000 来 实 现 。

实时时钟 RTC 实时显示当前时间, 掉电采用备用电池供电。

2 ARM 和 DS P 接口设计

ARM 与 DSP 的

通信采用高速同步串

行 接 口 SPI 来 实 现 ,

由于通信主要由

ARM 发 起 , 所 以 设 置

为 主 机 , DSP 设 置 为

从机, 如图 3 所示。

主机通过发出 SPICLK 信 号 来 启 动

图 3 ARM 和 DSP 通讯接口设计

数据传输, 数据在 SPICLK 的一个边沿移出移位寄存器, 在相对

的另一个边沿锁存到移位寄存器, 因此, 主从机能够同时发送和

接收数据, 应用软件判定数据的真伪。SPI 具有 4 种时钟模式,

无 相 位 延 时 的 下 降 沿 、有 相 位 延 时 的 下 降 沿 、无 相 位 延 迟 的 上 升

沿和有相位延迟的上升沿。图 4 为无相位延时的下降沿的 SPI

时序图。

图 4 无相位延时的下降沿的 SPI 时序

主从机通信的基本流程如下: 主机通过发出 SPICLK 信 号

来启动数据传输, 此时从机发送伪数据, 从机通过中断方式来接

收数据, 当接收到完整的控制帧时, 首先检验控制帧的有效性,

对于有效的控制帧, 首先关闭 SPI 中断, 同时进行相应的处理,

处理完后, 再开启 SPI 中断并向主机做出回应。此时, 从机发送

数据, 主机发送伪数据。对于无效的数据帧, 将回应错误码要求

重发, 而对于超时错误, 将重发, 累计重发次数超过三次, 不再重

发并置错误标志。

对于移植了 Linux 操作系统的管理机, 为 了 能 够 在 用 户 空

间中正确使用 SPI 设备, 必须编写相应的设备驱动程序, 设备驱

动程序属于内核空间。由于 Linux 引入了内存管理单元 MMU,

因此为了在驱动程序中正确操作 SPI 寄存器, 首先必须通过内

存映射将物理地址映射成为虚拟地址:

r_SPCON0 = iore ma p (0x59000000,4)V

/ /SPI re g is te r

r_SPSTA0 = iore ma p (0x59000004,4)V

r_SPPIN0 = iore ma p (0x59000008,4)V

r_SPPRE0 = iore ma p (0x5900000C,4)V

r_SPTDAT0 = iore ma p (0x59000010,4)V

r_SPRDAT0 = iore ma p (0x59000014,4)V

r_GPECON = iore ma p (0x56000040,4)V / /IO re g is te r

r_GPEUP = iore ma p (0x56000048,4)V

在 Linux 中以模块的形式来加载设备, 在加载 模 块 时 , 需 要

调 用 入 口 函 数 init_mod ule , 而 在 卸 载 模 块 时 , 需 要 调 用 e x-

it_mod ule 。设备驱动程序通过 file _op e ra tions 数据结构提供访

问设备驱动的函数, 对于 SPI 这种字符型设备, 需要在驱动中实

现 op e n,c los e ,re a d ,write 和 ioc tl 等入口点函数。下面以模块初

始化函数 init_mod ule 和 write 函数来说明。init_mod ule 主要对

SPI 进行初始化并完成设备的注册。

r_SPPRE0 = 0xffV / /设置 SPI 波特率

r_SPCON0 = 0x18V / /使用查询方式读写数据

for(i = 0 V i < 10 V i++) d / /初始化 SPI 发送寄存器

rSPTDAT0 = 0xffV

f

r_GPECON |= 0x0a 800000V / /配置 IO 为 SPI

r_GPEUP |= 0x3800V

/ /禁止上拉功能

a rm2410_d e vfs _d ir = d e vfs _mk_d ir(NULL,″SPI″,NULL)V

d e vfs _re g is te r (a rm2410_d e vfs _d ir,DEVICE_NAME,DEVFS_FL_AU-

TO_DEVNUM,0,

0,S_IFCHR|S_IRUGO|S_IWUGO,&s p i_fop s ,NULL)V / /设备注册

write 函 数 向 设 备 写 数 据 , 主 要 调 s p i_tx_d a ta (U8 d a ta )函

数来实现, 由于采用查询方式来进行数据的接受和发送, 所以在

向 设 备 写 入 一 个 字 节 前 , 通 过 调 用 s p i_p oll_d one ()检 查 设 备 是

否正在发送数据, 如果是则等待, 如果设备已准备好, 则将下个

字节写入发送数据寄存器, 再进行查询, 如此循环, 直到所有数

据发送完毕。

s p i_p oll_d one ()V / /查询设备状态

r_SPTDAT0 = d a ta V / /发送数据

s p i_p oll_d one ()V

s p i_p oll_d one ()函数实现如下:

int nCount=0V

while (o(r_SPSTA0 & 0x01) )d

/ /查询设备状态标志位 为 1 则返

回 为 0 则等待

n Co u n t+ + V

if(n Co u n t> = 5 0 0 0 )d

p rintk(″SPI s ta te p oll fa ile d \n″)V

b re a kV f

f

3 系统软件设计与实现

3.1 控制机系统软件

系统软件的设计包括面向控制的控制机软件设计和面向管

理的管理机的软件设计。控制机方面, 可以分为三大功能模块:

数 据 采 集 和 处 理 模 块 、管 理 机 通 讯 模 块 、功 率 驱 动 和 开 关 量 控 制

模块。为了充分发挥 TMS320F2812 在 高 速 数 据 采 集 的 实 时 处

理能力, 引入 DSP /BIOS 实 时 操 作 系 统 提 供 的 多 任 务 机 制 , 将

数据采集和处理模块分为 2 个相对独立的任务: 数据采集任务

ta s k2 和数据处理任务 ta s k6、ta s k2 的 优 先 级 最 高 , 使 用 硬 件 中

断 HWI 来实现, ta s k6 使用另外一种线程类型 TASK 来实现, 优

先级低于 HWI, 在 ta s k2 的空闲周期内运行。HWI 具有严格的实

时性, 保证了采集周期的精确性, 任务之间通过管道来实现数据

的通信。当采样结束后, ta s k2 将采集到的数据写入管道, 当管道

中有数据写入时, ta s k6 被唤醒, 取出数据帧, 调用处理函数进行

处理, 若管道中没有数据, ta s k6 将自动挂起。

DSP /BIOS 是 TI 推 出 的 的 可 抢 占 的 实 时 多 任 务 操 作 系 统

内核。在 DSP /BIOS 中, 线程的概念是广义的, 程序中执行的任

《工业控制计算机》2008 年 21 卷第 1 期

69

何 独 立 的 指 令 流 : 一 个 子 程 序 、一 个 ISR、一 个 函 数 调 用 都 可 以 称为线程。它可以使得用户程序以线程集合构筑起来, 每个线程 执行一个模块化的功能, 通过允许高优先级线程抢占低优先级 线 程 , 以 及 允 许 阻 塞 、同 步 、通 信 等 各 种 线 程 交 互 方 式 使 得 多 线 程程序可以在一个处理器上运行。
在 DSP /BIOS 中线程被分为四个层次: HWI: 硬件中断, 用 于 响 应 外 部 异 步 事 件 , 当 一 个 硬 件 中 断 被 触 发 后 , 一 个 HWI 会 被执行来完成具有严格时间限制的关键作业。优先级最高; SWI: 软 件 中 断 , 优 先 级 仅 次 于 HWI, 用 于 处 理 时 间 限 制 比 HWI 宽 松 的 作 业 , SWI 使 得 HWI 可 以 将 不 太 关 键 大 的 处 理 委 托 给 SWI, 减少 CPU 在中断程序中的时间, 减少系统开销。与 HWI 一 样, 不允许阻塞, 线程一直运行直到完成; TASK: 任务, 优先级低 于 SWI, 允 许 阻 塞 , 等 到 所 需 资 源 为 止 , 共 享 数 据 的 途 径 最 多 ; IDL: 后 台 线 程 , 优 先 级 最 低 , MAIN 函 数 返 回 后 , DSP /BIOS 应 用程序为每个模块调用启动程序, 然后落入空闲循环。空闲循环 调用执行所有 IDL 对象的函数, 直到被高优先级线程抢占, 没有 时限要求的函数才应该在空闲循环中执行。一般, 目标 DSP 和 主机 DSP /BIOS 分析工具的通信通常在空闲循环中执行。
DSP /BIOS 中的时钟分为高、低分辨率时钟和系统时钟。高 分辨率时钟由 DSP 内部的定时器产生的硬件中断来产生, 对应 于 HWI 中的 CLK 模块, 用户可以 对 其 修 改 来 设 置 高 分 辨 率 时 钟的周期, 高分辨率时钟的周期可以达到一个指令周期。低分辨 率时钟由 SWI 中的 PRD 模 块 产 生 , 按 照 定 时 器 中 断 发 生 的 速 率来变化, 本系统中设置低分辨率时钟每 10ms 产生一次中断, 系 统 时 钟 由 低 分 辨 率 时 钟 来 驱 动 , 形 成 基 本 时 钟 源 。 DSP / BIOS API 函数的超时参数就是以系统时钟来判断的。
将控制机软件各模块划份成 7 个任务, 并置于不同的优先 级, 利用实时内核的调度有效地增强系统的运行效率及实时性, 简化了系统结构并提高了调试效率, 任务名称、描述和相互关系 如图 5 所示, 优先级与任务代号一致。

各个用户任务模块, 为了实现管理机的功能, 将软件分为多个模 块, 各模块通过线程实现。SPI 通讯模块负责与控制机通讯, RS232 模块负责与 PC 机通讯, 打印模块负责读取数据库并选 择打印机进行报表的打印, 人 机 接 口 模 块 GUI 部 分 基 于 嵌 入 式 图形接口 miniGUI, 需要对 miniGUI 进行移植, 包括按键和 LCD 驱动程序编写。另外需要对 miniGUI 输入抽象接口层( IAL) 进行 移植, 以及编写用户界面和实现界面功能。数据管理模块使用嵌 入式数据库 mSQL 负责数据的存储, 检索等功能, 人机接口模 块和通信模块需要调用数据管理模块的接口函数, 这里数据管 理模块没有作为单独的线程运行, 只是封装了一组供其他模块 调用的函数接口。
图 6 管理机软件总体框图 4 结束语
借助于嵌入式处理器的强大功能, 在嵌入式操作系统和实 时操作系统的配合下, 大大简化了系统软硬件设计, 使得复杂的 系统功能模块化, 各个模块通过操作系统的调度实现了并行执 行 , 充 分 发 挥 了 嵌 入 式 处 理 器 的 性 能 、提 高 了 运 行 效 率 、增 强 了 系 统 可 移 植 性 、可 裁 减 性 、可 维 护 性 。 目 前 已 用 于 开 发 医 疗 仪 器 和电力监控系统, 应用效果良好。

图 5 控制机任务分配 3.2 管理机系统软件
由于管理机处理的事务繁多, 但没有太高的实时性要求, 操 作系统的选择主要着眼于对复杂人机界面, 多种文件系统, 多种 硬件设备接口以及网络协议等方面的支持, 嵌 入 式 Linux 是 一 个功能强大, 免费, *台支持广泛, 设备驱动完善, 开发资料齐全 的嵌入式操作系统, 特别是在文件系统, 网络支持方面非常优 秀, 而且支持大量周边设备, 很大程度上减少了应用程序开发的 工作量, 本系统选用内核版本 2.4.19 的嵌入式 Linux。管理机可 分为四个层次( 如图 6 所示) : 物理层承载着所有软件的基础, 包 括 ARM9 微 处 理 器 S3C2410 和 一 些 外 部 接 口 电 路 和 芯 片 ; 在 物 理 层 上 是 进 行 设 备 管 理 的 系 统 层 , 系 统 层 包 括 嵌 入 式 Linux 和各个设备的驱动程序; 在系统层上为了系统应用程序的运行, 移植了一系列的嵌入式中间件, 同时为了保持应用层的可移植 性, 还提供了操作系统适配接口; 中间层上面即为应用层, 包括

参考文献 [ 1] 苏奎强, 吕强, 等.TMS320F2812 原理 和 开 发 [ M] .北 京 : 电 子 工 业 出
版社, 2006 [ 2] 王 军 宁 , 何 迪 , 等.TI DSP /BIOS 用 户 手 册 和 驱 动 开 发 [ M] . 北 京 : 清
华大学出版社, 2007 [ 3] 魏永明, 等.Linux 设备驱动开发[ M] .北京: 中国电力出版社, 2006 [ 4] 孙天泽, 袁文菊.嵌入式设 计 及 Linux 驱 动 开 发 指 南- 基 于 ARM9 处
理器[ M] .北京: 电子工业出版社, 2006 [ 5] 赵炯.Linux 内核完全注释[ M] .北京: 机械工业出版社, 2004
[ 收稿日期: 2007.6.1]




友情链接: