rtthread_rtthread实例 - CSDN
精华内容
参与话题
  • 1.RT-thread 项目实战 -- 引入

    千次阅读 2020-01-08 10:44:07
    其实接触RT-thread 有很长一段时间了,但是为什么到现在才打算深入的研究一下这个系统? 最开始接触RT-thread的时候是在一个项目中,那个时候才知道原来国产也有实时系统,但是由于ucos 和FreeRtos的原因,所以应用...

    其实接触RT-thread 有很长一段时间了,但是为什么到现在才打算深入的研究一下这个系统?

    最开始接触RT-thread的时候是在一个项目中,那个时候才知道原来国产也有实时系统,但是由于ucos 和FreeRtos的原因,所以应用RT-thread的时间并不是很长。

    得益于近几年物联网的普及,这款国产实时系统的存在感越来越强,丰富的中间层组件,千万级设备的稳定性考验,外加丰富的中文资料,真心的觉得它的发展会越来越好。这些都不是最主要的,他的类Linux/Unix的代码风格,真的有耳目一新的感觉。在学习liunx的时候很多没理解的概念,从RT-thread上竟然理解了。

    真的是很多单片机想转linux方向进阶的垫脚石。

    不得不强调的是,他的一些中间层组件真的能在项目的开发和调试中节省很多的工作量。

    说了它的这么多好处,那么我们就该坚定的把他学习好了。

     

     

     

    我们主要从应用的角度来快速的学习,毕竟官方资料很多了,而且是中文,我们按教程说一遍也没啥意思。

    我们最开始的时候要知道他源码怎么获取,怎么裁剪,先将内核先跑一遍,然后再去研究什么内存管理,线程创建什么的。

     

    打开官网,我们就看到,RT-thread 有两种类型的版本一个完整版,一个Nano,选哪个??

    完整版就是包含很多组件,Nano就是裁剪的只剩内核了。我的话就选完整版,正好学习一下它是怎么裁剪的。

     

    那么我们从哪获取RT-thread源码,git直接获取也行,STM32的cubMX也能获取到,但是我们选择官方提供的Env工具,当你看到这个软件的时候你就有种错觉,我这是在配置linux的内核吧,通过menuconfig的界面来配置工程,裁剪内核,中间件,是很方便的,官方这么费劲给你做出来,你不用合适吗??

    不过这个工具只能生成IAR和keil工程,我比较习惯用keil,虽然他编译很慢。

     

    那么这时的我们目标就明确了,下载安装Env工具,生成stm32F429的keil工程。

    不过在生成之前我们可以先下载一下它的一个测试历程(keil模拟器STM32F103上手指南),来提前体验一下它的内核,通过shell指令来控制程序,这里叫FinSH控制台,真的是在使用这个系统的时候,无时无刻都能看到linux的影子。

     

    历程在官网很容易找到,获取很容易,keil打开编译没有任何问题。

    可以看到文件夹结构比较清晰,HAL库,RTT内核文件,主函数,但是当我详细看的时候,发现main.c什么鬼,啥都没有就一个返回值,实例编写格式和之前使用的FreeRtos完全不一样,一脸懵逼,反正不管了,先运行看结果,然后再分析。

    debug之后原来发现并不是从刚才的main.c开始执行的,是从comonents.c开始的,按照说明debug,然后打开串口,模拟效果还真不错

    真真它X的爽。help了一下,这操作这打印。。。。。

    这不就是个小型u-boot吗?这以后写个例子调试个板卡,那就真的方便了,联调更舒心。

    查看个内存占用,是不是爱上这个。

    但是我们开头有个疑问,执行的时候并不是进入main.c的main而是进入了components.c的int $Sub$$main(void),然后在这个里面进行了启动内核的操作。

     

    原来它在 __CC_ARM 编译器环境下,使用了$Sub$$ 与 $Super$ $ 的“补丁”功能

    这是一种特使模式:用于有一个已经存在且不能被改变的函数的情况,使用这个模式帮源函数打补丁。真的是佩服,这个也能打补丁。

    int $Sub$$main(void) --》 rtthread_startup();--》 rt_application_init();

    --》result = rt_thread_init(tid, "main", main_thread_entry, RT_NULL,

                              main_stack,sizeof(main_stack), RT_MAIN_THREAD_PRIORITY,20);

    --》 $Super$$main(); 调用到main.c的main。

    当然也可以如下图,直接调到main,然后再进行操作,整个过程就是标准的RT-thread,初始化,任务创建的过程,之后我们在详细看这部分,目前只知道打印是怎么来的。

     

     

    也体验过了,那么我们就该自己安装Env工具,配置一个自己的工程。

    因为一些事情耽误了了学习进度,还没有安装Env工具,但是恰巧2020年1月1日,官方更新了新的配置工具RT-thread studio,虽然Env已经够好用了,但是有了这个神器开发是真的爽,那么我们就直接下载这个软件就可以了

    软件在手,天下我有,不用keil,也不用Env,直接全部在这一个软件内搞定。

     

    最近一直在网上搜索RT-thread 的内容,但是发现网上相关的开源项目特别少,并且涉及的知识不是很多,教程也是很少,最全面的内容就是RT-thread 官方的网站和正点原子的一些教程,但是不足的是都是些讲原理,和一些基础的知识,作为初学者觉得学了半天理解了吗??好像理解了,但是还是不知道该怎么做项目?也体会不到Rt-thread 的强大,如此强悍的国产实时系统应该让更多的人用起来

    考虑许多天,决定基于rt-thread做一个开源项目,从硬件,软件的M3的代码到平台端的交互和大家一些开始逐步的学习。

    今天先写到这里,想一块学习Rt-thread的可以持续关注一下。

    明天开始说一下整个项目的软硬件框架,及涉及的内容。

     

     

     

     

     

    展开全文
  • 下面记录了RT-Thread的学习过程,不妥之处请于指正。 RT-Thread开发环境配置 一个偶然机会接触到了一个陌生的名字---RT-Tread,想一探究竟,从它的手册中发现这个陌生的嵌入式操作系统有着许多优秀的

    前言

    一个偶然机会接触到了一个陌生的名字---RT-Tread,想一探究竟,从它的手册中发现这个陌生的嵌入式操作系统有着许多优秀的表现,于是下决心学习研究下。下面记录了RT-Thread的学习过程,不妥之处请予指正。

    软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2

    硬件环境:Armfly STM32F103ZE-EK REV 3.0开发板

    参考文章:

    【1】R​T​-​T​h​r​e​a​d​配​置​开​发​环​境​手​册

    【2】RT-Thread 教程连载点击打开链接

    【3】STM32 + RT Thread OS 学习笔记


    1,RT-Thread开发环境配置

    1.1 安装python 以及SCons构建工具

    RT-Thread使用SCons作为默认的构建工具。SCons基于Python开发,因此我们需要先安装python,再安装SCons。

    (1),安装python,其版本号为2.7点击打开链接,下载完毕后安装,如下图。但这不是必需的,您完全可以使用2.6或其他版本。python3.2版本不能运行scons


    一路点击下一步(next)即可。默认情况下,这个程序会被安装到 C:\Python27 目录下,我们要将这个目录加入到系统
    PATH变量中。方法如下:

    在计算机(windows 7)上右击,选择【属性】,然后在弹出对话框中点击【高级系统设置】,弹出系统属性对话框->高级->环境变量,如下图。注意第五步是“; C:\Python27 ”,其中的分号是英文输入状态下的符号。


    然后,点击确定关闭对话框。


    (2),安装SCons

    Scons下载地址: http://sourceforge.net/projects/scons/files/scons/2.3.2/,软件版本是2.3.2这里选择微软window版本,下载完毕后点击安装,SCons 会被自动安装到python 安装目录中即C:\Python27\Scripts目录,如下图。



    参考上一节,将上述路径同样添加到系统PATH 变量中。用echo %path%命令可以看到系统变量添加的结果,如下图。

    1.2,安装编译工具链

    RT-Thread可以支持GCC,Keil MDK 或者 IAR的EWARM 编译工具的一种或全部。

    (1),关于GCC,推荐一篇文章sourcery g++ lite建立交叉编译环 ,里面相关GCC的介绍,下载地址是 codesourcery,需要注册,这里安装的版本arm-2012.09-63-arm-none-eabi.exe,如下图,可以更改安装位置。

    按照默认安装,结束后,gcc 的安装路径就会被自动加入到系统环境变量中去。

    (2),KeilMDK 和 IAR EWARM安装,因为其为商业软件,这里不做介绍。


    2,编译测试

    2.1,源码目录结构

    通过SVN下载到本地的SVN目录的源码结构如下图。

    2.2,配置SCons脚本

    进入到RT-Thread的板级工程目录bsp下面,可以看到很多开发板工程目录,这里现有的开发板是armlay(安富莱)的STM32F103ZE-EK REV3.0,因此只需将stm32f10x目录连同文件复制一份并重命名为stm32f103ze-ek(armfly),如左下图。然后进入该目录找到readme.txt和rtconfig.py,如右下图。

    上面文件中:

    rtconfig.py 此文件必须修改。

    rtconfig.h 此文件用于裁剪rt-thread(根据您的需要修改)

    打开readme.txt,可以看到如下内容:

    -- cn --
    按需要生成工程文件:
    1. 修改 rtconfig.py :
    CROSS_TOOL='keil'           #使用的工具链
    STM32_TYPE = 'STM32F10X_HD' #STM32对应的型号.
    2. 修改 rtconfig.h 配置需要的功能.
    2. 执行 scons --target=mdk  生成MDK工程文件.

    note: 需要安装 python,scons.

    -- en --

    上面内容告诉我们需要指定的编译器和开发板上芯片类型。

    RT-Thread 的通过SCons 支持三种编译器,编译器的选择在rtconfig.py 中指定,如果您按照上面的步骤安装了python和SCons,那么可以在 rtconfig.py 上右键点击Edit with IDLE 编辑器打开, 部分内容如下(红色粗体字部分是根据自己的实际环境和需求修改的结果):


    
    

    说明:上面编译工具默认是IAR编译器链接,以windows平台为例,因此,路径都是windows路径风格,对于linux,只要修改路径为linux风格即可。 在路径的前面加上了小r,表示后面的内容不需要转义,因为windows路径风格是使用'\'作为分隔符,与转义字符冲突。


    SCons命令的常用选项:

    scons -c

    这个命令会清除编译出来的文件

    scons -j4

    表示并行4个任务同时运行,适用于多核多线程。

    scons --target=mdk4 -s

    生成project.uvproj,不过您需要查看一下当前bsp目录下是否提供了template.uvproj文件,因为这个命令依赖template.uvproj或template.uv2。

    scons --target=iar -s

    生成project.ewp和project.eww,不过也同样依赖于当前bsp目录下是否提供了是否提供了template.ewp工程模板。

    保存上面文件,打开cmd命令行窗口,然后先直接输入E:使用cd命令切换到 bsp\stm32f103ze-ek(armfly)目录下,如下图。

    然后输入 scons 后回车,运行结果如下:

    然后将上面rtconfig.py脚本CROSS_TOOLS修改如下:

    CROSS_TOOLS='iar'

    保存后,重新执行scons命令,结果如下:


    然后在上面的变量改回去,如下:

    CROSS_TOOLS='keil'

    修改后保存,重新执行scons命令

    由上面测试已经知道,iar和gcc不会出现这个错误的。但用keil编译结果有一处告警和一处链接错误。

    注意:此时你可能会遇到一个错误,告警提示是链接时未找到ARM 库,link出错。

    通过网上搜索说是scons 构建工程组件不能自动加入,自己没搞明白,只能暂且搁置,有待以后研究。


    到此为止,我们为stm32f103ze-ek开发板构建了一个RT-Thread开发环境。

    

    
    
    
    
    
    展开全文
  • 【操作系统】RT-Thread 入门学习

    千次阅读 2019-12-30 21:36:40
    一、嵌入式操作系统 1.1 软实时与硬实时 硬实时操作系统:严格限定在规定时间内完成任务,否则就会导致灾难性的发生,例如导弹拦截系统、汽车引擎系统等。...主流RTOS主要有:uC/OS、FreeRTOS、RT-Thread...

    一、嵌入式操作系统

    1.1 软实时与硬实时

    • 强实时操作系统:严格限定在规定时间内完成任务,否则就会导致灾难性的发生,例如导弹拦截系统、汽车引擎系统等。
    • 弱实时操作系统:可以允许偶尔出现一定的时间偏差,但是随着时间的偏移,整个系统的正确性会随之下降,例如DVD播放器,允许其偶尔出现画面或声音的延迟。

    1.2 主流嵌入式RTOS

    主流RTOS主要有:uC/OS、FreeRTOS、RT-Thread等

    1.2.1 uC/OS

    • 比较经典的μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性。
    • 其为美国的一款RTOS,发布于1992年。
    • 2001年,北航的邵贝贝教授第一次将有关uC/OS的书籍翻译成中文。
    • 目前uC/OS III为商用版本。
    • uC/OS官网

    1.2.2 FreeRTOS

    • FreeRTOS诞生于2003年,其按照开源、免费的策略发布,可用于任何商业与非商业场合。
    • FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
    • FreeRTOS官网

    1.2.3 RT-Thread

    • RTT为国内的一款嵌入式RTOS,诞生于2006年,其与FreeRTOS类似,以开源、免费的方式进行发布。
    • RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务。
    • RTT自创建之初的定位就不仅是一个RTOS的内核,而是包含网络、文件系统、GUI界面等组件的中间平台。
    • RTT官网

    二、RTT的架构

    • 物联网操作系统是指以操作系统内核(可以是 RTOS、Linux 等)为基础,包括如文件系统、图形库等较为完整的中间件组件,具备低功耗、安全、通信协议支持和云端连接能力的软件平台,RT-Thread 就是一个 IoT OS
    • RT-Thread 与其他很多 RTOS 如 FreeRTOS、uC/OS 的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件
      在这里插入图片描述

    2.1 内核层

    • RT-Thread 内核,是 RT-Thread 的核心部分,包括了内核系统中对象的实现,例如多线程及其调度、信号量、邮箱、消息队列、内存管理、定时器等;libcpu/BSP(芯片移植相关文件 / 板级支持包)与硬件密切相关,由外设驱动和 CPU 移植构成。

    2.2 组件与服务层

    • 组件是基于 RT-Thread 内核之上的上层软件,例如虚拟文件系统、FinSH 命令行界面、网络框架、设备框架等。采用模块化设计,做到组件内部高内聚,组件之间低耦合

    2.3 软件包

    运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。RT-Thread 提供了开放的软件包平台,这里存放了官方提供或开发者提供的软件包,该平台为开发者提供了众多可重用软件包的选择,这也是 RT-Thread 生态的重要组成部分。软件包生态对于一个操作系统的选择至关重要,因为这些软件包具有很强的可重用性,模块化程度很高,极大的方便应用开发者在最短时间内,打造出自己想要的系统。RT-Thread 已经支持的软件包数量已经达到 60+,如下举例:

    • 物联网相关的软件包:Paho MQTT、WebClient、mongoose、WebTerminal 等等。
    • 脚本语言相关的软件包:目前支持 JerryScript、MicroPython。
    • 多媒体相关的软件包:Openmv、mupdf。
    • 工具类软件包:CmBacktrace、EasyFlash、EasyLogger、SystemView。
    • 系统相关的软件包:RTGUI、Persimmon UI、lwext4、partition、SQLite 等等。
    • 外设库与驱动类软件包:RealTek RTL8710BN SDK。
    • 软件包网址
    展开全文
  • RT_Thread 入门详解

    千次阅读 2019-04-17 09:44:28
    1.RT_Thread 简介RT_Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低...

    1. RT_Thread 简介
    RT_Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个IoT OS平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。经过11年的累积发展,RT-Thread已经拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过两千万台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。

    RT-Thread拥有良好的软件生态,支持市面上所有主流的编译工具如GCC、Keil、IAR等,工具链完善、友好,支持各类标准接口,如POSIX、CMSIS、C++应用环境、Javascript执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,几乎支持市场上所有主流的MCU和Wi-Fi芯片。
    2. RT_Thread入门程序

    展开全文
  • RT-Thread学习笔记——移植RT-Thread到STM32

    万次阅读 多人点赞 2019-01-29 17:53:52
    从本文开始,记录自己的RT-Thread学习笔记,基于STM32L475VET6讲解,相关开发板用RTT&正点原子的潘多拉IoT Board开发板。本文先从Nano开始学起,个人觉得对于初学者,还是先学会Nano的移植,把内核部分向学...
  • RT-Thread操作系统

    千次阅读 2018-09-26 20:40:17
    一、RT-Thread与UCOS的简单比较 任务或线程调度 RT-Thread可选优先级抢占式调度,256/32/8个优先级,线程数不限。相同优先级线程时间片轮转调度。支持动态创建/销毁线程。 Ucos优先级抢占式调度。不允许相同优先级...
  • RT-Thread初探

    千次阅读 2018-02-28 11:37:50
    试验平台:正点原子探索者STM32F407开发板一、RT-Thread介绍RT-Thread是由国内开发者主导开发的一款开源嵌入式实时操作系统,它包含:操作系统内核、TCP/IP协议栈、文件系统、libc接口,图形引擎等等。RT-Thread官网...
  • 本文转载至:http://www.rt-thread.org/dynamic/78.html 接触Linux 说起Linux应该从我在校园时期说起。我是在山城——重庆邮电学院念的书,1998年时宿舍伙伴一起凑的钱买的电脑,因为对各种软件感兴趣,所以也...
  • RT-Thread——国产RTOS标杆

    万次阅读 多人点赞 2020-10-11 20:47:11
    大概是2014年9月,接过主管交接的项目,项目以STM32F103ZET6硬件平台,而运行的实时系统(RTOS)正是RT-Thread(RTT)。也是从此时开始接触到RTT,国人自己写的开源系统,从此对其也是“爱不释手”,在往后的工作中...
  • rtthread开发笔记心得

    千次阅读 2019-09-01 18:30:41
    1.1:使用env构建rtthread项目:安装env_released_1.1.1,打开env命令终端可以对rtthread的项目进行配置,在env中使用menuconfig命令进行图形界面的选择配置,menuconfig除了系统自带的根目录,外设的设备添加选项由...
  • rt-thread线程源码分析

    千次阅读 2013-02-20 16:27:54
    rt-thread操作系统是一个多线程的操作系统,线程对于rt-thread来说是一个很重要的概念,因此,必须掌握它。 1 线程控制块的数据结构 /** * Thread structure */ struct rt_thread { /* rt object *///这里就是...
  • 玩转RT-Thread之荔枝派Nano(全志F1C100S)一、新手上路--作者:燕十三(flyingcys) blog:http://blog.csdn.net/flyingcys--荔枝派nano/RTT非官方群:711174828在此感谢RT-Thread官方成员@uestczyh222提供的荔枝派Nano...
  • rt-thread线程调度器源码分析

    千次阅读 2013-02-20 00:25:12
    RT-Thread中提供的线程调度器是基于全抢占式优先级的调度,在系统中除了中断处理函数、调度器上锁部分的代码和禁止中断的代码是不可抢占的之外,系统的其他部分都是可以抢占的,包括线程调度器自身.系统总共支持256...
  • rt_thread启动流程分析 1, main() rt_thread是从main函数开始启动的,在启动之前要先关中断,以便使系统处于可靠的复位状态;...在rtthread_startup()函数中先多个进行初始化,如rt_hw_board_init,rt_system_tick
  • RT-Thread是中国人自己推出的一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,开源os,RT-Thread除了有常规RTOS的功能,还具备一个IoT OS平台所需的所有关键组件,例如G...
  • RT-Thread移植(基于STM32F103ZET6) 因为学习RT-Thread的原因,需要把RT-Thread移植到STMF103ZET6上,在RT-Thread官网下载的原文件中实际上已经STM32F10x的工程了,只需简单的几步就可以完成在STM32F103ZET6上的...
  • RT-Thread Studio使用体验~

    千次阅读 2020-01-03 20:28:11
    RT-Thread Studio简介 最近,RT-Thread Studio是RT-Thread最近发布的一款IDE,现在我们来使用一下。 首先,软件界面配色效果很棒,看起来很舒服。欢迎界面如下: 可以看到欢迎界面包含有很多有用的信息:最新动态、...
  • RT-Thread Env工具的使用方法

    千次阅读 2017-12-27 22:31:58
    RT-Thread Env工具包括配置器和包管理器,用来对内核和组件的功能进行配置,对组件进行自由裁剪,对线上软件包进行管理,使得系统以搭积木的方式进行构建,简单方便。 简单的解释一下,从RT-Thread的软件结构来看,...
  • RT-thread移植(基于STM32F4xx)

    万次阅读 2016-07-26 22:21:51
    1、将下载的rt-thread-2.0.1解压后,得到如下图所示的文件列表。 在bsp目录下可以找到stm32f40x文件夹,这文件夹里面包括了库函数,其他芯片平台的文件夹统统删掉。在libcpu下,只需要将arm文件夹里面的...
  • RT-Thread入门(一) 前言:在使用单片机的时候一直有听说RT-Thread十分强大,这几天稍稍接触了一些,发现确实十分好用,总结一些使用过程中的步骤,希望对大家的开发有些许帮助,因本人能力有限,某些地方可能介绍...
1 2 3 4 5 ... 20
收藏数 33,025
精华内容 13,210
关键字:

rtthread