rtos
文章平均质量分 55
rtthread 学习笔记
EINT
这个作者很懒,什么都没留下…
展开
-
冲破临界区
冲破临界区原创 2022-11-12 11:47:11 · 285 阅读 · 0 评论 -
rtos 中对共享资源的保护策略
rtos 中对共享资源的保护策略原创 2022-09-05 22:38:13 · 394 阅读 · 0 评论 -
rt-thread 中对 hardfault 的处理
当系统进入异常时,通常会进入异常对应的处理函数,当系统中存在非法操作时,比如除0、非对齐访问、爆栈,此时便会触发 hardfault 异常原创 2022-07-03 18:32:22 · 1701 阅读 · 0 评论 -
RT-thread 自动初始化原理
废话不说直接看代码核心代码如下typedef int (*init_fn_t)(void);// 定义一个函数指针#define SECTION(x) __attribute__((section(x)))#define INIT_EXPORT(fn, level) RT_USED const init_fn_t __rt_init_##fn SECTION(".rti_fn." level) = fn本质:通过 __attribute__((section原创 2022-03-03 11:16:55 · 415 阅读 · 0 评论 -
Rt-thread 链表操作的的几个 API
rtthread 链表操作的的几个 API /* 将节点 n 插入到节点 l 的后面,如果 l 为头节点,则插入到链表头部 */rt_inline void rt_list_insert_after(rt_list_t *l, rt_list_t *n){ l->next->prev = n; n->next = l->next; l->next = n; n->prev = l;} /* 将节点 n 插入到节点 l 的前面,原创 2022-03-01 18:06:18 · 672 阅读 · 3 评论 -
linux 内核 container_of 原理
#include <stdio.h>#include <string.h>/* 返回 ptr 所在结构体的指针 */#define rt_container_of(ptr, type, member) \ ((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member)))struct rt_list_node{ struct rt_list_node* next;原创 2022-02-25 11:47:53 · 429 阅读 · 0 评论 -
RT-Thread 内核线程切换原理
1、背景本文章主要说明 rtthread 内核线程是如何切换的,初学者刚从裸机开发接触 RTOS 时难免会有些不适应,明白这部分原理之后就会对 RTOS 有更深的理解。在学习内核线程切换原理之前需要有以下基础知识铺垫。本文以 arm 公司的 Cortex-M3 内核为例。2、基础知识 CM3 拥有通用寄存器 R0-R15 以及一些特殊功能寄存器(中断屏蔽寄存器等等) R0-R12 都是通用寄存器,用来临时存储程序运行时产生的数据 R13 这个寄存器存储堆栈指针,在 CM3 内核原创 2022-01-02 21:54:52 · 2471 阅读 · 11 评论 -
RT-thread 堆栈理解
1. 背景 相信不少的小伙伴一直有这个问题,堆栈堆栈,到底在哪里?本文以RT-thread 为例,讲解 RTT 中堆栈的位置。2. 栈在哪,堆在哪? 在回答堆栈在哪之前,首先要明白堆栈是内存,内存是什么?是实际的存储设备,比如 eeprom、flash、sram、sdram。我们的代码以及数据不可能没地方放,否则 cpu 怎么去执行指令。 cpu 需要从内存中读取数据到 cpu内部(寄存器),他怎么知道把数据放入内部那个寄存器呢?汇编代码中说明了数据存入那些寄存器中。 栈不需要程序员手动去原创 2022-01-08 13:54:35 · 2962 阅读 · 0 评论