微型操作系统内核源码详解系列五(1):arm cortex m3架构

2024-06-15 19:28

本文主要是介绍微型操作系统内核源码详解系列五(1):arm cortex m3架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 系列一:微型操作系统内核源码详解系列一:rtos内核源码概论篇(以freertos为例)-CSDN博客

系列二:微型操作系统内核源码详解系列二:数据结构和对象篇(以freertos为例)-CSDN博客

系列三:微型操作系统内核源码详解系列三(0):空间存储及内存管理篇(前置篇)-CSDN博客

                微型操作系统内核源码详解系列三(1):任务及切换篇(任务函数定义)-CSDN博客

                微型操作系统内核源码详解系列三(2):任务及切换篇(任务函数定义)-CSDN博客

                微型操作系统内核源码详解系列三(3):任务及切换篇(任务函数定义)-CSDN博客

                微型操作系统内核源码详解系列三(4):arm架构篇-CSDN博客

                微型操作系统内核源码详解系列三(5):进程与线程-CSDN博客

系列四:

 ​​​​​微型操作系统内核源码详解系列四(1):操作系统调度算法(linux0.11版本内核)-CSDN博客

微型操作系统内核源码详解系列四(2):操作系统调度算法(rt-thread内核)-CSDN博客

微型操作系统内核源码详解系列四(3):操作系统调度算法(FreeRTOS内核篇上)-CSDN博客

微型操作系统内核源码详解系列四(4):操作系统调度算法(FreeRTOS内核篇下)-CSDN博客

系列五:

微型操作系统内核源码详解系列五(1):arm cortex m3架构-CSDN博客

本系列笔者又回到了FreeRTOS内核源码的讲解,这是笔者在之前的博客中讲解的函数源码,

读者可以参考该图回忆笔者的讲解流程:

        截至到目前为止,笔者已经讲完了入口函数xTaskCreat函数,具体参考上图,接下来准备从pxPortinitialiseStack函数入手,正式过渡到对arm cortex m3架构的讲解。

        通过前面的12篇博客,笔者对FreeRTOS的内核进行了抽象,讲述了FreeRTOS内核源码是如何构成一个调度器的,相信读者已经对rtos的执行过程有了清晰的概念,既然核心思想已经阐述完整,那么让我们顺着主干部分一步步构建FreeRTOS内核。

        理论上,在掌握FreeRTOS内核的调度框架后,读者其实可以自己尝试写一个rtos了,并不是要写一个完整能执行的FreeRTOS,而是根据笔者在前面十余篇博客提供的基础,把对应的内核框架写出来,把各种行为用面向对象的思想进行抽象,定义对应函数,每个函数对应的功能都需要读者进行仔细思考和分配,将调度器的行为具体到每一个函数中。在这之后,读者可以参考FreeRTOS源码,一步步补充自己编写的框架的细节。

        例如,读者可以先从简单切换任务出发,不断修改切换函数,比如定义两个任务,开始是不引入优先级,task_switch函数是直接切换到另一个任务,那么读者只要完成以下工作即可:链表对象的实现,内存管理,任务定义,task_switch换成另一个任务,systick和PendSV中断完成任务切换。这些东西笔者其实已经讲得大差不差了,由于systick和PendSV中断与计算机架构密切相关,模式相对固定,直接参考FreeRTOS内核即可。如此一来,其实一个os内核已经实现了,算下来绝对不会超过一千行代码,两个星期就可以完成,如果读者想深入理解实时操作系统内核,可以进行尝试。

        本系列笔者将会回到arm架构中断部分的源码,带领读者一步步揭开任务切换神秘的面纱,这几篇博客的重点是arm cortex m3架构,FreeRTOS源码中的systick中断和PendSV中断函数是我们理解官方手册的入口。只有通过官方手册,我们对arm架构的上下文切换技术的理解才会深刻。

        笔者在前面的博客讲过一点sysytick中断和PendSV中断在arm架构中是如何完成任务切换的,让我们看看arm cortex m3官方手册:

        这就是本系列博客要探讨的重点,笔者将会结合FreeRTOS内核源码来理解官方手册。

        不过在此之前,让笔者先讲一讲pxPortinitialiseStack函数,这是一个初始化任务栈的函数,这个函数的理论依据可以参考arm cortex m3官方手册对os堆栈初始化的介绍:

        接下来笔者准备结合arm cortex m3官方手册讲解pxPortinitialiseStack函数,以便于方便读者理解arm架构中栈是如何加载到cpu寄存器的,从而理解系统上下文切换函数的源码。

这篇关于微型操作系统内核源码详解系列五(1):arm cortex m3架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064355

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言