AT91RM9200平台的辅助时钟研究

发布者:532829319hmk最新更新时间:2012-09-22 来源: 单片机与嵌入式系统应用 关键字:AT91RM9200  辅助时钟  VxWorlks 手机看文章 扫描二维码
随时随地手机看文章

  引 言

  在VxWorks中,定时器机制的实现是建立在时钟基础之上的。可根据不同的要求选用不同的定时机制,如taskDelay()、WatchDog、辅助时钟。前两种定时都是基于系统时钟的。

  taskDelay()是最简单的延时方法。它的单位是tick,所以其延时精度并不高,但对于延时10 ms以上的系统足够了。利用taskDelay(),可以将调用的任务从就绪态转到睡眠态,但是不能用于中断服务程序中。另外,可以通过调用taskDelay(0),将CPU交给系统中其他相同优先级的任务。

  看门狗定时器作为系统时钟中断服务程序的一部分来维护。因此,与看门狗定时器相联系的函数运行在系统时钟中断级,延时单位为tick。如果应用程序需要多个看门狗函数,则可使用wdCreate()为每个需求产生独立的看门狗ID,因为对于给定的看门狗ID,只有最近的wdStart()有效。利用看门狗定时器,调用的任务不会被阻塞,因为wdStart()调用是立即返回的。但它也一般只适用于延时10ms以上的系统。

  如果在实际时需要更高精度的定时(如1 ms),那么采用辅助时钟就是非常可取的一种方法。一般在VxWorks系统的BSP中,都没有配置辅助时钟,本文详细介绍辅助时钟的配置及使用方法,以便在实际中灵活运用。

  1 AT91RM9200工业平台的时钟和定时器

  本文的研究是基于AT91RM9200工业平台的,因此首先需要对此平台下的时钟及定时器进行介绍。

  AT91RM9200提供了2个3通道16位定时器/计数器(TC)。3个通道虽然独立,但操作相同,每个通道均为用户可配置,包括3个外部时钟输入(XC0、XCl或XC2),5个内部时钟输入(TIMER_CLOCKl、TIMER_CLOCK2、TIMER CLOCK3、TIMER_CL0CK4、TIMER_CLOCK5),以及2个可由用户配置的多功能输入/输出信号。另外,每个通道可工作在两种不同模式下,即捕获模式和波形模式。其中,捕获模式提供信号测量,波形模式用来产生波形,可由TC通道模式寄存器的WAVE位编程设定。定时器/计数器框图如图1所示。

定时器 

  其中,如果选择通道信号时,XCO、XCl、XC2表示3个外部时钟输入;TIOA、TIOB表示作用于每个通道的2个多功能输入/输出信号;INT表示中断信号输出;SYNC表示同步输入信号。如果选择块信号时,TCLKO、TCLKl、TCLK2表示3个外部时钟输入;TIOAO~TIOA2,表示通道0~2的TIOA信号,TIOB0~TIOB2表示通道0~2的TI0B信号。

  其中,5个内部时钟输入与主时钟(MCK)、慢速时钟(SLCK)及主时钟分频后时钟相关,如表1所列。

5个内部时钟输入与主时钟

  2 在VxWorks中辅助时钟的配置

  在VxWorks操作系统中如果要使用辅助时钟,必须经过一定的配置才能使用。首先,需要在Vxworks组件或config.h中进行定义:

  #define INCLUDE_AUX_CLK

  如果不定义,那么辅助时钟是无法使用的。另外,在sysLib.C的sysHwlnit2函数中需要进行辅助时钟的初始化,即中断连接配置:

  (void)intConnect(AUX_TIMER_INT_VEC,sysAuxClkInt,O)

  辅助时钟和系统时钟的区别是:辅助时钟必须由用户提供ISR,但不允许在ISR中调用tickAnnounce(),否则会扰乱系统时钟的机制。

  辅助时钟的配置可以按照installDir/target/drv/tim—er/templateTimer.C中的函数模板来进行修改,在本文中使用的驱动程序是At91Rm9200timer.c,头文件为At91Rm9200timer.h。在此文件中进行的修改需要根据所依赖的具体芯片来进行,即需要参考AT91RM9200芯片数据手册。

  与辅助时钟相关的函数有:sysAuxClkInt()、sysAux—ClkConnect()、sysAuxClkDisable()、sysAuxClkEnable()、sysAuxClkRateGet()和sysAuxClkRateSet()。其中,sysAuxClkRateGet()可以和sysAuxClkRateSet()视为一组。sysAuxClkRateGet()是通过sysAuxClkRateSet()函数设定的时钟频率进行读取的,而sysAuxClkRateSet()函数中时钟频率的设定则受AUX_CLK_RATE_MIN和AUX_CLK_RATE_MAX的限制。这个最大值和最小值需要进行定义,定义的位置可能不同,有的放在eonfig.h中,有的放在bsp.h中,本文的最大值和最小值放在Inte—grator.h中定义。接下来需要重点讨论的是sysAux-ClkInt()和sysAuxClkEnabel()这两个函数。

  sysAuxClkInt()函数调用用户定义的中断处理函数,而用户调用的中断处理函数是由sysAuxClkConnect()函数来连接的。在调用中断处理函数之前,一定要先进行清除中断操作,如:

  AMBA_TIMER_READ(AMBA_TIMER_T2SR(AMBA_TIMER_BASE),temp);

  不然,CPU将一直陷入中断,不能做别的事情了。

[page]

  其他大量的工作都是放在sysAuxClkEnble()函数中进行的。根据AT91RM9200的具体情况,选择5个内部时钟的其中之一,在此选择TIMER_CLOCK2;根据前面所提到的通道概念,选取第2个通道。必须和系统时钟区分开,不能同时选择一个内部时钟和同一个通道。

  首先,需要判断电源管理对辅助时钟是否进行了配置,可以查看相关文件。如果没有进行配置,则需要如进行如下配置:

  AT9l_SYS→PMC_PCER=l<

  其次,必须先对AIC编程,再配置TC。

  然后,需要对具体的寄存器进行控制操作,首先需要选择内部时钟,如图2所示。

选择内部时钟 

  对通道模式寄存器进行控制:

  AMBA_TIMER_WRITE(AMBA_TIMER_T2MR(AMBA_TIMER_BASE),TIMER_CLOCK2| TC_CPCTRG);

  通过TCCLKS位选择第2个内部时钟,并根据写入RC寄存器的定时器值进行RC比较触发使能。同时,需要对TC通道控制寄存器进行控制,写入计数器时钟使能命令和软件触发命令,如:

  AMBA_TIMER_WRITE(AMBA_TIMER_T2CR(AMBA_TIMER_BASE),TC_CLKEN);

  AMBA_TIMER_WRITE(AMBA_TIMER_T2CR(AMBA_TIMER_BASE),TC_SWTRG);

  另外,由于采用RC寄存器触发使能,因此还需要对TC中断使能寄存器进行控制,写入RC比较中断使能信号,如:

  AMBA_TIMER_WRITE(AMBA_TIMER_T2IER(AMBA_TIMER_BASE),TC_CPCS);

  最后,需要执行中断使能操作,如:

  AMBA_TIMER_INT_ENABLE(AUX_TIMER_INT_LVL);

  一切配置好后,重新编译bootroFll和VxWorks镜像,启动VxWorks镜像;然后编写测试程序进行测试,验证辅助时钟是否配置成功。另外,可以通过逻辑分析仪查看辅助时钟的中断情况。辅助时钟驱动后,在应用程序中可以用sysAuxClkRateSet()函数动态设置系统辅助时钟每秒的中断数;sysAuxClkConnect()函数为系统辅助时钟中断指定ISR,并且由sysAuxClkEnable()函数使能时钟中断,去调用指定的ISR。

  结 语

  VxWorks提供系统辅助时钟机制的主要目的,是使用户在系统时钟之外多一种定时资源选择,并提供了管理手段。另外,VxWorks的某些辅助调试工具也可能要求使用系统辅助时钟。

  辅助时钟的使用是通过提高节拍率来实现的,而提高节拍率意味着时钟中断产生得更加频繁,所以中断处理程序也会更频繁地执行。如此一来会给整个系统带来如下好处:

  ①更高的时钟中断解析度(resolution)可提高时间驱动事件的解析度;

  ②提高了时间驱动事件的准确度(accuracy)。

关键字:AT91RM9200  辅助时钟  VxWorlks 引用地址:AT91RM9200平台的辅助时钟研究

上一篇:AT91SAM7X的多路USB2.0数据采集系统
下一篇:AT91RM9200理器同步串口SSC的特性分析与应用

推荐阅读最新更新时间:2024-03-16 13:09

基于ARM智能交通信号机控制板开发
     信号机是一个典刑的嵌入式系统,嵌入式系统是以应用为中心来设计,对功能、性能、可靠性、成本、功耗、体积等有严格的要求,既要满足智能交通系统对信号机智能化、多功能的要求,又要最大化信号机的性价比,因此本设计选择基于arm核的32位嵌入式RISC处理器——AT91RM9200来完成智能交通信号机控制板的硬件设计,以达到使信号机在交通系统中成为收集与处理交通流量数据、通信联网以及区域协调控制平台的设计目标。      1 引言       目前我国的城市交通控制主要还是靠道路交通信号控制机(以下简称信号机)。国内的信号机主要分为两类:一类采用8/16位单片机作为处理器,交通控制功能简单、方案单一,以RS 232或RS4
[嵌入式]
AT91RM9200设计的保数据采集方案
1、 应用背景 环保信息网络承载着环保信息监测预警服务,为了保障环保数据的不间断采集与实时数据传输,必须提高环保信息数据采集控制系统的性能。因为环保监测设备对环境、功耗、性能方面有着苛刻的要求,现在应用环保监测方面的通讯设备很少。传统的环保监测基于单片机及专用扩展芯片的数据采集方案,无论是系统体积、功耗、数据采集精度、实时性以及系统处理能力等方面都不能满足自动化建站的需求。   综合环保行业的各种需求,北京飞旭“基于ARM的环保数据采集”方案采用32位的ARM作为主处理器,协调RS232,RS485,RS422,TTL等类型的端口,实现高效数据通讯和端口管理,可以实现将采集到的污染监测信息通过有线或CDMA/GPRS无线
[单片机]
基于ARM9 AT91RM9200T的嵌入式网络接口设计
1 引言 当今时代设备网络化是当今科技发展的趋势。如何使用嵌入式系统将设备的远程控制、数据的远程传输数据转发到网络上呢?这里设计的是一个信息电器网络接口模块,并构建一个实现特定功能的嵌入式Web服务器,它可以对远程设备进行监控,用户可通过网络远程访问Web服务器来实现数据的采集和历史数据的查询,也可以通过各种接口对信息家电进行控制。另外,还可以根据需要添加新的控制功能, 而不需对Web服务器的框架进行大的改动。 2 硬件设计 本系统采用ATMEL公司生产的微处理器AT91RM9200T 。其处理速度可达200MIPS,同时它也具有USB、Earthnet、支持RS485的红外串口、IIC、SPI、SSC等丰富的片内资源。网口
[单片机]
基于ARM9 <font color='red'>AT91RM9200</font>T的嵌入式网络接口设计
AT91RM9200 PIO中断在短波通信系统中的应用
短波通信作为一种应急保障通信手段,在现代通信系统中具有不可替代的作用,在军事、海事、矿山、人防等领域发挥重要作用。随着现代短波无线通信设备的集成度和复杂度越高,实现的业务功能就越多,如GPS、短信、电子邮件等,因此,设备控制器往往需同时处理多种业务功能的发送请求信号PTT(Press to Talk),并为之分配信道占用时间,确保各种业务依据其优先级即时获得信道使用权。 PTT信号具有高实时性的要求,需要即时响应,因此,在系统设计时.需要利用MCU的中断处理机制满足PTT信号的要求。这里选用AT9lR-M9200型微处理器作为系统控制器核心,可通过并行IO控制器PIO(Parallel IO Controller)将128
[单片机]
基于AT91RM9200的ARM Linux的移植方法
1. 引言 目前,在嵌入式系统里基于ARM微核的嵌入式处理器以其功耗低,功能强大的优点已经成为市场的主流。与此同时,在网络上发展起来的Linux操作系统,以其功能强大,开放源代码,支持硬件种类众多的特点,越来越受到人们的青睐。然而如何把Linux操作系统移植到ARM平台上却成了一个重点,也是一个难点问题。 嵌入式Linux系统包括引导程序(Bootloader),内核(kernel)和根文件系统三个部分,其开发流程如图1所示:嵌入式Linux 移植到特定的硬件平台上,一般需要以下五个步骤:(1)前期准备包括从网站http://kernel.org上下载嵌入式Linux的源码包, 搭建交叉编译开发环境,配置主机的开发环境等(
[单片机]
基于<font color='red'>AT91RM9200</font>的ARM Linux的移植方法
基于AT91RM9200的多路CAN总线接口及驱动程序设计
引言   在铁路系统中,为了保证列车的安全运行,需要对铁轨及周围状况进行实时检测。目前采用的方法是在铁路沿线安装多个检测设备,用于检测洪水、大风、泥石流等自然灾害及轨温等参数。这些设备一般采用的通信方式是RS232、RS485或CAN,并通过专线连接至监控中心的各个监控设备。这种方式极大浪费了线路资源,也不易于设备的统一管理。因此,需要一种安装在铁路沿线的设备,它将附近的检测设备发送的信息统一收集并通过一条专线直接送往监控中心。为了与多个检测设备通信,必须同时具有多个RS232、RS485和CAN接口。基于这种应用需要,本文提出了扩展多个CAN总线接口的方法。 1 系统结构 1.1 芯片介绍系统   采用Atmel公司的AT9
[单片机]
基于<font color='red'>AT91RM9200</font>的多路CAN总线接口及驱动程序设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved