0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于ColdFire5307处理器和uClinux操作系统实现数据采集系统的设计

电子设计 来源:电子技术应用 作者:陆宝辂,李荐民, 2021-06-18 15:39 次阅读

作者:陆宝辂,李荐民,李刚

在ColdFire上嵌入uClinux操作系统是一项比较成熟的技术,般应用在手持设备、家庭网关、工业控制中。但在数据采集应用中使用这项技术却不是很常见,原因是uClinux不是实时操作系统,而数据采集应用对数据采集的实时性要求很高。本文介绍如何利用在ColdFire上嵌入uClinux操作系统的方法来实现数据的采集和传输。

1 硬件平台

任何嵌入式应用系统都离不开具体的硬件平台,这里先介绍一下系统采用的硬件平台。

图1所示即为硬件结构的示意图。其中,SPM是数据处理模块,它控制前端的A/D变换,根据设定的采集周期将A/D变换后的数据保存在其内部的RAM中;同时发出一个中断信号。ColdFire 5307 xBoard是基于Motorola公司高性能嵌入式32位处理器ColdFire 5307自行开发的嵌入式应用开发板。其硬件配置包括:

ColdFire5307 90MHz 32位处理器;16M SDRAM;2M Flash ROM;10Mbps以太网接口;两个UART串口;两个64针的地址和数据总线接口。 ISC(图像控制工作站)和IDS(图像数据工作站)是两个工作站,用来对系统实现控制,对图像数据实现处理。

XBoard和工作站处在同一个以太网上,该以太网上还配有其它的设备。uClinux所要实现的功能是实时地将SPM上采集的数据通过以太网传到IDS上,同时接收来自ICS的命令以对SPM进行控制。

2 SPM和xBoard之间的连接

uClinux需要读取SPM中的RAM,所以最好是把SPM中的RAM作为uClinux的内存地址的一部分。SPM和xBoard上MCF5307之间的硬件连接如图2所示。 SPM中RAM的地址线、数据线和控制线直接连到CPU的总线上。除了硬件上的连接之外,还需要设置MCF5307的寄存器,为SPM上的RAM分配内存空间。XBoard在加电时首先运行debug程序,所以在debug中进行寄存器的设置是比较合适的。在debug源代码中的sysinit.c文件里的mcf5307_cs_init函数中加上下面的语句: MCF5307_WR_CS_CSAR5(imm,0xa000); SPM的地址从0xa0000000开始 MCF5307_WR_CS_CSCR5(imm,0x3d40); 采用8位的读方式 MCF5307_WR_CS_CSMR5(imm,0x01FF0001); 空间大小为1M 将SPM控制的引脚和MCF5307的并口引脚相连,这产对SPM的控制就只需设置并口的相应位了。

3 uClinux下的实时性

uClinux并不是一个实时操作系统(RTOS),如何使用uClinux完成有实时性要求的数据采集是需要考虑的问题。由于应用中只一个实时的任务——从SPM中读取数据,所以采用中断的方式来对数据采集完的信号提供实时响应。下面的代码用来向uClinux注册IRQ7中断处理程序:result=request_irq(ECM_IRQ,ecm_interrupt,0,“ecm”,NULL); 在中断处理程序中,先关闭中断,因为中断嵌套在这里是没有意义的,还有一个重要的原因是SPM中断信号的低电平持续时间比较长。CPU是利用低电平来标志断信号的,所以CPU可能在SPM的一个中断信号中检测到多次中断。关闭中断后,从SPM的RAM中读取数据。由于SPM和xBoard之间的连接已得到保证,SPM的内部RAM成为uClinux的内存空间的一部分,所以读的工作是很简单的,只是将数据从一个地址读到另外一个地址,读完数据后打开中断。读数据之间发生的中断都会被忽略。读数据块的大小为4096字节,读完所有的数据需要2ms。所以在采集周期低于2ms的情况下,系统无法正常工作。不过这个指标低于应用的要求。

4 数据的临时存放

xBoard上并没有大的存储设备,所以uClinux采集的数据必须及时地传送出去。以太网上通过交换机连接着多个设备,在网络繁忙的时候并不能保证数据会被及时地传出去。解决这个问题的方法是开辟一个缓冲区,将暂时无法传出去的数据放在缓冲区中。 由于没有MMU的支持,uClinux不能提供内存保护机制,进程可以随意读取任何内存地址。这样,在带来方便的同时也增加了一些麻烦。方便的一面表现在可以在进程中开辟缓冲区,在内核中用同样的地址使用缓冲区;不利的一方面表现在开辟动态内存必须十分小心,不能和其它进程发生重叠。 在进程中开辟了50个数据缓冲片,这些缓冲片通过三个双向链表维持形成缓冲区。所有的缓冲片被挂在一个称为list的双向链表中,退出进程的时候,应该将这些动态内存释放。同时,将存有有效数据(即尚未被发送出去的数据)的缓冲片放在称为dirty的双向链表中,将可以使用的缓冲片放在称为clean的双向链表中。中断处理程序每次从clean链表中取得一个缓冲片,存入数据后放到dirty链表中;相反,发送进程每次从dirty队列中取一个缓冲片,发送其保存的数据,然后把它放到clean链表中。这样可以在一定程序上为网络速度的稳定提供缓冲。

5 uClinux上运行任务的分析

在uClinux上运行了三个任务:读取采集数据、通过以太网发送数据、接收和执行来自ICS的命令。其中的读取采集数据任务对实时性有要求,把它用中断处理程序来实现,而其它的两个任务则通过用户进程来实现。通过以太网发送数据的任务和读取采集数据的任务其享一个缓冲区,通过ioclt函数在它们它们传递缓冲区双向链表的地址。所以还需要为SPM注册一个驱动程序,这也是在uClinux操作中比较特别的进程和内核通信的方法。同时,把对SPM的设置和查询等操作也包装在这个驱动程序里同,这些操作都是通过ioctl函数向程提供接口。注册驱动程序的函数是: result=“register”_chrdev(ECM_MAJOR,“ecm”,%26;amp;ecm_fops);可见,这里把SPM作为一个字符型的设备,由于缓冲区是共享,所以必须提供一个锁相制,使得在某个进程向缓冲片中写数据时,其它的进程不读或写该缓冲片。 UClinux不仅在信息家电、低端网络设备和工业控制领域中有较广的应用,而且在简单的数据采集和传输方面也有了应用方案。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18275

    浏览量

    222147
  • 数据采集
    +关注

    关注

    38

    文章

    4523

    浏览量

    112313
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121875
收藏 人收藏

    评论

    相关推荐

    嵌入式实时操作系统uCOS II经典实例:基于STM32处理器

    嵌入式实时操作系统uCOS II经典实例:基于STM32处理器.part1
    发表于 10-18 23:59

    SEP3203处理器的FPGA数据通信接口设计

    流水线操作。1系统的总体设计[1-2]系统硬件主要由信号采集模块、FIFO、FPGA和SEP3203处理器组成。信号
    发表于 12-05 10:13

    基于STM32处理器的嵌入式实时操作系统μCOS-Ⅱ经典实例光盘资料

    买的书带的 可以参考下嵌入式实时操作系统μCOS-Ⅱ经典实例——基于STM32处理器-光盘资料.zip (12.94 MB )
    发表于 02-13 06:35

    SEP3203处理器实现FPGA数据通信接口设计

    FPGA处理数据的时间,所以整个系统实现了流水线操作。1 系统的总体设计
    发表于 04-26 07:00

    汽车常规温度的数据采集怎么实现

    处理器,操作系统采用2.6.8.1内核Linux,GUI采用Trolltech公司的Qtopia;功能上主要实现:各路温度的采集显示、音频报警、温度
    发表于 08-15 06:10

    基于μClinux操作系统数据交换区怎么生成?

    对客户端交互现场设备数据,向下负责与接口缓冲区交互设备实时数据系统以Motorola公司的32位控制ColdFire5307为CPU,使
    发表于 08-23 07:26

    如何利用ColdFire uClinux实现数据采集和传输?

    本文介绍如何利用在ColdFire上嵌入uClinux操作系统的方法来实现数据采集和传输。
    发表于 05-26 07:09

    如何实现基于Linux操作系统的嵌入式数据采集模块的设计

    湖南大学硕士学位论文基于Linux操作系统的嵌入式数据采集模块设计与实现姓名:易斌申请学位级别:硕士专业:电路与系统指导教师:戴瑜兴基于 Linux
    发表于 11-09 07:47

    双内核Cortex-A9处理器设计实现

    类别:嵌入式系统处理器知识产权许可商ARMHoldingsplc已经成功开发出双内核Cortex-A9处理器设计(被称为Osprey)的两个实现。Cortex-A9
    发表于 12-13 06:03

    Sitara AM62处理器的资料分享

    分析。AM62处理器还支持双屏全高清显示和多种操作系统,包括主线Linux®和 Android 操作系统。此外,AM62处理器可提供有线和无线连接接口。将
    发表于 11-03 06:11

    Motorola微处理器的bootloader分析与应用

    以Motorola 32位处理器ColdFire5307 为例,分析、介绍Motorola公司用于嵌入式系统开发的dBUG通用bootloader 软件的结构、运行原理及应用。
    发表于 04-15 10:26 18次下载

    基于ColdFire5307和MC68HC908AP64 的

    本论文主要阐述了基于 ColdFire 5307 和MC68HC908AP64 的嵌入式控制系统的软件和硬件系统
    发表于 04-22 17:20 28次下载

    基于uCLinux的嵌入式实时远程数据采集系统

    提出一种基于嵌入式操作系统的可远程监测的新型数据采集系统的设计方案. 本系统以嵌入式处理器芯片S3C44B0X作为
    发表于 04-24 10:45 22次下载

    利用ColdFire uClinux实现数据采集和传

    利用ColdFire uClinux实现数据采集和传 摘要:介绍了利用ColdFire uClinux
    发表于 01-13 10:48 638次阅读
    利用<b class='flag-5'>ColdFire</b> <b class='flag-5'>uClinux</b><b class='flag-5'>实现</b><b class='flag-5'>数据采集</b>和传

    uClinux操作系统使用ColdFire MCF5249

    的MP3解决方案,集成音频外围设备、低功耗和Freescale半导体广泛的软件和硬件参考设计。本应用程序说明说明如何运行MP3解码器在ColdFire MCF5249上使用uClinux操作系统,在微
    发表于 12-15 14:53 0次下载