![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rtos
文章平均质量分 84
内 鬼
所有博文与笔记在GitHub Repository:redlightASl/Notes进行实时更新,如转载请标明出处。现已切换到个人博客进行更新,redlightasl.top
展开
-
RT-Thread学习笔记【ADC与DAC设备】
RT-Thread的ADC与DAC驱动ADC简介ADC即模数转换器,是指将连续变化的模拟信号转换为离散的数字信号的器件。与之相对应的DAC是ADC的逆向过程。ADC 最早用于对无线信号向数字信号转换,如电视信号,长短播电台发接收等,现在已经用于生活中的方方面面,在仪表中尤为常见。如下图所示模数转换一般要经过采样、保持和量化、编码这几个步骤。在实际电路中,采样和保持,量化和编码在转换过程中是同时实现的。采样:将时间上连续变化的模拟信号转换为时间上离散的模拟信号保持:将采样取得的模拟信号保持一段时间原创 2021-07-03 21:36:25 · 1636 阅读 · 3 评论 -
RT-Thread学习笔记【RTC设备】
RTC设备RTC就是实时时钟,而IoT设备的标配就是实时时钟——虽然可以从网络上得到精准的时间戳进行同步,但是在SSL加密传输等情况下必须使用本地的RTC来实现计时。RTT也配备了RTC设备驱动操作RTC设备访问接口set_date()设置日期rt_err_t set_date(rt_uint32_t year,//年 rt_uint32_t month,//月 rt_uint32_t day)//日示例:set_原创 2021-05-01 15:26:48 · 1383 阅读 · 0 评论 -
RT-Thread学习笔记【虚拟文件系统DFS】
虚拟文件系统文件系统:一套用于实现数据存储、分级组织、访问和获取等操作的抽象数据类型(Abstract Data Type,ADT),用于下向用户提供底层数据访问的机制GNU/Linux的虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,它对UNIX(GNU/Linux、MS-Windows)的每个文件系统的所有细节进行抽象,使得不同的文件系统在操作系统内核以及系统中运行的其他进程看来都是相同的。VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间文件系统的基本存储单位和组原创 2021-03-29 18:07:39 · 1589 阅读 · 0 评论 -
RT-Thread学习笔记【内核移植】
RTT的内核与内核移植内核移植:将操作系统的内核在不同CPU架构和不同外围硬件环境下运行,能够具有线程管理和调度、内存管理、线程间同步与通信、定时器管理等基本功能的过程内核移植可以分为CPU架构移植和BSP(Board Support Package板级支持包)移植两部分CPU架构移植RTT提供了libcpu抽象层来适配不同的CPU架构可支持arm系、mips系、RISC-V、avr系、xilinx系等多种流行的嵌入式cpu架构libcpu抽象层libcpu的上层对内核提供运行接口,下层对CP原创 2021-03-24 20:25:12 · 867 阅读 · 0 评论 -
RT-Thread学习笔记【AT组件】
文章目录AT指令AT组件简介资源占用主要功能AT Server启用和初始化自定义AT指令添加AT Server API发送数据发送命令执行结果至客户端解析输入命令参数移植APIAT ClientAT Client的数据收发方式创建、删除响应结构体设置响应结构体参数发送命令并接收响应AT Client的数据解析方式获取指定行号的响应数据获取指定关键字的响应数据解析指定行号的响应数据解析指定关键字一行的响应数据URC数据处理URC数据列表初始化其他API多客户端支持AT指令AT指令最早是由发明拨号调制解调器原创 2021-02-26 16:49:09 · 3010 阅读 · 0 评论 -
RT-Thread学习笔记【网络设备与BSD套接字组件】
文章目录网卡netdev工作原理网络概念简介网卡的状态和配置开启网卡组件网卡组件的使用网卡设备注册和注销配置网卡和获取网卡信息默认网卡自动化切换可用的FinSH指令套接字网络抽象层工作原理多协议栈接入与接口函数统一抽象功能SAL TLS加密传输功能基础网络知识讲解(摘自官方文档)使用方式开启与初始化开启SAL组件初始化SAL组件BSD Socket API简介创建、关闭、设置、获取套接字和套接字信息绑定、监听套接字接收、建立连接发送、接收TCP数据发送、接收UDP数据网络协议栈的接入方式下面是RTT的网络原创 2021-02-26 01:00:59 · 2176 阅读 · 1 评论 -
RT-Thread学习笔记【PWM设备】
PWM驱动设备脉冲宽度调制PWM是一种对模拟信号电平进行数字编码的方法,通过不同频率的脉冲使用方波的占空比(duty-cycle)对一个具体的模拟信号的电平进行编码,使输出端得到一系列幅值相等的脉冲,用这些脉冲来替代所需要波形的设备人话:用定时器控制电压为U输出信号的占空比D(0≤D≤10\le D \le10≤D≤1),可以得到0~U之间一个电压UT的输出信号,且有UT=U∗DU_T=U*DUT=U∗D裸机PWM的使用方法(复习)一般使用定时器来控制PWM设置定时器溢出值a和频率f设置定时原创 2021-02-25 21:50:07 · 1297 阅读 · 1 评论 -
RT-Thread学习笔记【硬件定时器设备】
硬件定时器HWTIMER在RTT中可以使用软件定时器和硬件定时器其中硬件定时器被封装为两个工作模式:定时器模式和计数器模式定时器模式:对内部脉冲信号计数定时器常用作定时时钟,用于实现定时检测、定时响应、定时控制等功能由于系统时钟频率恒定,所以可以根据定时器的计数值计算出定时时间,公式如下定时时间=计数值计数频率定时时间=\frac{计数值}{计数频率}定时时间=计数频率计数值16位计数器最大计数值为65535,32位计数最大值为4294967295,计数频率即硬件定时器时钟频率(单位M原创 2021-02-25 20:28:03 · 1481 阅读 · 3 评论 -
RT-Thread学习笔记【通用总线SPI与IIC】
SPI设备RTT的SPI设备驱动遵循SPI协议进行编写,一般为四线SPI(MOSI、MISO、CS、SCLK)或四线DSPI模式或六线QSPI模式SPI工作在全双工模式,MISO和MOSI同时发送数据,一般在设备内部采用移位寄存器的方式实现;DSPI工作在半双工模式,MOSI和MISO换成SIO0、SIO1,在一个时钟周期内传输两个比特数据;QSPI也工作在半双工模式,设置SIO0、SIO1、SIO2、SIO3四条数据信号线和SCLK、CS两条控制信号线,在同一时钟周期内能传输4个比特数据在相同时钟下原创 2021-02-22 15:58:11 · 1440 阅读 · 0 评论 -
RT-Thread学习笔记【WLAN】
WLAN简介RTT使用WLAN设备管理WIFI无线网络和网络协议栈,众所周知,RTT是一个主打IoT的RTOS,WLAN设备是它的基础RTT使用WLAN框架实现网络设备的驱动WLAN框架基本功能对底层控制WiFi连接、断开、扫描等对上层提供WiFi控制、事件、数据导流等应用操作对上层应用程序实现统一的WiFi控制接口WLAN框架组成DEV驱动接口层为WLAN框架提供统一的APIMANAGE管理层提供WiFi扫描、连接、断线重连等具体功能Protocol协议层处理W原创 2021-02-20 22:15:55 · 1452 阅读 · 3 评论 -
RT-Thread学习笔记【PIN设备】
PIN设备MCU/SoC上的引脚可以分为四类:电源(PWR、VCC、VDD、VSS、GND等)、时钟(CCLK、CLK、SLK等)、控制(EN、NSS、PRI等)、IO(GPIOx、I/Ox、Px、URx、UTx、SPIx、IICx等)不同于一般MCU裸机编程中的GPIO复用(AF)设置,RTT将MCU的GPIO抽象为通用引脚PIN设备在RTT系统中可以编程以下设置可编程中断共5种类型上升沿触发检测无抖动的上升沿下降沿触发检测无抖动的下降沿高电平触发检测高电平状原创 2021-02-20 01:31:41 · 959 阅读 · 0 评论 -
RT-Thread学习笔记【UART】
UART设备简介UART:通用异步收发传输器,可以将传输数据的每个字符一位接一位地顺序传输物理层需要两个传输线,一根Rx接收数据,一根Tx发送数据需要设置波特率、起始位、数据为、停止位、奇偶效验位,对于两个通过UART连接的端口,这些参数必须匹配,否则会造成传输出错波特率:串口通信速率,用单位时间内传输的二进制代码的有效位表示,理论上可以是任意值,但常用4800、9600、38400、115200等特定值,数值越大数据传输越快。单位位每秒比特数bit/s(bps)UART的起始位规定为逻辑电平0原创 2021-02-19 23:54:38 · 2735 阅读 · 0 评论 -
RT-Thread学习笔记【IO设备模型】
I/O设备IO设备模型框架RTT提供了一套简单的IO设备模型框架,位于硬件和应用程序之间,分成三层,从上到下分别是IO设备管理层、设备驱动框架层、设备驱动层,示意图如下所示[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UBXm3fJ0-1613580344436)(C:\Users\NH55\AppData\Roaming\Typora\typora-user-images\image-20210126162352465.png)]应用程序通过IO设备管理层提供的接口原创 2021-02-18 00:46:36 · 868 阅读 · 0 评论 -
RT-Thread学习笔记【中断管理】
中断简介异步事件:CPU外部发生的紧急事件,需要CPU进行处理中断系统:实现CPU暂停当前任务,转而处理异步事件,处理完后再回到原来被中断地址继续工作的过程中断源:申请CPU中断的请求源异常:导致CPU脱离正常运行转向执行特殊代码的事件中断是一种异常Cortex-M系列CPU架构简介Cortex-M系列CPU的寄存器组里由R0-R15共16个通用寄存器和若干特殊功能寄存器其中,R13为堆栈指针寄存器(栈顶指针Stack Pointer,一般称为sp),可以是MSP(主堆栈指针),也可以是PS原创 2021-01-23 16:10:18 · 2351 阅读 · 0 评论 -
RT-Thread学习笔记【线程间通信】
线程间通信裸机编程中经常使用全局变量进行功能间的通信(标志):某些功能由于特定的操作改变全局变量的值,另一个功能对此全局变量进行读取,根据读取到的全局变量执行相应的操作来达到通信协作的目的。RTT提供了邮箱、消息队列和信号等工具来完成这样的类似操作邮箱邮箱作用过程如下线程1(发件线程):获取到外设特定状态并将其作为邮件发送到邮箱线程2(收件线程):读取邮箱并执行后续操作邮箱工作机制邮箱的特点:开销低、效率高、支持一对多邮箱中一封邮件只能容纳固定的4字节信息(针对32位操作系统,指针大小为原创 2021-01-23 16:07:38 · 1745 阅读 · 0 评论 -
RT-Thread学习笔记【线程间同步】
线程间同步名词解释同步:按预定的先后次序进行运行线程同步:多个线程通过特定的机制(如互斥量、事件对象、临界区等)来控制线程之间的执行顺序线程同步的作用:在线程之间建立起顺序执行的关系,防止两个线程争夺同一系统资源的情况发生临界区:会被多个线程操作/访问的同一块代码区域资源互斥:任何时刻只允许一个线程去使用临界区的线程同步策略线程同步的核心思想就是资源互斥信号量信号量对象:一种轻型的用于解决线程同步问题的内核对象,线程可以获取或释放它从而达到同步或互斥的目的信号量由信号量值、线程等待队列组原创 2021-01-23 16:06:39 · 472 阅读 · 0 评论 -
RT-Thread学习笔记【基本介绍】
RT-Thread组成内核层:RT-Rhread内核,包括内核系统中对象的实现、libcpi/BSP(芯片移植相关文件/板级支持包),与硬件密切相关,由外设驱动和CPU移植构成组件与服务层:组件即基于内核之上的上层软件,如虚拟文件系统、FinSH命令行界面、网络框架、设备框架等。采用模块化设计,组件内部高内聚、组件之间低耦合RT-Thread软件包:运行在操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成内核基础内核位于硬件层之上,包括内核库、实时内核实现内核库是原创 2021-01-07 01:31:37 · 1533 阅读 · 0 评论 -
RT-Thread学习笔记【线程管理】
线程管理划分线程的思想:将一个大任务分解成多个小任务线程是实现任务的载体,是RTT的最基本调度单位,描述了一个任务执行的运行环境和优先等级线程在运行时会认为自己是以独占CPU的方式运行上下文:线程执行时的运行环境,即包括所有寄存器变量、堆栈、内存信息在内的各个变量和数据功能特点主要功能:对线程进行管理和调度将所有线程分为系统线程和用户线程系统线程:由RTT内核创建的线程用户线程:由应用程序创建的线程线程从内核对象容器中分配线程对象,当线程被删除时也会被从对象容器中删除RTT线程调度器为原创 2021-01-07 19:42:53 · 1111 阅读 · 0 评论 -
RT-Thread学习笔记【时钟管理】
时钟操作系统中最小时间单位是时钟节拍时钟节拍可以让系统处理包括但不仅限于:线程延时、线程时间片轮转调度、定时器超时等事件时钟节拍时钟节拍(OS Tick)是特定的周期性中断,可以看作是系统心跳中断之间的时间间隔取决于不同的应用,一般是1ms-100ms注意:时钟节拍率越快,系统的额外开销(耗电量)越大系统时间:从系统启动开始计数的时钟节拍RTT中时钟节拍的长度可以根据RT_TICK_PER_SECOND的定义来调整公式:T=1RT_TICK_PER_SECONDT=\frac{1}{RT\原创 2021-01-23 15:48:00 · 1199 阅读 · 1 评论 -
RT-Thread学习笔记【内存管理】
内存管理RTOS对时间的要求非常严格, 内存管理要求具有以下特征:分配内存的时间确定:RTOS要求内存块的分配过程在可预测的确定时间内完成,否则实时任务对外部事件的响应将不可确定尽可能不产生内存碎片:通用OS中,申请的内存中一部分被释放了,导致内存空间中存在一些小内存块,它们地址不连续,无法作为一整块的大内存分配出去(类比机械硬盘的磁盘碎片),随着内存区域产生越来越多的碎片,会导致程序不能申请到大容量内存空间,通用OS一般采用数月一次的重启来解决;但RTOS需要在工况下长时间工作,这样的内存碎片累计原创 2021-01-23 15:50:18 · 1324 阅读 · 0 评论 -
RT-Thread学习笔记【RTT系统启动】
RT-Thread启动流程rtthread_startup()是RTT规定的同意启动入口启动顺序:从启动文件开始运行进入rtthread_startup()进行RTT系统功能初始化进入用户入口main()components.cint $Sub$$main(void){ rt_hw_interrupt_disable(); rtthread_startup();<----------------------- return 0;}/原创 2021-01-23 16:03:07 · 1164 阅读 · 0 评论