rtthread操作系统是以线程为单位运行的,一个系统里面可以有无数个线程,调度器就是这些线程的管家,它保证:每时每刻只让存在于就绪状态中的优先级最高的线程持有CPU的使用权。这篇文章,我从调度器的初始化,创建,调度,挂起等几个方面来解读rtthread的源码。 调度器遵循两个原则: 1、优先调度优先级最高的线程,高...
用户级代码是永远无法操作系统核心的,这样区分是为了使代码更加健壮,不会因为用户代码的问题而导致系统瘫痪。 我们的图解源码,将从系统上电复位开始,系统会首先建立PSP,分配一些栈给启动代码使用,然后进行线程调度,使其开始运行第一个线程。 上电时候处理器所处的模式切换 从图中我们可以看到,系统从特权级+线程模式到...
[RT-Thread 源码分析] 1. 内存管理1 rt-thread的小内存管理是其默认的堆内存管理算法。是采用静态链表来实现的,源文件为mem.c。 1.数据结构 === struct heap_mem { /* magic and used flag */ rt_uint16_t magic; // 如果此内存块被分配了,则置0x1ea0,以此标志 // 此块内存是正常分配出来的,而...
argv[1]直接就可以被拿来用了,参数与参数之间以空格分开,十分方便 尝试分析MSH_CMD_EXPORT宏定义源码 1.#defineMSH_CMD_EXPORT(command, desc) FINSH_FUNCTION_EXPORT_CMD(command, __cmd_##command, desc)//嵌套一层宏定义,把两个参数变成3个参数,command用##与__cmd_连接起来,那么它的第二参数就变成__cm...
启动文件和链接脚本1)启动文件 启动文件里面使用的是汇编语言,汇编语言常常可以分为两个部分语法风格和而不同的toolchain有不同的汇编语法风格,通常分配unified 和非 unified。常见的工具包有 ARM toolchains …
今天要介绍的是有关独立按键的知识,简单来说,非常简单,所以就不详细介绍了。 成果展示 https://player.bilibili.com/player.html?aid=733631244 独立按键 硬件知识 代码 代码语言:javascript 代码运行次数:0 运行 AI代码解释 #include<rtthread.h>#include<rtdevice.h>#include<board.h>#defineDBG_TAG"main"#def...
编译 在 rt-threadspSTM32stm32l496-ali-developer 目录下打开 env 工具:使用命令 scons --target=...
在RT-Thread中,系统定时器主要用于管理延时操作、周期性任务和超时处理。它可以通过定时器实现任务的延时、周期性触发任务(如定时采集数据或刷新显示)、以及超时事件的处理。此外,RT-Thread 还支持软定时器,用于在指定时间后触发回调函数,适合处理非实时要求高的任务。系统定时器是确保嵌入式应用中任务按设定时间精度执行...
首先,UART 设备作为一个外设,肯定需要初始化,我们在系列博文第二篇《RT-Thread记录(二、RT-Thread内核启动流程 — 启动文件和源码分析)》分析过 RT-Thread 初始化。 2.1 UART 设备初始化位置 在文中章节 “2.2.1 板级硬件初始化 — rt_hw_board_init” 讲到了硬件初始化相关,如下图: ...
RT-Thread源码分析之网卡数据的接收和发送 一、lwip网卡接口ethernetif.c ethernetif.c是lwip的网卡接口,在该接口中处理网卡的数据接收和发送,rt-thread在该接口文件中抽象了一个eth_device,管理网络数据的收发和向内核的netdev_list添加netdev。 二、网络设备eth_device...