μC/OS-II---内存管理2(os_core.c)

流程---内存管理扩展

    • 初始化μC/OS-II
    • 创建用户起始任务
    • 开始多任务调度
    • 统计Task
    • 创建用户应用程序任务

在这里插入图片描述

初始化μC/OS-II

void  OSInit (void)
{
	OSInitHookBegin();                                           /* Call port specific initialization code   */
	OS_InitMisc();                                               /* Initialize miscellaneous variables       */
	OS_InitRdyList();                                            /* Initialize the Ready List                */
	OS_InitTCBList();                                            /* Initialize the free list of OS_TCBs      */
	OS_InitEventList();                                          /* Initialize the free list of OS_EVENTs    */
	#if (OS_FLAG_EN > 0u) && (OS_MAX_FLAGS > 0u)
		OS_FlagInit();                                               /* Initialize the event flag structures     */
	#endif
	#if (OS_MEM_EN > 0u) && (OS_MAX_MEM_PART > 0u)
		OS_MemInit();                                                /* Initialize the memory manager            */
	#endif
	#if (OS_Q_EN > 0u) && (OS_MAX_QS > 0u)
		OS_QInit();                                                  /* Initialize the message queue structures  */
	#endif
		OS_InitTaskIdle();                                           /* Create the Idle Task                     */
	#if OS_TASK_STAT_EN > 0u
		OS_InitTaskStat();                                           /* Create the Statistic Task                */
	#endif
	#if OS_TMR_EN > 0u
		OSTmr_Init();                                                /* Initialize the Timer Manager             */
	#endif
		OSInitHookEnd();                                             /* Call port specific init. code            */
	#if OS_DEBUG_EN > 0u
		OSDebugInit();
	#endif
}

创建用户起始任务

#if OS_TASK_CREATE_EN > 0u
INT8U      OSTaskCreate     (
									void           (*task) (void *p_arg),
									void            *p_arg,
									OS_STK          *ptos,
									INT8U            prio
							);
#endif

开始多任务调度

void  OSStart (void)
{
	if (OSRunning == OS_FALSE)
	{
		OS_SchedNew();                               /* Find highest priority's task priority number   */
		OSPrioCur     = OSPrioHighRdy;
		OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run    */
		OSTCBCur      = OSTCBHighRdy;
		OSStartHighRdy();                            /* Execute target specific code to start task     */
	}
}

统计Task

#if OS_TASK_STAT_EN > 0u
void  OSStatInit (void)
{
	#if OS_CRITICAL_METHOD == 3u                     /* Allocate storage for CPU status register           */
		OS_CPU_SR  cpu_sr = 0u;
	#endif
		OSTimeDly (2u);                              /* Synchronize with clock tick                        */
		OS_ENTER_CRITICAL();
		OSIdleCtr    = 0uL;                          /* Clear idle counter                                 */
		OS_EXIT_CRITICAL();
		OSTimeDly (OS_TICKS_PER_SEC / 10u);          /* Determine MAX. idle counter value for 1/10 second  */
		OS_ENTER_CRITICAL();
		OSIdleCtrMax = OSIdleCtr;                    /* Store maximum idle counter count in 1/10 second    */
		OSStatRdy    = OS_TRUE;
		OS_EXIT_CRITICAL();
}
#endif

创建用户应用程序任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/144818.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

μC/OS-II---Task管理2(os_task.c)

目录 改变Task优先级Task挂起Task恢复Task信息获取Task调度器上锁(os_core.c)Task调度器开锁(os_core.c) 改变Task优先级 #if OS_TASK_CHANGE_PRIO_EN > 0u INT8U OSTaskChangePrio (INT8U oldprio,INT8U newprio) { #if (…

2023/11/14JAVA学习

主子线程每次执行顺序可能都不一样

什么猫罐头好吃?猫咪嘎嘎炫的5款猫主食罐头推荐!

想必铲屎官都知道给猫咪长期吃主食罐头的好处了吧!主食罐头不仅营养丰富,还能让猫咪顺便补充水分。有时候猫咪食欲不佳,一罐猫主食罐头就能让它们胃口大开呢~ 作为家里有3只猫的铲屎官来说,养猫的这几年可以说血泪史了&#xff0…

Java版企业电子招标采购系统源码—企业战略布局下的采购寻源

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审…

HTML5响应式网页设计(考试题:旅游项目)

效果图 .html代码 <!DOCTYPE html> <html><head><meta name"viewport"content"widthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,user-scalableno" /><meta charset"utf-8" /><title></…

keil5暗色主题配置

在keil文件目录下找到global.prop 将以下内容替换至该文件即可 # properties for all file types indent.automatic1 virtual.space0 view.whitespace0 view.endofline0 code.page0 caretline.visible0 highlight.matchingbraces1 print.syntax.coloring1 use.tab.color1 crea…

leetcode刷题日记:121. Best Time to Buy and Sell Stock( 买卖股票的最佳时机)

题目给了我们一组数prices&#xff0c;其中prices[i]表示第i天的股票价格&#xff0c;需要我们求出买卖股票所能获得的最大收益。 我们的第一想法就是从算出每一种买卖股票的情况然后求出里面的最大值&#xff0c;这样我们就能得到最大收益是多少&#xff0c;但是这种情况过于复…

LLM(四)| Chinese-LLaMA-Alpaca:包含中文 LLaMA 模型和经过指令微调的 Alpaca 大型模型

论文题目&#xff1a;《EFFICIENT AND EFFECTIVE TEXT ENCODING FOR CHINESE LL AMA AND ALPACA》 ​论文地址&#xff1a;https://arxiv.org/pdf/2304.08177v1.pdf Github地址&#xff1a;https://github.com/ymcui/Chinese-LLaMA-Alpaca 一、项目介绍 通过在原有的LLaMA词…

Lua的Resty-Request库写的一个简单爬虫

文章目录 准备工作编写爬虫运行爬虫代码分析拓展功能总结 &#x1f389;欢迎来到AIGC人工智能专栏~Lua的Resty-Request库写的一个简单爬虫 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a;AIGC人工智…

Databend 与海外某电信签约:共创海外电信数据仓库新纪元

为什么选择 Databend 海外某电信面临的主要挑战是随着业务量的增加&#xff0c;传统的 Clickhouse Hive 方案在数据存储和处理上开始显露不足。 原来的大数据分析采用的 Clickhouse Hive 方案进行离线的实时报表。但随着业务量的上升后&#xff0c;Hive的数据存储压力变大&…

HTTP代理与SOCKS5代理,有什么区别?

在数字通信领域&#xff0c;数据安全和匿名性都是非常重要的指标。互联网的不断发展催生了几种协议&#xff0c;每种协议都有独特的优势和挑战。其中&#xff0c;SOCKS5 代理、HTTP代理最为广泛使用&#xff0c;下面给大家一起讨论&#xff0c;HTTP代理与SOCKS5代理&#xff0c…

[文件读取]coldfusion 文件读取 (CVE-2010-2861)

1.1漏洞描述 漏洞编号CVE-2010-2861漏洞类型文件读取漏洞等级⭐⭐漏洞环境VULFOCUS攻击方式 描述: Adobe ColdFusion是美国Adobe公司的一款动态Web服务器产品&#xff0c;其运行的CFML&#xff08;ColdFusion Markup Language&#xff09;是针对Web应用的一种程序设计语言。 A…

市场行情回暖、利好月来袭,Web3 广告业领头羊 Verasity 或迎爆发

随着区块链技术的普及和发展&#xff0c;越来越多的行业正在被区块链技术所重塑&#xff0c;例如金融、游戏行业等&#xff0c;而数字广告行业的结构和运作方式也正在被区块链技术所重塑。 众所周知&#xff0c;传统数字广告行业往往存在着信息不对称、广告欺诈、数字隐私等问题…

《008.SpringBoot之教务系统》【界面简洁功能简单】

《008.SpringBoot之教务系统》【界面简洁功能简单】 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatis; 前台&#xff1a;JSPBootStrap; [2]功能模块展示&#xff1a; 管…

顺序表和链表

目录 1.线性表 2.顺序表 2.1 概念及结构 2.2 接口实现 2.3 顺序表的问题及思考 3.链表 3.1 链表的概念及结构 3.2 链表的分类 3.3 链表的实现 3.4双向链表的实现 4.顺序表和链表的区别和联系 1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的…

OpenMediaVault控制台web页面密码重置

要重置 OpenMediaVault&#xff08;OMV&#xff09;Web 控制台的密码&#xff0c;可以使用 omv-firstaid 命令行工具中的相应选项。按照以下步骤进行操作&#xff1a; 以管理员权限登录到 OMV 的命令行界面&#xff08;通过 SSH 或直接登录&#xff09;。 ssh登陆到root用户 运…

在windows上利用vmware17 搭建centos7 mini版本服务器

安装centos7mini 修改名称和安装路径 也可以点击自定义硬件&#xff0c;进行硬件配置修改 设置内存 设置处理器 点击下图按钮进行设置 点击done 点击开始安装 点击设置root密码 设置成功&#xff0c;点击done &#xff0c;root密码设置的简单的话需要按两次done 等待安装完成…

软考系统分析师知识点集锦二:系统规划

一、系统规划的步骤 (1)初步调查:根据企业战略目标&#xff0c;分析企业现状以及系统运行状况。(2)确定系统目标:确定系统的服务范围质量等。(3)分析子系统的组成:做系统划分并指定子系统功能。(4)拟定系统的实施方案:分析子系统优先级,确定开发顺序。(5)进行可行性研究:编写可…

接口测试和功能测试有什么区别

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1…

如何利用IP代理进行海外推广?

在当今数字化的时代&#xff0c;网络营销已经成为企业策略的重要组成部分。而对于进去海外市场的跨境玩家来说&#xff0c;海外的推广推广是重中之重。然而&#xff0c;在开展推广的过程中&#xff0c;我们常常会遇到各种挑战&#xff0c;如地域限制、访问速度慢等。 为了解决…