
RT-Thread
迪加不会飞
again again again
展开
-
20200223-02 RT-Thread 启用 MQTT 自动注册网络平台(本人选用 ONENET 平台测试)
z原创 2020-02-26 12:41:10 · 394 阅读 · 0 评论 -
20191119 (36) RT-Thread 下 CAN 驱动模块的使用和测试 不含过滤表说明(NXP JTA1050)
目的只针对收/发/配置进行说明1 了解 CAN 的工作原理2 了解相关 CAN 的控制语句及配置3 用例 CAN1 连续发送和接收 在最后注意: 官方配置可能有问题,需要自行配置正文跟 485 一样 CAN 也是两线制的,利用差分信号传输,而为了避免信号的反射和干扰,一般会在 H 和 L 端接上 120 欧姆的电阻,这 120 欧姆的电阻是根据电缆线的特性阻抗决定(一般是 12...原创 2019-11-19 15:43:09 · 6751 阅读 · 0 评论 -
20191102(34) 针对 RT-Thread 下 BSP 移植说明(以 can 为示例)
新的 BSP 框架还引入了 CubeMX 工具,可以使用该工具来对 BSP 中使用的外设引脚进行配置。CubeMX 工具提供了图形化的配置界面,这种图形化的配置方式对开发者来说更加直观,不仅可以让开发者灵活地配置 BSP 中使用的资源,并且可以让开发者对资源的使用情况一目了然框架官方外设使用教程Hardware Drivers Config —> OnBoard 板载 On-ch...原创 2019-11-01 09:50:45 · 2153 阅读 · 0 评论 -
20191101(33) 针对 RT-Thread 下 ADS1256 移植说明(SPI)
已上传的源码:这是基于 RT-Thread 4.0.2 版本移植的 ADS1256 源码程序注意: 自校准不太适合应用于压差较大环境,测试发现芯片会自动平衡差值无法很好的同时测试 5v和3.3v 两个电压,部分配置请查看数据手册注意: RT-Thread 中 SPI 和 硬件中断 没法同时工作,因此采用轮询方式进行以下是源码//filePath: drv_ads1256.c#inclu...原创 2019-10-31 20:16:03 · 2371 阅读 · 0 评论 -
20191027(32)RT-Thread SPI 设备挂载——ADS1256 后续提供具体实现源码(stm32f407)
目的1 实现 ADS 1256 采集芯片在 RT-Thread 上的应用2 了解 SPI 挂载的方式MSB LSBCOLPCOHA正文了解 SPISPI:1 串行外设接口总线(SPI)最早由Motorola首先提出的全双工三线同步串行外围接口(SCK, MISO 主入从出, MOSI 主出从入)2 采用 主从模式 支持一对多3 通过 CS 片选脚来确定工作对象(大多是 CS...原创 2019-10-31 11:49:30 · 3667 阅读 · 1 评论 -
20191025(30) RT-Thread 虚拟文件系统的读写操作
目的1 掌握 虚拟文件系统创建文件及实现流程(Finsh 支持 Unix 指令可自行学习/如何使用 Finsh 建议自学)重点1 env 配置虚拟文件系统2 头文件添加 #include <dfs_posix.h>正文1 创删改读写–文件//读写创static void readWrite_sample(void) { int fd = 0; int size =...原创 2019-10-25 10:48:56 · 2321 阅读 · 0 评论 -
20191024 (29) RT-Thread 配置 SD 卡的虚拟操作
目的1 需要掌握制作 BSP 为前提(会在下一篇文章结合官方说明进行解释)2 了解配置 SD 卡作为虚拟系统正文官方说明1 开启虚拟文件系统RT-Thread Components ---> Device virtual file system ---> 其余内容参考官方说明2 开启SDRT-Thread Components ---> ...原创 2019-10-24 13:25:07 · 1747 阅读 · 0 评论 -
20191016 (27) Env 配置文件
目的1 了解基本的配置方法配置流程要配置一个系统的方法:1 去官网下载最新版源码包2 安装 Env3 在 BSP 下找到已经有的配置文件(如果没有也可自行配置)4 在 env 界面输入 menuconfig 进行选择5 在 env 输入 scons 进行自动配置Env 工具配置menuconfig -s 可以进入 Env 工具配置界面auto update pkgs c...原创 2019-10-16 13:22:22 · 441 阅读 · 0 评论 -
20191015 (26) RT-Thread 简述内核移植
目的1 了解内核移植的简单内容,具体移植内容需要详细看官方文件正文1 CPU 架构移植利用 libcpu 抽象层来适配不同的 CPU 架构,用来向上层对内核提供统一的接口。函数和变量描述rt_base_t rt_hw_interrupt_disable(void)关闭全局中断void rt_hw_interrupt_enable(rt_base_t leve...原创 2019-10-15 12:57:05 · 236 阅读 · 0 评论 -
20191014 (25) RT-Thread 中断管理
目的1 了解 RT-Theard 内部处理中断正文1 寄存器构成stack pointer–>SP 堆栈指针寄存器Link Register --> LR 连接寄存器 用于 调用子程序Program Counter --> PC 程序计数器MSP --> 主堆栈指针PSP --> 进程堆栈指针PSRs --> 程序状态字寄存器组PRIMA...原创 2019-10-14 09:37:33 · 658 阅读 · 0 评论 -
20191012 (23)RT-Thread 内存管理
目的1 了解 RT-Thread 内存管理的方式2 了解动态内存堆管理 和 静态内存池管理正文:内存管理的特点1 分配内存的时间必须确定2 避免内存分配的碎片化问题3 内存资源差异较大RT-Thread 三种管理方式1 小内存 小内存管理法 <2MB2 大内存 slab 管理法3 多内存 memheap 管理法简单介绍:slab 是 linux 一种...原创 2019-10-12 11:24:55 · 284 阅读 · 0 评论 -
20191012 (22) RT-Thread 线程间通信
目的1 了解除了全局变量之外更加安全的通信方式正文1 邮箱特点:开销低,效率高,非堵塞,可用于中断一个邮件大小是 4 个字节针对 32 bit处理系统,用于存储一个字节的大小对于收 / 发线程而言,可以选择挂起等待或则直接返回,直到由邮箱唤醒rt_mailbox 对象从 rt_ipc_object 中派生,由 IPC 容器所管理邮箱控制块是操作系统用于管理邮箱的数据结构 rt_...原创 2019-10-11 10:37:55 · 315 阅读 · 0 评论 -
20191010 (21) RT-Thead 线程同步
目的1 理解基本的多线程交互概念正文1 什么时候需要涉及到线程同步的概念当线程之间需要进行数据传递的时候,就需要考虑到线程同步的事情了,比如对同一变量进行读写。但每次只允许一个线程进行操作,那就需要涉及到等待,互锁等概念。线程的同步方式有很多种,其核心思想都是:在访问临界区的时候只允许一个 (或一类) 线程运行。进入 / 退出临界区的方式有很多种:1)调用 rt_hw_inte...原创 2019-10-10 13:20:04 · 267 阅读 · 0 评论 -
20191006 (17)RT-Thread 硬件定时器接口说明(1)
目的1 初步接触 RTOS 关于外设的使用方式2 了解硬件定时器涉及到的内容正文硬件定时器是通过 RTOS 提供的 IO 设备管理接口,这就是符合裸程序时候设定定时器的方式。函数描述rt_device_find()查找定时器设备rt_device_open()以读写方式打开定时器设备rt_device_set_rx_indicate()设置超时回调...原创 2019-10-06 21:33:20 · 723 阅读 · 0 评论 -
20191004 (15) RT-Thread 高精度短时间 延时
目的1 解读延时函数正文//延时 低于 1 OS Tick 计时任务#include <board.h> void rt_hw_us_delay(rt_uint32_t us) { rt_uint32_t delta; /* 获得延时经过的 tick 数 */ us = us *(SysTick>LOAD/(1000000/RT_TICK_...原创 2019-10-04 22:03:00 · 2132 阅读 · 0 评论 -
20191003 (14)RT-Thread 时钟管理范例程序
官方历程#include <rtthread.h>/* 定时器的控制块 */ static rt_timer_t timer1; static rt_timer_t timer2; static int cnt = 0; /* 定时器 1 超时函数 */ static void timeout1(void *parameter) { rt_kprintf("pe...原创 2019-10-03 22:02:25 · 232 阅读 · 0 评论 -
20190920(1) RT_Thread 架构
目的:RT-Thread 构成如何开始RT-Thread 学习之旅以下是两个比较推荐的学习途径官方文档野火教程前言: 物联网即将腾飞的当下,不掌握 RTOS 如何能够在这场盛宴中博得一杯羹呢,所以这就是开始学习 RT-Thread 的历程,事先声明本系列文章仅仅是本人自我学习的一种方式。如果发现任何问题可以发送消息到 dfzx.123@163.com 与我沟通,感谢看到本文...原创 2019-09-20 20:03:22 · 354 阅读 · 0 评论 -
20190922(2 补) 内核介绍
学习目标1 了解内核启动流程2 示例模型启动流程说明$Sub$$ 代表在执行 Main() 函数之前的系统初始化工作$Super$$ 代表程序跳转到 Main() 函数执行工作int $Sub$$main(void) { rtthread_startup(); return 0;}int rtthread_startup(void) { rt_h...原创 2019-09-22 08:34:43 · 144 阅读 · 0 评论 -
20190924(4 补)RT-Thread 线程管理理论部分(1)
前言:准备:官网1 去官网进入 《Keil MDK模拟器STM32F103体验包》2 根据教程安装 Keil 并下载例程目的:1 了解什么是线程2 RT-Thread 线程相关理论内容说明正文:什么是线程和进程以企业举例:每个企业可以视为一个进程,企业与企业之间相互独立,他们都由内核管理。每个企业内部的部门可以视为多个功能不一样的线程,它们需要处理各自部门的工作,相互之间可以...原创 2019-09-24 19:43:11 · 231 阅读 · 0 评论 -
20190924(5)RT-Thread 线程管理源码解读 (2)初始化
前言:准备:1 去官网下载 RT-Thread 源码2 准备 source insight 4.0 / 随意文本阅读器3 下载官方的 API 手册并打开4 打开 rt-thread-master/src/thread.c 和 rt-thread-master/rtthread.h 两个文件目的:1 根据源码解读线程的初始化正文:线程的初始化在 rt_thread_init()...原创 2019-09-24 21:29:55 · 462 阅读 · 0 评论 -
20190925(6)RT-Thread 线程管理源码解读(3)初始化相关函数及位操作讲解
目的:1 解读篇幅 2 中遗留代码 rt_memset()/rt_hw_stack_init()/rt_timer_init()2 位操作补充说明 以及 原码 补码 反码 说明正文遗留代码解读rt_memset()rt_hw_stack_init()rt_timer_init()//filePath: /src/thread.c/** * This function wi...原创 2019-09-25 13:32:25 · 434 阅读 · 0 评论 -
20190926(7)RT-Thread 线程管理源码解读(4)初始化/创建/删除/脱离(含官方使用例程)
目的:1 有前面的铺垫,简单讲解初始化/创建/删除/脱离的函数2 附上官方使用例程重点:实际上,用 rt_thread_delete() 函数删除线程接口,仅仅是把相应的线程状态更改为 RT_THREAD_CLOSE 状态,然后放入到 rt_thread_defunct 队列中;而真正的删除动作(释放线程控制块和释放线程栈)需要到下一次执行空闲线程时,由空闲线程完成最后的线程删除动作。...原创 2019-09-26 10:45:16 · 1036 阅读 · 0 评论 -
20190927(8)RT-Thread 线程管理源码解读(5)启动/控制及相对重要的函数说明
目的:1 根据源码讲解启动挂起的函数内容2 说明一些跟线程调用相关的函数RT_THREAD_INIT 线程通过调用函数 rt_thread_create/init() 进入到初始状态RT_THREAD_READY 初始状态的线程通过调用函数 rt_thread_startup() 进入到就绪状态RT_THREAD_RUNNING 就绪状态的线程被调度器调度后进入运行状态RT_THRE...原创 2019-09-27 21:53:39 · 451 阅读 · 0 评论 -
20190928 (9)RT-Thread 线程管理的实际应用案例 (6) 线程管理最后一篇
目的:掌握线程自动创建/手动创建/主动延时/主动挂起/主动恢复/主动删除正文说明1 手动创建和自动创建2 两种主动让出 CPU 的区别3 主动挂起及恢复4 主动删除#include <rtthread.h>#define THREAD_PRIORITY 5#define THREAD_STACK_SIZE 512#define ...原创 2019-09-28 11:04:03 · 587 阅读 · 1 评论 -
20190929(10) RT-Thread 时钟管理 理论部分(1)
目的:1 了解 RT 时钟实现2 了解 RT 定时器管理正文RT 时钟实现时钟节拍:可以视为系统心跳,频率越高资源消耗越大RT 时钟节拍可以通过 RT_TICK_PER_SECOND 的定义来调整,等于 1 / RT_TICK_PER_SECOND 秒//中断函数以 STM32 定时器void SysTick_Handler(void) { /* 进入中断 */ ...原创 2019-09-29 21:41:40 · 220 阅读 · 0 评论 -
20190930 (11)RT-Thread 时钟管理 理论部分(2)
目的:1 RT 定时器列表查找方式:跳表 Skip List2 硬件延时正文1 跳表因为定时器都是根据 timeout 插入到定时器列表之中,所以需要很快速的查找相对应的位置用于插入新建定时器而跳表就是新开一个 list 用于存储部分节点,以空间换时间如图所示,如果插入 13 这个值,我只要在数组 3/18/77 中确定最相近 18 在 rt_list 中的位置,就能很快找到 1...原创 2019-09-30 12:45:21 · 265 阅读 · 0 评论 -
20191001(12)RT-Thread 时钟管理 源码解读(1)创建部分
目的了解创建和初始化源码正文根据阅读线程源码的经验,我直接开始阅读最核心的函数 _rt_timer_init()/** * timer structure */struct rt_timer{ struct rt_object parent; /**< inherit from rt_object */ ...原创 2019-10-01 20:23:39 · 181 阅读 · 0 评论 -
20191002(13)RT-Thread 时钟管理 源码解读(2)删除及控制部分
目的:1 了解时钟源码删除及控制部分源码正文1 删除和脱离源码detach 脱离;分离类:是 C++ / python / java 这类语言封装函数功能的一种表示,举一个例子你要吃水果,那这个动作交给程序执行就是,拿起水果,张嘴, 咀嚼,吞咽;总共四个步骤,而类就是集合这四个动作的结合体,但是不同的水果吃的方法不同,只要继承这个类,比如苹果类,西瓜类,具体动作不一样,但是目的和流程...原创 2019-10-02 21:37:32 · 296 阅读 · 0 评论 -
物联网潮流之下的启航——开篇
现在依旧从事是嵌入式设备软件部分的开发,作为行业内部人已经能够感受到各个企业开始快速布局物联网这个领域。从小米等设备厂家围攻智能家居设备,国内外设备厂家布局工业物联网,云计算到雾计算。计算的分布式已然成为当下的重头戏,人工智能很重要,但在当下依旧以集中化的服务器集群提供算力,一旦断网就丧失了"智能"的机器还需要很多路要走。 从平头哥、华为等国内厂家不断在人工智能芯片上...原创 2019-09-19 11:16:45 · 202 阅读 · 0 评论