RT-Thread学习与能力认证考试
机器灵魂注入师
一名在不断精进的嵌入式软件开发工程师,很庆幸能从事自己喜欢的工作。
愿你要永远抱有一颗好奇之心。
愿你出走半生,归来仍是少年。
展开
-
RT-Thread内核学习(认真系列) -- (1)线程
目录一、概述二、线程的组成2.1、线程代码(入口函数)2.2、线程控制块2.3、线程栈三、线程相关的API3.1、线程的创建3.2、状态的切换四、注意事项与补充4.1、动态创建与静态创建的优缺点比较?4.2、系统滴答时钟频率的选取4.3、线程栈大小分配的小策略4.4、线程栈的数据具体是如何保存的?一、概述线程是RT-Thread的核...原创 2019-03-29 22:00:43 · 710 阅读 · 0 评论 -
RT-Thread ----- TCP/IP 学习
一、TCP/IP入门视频1、快速学习TCP/IP原创 2019-04-24 23:46:31 · 1459 阅读 · 0 评论 -
RT-Thread内核移植关键代码解析(2) ---- 实现线程栈初始化
一、代码实现的解释rt-thread线程栈的初始化代码如下,其中注释已经给出了一些说明。rt_uint8_t *rt_hw_stack_init(void *tentry, //线程入口函数 void *parameter, //线程入口参数 ...原创 2019-04-25 16:23:28 · 1367 阅读 · 2 评论 -
rt-thread 实现内核 ---- 各个文件作用记录
1、startup_ARMCM3.s汇编编写的启动文件,由ARM统一提供。2、system_ARMCM3.c是 C 语言编写的跟时钟相关的文件。3、rtdef.h#define rt_inline static __inline内联标识符定义,详细说明:http://www.cnblogs.com/tyroneren/p/6264520.html。#defi...原创 2019-05-14 10:39:09 · 495 阅读 · 0 评论 -
RT-Thread ---- 传感器驱动开发
一、参考资料官方文档参考:1、传感器驱动框架介绍。2、传感器驱动开发指南。二、开发原创 2019-05-14 21:54:52 · 1590 阅读 · 0 评论 -
数据结构 ---- 串(字符串)
串有三种实现方法1、定长顺序存储缺点:由于长度固定,在插入和拼接的时候容易出现超出部分截断的情况。2、堆分配存储表示3、串的链式存储...原创 2019-05-07 18:35:11 · 263 阅读 · 0 评论 -
RT-thread 的Kconfig简单语法
目录一、Kconfig的作用二、元素解释2.1、menu && endmenu2.2、config2.3、comment2.4、if && endif2.5、遇到再说,待续。。。。。一、Kconfig的作用Kconfig 对内核和组件的功能进行配置,对组件进行自由裁剪。二、元素解释2.1、menu ...原创 2019-05-25 16:40:05 · 3029 阅读 · 0 评论 -
rt-thread 构建工程的链接脚本文件解读
一、链接脚本的作用二、不同开发环境的脚本2.1、MDK脚本文件格式如下图:文件内的内容,需要修改如下:原创 2019-05-25 16:53:15 · 1688 阅读 · 0 评论 -
rt-thread 构建工程的构建脚本文件解读
一、文件的作用SConscript脚本决定 MDK/IAR 工程的生成以及编译过程中要添加的文件。二、解读文件原创 2019-05-25 17:32:52 · 348 阅读 · 0 评论 -
rt-thread 构建工程的构建脚本文件解读
一、概述SConscript脚本决定 MDK/IAR 工程的生成以及编译过程中要添加文件。二、文件解读import osimport rtconfigfrom building import *Import('SDK_LIB')cwd = GetCurrentDir() #获取当前文件路径# add general driverssr...原创 2019-05-26 23:35:59 · 1082 阅读 · 0 评论 -
RT-Thread的一些重要概念
1、静态对象和动态对象RT-Thread 内核采用面向对象的设计思想进行设计,系统级的基础设施都是一种内核对象,例如线程,信号量,互斥量,定时器等。内核对象分为两类:静态内核对象和动态内核对象,静态内核对象通常放在RW 段和 ZI 段中,在系统启动后在程序中初始化;动态内核对象则是从内存堆中(RAM中除RW 段和 ZI 段剩下的内存)创建的,而后手工做初始化。2、RT_ALIGN_SIZE...原创 2019-05-18 17:17:30 · 919 阅读 · 0 评论 -
RT-Thread 能力认证习题总结 ---- 第四周
第四周:小车要求:了解传感器驱动开发,作业1:组装好小车。已经提供了代码,通过移植代码,并完成 hc_sr04.c 文件中的3个填空,将小车跑起来。效果是能实现避障功能。作业2:总结实现HC-SR04驱动,都有什么步骤。作业3(选做):有ENC28J60或ESP8266或RW007模块的,可以尝试将小车传感器数据发送到onenet云平台。【注:没有小车的,可以使用其他传感器,按照文档中心...原创 2019-06-01 15:12:02 · 769 阅读 · 0 评论 -
RT-thread 传感器驱动开发 ---- 以超声波模块HC-SR04为例
一、前期准备超声波模块HC-SR04介绍:https://blog.csdn.net/super828/article/details/84112824。传感器驱动开发指南:https://www.rt-thread.org/document/site/development-guide/sensor/sensor_driver_development/#。传感器驱动框架介绍:http...原创 2019-05-30 00:10:24 · 2846 阅读 · 2 评论 -
RT-Thread的STM32系列外设驱动添加 ---- 以PWM外设为例
一、准备官方教程:STM32系列外设驱动添加指南.md。PWM驱动官方文档:RT-Thread设备和驱动 之 PWM设备。本博客基于的BSP为stm32f103-dofly-lyc8,可到官网下载,BSP制作教程:RT-Thread ---- STM32系列BSP的制作教程总结。二、个人总结1、按照教程步骤,按PWM设备驱动的需求更改。2、STMCubeMx配置如下:...原创 2019-04-20 09:50:43 · 3253 阅读 · 0 评论 -
RT-Thread 文件系统的命令
1、echo用于字符串的输出详细解释:https://www.cnblogs.com/Spiro-K/p/6360489.html2、ls展现当前目录详解:https://www.runoob.com/linux/linux-comm-ls.html3、cat查看文本内容详解:https://www.runoob.com/linux/linux-comm-cat.htm...原创 2019-05-03 23:53:26 · 2006 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) -- GPIO驱动架构
原创 2019-03-29 22:48:57 · 791 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) -- (3)线程间同步
一、概述二、信号量信号量是一种轻型的用于解决线程间同步问题的内核对象,线程可以获取或释放它,从而达到同步或互斥的目的。信号量工作示意图如下图所示,每个信号量对象都有一个信号量值和一个线程等待队列,信号量的值对应了信号量对象的实例数目、资源数目,假如信号量值为 5,则表示共有 5 个信号量实例(资源)可以被使用,当信号量实例数目为零时,再申请该信号量的线程就会被挂起在该信号量的等待...原创 2019-03-30 08:40:58 · 507 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) ---- (6)中断管理
一、介绍当 CPU 正在处理内部数据时,外界发生了紧急情况,要求 CPU暂停当前的工作转去处理这个 异步事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的系统称为 中断系统,申请 CPU 中断的请求源称为 中断源。中断是一种异常,异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性地瘫痪。所以正...原创 2019-03-30 13:00:37 · 412 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) ---- (4)线程间通信
一、概述二、邮箱RT-Thread 操作系统的邮箱用于线程间通信,特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳固定的 4 字节内容(针对 32 位处理系统,指针的大小即为 4 个字节,所以一封邮件恰好能够容纳一个指针)。典型的邮箱也称作交换消息,如下图所示,线程或中断服务例程把一封 4 字节长度的邮件发送到邮箱中,而一个或多个线程可以从邮箱中接收这些邮件并进行处理。...原创 2019-03-30 14:43:04 · 1525 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) ---- (2)时钟管理
一、概述二、时钟节拍任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事件,如线程的延时、线程的时间片轮转调度以及定时器超时等。时钟节拍是特定的周期性中断,这个中断可以看做是系统心跳,中断之间的时间间隔取决于不同的应用,一般是 1ms–100ms,时钟节拍率越快,系统的额外开销就越大,从系统启动开始计数的时钟节拍数称为系统时间。RT-Thread 中,时...原创 2019-03-31 16:11:14 · 603 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) ---- (5)内存管理
一、概述计算机系统中,变量、中间数据一般存放在 RAM 中,只有在实际使用时才将它们从 RAM 调入到CPU 中进行运算。一些数据需要的内存大小需要在程序运行过程中根据实际情况确定,这就要求系统具有对内存空间进行动态管理的能力,在用户需要一段内存空间时,向系统申请,系统选择一段合适的内存空间分配给用户,用户使用完毕后,再释放回系统,以便系统将该段内存空间回收再利用。RT-Threa...原创 2019-03-31 16:19:34 · 2348 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) -- 动态内存配置详解
更新于2019-03-29一、堆一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。所以在局部变量中尽量不要使用大数组,容易造成栈溢出。 2、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收...原创 2019-03-28 23:20:54 · 4418 阅读 · 1 评论 -
RT-Thread ---- 文件系统的使用及遇到的问题
一、官方资料1、RT-Thread文档之虚拟文件系统:https://www.rt-thread.org/document/site/programming-manual/filesystem/filesystem/2、STM32F429 上应用文件系统:https://www.rt-thread.org/document/site/application-note/components/...原创 2019-04-25 23:50:24 · 1726 阅读 · 0 评论 -
RT-Thread内核移植关键代码解析(3) ---- 实现 rt_hw_context_switch_to()
一、源码rt_hw_context_switch_to()没有来源线程,切换到目标线程,在调度器启动第一个线程的时候被调用。只使用一次。其执行逻辑流程图如下所示:其采用汇编语言来实现,如下所示:;/*; * void rt_hw_context_switch_to(rt_uint32 to);; * r0 --> to; * this fucntion is used...原创 2019-04-26 13:52:53 · 2861 阅读 · 0 评论 -
RT-Thread 能力认证习题总结 ---- 第二周
作业1:若现在控制台对应的是UART1,如何在UART2上实现控制台功能,请描述?作业2:提供代码- PIN设备:如果开发板上有 user key,请使用按键PIN中断控制led的亮灭。- 其他设备:根据开发板的情况,做相关实验。SPI/I2C/UART/…作业3:在自己的开发板上使用spi flash 虚拟文件系统FatFS,能使用文件系统的各个命令,提供截图。作业4:使用文件系统,将...原创 2019-04-26 23:15:57 · 1514 阅读 · 0 评论 -
RT-Thread ---- 控制台功能的实现
一、准备1.1 、 安装putty终端,将其配置为使用com串口,配置方法:https://blog.csdn.net/Galdys/article/details/23922531。二、实现2.1、rt_kprintf()函数的实现其实现的源码如下:/** * This function will print a formatted string on system ...原创 2019-04-27 08:58:01 · 3502 阅读 · 0 评论 -
RT-Thread 能力认证习题总结 ---- 第一周
RT-Thread 能力认证习题总结 第一周1、基于自己的开发板,做一个能在自己开发板上跑起来的BSP参考教程:STM32系列BSP官方制作教程制作好的工程如下:2、作业1:根据已经做好的BSP,添加一个PWM外设,参考STM32 系列外设驱动添加指南,并可以使用该PWM外设驱动LED,产生亮灭渐变的效果。参考教程:个人博客教程具体驱动LED代码:#define LED_PIN...原创 2019-04-23 19:59:39 · 1794 阅读 · 0 评论 -
RT-Thread ---- STM32系列BSP的制作教程总结
一、概念BSP是板级支持包(Board Support Package)的意思,概念详见BSP百科。二、参考资料1、官方版本文字制作教程:RT-Thread的STM32 BSP制作教程文字版本。2、官方版本:RT-Thread的STM32BSP制作教程视频版三、如何实现3.1、获取RT-Thread最新源码1、找到RT-Thread源码github地址:http...原创 2019-04-18 22:56:45 · 6054 阅读 · 5 评论 -
W25qxxx 实现文件系统 ---- 基于RT-thread嵌入式操作系统
一、资料准备二、简单实现步骤2.1、裸机实现通过spi协议读写w25qxxx模块该步骤是底层基础,了解spi协议和实现使用spi协议对模块进行读取。参考原子的《STM32F4开发指南-库函数版本_V1.1》的第三十章。 链接:STM32F4开发指南-库函数版本_V1.1 提取码:9od82.2、SFUD (Serial Flash Universal Driver)...原创 2019-06-17 21:45:55 · 1476 阅读 · 0 评论