
RTOS
文章平均质量分 70
RTOS事实操作系统知识框架整理
生活需要深度
这个作者很懒,什么都没留下…
展开
-
RTOS内存管理
heap_4.c相对与heap_2.c提供了内存合并功能,可以降低内存碎片的产生,我们移植FreeRTOS的时候就选择了heap_4.c。 heap_4.c提供了一个最优的匹配算法,不像heap_2.c,heap_4.c会将内存碎片合并成一个大的可用内存块,它提供了合并算法。 heap_5.c使用了和heap_4.c相同的合并算法,内存管理实现起来基本相同,但是heap_5.c允许内存堆跨越多个不连续的内存段。②不会像heap_2.c那样产生严重的内存碎片,即使分配的内存大小是随机的。原创 2024-04-01 11:09:13 · 357 阅读 · 0 评论 -
RTOS进程管理
在rt_free()时会把used设置成未使用,下次申请内存时会先遍历到没使用的内存块,然后判断申请的内存是否小于分配好的未使用的内存块。若大于则继续遍历,若没有找到合适大小的内存堆,则在最后未分配的内存堆中分配该大小的内存。初始时,它是一块大的内存。当需要分配内存块时,将从这个大的内存块上分割出相匹配的内存块,然后把分割出来的空闲内存块还回给堆管理系统中。在rt_free()的最后有个plug_hoes()其作用就是检查释放内存的前面一个内存块和后面一个内存块。若未使用则将其合并,生成一个新的内存块。原创 2024-03-29 16:05:19 · 230 阅读 · 0 评论 -
Nuttx操作系统(十三):内存布局
本文讲解Nuttx系统在RISC-V架构下,运用PMP时的内存布局。原创 2023-08-08 11:18:45 · 528 阅读 · 0 评论 -
Nuttx操作系统(五):系统调用
在nuttx系统中,提供了7个系统调用函数:sys_call0 ~ sys_call6,分别对应系统调用时包含0~6个参数的场景,参数通过a0~a6进行传递,其中a0用来传递syscall no,a1~a6的含义则由具体syscall进行确定,比如在syscall no为0是实现任务context的转储,则a1用来传递context转储的目的地址,a2~a6不用。在nuttx系统中,运用mksyscall工具,根据文件system.csv,分别生成供用户调用的接口,以及在内核中与其对用的接口。原创 2023-08-08 10:41:05 · 378 阅读 · 0 评论 -
Nuttx操作系统(四):系统架构
Ø 内核分模块组织,功能模块被组织到一个个目录下,如nuttx/ audio/, binfmt/, crypto/, drivers/, fs/, graphics/, video/, wireless/等;Ø 用户lib库在libs/目录下,在这个目录下,包含了用于内核以及应用的基于共享逻辑的库,例如 libc, libm (math), libnx (graphics)等;5) net/sockets/提供基于BSD的socket接口;4) fs/vfs/ 提供了基于POSIX的文件接口;原创 2023-08-08 10:31:41 · 537 阅读 · 0 评论 -
Nuttx操作系统(三):构建模式
Ø KERNEL构建:这种构建是使用存储管理单元(MMU)将OS放置在私有地址空间中,并将任务(或进程)放置在其自己的虚拟地址空间。对于PROTECTED构建与KERNEL构建,应用程序驻留在OS地址空间之外,并且在这些构建中,应用程序都不能访问OS的任何内部资源。Ø PROTECTED构建:这种构建是使用存储保护单元(MPU)将内存分离为用于OS的特权模式,和用于所有应用的非特权模式。4) 用户进程之间进一步隔离,每个应用程序工作在自己的空间上;2) 内核程序工作在内核模式;原创 2023-08-08 10:18:50 · 491 阅读 · 0 评论 -
Nuttx操作系统(一):环境搭建
首先进入nuttx目录,输入./tools/configure.sh -l hifive1-revb:nsh。可以输入qemu-system-riscv32 --version验证是否成功。输入make menuconfig进入配置选择开发板。国内下载地址,每天更新一次。原创 2023-08-08 09:11:03 · 583 阅读 · 0 评论 -
Nuttx操作系统(二):任务
尽管并不总是必要的,但这些列表中的大多数都是优先排序的,以便可以使用通用的列表逻辑来处理(只需要对g_readytorun、g_pendingtasks和g_waitingforsemaphore列表进行优先排序)。所谓环境,我们指的是OS预留的一组资源,但在进程的受保护环境中,我们具体指的是其地址空间。Ø 这是所有准备运行的任务的列表,但不能放在g_readytorun列表中,因为:(1)它们的优先级高于g_readitorun表头部的当前活动任务;此环境是专用的,对于任务是唯一的。原创 2023-07-05 11:48:58 · 1550 阅读 · 0 评论 -
小米在建IoT护城河Vela NuttX
目前看来,小米畅快连、小米妙享、小米"一指连"UWB技术、小爱5.0、Works With Mijia开放生态,Xiaomi Vela软件平台、小米IoT模组家族以及丰富的小米生态链产品,都在从硬件到软件、从技术到服务、从产 品 到生态等各种维度加强"手机+AIoT"的生态场景体验与繁荣,积极推动整个AIoT场景与行业健康发展,小米物联网技术护城河才真正要建起来。众所周知,小米及其生态链企业的产品特别多,若每个供应商都有自己的一套OS解决方案,那么这种模式下,随着产品越来越丰富,小米的负担也会急剧增大。原创 2023-06-29 16:54:04 · 2143 阅读 · 1 评论 -
RTOS面试题(二)
注:由于ucosii中总是把当前正在运行任务的任务控制块的指针存放在一个指针变量OSTCBCur中,并且对于待运行任务的任务控制块指针也很好获得(OSTCBHighRdy),所以2-6步骤很容易完成,问题是1和7的处理,并没有将断点指针(在PC寄存器中)压入堆栈的指令,从而想到使用引发中断的方式,利用系统在跳转到ISR时会自动将断点指针压入堆栈的功能将断点指针存入堆栈,返回时同理。像早期的CPU的汇编一条指令是原子操作,但后来指令变啦,比如X86的块操作、SIMD之类的指令都不再是原子操作了。原创 2023-05-28 19:32:13 · 2954 阅读 · 0 评论 -
RTOS面试题(一)
一个处理器核心在某一时刻只能运行一个任务,操作系统中任务调度器的责任就是决定在某一时刻究竟运行哪个任务。实时操作系统中都要包含一个实时任务调度器,这个任务调度器与其它操作系统的最大不同是强调:严格按照优先级来分配CPU时间,并且时间片轮转不是实时调度器的一个必选项。FreeRTOS就是一款支持多任务运行的实时操作系统,具有时间片、抢占式和合作式三种调度方式。抢占式调度器使用了抢占式调度,最高优先级的任务一旦就绪,总能得到 CPU 的控制权。 比如,当一个运行着的任务被其它高优先级的任务抢占,当前任务的原创 2023-05-28 19:29:55 · 6170 阅读 · 0 评论 -
RTOS实时操作系统概述
RT-Thread操作系统进程管理算法和Linux中RT调度器中的RR调度相同,在严格优先级的基础上增加了时间片轮训。关于这个操作系统的调度管理流程可以查阅《普中RT-Thread开发攻略_V2.1--基于STM32》书籍。书籍从0写一个RT-Thread操作系统,并在这个基础上完成部分简单的应用开发功能。原创 2023-05-26 10:36:20 · 1597 阅读 · 0 评论