RTOS
文章平均质量分 84
介绍嵌入式实时操作系统相关知识或技巧。
Dokin丶
嵌入式码农
展开
-
内存泄漏定位工具
这里基于RT-Thread写了一个内存泄漏定位工具(实际和RTT无关,什么系统都可以用,要适当修改),原理非常简单:申请内存时,记录申请的内存地址、大小,以及申请内存这行代码所在的文件名和行号,当释放内存时,根据内存地址找到之前的记录并删除,最后留下的记录就极有可能是发生内存的代码(当然有些内存是常驻的,需要使用者自己辨别)。申请内存时会记录代码所在的文件名,MEM_TRACE_FILE_NAME_LEN就是文件名的最大长度,最终记录的只有最后级的文件名,不包含路径,所以16字节应该是够用的。原创 2023-08-28 15:57:29 · 566 阅读 · 0 评论 -
Scons编译lib库
直接在SConstruct文件所在目录下执行scons命令即可编译,会在src目录下生成libtest.a。比较奇怪的是,在命令行中直接执行arm-none-eabi-gcc -v是可以打印这个交叉编译编译工具链的信息的,证明工具链添加到环境变量中是没有问题的,但是Sconscript脚本中直接这样写env[‘CC’] = ‘arm-none-eabi-gcc’,会提示找不到编译工具链,需要编译工具链的绝对路径。看样子是Scons不会共用系统的环境变量,有知道的同学请留言指导下哈!原创 2023-08-08 16:53:37 · 443 阅读 · 0 评论 -
SDIO WiFi模组调试经验案例
wifi -o命令用于选择模组的模式,wifi -o 0对应STA模式,wifi -o 1对应AP模式;wifi -s命令用于开启wifi扫描,随后会将扫描到的AP列表打印在控制台;wifi -c命令用于连接目标AP;wifi -d命令用于断开与AP的连接;wifi -f命令用于关闭wifi功能。原创 2023-07-03 20:36:09 · 3813 阅读 · 2 评论 -
网卡驱动死机调试经验案例
网卡驱动死机调试经验案例原创 2023-05-23 19:36:40 · 366 阅读 · 0 评论 -
基于RT-Thread的lwip网卡优化笔记
本文讲述了如何在rt-thread lwip上优化网卡吞吐速率。原创 2023-05-19 18:58:31 · 2998 阅读 · 3 评论 -
嵌入式消息订阅发布模式软件框架
消息的定义如下,一条消息由消息ID和携带的数据构成,如果消息很简单没有数据,那么数据可以为空。rt_msg仅仅是对针对用户开放的一个定义,实际上SoftBus.c中还定义了**_rt_msg**,_rt_msg是在rt_msg的基础上进行了扩展,可以认为他们之间存在一种继承关系。rt_msg msg;/* 消息实体 *//* 消息类型 *//* 源服务ID *//* 发送方的应答处理函数或动态订阅处理函数 *//* 同步消息指针,用于接收同步消息 *//* 指向下一_rt_msg节点 */原创 2022-06-14 00:47:54 · 6329 阅读 · 100 评论 -
RT-Thread线程间通信源码解析
目前网上有许多讲解RT-Thread的IPC(信号量、互斥量、事件、邮箱、队列)相关文档,但仅停留在API的使用,鲜有从源码角度讲解其实现原理。野火出版的《RT-Thread内核实现与应用开发实战指南》不仅讲解了线程调度等实现原理,还讲解了IPC的实现原理,本文仅仅是作为学习笔记来简短叙述下IPC的实现原理,想深入学习的话可以参考野火的这本书,也可以直接阅读源码。目录一、线程内置定时器二、IPC父类对象三、信号量四、互斥量五、事件六、邮箱七、消息队列一、线程内置定时器.原创 2020-05-24 21:02:58 · 3252 阅读 · 2 评论 -
RT-Thread Kconfig结构
本文主要是记录下RT-Thread的Kconfig文件依赖关系,就像分析makefile一样。下文以正点原子潘多拉STM32L475开发板举例,该开发板自带RTT官方的例程,便于分析,目录如下图所示。由于使用ENV不能有中文路径,所以下面的文件夹是从开发板资料中单独复制出来的。图1 潘多拉开发板RTT例程文件结构“顶层Kconfig”文件位于example文件夹下的具体例程下,姑且这么叫吧,因为这个Kconfig引用了其他所有的Kconfig。图2 潘多拉开发板RTT Demo...原创 2020-05-08 23:12:30 · 2077 阅读 · 0 评论 -
让线程既阻塞等待信号量又能执行周期任务的方法
在使用RTOS时,我们可能会这样一种场景:一个线程既要阻塞等待信号量或邮箱,又要执行周期性任务。本文介绍一种简单的方法来实现该需求。以信号量为例,一般的RTOS提供的信号量请求具有以下3种等待方法:①. 无限等待,即一直阻塞等待信号量。②. 超时等待,即设定一个超时时间,如果超时时间内还没有获取到信号量,则不再继续等待,线程继续执行。③. 尝试等待,即尝试获取信号量,如果获取不到则...原创 2020-02-17 15:06:10 · 2054 阅读 · 0 评论