uC/OS-II内核移植_时钟节拍函数使用的初步认识

发布者:painter最新更新时间:2021-07-02 来源: eefocus关键字:OS-II  内核移植  时钟节拍 手机看文章 扫描二维码
随时随地手机看文章

      断断续续看了uC/OS-II内核书和一两个实验,发现移植的第一部,就遇到时钟节拍处理不好的困难。这两天,又对其中的一个比较完善的例程作仔细的分析,初步有了一些认识。


      个人认为,移植的第一个问题,是解决时钟节拍的处理,过程如下:

一、首先在主函数中调用目标板初始化函数ARMTargetInit();主要是初始化要用到的定时器和外部中断;

二、在启动系统之前,调用函数ARMTargetStart(),打开Timer0中断;

三、启动系统OSStart();


      下面,详细说明上述过程的步骤:

      建立文件target.c和target.h


 

      target.c:

      void ARMTargetInit(void)
      {
             InitInterrupts();
             InitTimers();   
      }

      void InitInterrupts(void) //初始化中断模式
      {
          rINTCON=0x5;              // Non-vectored,IRQ enable,FIQ disable   
          rINTMOD=0x0;             // All=IRQ mode   
          rINTMSK=0X7FFFFFF;   // all interrupts disable.   
      } 

      void InitTimers(void)     //初始化Time0,作为系统始终节拍
      {
          rTCFG0=(MCLK>>1)/1000000-1; //预分频值      
          rTCFG1=0x00000000;      // mux0 = 1/2
 //定时器0输入时钟频率=MCLK/(预分频值+1)/除法值mux0,定时器0输入时钟频率为1MHz
          rTCNTB0= 1000000/OS_TICKS_PER_SEC;  //定时器0输出时钟频率为OS_TICKS_PER_SEC
          rTCMPB0= 0x0;
          rTCON=0x2;            //update mode for TCNTB0 and TCMPB0.
          rTCON=0x9;            //timer0 = auto reload, start
      }



 

void ARMTargetStart(void)   //启动定时中断和外中断EXINT0
{
       RequestSystemTimer();
       InstallSystemTimer();
}

 

void RequestSystemTimer(void)
{

      pISR_TIMER0= (unsigned)Timer0_Exception;  //设置Timer0中断函数地址
      pISR_EINT0 = (unsigned)Exint0_Exception;

      //这里可以设置任何中断!注意要添加对应的中断服务函数
}

void InstallSystemTimer(void)
{
      rINTCON=0x5;                                         //Non-vectored,IRQ enable,FIQ disable 
      rINTMSK=~( BIT_GLOBAL | BIT_TIMER0 );  //Default value=0x7ffffff
}

void Timer0_Exception(void)
{
       rI_ISPC=BIT_TIMER0;      //清除定时器0中断挂起位
       OSTimeTick();                 //注意:在进入中断后运行次语句前,必须禁止中断
}

void Exint0_Exception(void)
{
       rI_ISPC=BIT_EINT0;

       //此后可以打开中断
}

注意:OSTimeTick()是uC/OS-II系统函数!



 

target.h根据上面的.c文件,就很容易写出来。

      这里可能需要重点说明中断执行过程,也是个人的一点粗浅认识。以 Timer0中断为例:

      如果发生定时器Timer0中断,PC将跳转到pISR_TIMER0所在地址,根据44binit.s文件,分析可以知道(参考我的《ARM的中断处理过程》一文)函数Timer0_Exception()将得以执行! 

 

      关于节拍的产生过程以及相应的任务切换,将在下一个文件中谈到。

注意:我的文章多半是学习时产生的认识,需要今后的应用中验证。


关键字:OS-II  内核移植  时钟节拍 引用地址:uC/OS-II内核移植_时钟节拍函数使用的初步认识

上一篇:ARM设计的无线网卡设备驱动技术
下一篇:一种多通道实时数据采集监控系统设计与实现

推荐阅读最新更新时间:2024-10-20 15:01

uC/OS-II内核移植_时钟节拍函数使用的初步认识
断断续续看了uC/OS-II内核书和一两个实验,发现移植的第一部,就遇到时钟节拍处理不好的困难。这两天,又对其中的一个比较完善的例程作仔细的分析,初步有了一些认识。 个人认为,移植的第一个问题,是解决时钟节拍的处理,过程如下: 一、首先在主函数中调用目标板初始化函数ARMTargetInit();主要是初始化要用到的定时器和外部中断; 二、在启动系统之前,调用函数ARMTargetStart(),打开Timer0中断; 三、启动系统OSStart(); 下面,详细说明上述过程的步骤: 建立文件target.c和target.h target.c: void ARMTargetIn
[单片机]
快速学Arm(7)--uC/OS-II微小内核提供的14个用户接口函数
这个系列的文章基本上记录了我学习的经过,我平时很忙,学什么东西都力争在最短的时间学到最多的东西.有时候因为太忙了,很多学习过程被中途打断,然后要隔一段时间才能重新再继续.学习方法对于我们掌握知识非常重要,我时常会抱怨下属或同事的学习速度慢,但又无法一下把经验传授出去.而且有些人的个人习惯也无法一下改变.现在技术发展很快,要学的东西很多,类似传统的学习方法肯定是跟不上时代的. 前几篇文章,我介绍了如何让我把运行的环境搭起来,这些学习的第一步,很多本本先生是不喜欢这一步骤的,因此他们永远把知识停留在书本上,理论上头头是道,实际却什么都做不了, 秀才 . 接下来,的想法是打开Sample,找到main()函数,同样,我们也不着急
[单片机]
uC/OS-II在ARM系统上的移植和实现
0 引言 在开发嵌入式系统时,一般选择基于ARM 和uC/ OS - II 的嵌入式开发平台,因为ARM 微处理器具有处理速度快、超低功耗、价格低廉、应用前景广泛等优点 . 将uC/ OS - II 移植到ARM 系统之后,可以充分结合两者的优势. 如果一个程序在一个环境里能工作,我们经常希望能将它移植到另一个编译系统、处理器或者操作系统上,这就是移植技术.移植技术可以使一种特定的技术在更加广泛的范围使用,使软件使用更加灵活,不局限于某一条件.uC/OS - II 是由Jean J . Labrosse 先生编写的完整的可移植、固化、裁剪的占先式实时多任务内核.uC/ OS - II 的源代码完全开放,这是其他商业实时内核无法
[单片机]
<font color='red'>uC</font>/<font color='red'>OS-II</font>在ARM系统上的<font color='red'>移植</font>和实现
【stm32+uC/OS-II】ucosii移植简单详细步骤
μC/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中)。同时,该系统源代码开放、整洁、一致,注释详尽,适合系统开发。 μC/OS-II已经通过联邦航空局(FAA)商用航行器认证,符合航空无线电技术委员会(RTCA)DO-178B标准。 ——摘自百度百科 经过三天对uC/OS-II的研究和琢磨,成功移植了自己的uC/OS-II;回首看下,简单的移植是非常简单的;可能这句话比较啰嗦,等我下面解析完之后就认同了; 首先,来附图,我相信只要刚刚认识ucosii的人,都见过这种类型的图了;而且版本
[单片机]
【stm32+<font color='red'>uC</font>/<font color='red'>OS-II</font>】ucosii<font color='red'>移植</font>简单详细步骤
实时内核uC/OS-II下的网络监控系统的设计
摘要:介绍了一种嵌入式于单片机的Web服务器的设计过程,给出了单片机控制下的网络控制器RTL8019AS硬件平台的设计、精简的TCP/IP协议栈通过LAN访问Internet的应用方案。同时简明介绍了实时内核uC/OS-II对整个系统的管理方案,完成了对连接在系统I/O总线上的现有设备的监控。 关键词:Web服务器 单片机 uC/OS-II TCP/IP协议栈 动态IP配置 随着信息时代的到来,特别是互联网的迅速普及,人们开始越来越多地接触到一个新概念--嵌入式产品。将嵌入式系统接入Internet。不仅实现了设备的远程控制、维护和升级,而且可实现资源共享。通过网络对设备进行监控,一个外部界面是必不可少的,利用Web浏览器可
[应用]
实时内核uC/OS-II下的网络监控系统的设计
摘要:介绍了一种嵌入式于单片机的Web服务器的设计过程,给出了单片机控制下的网络控制器RTL8019AS硬件平台的设计、精简的TCP/IP协议栈通过LAN访问Internet的应用方案。同时简明介绍了实时内核uC/OS-II对整个系统的管理方案,完成了对连接在系统I/O总线上的现有设备的监控。 关键词:Web服务器 单片机 uC/OS-II TCP/IP协议栈 动态IP配置 随着信息时代的到来,特别是互联网的迅速普及,人们开始越来越多地接触到一个新概念--嵌入式产品。将嵌入式系统接入Internet。不仅实现了设备的远程控制、维护和升级,而且可实现资源共享。通过网络对设备进行监控,一个外部界面是必不可少的,利用Web浏览器可
[嵌入式]
实时内核uC/OS-II下的网络监控系统的设计
摘要:介绍了一种嵌入式于单片机的Web服务器的设计过程,给出了单片机控制下的网络控制器RTL8019AS硬件平台的设计、精简的TCP/IP协议栈通过LAN访问Internet的应用方案。同时简明介绍了实时内核uC/OS-II对整个系统的管理方案,完成了对连接在系统I/O总线上的现有设备的监控。 关键词:Web服务器 单片机 uC/OS-II TCP/IP协议栈 动态IP配置 随着信息时代的到来,特别是互联网的迅速普及,人们开始越来越多地接触到一个新概念--嵌入式产品。将嵌入式系统接入Internet。不仅实现了设备的远程控制、维护和升级,而且可实现资源共享。通过网络对设备进行监控,一个外部界面是必不可少的,利用Web浏览器可
[嵌入式]
AVR128_uC/OS-II 移植代码
开发平台:AVR128 移植系统:uC/OS-II 功能: 系统建立两个任务,操作“8个LED” 以及 “蜂鸣器”(附上LED和蜂鸣器 部分的原理图) 代码量少,添加了个人注释,容易理解 电路原理图如下: 此工程为TS8900-M128开发板uCOSii移植教程代码 功能是 1--8个LED进行“亮-灭”操作 2--控制蜂鸣器“响-不响”操作 单片机源程序如下: /* ***********************************Copyright(c)***************************** * *
[单片机]
AVR128_<font color='red'>uC</font>/<font color='red'>OS-II</font> <font color='red'>移植</font>代码
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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