当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]AT91RM9200平台的辅助时钟研究

引 言
    在VxWorlks中,定时器机制的实现是建立在时钟基础之上的。可根据不同的要求选用不同的定时机制,如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所列。

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将一直陷入中断,不能做别的事情了。
    其他大量的工作都是放在sysAuxClkEnble()函数中进行的。根据AT91RM9200的具体情况,选择5个内部时钟的其中之一,在此选择TIMER_CLOCK2;根据前面所提到的通道概念,选取第2个通道。必须和系统时钟区分开,不能同时选择一个内部时钟和同一个通道。
    首先,需要判断电源管理对辅助时钟是否进行了配置,可以查看相关文件。如果没有进行配置,则需要如进行如下配置:
    AT9l_SYS→PMC_PCER=l<<AT9lC_ID_TCl;
    其次,必须先对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)。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭