RT-Thread
文章平均质量分 79
上发条
这个家伙很懒,什么都没留下。
展开
-
RT-Thread 使用FAL多字节读写FLASH
RT-Thread 使用FAL跨页多字节读写SPI FLASHFAL 简介在RT-Thread上使用FAL添加SPI 总线驱动添加SFUD驱动添加SPI DEVICE使用SFUD添加SPI 块设备添加FAL添加fal_nbyte验证FAL 简介FAL (Flash Abstraction Layer) Flash 抽象层,是 RT-Thread 的一个软件包,是对 Flash 及基于 Flash的分区进行管理、操作的抽象层,对上层统一了 Flash 及分区操作的 API ,并具有以下特性:• 支持静态原创 2020-10-14 14:26:15 · 3860 阅读 · 0 评论 -
RT-Thread 直接使用spi flash设备
文章目录如果我们不想使用文件系统,要直接读写spi flash,直接调用read和write就行了,但是read和write是读写一个扇区的,不能随机地址读写,如果要随机读写一个地址,需要对其进行封装一下。这里直接上代码了,代码也比较简单,就不注释了。#include "spi_flash.h"#include <rtthread.h>#define SPI_FLASH_...原创 2019-07-23 15:39:17 · 5109 阅读 · 5 评论 -
RT-Thread : 添加SPI Flash设备和文件系统
文章目录添加spi核心代码stm32f10x_spi_bus.c关键字:rtt spi flashRTT版本:4.0.1随着RTT版本不断的更新,RTT已经支持越来越多的组件了,spi当然也不例外。spi子系统的核心部分已经实现好了,我们只需要添加和硬件相关的部分即可。如果不熟悉可以在其他bsp下查找相关的驱动,模仿即可。添加spi核心代码由于我用的是GD25Q16,所以可以直接使用w...原创 2019-07-23 14:32:36 · 5092 阅读 · 1 评论 -
RT-Thread pipe的简单demo
文章目录pipe函数pipe demo关键字:rtthread rtt pipe demopipe,管道,在Linux里是一种基本的IPC(Inter Process Communication,进程间通讯),rtt中使用pipe这个函数需要打开RT_USING_POSIX,既然是POSIX,那么跟Linux中的pipe应该没有多大区别,可以直接参考linux的pipe。但是在linux中,管...原创 2019-07-24 10:59:41 · 2428 阅读 · 0 评论 -
RT-Thread waitqueue等待队列的简单调用
文章目录实例关键字:rtt waitqueue 等待队列waitqueue和workqueue名字看上去有点像,但是这两个是完全不同的东西,workqueue工作队列强调的是work,waitqueue等待队列强调的是wait等待/阻塞,workqueue是将事务延迟处理,而waitqueu是等待条件满足/唤醒,功能是不一样的,不要混淆了。RTT和linux上的wait queue功能差不多,...原创 2019-07-19 14:07:26 · 1980 阅读 · 0 评论 -
RT-Thread workqueue工作队列的简单调用
文章目录代码示例关键字:rtt workqueueRT-Thread的workqueue功能跟linux上的workqueue是一样的。我们知道在中断中,不能休眠阻塞,不宜做大运算等等,中断要尽可能的快,中断中我们一般只是用来做一些标志等,将业务逻辑处理放到其他地方,Linux中提供了tasklet和workqueue,RTT中只有workqueue。我们可以将不是很紧急处理的事情放到work...原创 2019-07-18 18:27:17 · 3227 阅读 · 2 评论 -
使用STM32编写一个简单的RTOS:5.内核同步(三、事件集)
文章目录事件集源码分析参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、事件集。事件集事件集主要用于线程间的同步,与信号量不同,它的特点是可以实现一对多,多对多的同步。即一个线程与多个事件的关系可设置为:其中任意一个事件唤醒线程,或几个事件都到达后才唤醒线程进行后续的处理;同样,事件也可以是多个线程同步多个事件。这种多个事件的集合可以用一个 32 位无符号整...原创 2019-06-12 14:22:10 · 415 阅读 · 1 评论 -
使用STM32编写一个简单的RTOS:5.内核同步(二、互斥锁)
文章目录互斥量源码分析测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、互斥量。互斥量在其他书籍中的名称:mutex :互斥锁,互斥量,互斥体。从信号量中我们知道了互斥锁是特殊的二值信号量,只有0和1两种状态。死锁由于互斥锁只有两种状态,开锁或者关锁,假如函数A关了锁后,调用了函数B,函数B也要关锁,这时就会导致死锁。优先级翻转使用信号量会导...原创 2019-06-12 14:16:12 · 1568 阅读 · 0 评论 -
使用STM32编写一个简单的RTOS:5.内核同步(一、信号量)
文章目录问题及总结内核同步信号量semaphore源码分析测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、信号量。问题及总结一、信号量是如何实现永久等待信号的?当time设置为-1时可以实现永久等待,因为在rt_sem_take中判断如果time > 0时才会启动定时器,所以这时该线程会被挂起。挂在该信号量的suspen_thread链表上。当...原创 2019-06-12 14:06:21 · 663 阅读 · 1 评论 -
使用STM32编写一个简单的RTOS:4.时钟管理(二)定时器
文章目录问题及总结跳表源码分析测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、定时器timer。问题及总结一、为什么定时器定时不支持超过RT_TICK_MAX / 2(RT_ASSERT(timer->init_tick < RT_TICK_MAX / 2);)?这个问题其实就跟我们现实中的时钟一样。这个问题分为过了12点(归0)和没过1...原创 2019-06-12 11:29:26 · 1127 阅读 · 0 评论 -
使用STM32编写一个简单的RTOS:4.时钟管理(一)SysTick
文章目录简介源码分析测试参考资料:RTT官网文档、《cortex-M3权威指南》关键字:分析RT-Thread源码、stm32、RTOS、时钟管理。简介完成了调度器,对象管理,线程管理后,我们就可以多任务并行执行了,但是还是有很多问题,例如我们同优先级的线程,在不挂起的情况下,只能通过手动yield放弃CPU,另一个线程才有机会运行。低优先级的线程也得不到获取CPU资源的机会,这样我们的多...原创 2019-06-12 11:05:08 · 931 阅读 · 0 评论 -
使用STM32编写一个简单的RTOS:3.线程管理
文章目录RT-Thread的线程简介源码分析初始化线程线程脱离启动线程挂起线程线程睡眠线程让出测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、线程管理器。RT-Thread的线程简介线程(thread)是系统能够进行调度的最小单位,在linux中也是这样定义的,但是和我们RTOS中的thread更像是linux中的进程,是系统进行资源分配的基本单位,但...原创 2019-06-12 10:49:18 · 1699 阅读 · 0 评论 -
使用STM32编写一个简单的RTOS:2.对象管理
文章目录内核对象管理架构代码分析参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、对象管理器。内核对象管理架构RT-Thread 采用内核对象管理系统来访问 / 管理所有内核对象,内核对象包含了内核中绝大部分设施,这些内核对象可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过这种内核对象的设计方式,RT-Thread 做到了不依赖于具体的...原创 2019-06-11 19:40:20 · 489 阅读 · 0 评论 -
使用STM32编写一个简单的RTOS:1.调度(二、调度器)
文章目录调度器调度器的策略调度算法代码分析总结调度器流程实验平台:stm32f10x(cortex-m3)开发板,RTT3.0资料来源:RTT官网文档及cortex-M3权威指南关键字:分析RT-Thread源码、stm32、RTOS、调度器。调度器额,这里还是介绍一下调度的功能吧(瞬间打脸)。调度的作用就是从一堆当前需要运行的线程中找到那个最需要马上运行的程序。然后通过上下文切换,将...原创 2019-06-11 19:22:19 · 1703 阅读 · 0 评论