历史上的今天
今天是:2024年12月11日(星期三)
2019年12月11日 | OSStartHighRdy()一去不复返【worldsing笔记】
2019-12-11 来源:eefocus
有关于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、触发软件中断、使能全局中断 目的:触发软件中断进行一次调度这个模块就运行一次而且不返回。

进入软件中断服务程序:OSCtxSw() 也是uCos移植必改的模块;
1、把正在运行的任务的cpu寄存器及变量存到PSP指向的内存(任务控制块OSTCBStkPrt)。
2、把PSP栈指针也存进去;
3、调用Hook;
4、把新的任务(最高优先级)的任务控制块指针OSTCBHighRdy给当前B任务控制块指针(将要运行)OSTCBCur
5、当前B任务控制块指针的栈指针OSTCBStkPrt取出CPU寄存器值
史海拾趣
|
火线、零线两之间,我用一只红色发光二极管串接一个100K电阻并在火线零线之间后,发光二极管正常工作; 可是我用一蓝色发光二极管串接一个100K电阻并在火线零线之间后,为什么就不能正常工作了呢? 着急啊?请教各位大侠,用蓝灯如何接才能正常、 ...… 查看全部问答> |
|
据金鹰网报道 现年39岁的Vasyl Lazarenko是一位来自乌克兰西部的工匠。由于女友非常喜欢坐敞篷车去兜风,而他自己又觉得硬顶车篷很实用,于是突发奇想,决定自己打造一款世界上独一无二的“双面车”。 这辆车的左边是现代轿车的造型,而右边则 ...… 查看全部问答> |
|
老弟最近在开发过程遇到一个问题,就是开发出的vxworks程序 1、跨网段无法ping通,报文也过不去。 现象与现状: 同网段可以ping通,报文也可以过去。 目前的所跨的两个采用B类地址,从第二位开始有区别区分子网。分 ...… 查看全部问答> |
|
我在学习单片机输出到蜂鸣器的时候有这样一段程序 bb bit p2.4 ;定义bb在下面程序中代表p2.4,连接蜂鸣器 star: clr bb ;使v1 9015导通 &n ...… 查看全部问答> |
|
想用ARM7+RTL8019做一个网络方面的东西.功能是将这个产品接入一个局域网中通过一个服务器件(192.168.1.3)发送数据(没分钟一个包大概几百字节)到另一个服务器(192.168.2.8)所在的局域网中的某一个产品. 见下图: A(ARM+8019) 192.168.1.3 192.168. ...… 查看全部问答> |
|
关于2440 WINCE5.0 BSP中EBOOT的一点疑问,谢谢解疑 我在三星官方下了个SMDK2440A WINCE5.0的BSP,弄NBOOT+EBOOT启动的时候发现个问题: 在EBOOT中的main.c文件: void main(void) { // Clear LEDs. // ...… 查看全部问答> |
|
【 低功耗】利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用 利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用 [ 本帖最后由 hangsky 于 2011-11-8 13:26 编辑 ]… 查看全部问答> |
|
本系列全部文章已整理成电子文档,下载地址: https://download.eeworld.com.cn/detail/tiankai001/13375 《那年,一步一步学linux c》全系列(目录索引) 几点说明:该系列文章中所用结构数据代码均来自linux2.6.39.文章中若有不对或某些功 ...… 查看全部问答> |




