最近在学习RT-Thread,原子的某例程的的主函数如下(这是在keil5下的截图): ? 这是主函数中的全部代码,主要是创建一个led线程并启动。...NOTE: please initialize heap inside board initialization. */ rt_hw_board_init(); /* show RT-Thread...(); /* timer thread initialization */ rt_system_timer_thread_init(); /* idle thread initialization...*/ rt_thread_idle_init(); #ifdef RT_USING_SMP rt_hw_spin_lock(&_cpus_lock); #endif /*RT_USING_SMP...以上就是关于RT-Thread启动过程的一点总结,如有错误欢迎指出!谢谢
文章目录 将 FinSH源码添加到工程 开启 FinSH 定义终端读取函数 体验 FinSH 遇到的问题 本文不介绍 RT-Thread 的串口配置,如有需要,可以参考:重映射串口到 rt_kprintf...函数 将 FinSH源码添加到工程 FinSH源码在 RT-Thread 源码目录的 components\finsh\ 目录下, 将其导入到工程中,具体操作这里不做介绍,记得要把头文件包含进来...{ USART_ClearITPendingBit(DEBUG_USARTx, USART_FLAG_ORE); } rt_thread_mdelay...遇到的问题 1.段错误 导致这种错误的原因有很多种,比如 RT_MAIN_THREAD_STACK_SIZE 太小,而我是因为 RT_THREAD_PRIORITY_MAX 设置得太小(只设置为 8)...,小于 FINSH_THREAD_PRIORITY 的默认值 21,所以解决办法就是将 FINSH 的线程优先级(数值)改小或者将系统优先级最大值(数值范围)改大。
以下内容摘自RT-Thread FinSH FinSH 是 RT-Thread 的命令行组件,提供一套供用户在命令行与程序交互的操作接口,主要用于调试或查看系统信息。...FinSH移植 FinSH作为RT-Thread的组件, 是以一个独立的线程形式存在, 要将其移植到linux平台,需要对底层相关调用,诸如线程,信号, 标准输入输出等方面进行移植,移植相关的基本介绍可阅读官方提供的...源码下载: RT-Thread源码下载 移植要点 1. os相关 线程创建 RT-Thread中线程创建使用rt_thread_init函数, 在linux平台要使用pthread_create创建线程...rt_thread_startup(&finsh_thread); 信号 RT-Thread中信号接口rt_sem_init等修改为linux平台接口sem_init。...输入输出 输入输出相关的主要是针对命令行输入, 在RT-Thread中是通过串口等方式进行输入输出,而在linux平台,需要修改为终端输入输出,可以使用宏RT_USING_POSIX开启POSIX接口,
RT thread 隐式调用封装的核心机制。 一般来说会创建一个cmd.c迎来存放我们各种添加的命令函数 命令函数需要在cmd.c中声明这样连接器才能找到函数的位置,一般我们会通过包含头文件。...)finsh_thread_entry的创建 tid = rt_thread_create(FINSH_THREAD_NAME, finsh_thread_entry..., RT_NULL, FINSH_THREAD_STACK_SIZE, FINSH_THREAD_PRIORITY, 10); 3.任务控制信号量的创建...("LED 4 \r\n"); rt_pin_write(LED0_PIN,0); rt_pin_write(LED1_PIN,0); rt_pin_write(LED2_PIN,0); return...配置部分为RT Thread 设备驱动架构,移植过程较为复杂。
文章目录 一、初识RT-Thread 1.简介 2.前景 3.软件生态 二、实验准备 三、实验需求 四、操作流程 1.新建RT-Thread工程 2.RT-Thread Studio界面介绍 3.代码编写...4.烧录 5.串口监视 五、代码演示 六、原理讲解 一、初识RT-Thread 做世界级的 OS,让万物互联,信息畅通无阻。...1.简介 RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread 也是一个组件完整丰富、高度可伸缩...2.前景 RT-Thread 具备一个 IoT OS 平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。...四、操作流程 1.新建RT-Thread工程 2.RT-Thread Studio界面介绍 3.代码编写 4.烧录 5.串口监视 五、代码演示 1.头文件 #include <rtthread.h
这里我选择国产实时操作系统RT-Thread进行学习,因为现在很火呀。...之前已经有简单地过了一遍RT-Thread,奈何学过地知识一旦不用,就会很容易地忘掉,所以应当多做一些学习笔记~ RT-Thread简介 RT-Thread,全称是 Real Time-Thread,顾名思义...RT-Thread提供了一些网络组件及软件包,我们可以运用这些软件包很方便地与云端进行通讯。因此,RT-Thread是一个物联网操作系统(IoT OS)。...RT-Thread 内核基础 RT-Thread内核架构如下: ? 其中,内核库kservice.c是为了保证内核能够独立运行的一套小型的类似 C 库的函数实现子集。...时钟管理 RT-Thread 的时钟管理以时钟节拍为基础,时钟节拍是 RT-Thread 操作系统中最小的时钟单位。
从RT-Thread的github上clone下源码(git@github.com:RT-Thread/rt-thread.git) 2....Rice_RT_Thread_stmf103c8t6) 3.打开Rice_RT_Thread_stmf103c8t6,将里面的内容删减剩下红框的内容 4....8.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\board的SConscript,修改启动芯片和目标芯片,因为目录下\rt-thread...10.打开工程路径:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6的template.uvprojx,修改对应的芯片。...生成完之后,可以在工程路径下:\rt-thread\bsp\stm32\Rice_RT_Thread_stmf103c8t6\dist,将工程拷贝到任意位置。
下面我们来从原理层面和实现层面上讲一下rt-thread裁剪相关的知识。...对于Linux来说,系统裁剪就是将不必要的组件或者外设和Linux中的工具去掉,减少系统功能,在uboot中也需要裁剪,合理设计必须初始化的外设,合理算出Linux kernel大小,然后进行跳转。...02 rt-thread具有高度的可裁剪性 RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。...得益于 RT-Thread 的高度可裁剪性,通过对完整版的裁剪,可以十分便捷的小资源 平台上使用上 RT-Thread。可以通过 env 工具十分方便地进行裁剪,env 工具使用方法如下图所示: ?...06 业务逻辑裁剪 在使用rt-thread操作系统时,往往都是利用rt-thread实现自己的业务逻辑,所以我们在编写自己的代码的时候,也需要充分的理解rt-thread的设计思想。
RT-thread官方的实验文档是最好的参考。 老规矩,先放法国人d'oxygen。...static struct rt_thread thread2; (正常使用前时要rt_thread_startup,完时要记得 - rt_thread_detach将该线程控制块从对象管理器中脱离...) 图片 动态的用rt_thread_create。...(正常使用前时要rt_thread_startup,例程中没有释放内存,正常使用完时要记得 - rt_thread_delete) 本例中两个线程,1和2,各只运行一次,其他时间进入延时...,也就是rt_thread_mdelay,包括rt_thread_resume,rt_thread_suspend。
一、介绍 FinSH 是 RT-Thread 的命令行组件(shell),有了 shell,就像在开发者和计算机之间架起了一座沟通的桥梁,开发者能很方便的获取系统的运行情况,并通过命令控制系统的运行。...二、FinSH 内置命令 2.1、tap键 按下 Tab 键后打印出来的当前支持的所有显示 RT-Thread 内核状态信息的命令。...2.2、显示线程状态 使用 ps 或者 list_thread 命令来列出系统中的所有线程信息,包括线程优先级、状态、栈的最大使用量等。...导出无参数命令时,函数的入参为 void,示例如下: void hello(void) { rt_kprintf("hello RT-Thread!...\n"); } MSH_CMD_EXPORT(hello , say hello to RT-Thread); 导出有参数的命令时,函数的入参为 int argc 和 char**argv 。
trace32 for rt-thread support 1.概述 2.trace32的基本使用 3.trace32系统插件原理 4.离线trace32得到rt-thread状态信息 4.1 trace32...在操作系统层面,RTOS这部分,国外的许多操作系统都得到了很好的支持,例如Linux、freertos或者ucosii等等,所以我在此基础上做了rt-thread的支持。...而在rt-thread中,有个核心的全局静态变量,对象容器(rt_object_container)。...task.config D:\work\rt-thread\bsp\raspberry-pi\raspi2\rtthread.t32 menu.reprogram D:\work\rt-thread\bsp...Data.LOAD.Binary D:\work\rt-thread\bsp\raspberry-pi\raspi2\rtt_dump 0x8000 Data.LOAD.Elf D:\work\rt-thread
前面我们学习了RTT的UART设备的使用,不得不说真的超级给力呀,不到100行秒杀任何MCU最原始的串口编程模式,不得不感叹RTT发展如此强大,文章链接: RT-Thread UART设备驱动框架初体验...RT-Thread PIN设备!学习一个新东西,我个人主张带着需求去学习,而不是漫无目的的去学,有了需求驱动,并且是一个努力付出就可以拥有的成果,那么这还不容易嘛!...我们将基于RT-Thread Studio来构建。 2、开始实践 2.1、RT-Thread Studio工程创建与基础配置 (1)创建RT-Thread项目 ? (2)配置项目 ?...RT-Thread选择v4.0.2,这个版本包含基本的组件,而选择nano的话则不包含。 厂商目前只支持ST,相信后面会支持更多。...-2.0 * * Change Logs: * Date Author Notes * 2019-09-09 RT-Thread first version
上一节我们学习了RTT的PIN设备的使用,从PIN设备的例程再一次体会到RTT编程的灵活和简单,最重要的是让开发者专注于应用开发,文章链接: RT-Thread PIN设备学习笔记 今天我们来学习RT-Thread...本节,我们将会学习到RT-Thread ADC设备的基本使用。 接下来,我们将基于RT-Thread Studio来构建。...channel ADC 通道 返回 —— 读取的数值 根据API,我们很容易写出以下程序: /* * Copyright (c) 2006-2019, RT-Thread Development...("%s \r\n", procol_buf); } rt_thread_mdelay(100); } rt_free(procol_buf);...所以,在串口终端我们这么来操作就行了: adc_cmd on 打开ADC数据,灯闪烁 adc_cmd off 关闭ADC数据,灯熄灭 关于Finsh解析器,后续我们再出一个专题进行讲解,这个东西就跟Linux
rt-thread的内存管理分析 1.概述 2.静态内存与动态内存 3.小内存管理 4.slab内存管理 4.1 rt-thread上slab基本介绍 4.2 rt-thread上slab内存的管理 5...本文主要从RT-Thread的内存管理策略的角度出发,梳理一下目前RT-Thread系统中的内存管理,同时从实际应用的角度出发,选择合适的方案进行内存管理。...3.小内存管理 rt-thread的小内存管理算法是一种比较简单的内存分配管理算法。应用的场景在内存在1MB以下使用比较合适。...RT_USING_MEMTRACE #ifdef ARCH_CPU_64BIT rt_uint8_t thread[8]; #else rt_uint8_t thread[4];...4.slab内存管理 4.1 rt-thread上slab基本介绍 RT-Thread 的 slab 分配器是在 DragonFly BSD 创始人 Matthew Dillon 实现的 slab 分配器基础上
rt_err_t rt_thread_delete(rt_thread_t thread)// 参数是结构体指针,返回值是一个错误码 参数 描述 thread 要删除的线程句柄 返回 错误码 RT_EOK...线程脱离函数如下: rt_err_t rt_thread_detach (rt_thread_t thread); 参数 描述 thread 线程句柄,它应该是由 rt_thread_init 进行初始化的线程句柄...,可以调用如下函数接口: rt_err_t rt_thread_control(rt_thread_t thread, rt_uint8_t cmd, void* arg); 函数参数 描述 thread...挂起线程 线程挂起使用下面的函数接口: rt_err_t rt_thread_suspend (rt_thread_t thread); 参数 描述 thread 线程句柄 返回...rt_err_t rt_thread_resume (rt_thread_t thread); 参数 描述 thread 线程句柄 返回 —— RT_EOK 线程恢复成功 -RT_ERROR 线程恢复失败
此状态在RT-Thread 中的宏定义为RT_THREAD_READY 运行态 线程当前正在运行。...此状态在RT-Thread 中的宏定义为RT_THREAD_CLOSE (3) 线程优先级 RT-Thread 线程的优先级是表示线程被调度的优先程度。...线程脱离函数如下: rt_err_t rt_thread_detach (rt_thread_t thread); 参数 描述 thread 线程句柄,它应该是由rt_thread_init 进行初始化的线程句柄...线程挂起使用下面的函数接口: rt_err_t rt_thread_suspend (rt_thread_t thread); !!!...: rt_err_t rt_thread_control(rt_thread_t thread, rt_uint8_t cmd, void* arg); 指示控制命令cmd 当前支持的命令包括: •RT_THREAD_CTRL_CHANGE_PRIORITY
2、RTC设备操作接口 RT-Thread为RTC设备提供了三个用户层次的应用操作接口,分别是设置日期、设置时间和获取当前时间。...在RT-Thread的设备中,有且仅有一个RTC设备,设备名称为"rtc"。.../ rt_thread_mdelay(3000); /* 获取时间 */ now = time(RT_NULL); rt_kprintf("%s\n", ctime(&...(LED0_PIN, count % 2); //LOG_D("Hello RT-Thread!")...发现论坛上也有大佬讨论这个问题: https://www.rt-thread.org/qa/search.php?
RT-Thread 中的多线程 博主介绍 RT-Thread 线程管理和调度 系统线程 空闲线程 主线程 线程管理 RT-Thread 自动初始化机制 在新线程控制LED RT-Thread 线程管理和调度...线程通过调用函数rt_thread_create/init()进入到初始状态(RT_THREAD_INIT);初始状态的线程通过调用函数 rt_thread_startup() 进入到就绪状态(RT_THREAD_READY...挂起状态的线程,如果调用rt_thread_delete/detach() 函数,将更改为关闭状态(RT_THREAD_CLOSE);而运行状态的线程,如果运行结束,就会在线程的最后部分执行 rt_thread_exit...(void) { rt_thread_t tid; #ifdef RT_USING_HEAP tid = rt_thread_create("main", main_thread_entry, RT_NULL..., RT_MAIN_THREAD_STACK_SIZE, RT_MAIN_THREAD_PRIORITY, 20); RT_ASSERT(tid !
时钟管理 RT-Thread 的时钟管理以时钟节拍为基础,时钟节拍是 RT-Thread 操作系统中最小的时钟单位。...RT-Thread 的定时器提供两类定时器机制:第一类是单次触发定时器,这类定时器在启动后只会触发一次定时器事件,然后定时器自动停止。...RT-Thread 的定时器可以设置为 HARD_TIMER (硬件)模式或者 SOFT_TIMER(软件) 模式。...内存管理 RT-Thread 支持静态内存池管理及动态内存堆管理。...(地址不连续) I/O 设备管理 RT-Thread 将 PIN、I2C、SPI、USB、UART 等作为外设设备,统一通过设备注册完成。
本文介绍了如何在 RT-Thread Studio 上使用 RT-Thread Nano,并基于BearPI-IOT STM32L431RCT6的基础工程进行讲解如何使用PIN设备接口及相关软件包使用。...RT-Thread Nano:仅仅只是一个 RTOS 内核。没有任何组件。 Nano 是无法直接使用 RT-Thread 丰富软件包功能。...准备工作 使用 RT-Thread Studio 建立一个 STM32L431RCT6 的 RT-Thread Nano 基础工程。...基础工程创建可参考:在 RT-Thread Studio 上使用 RT-Thread Nano PIN 设备接口 在 RT-Thread 标准版中,PIN设备设备提供了一套设备管理接口来访问 GPIO,...通过这样的方式,学习完 RT-THREAD Nano 在转移到 RT-THREAD 标准版的学习,更加简单方便。
领取专属 10元无门槛券
手把手带您无忧上云