当前位置: 首页 > news >正文

嵌入式八股RTOS与Linux---前言篇

前言

  Linux与RTOS是校招八股的时候很喜欢考察的知识,在这里并没有把两个操作系统完全的独立开去讲,放在一起对比或许可能加深印象。我们讲Linux的内核有五部分组成:进程调度、内存管理、文件系统、网络接口、进程间通信,所以我也将从这五方面出发 + 中断管理去对比和RTOS的不同。本篇只是一个开始的介绍。

  1. RTOS是什么?和前后台程序的区别是什么?
  • 前后台程序: 前台就是中断 后台就是while循环。 整个系统的结构简单,但是对时间敏感的任务相应较差。比如在中断响应结束后想要快速执行某项任务也得等while循环到
  • 实时操作系统:是一种专门设计用于实时应用程序的操作系统。实时应用程序需要在特定的时间约束内对事件作出快速响应,因此RTOS旨在提供可靠、可预测的系统响应性能
  • 实时操作系统的特点就是:确定性:(能在确定时间完成指定任务) / 可预测性 / 高可靠性
  1. 如何移植FreeRTOS?
  • sysTickHandler PendSVHandler 与 SVCHandler 的移植
    sysTickHandler : 任务调度 延时任务处理
    PendSVHandler : 任务切换 堆栈的保存
    SVCHandler : FreeRTOS中用来进入第一个任务
  • 选择一种内存管理算法
    后面会细讲
  • FreeRTOSConfig.h的配置
    使能什么调度原理
    CPU的时钟频率
    sysTickHandler调用的频率
    受FreeRTOS管理中断的
  1. RTOS的启动流程
  • 4.1首先是裸机上电后的启动流程

    • step1 给SP指针和PC指针赋值 PC指针指向Rest_Handler
        cortex-M3规定 起始地址必须存放堆顶指针 第二个地址是复位中断向量入口地址,因为启动的时候会从0x00000000取出值传给SP指针 0x00000004的值赋给PC指针

      • SP指针的值是怎么出现在bin文件开头?
        来自startup.s中这样定义的段,这个段会在链接过程放在bin文件的开头
        在这里插入图片描述

      • ResetHandler是谁写的
        也在startup.s中
        在这里插入图片描述

    • step2:执行Rest_Handler

      • 2.1 执行SystemInit
        初始化时钟这个核心外设
      • 2.2 执行__main函数
        主要是用来初始化程序运行必要的堆/栈环境 把bin文件中的DATA段搬到内存,清空ZI段,最终跳转main函数–这是直接用汇编写的
  • 4.2main函数创建开始任务 开启任务调度函数vTaskStartScheduler();

  • 4.3vTaskStartScheduler()做了什么事情?

    • 创建空闲任务线程
    • 创建定时器服务任务线程
    • 设置PendSV 和 sysTick优先级为最低
    • 初始化一些全局变量,设置调度器状态为Ture
    • 初始化时钟节拍计数器、初始化临界区嵌套计数器,如果ARM内核支持FPU,还会使能FPU
    • 启动第一个任务–通过使能SVC异常
    • 通过SVCHandler跳转第一个任务
  1. Linux的启动流程
    5会放在一个专门的篇章—启动与升级篇去讲
  2. 硬实时与软实时的区别
    硬实时严格限定在规定时间完成任务
    软实时允许出现一定的时间偏差,在随着时间偏差的增大 整个系统的正确性就开始了下滑
  3. RTOS和Linux的区别?
    关于这个问题 我希望后面把五个Linux内核子系统讲清楚之后,就明了了

相关文章:

  • YOLOv1到YOLOv12发展概述2025.3.17
  • 网络安全运维应急响应与溯源分析实战案例
  • MyBatis 如何创建 SqlSession 对象的?
  • Oracle静默安装方法
  • 再学:abi编码 地址类型与底层调用
  • 烽火HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明
  • C++和标准库速成(五)——C风格的数组、std::array、std::vector、std::pair和std::optional
  • Ruby 命令行选项
  • S32K144入门笔记(十三):LPIT的API函数解读
  • PostgreSQL 权限管理详解
  • 用旧的手机搭建 MQTT Broker-Node_red
  • 音视频入门基础:RTP专题(18)——FFmpeg源码中,获取RTP的音频信息的实现(上)
  • Android第三次面试总结(activity和线程池)
  • 关于deepseek R1模型分布式推理效率分析
  • 【差分约束】P5590 赛车游戏|省选-
  • 微软OneNote无法同步解决方案
  • 模运算专题练习 ——基于罗勇军老师的《蓝桥杯算法入门C/C++》
  • 2025-03-17 Unity 网络基础1——网络基本概念
  • 学习单片机需要多长时间才能进行简单的项目开发?
  • 鸿蒙应用开发--数据埋点的名称由来,发展脉络,典型场景,现代演进的无埋点和智能化埋点//学习时长数据埋点的实现--待更新
  • 我国首部《人工智能气象应用服务办法》今天发布
  • 深圳宝安区一宗涉宅用地中止出让,起始总价86.27亿元
  • 伊朗内政部长:港口爆炸由于“疏忽”和未遵守安全规定造成
  • 李公明|一周画记:哈佛打响第一枪
  • 人民日报头版:上海纵深推进浦东高水平改革开放
  • 四川苍溪县教育局通报“工作人员辱骂举报学生”:停职检查