zoukankan      html  css  js  c++  java
  • OSStartHighRdy()一去不复返【worldsing笔记】

    有关于uCos的启动过程讲解有很多文章,这里主要记录已下OSStartHighRdy()在stm32下是怎么写和运行的:

    stm32上电

    运行SystemInit(): 配置时钟,这个不要也可以,不要就是8MHz时钟

    运行main() : 调用OSInit(), OSTaskCreate()一个任务,OSSart()

                      OSInit():至少做3件事1、初始化零散的uCos全变量;2、把任务控制块、事件控制块链表化;3、创建已空闲任务IDLE(系统的);

                      OSTaskCreate():建立一个属于用户的任务(非系统的),这个是必须有的。

                      OSSart():上面几步其实都是填充数据,建立任务也是填充数据(写入任务的函数指针),OSSart()功能是找一个优先级最高填到变量里。其实他幕后是执行着

                                      是OSStartHighRdy();

    OSStartHighRdy():这个功能很明确:配置系统软件中断优先级、PSP栈指针清零、OSRunning = TRUE、触发软件中断、使能全局中断 目的:触发软件中断进行一次调度

                                这个模块就运行一次而且不返回。

    image

    进入软件中断服务程序:OSCtxSw() 也是uCos移植必改的模块;

    1、把正在运行的任务的cpu寄存器及变量存到PSP指向的内存(任务控制块OSTCBStkPrt)。

    2、把PSP栈指针也存进去;

    3、调用Hook;

    4、把新的任务(最高优先级)的任务控制块指针OSTCBHighRdy给当前B任务控制块指针(将要运行)OSTCBCur

    5、当前B任务控制块指针的栈指针OSTCBStkPrt取出CPU寄存器值

  • 相关阅读:
    服务器端事件发送SSE
    Mybatis generator代码生成
    如何靠谱地查到Tomcat的版本
    java自动生成代码
    Java读取excel(兼容03和07格式)
    常见的NoSQL数据库
    任务五 通用类问题相关度计算实现
    任务四 娱乐相关节目和娱乐人物关系代码整理
    任务三 非人物分析判断
    任务二 人物类与娱乐类关联优化分析
  • 原文地址:https://www.cnblogs.com/worldsing/p/3398553.html
Copyright © 2011-2022 走看看