rt-thread-160

问题描述:联网设备显示有一个rtthread 大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,今天让我们一起来看看吧!

rt-thread支持的cpu列表

rt-thread-160的相关图片

你好,一、RT-Thread的定义。

RT-Thread,全称是 Real Time-Thread, 是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2),包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈、图形用户界面等。

相较于Linux,RT-Thread 具有体积小,成本低,功耗低、启动快速的优势。除此以外,实时性高、占用资源小等特点,使得它也非常适用于各种资源受限(如成本、功耗限制等)的场合。

在物联网设备的应用中,RT-Thread 能使用在线软件包管理工具,配合系统配置工具,实现直观、快速的模块化裁剪、无缝导入丰富的软件功能包,以及类似 Android 的图形界面和触摸滑动、智能语音交互等复杂功能。

RT-Thread 系统完全开源,可以免费在商业产品中使用,并且不需要公开私有代码。

二、RT-Thread的架构

相对于一些传统的RTOS 如 FreeRTOS、uC/OS 等,RT-Thread 架构上最大的区别在于:它是一个物联网操作系统(IoT OS)。

即RT-Thread 除了包含一个实时内核外,还包括如文件系统、图形库等较为完整的中间件组件,是具备低功耗、安全、通信协议支持和云端连接能力的软件平台,如下图所示:

在这里插入图片描述

具体包括以下部分:

内核层:

① RT-Thread 内核:系统核心部分,包括了内核系统中对象的实现,例如多线程及其调度、消息队列、内存管理等;

② libcpu/BSP(芯片移植相关文件 / 板级支持包):与硬件密切相关,由外设驱动和 CPU 移植构成;

组件与服务层:

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

RT-Thread 软件包:

运行于 RT-Thread 物联网操作系统平台上,面向不同应用领域的通用软件组件,由描述信息、源代码或库文件组成。开发者可依据自身需求,选择、组合不同软件包,打造自己想要的系统。

目前支持的软件包有且不仅有:

① 物联网相关:Paho MQTT、WebClient、mongoose、WebTerminal 等;

② 脚本语言相关:JerryScript、MicroPython ;

③ 多媒体相关:Openmv、mupdf;

④ 系统相关:RTGUI、Persimmon UI、lwext4、partition、SQLite 等。

三、RT-Thread的开发工具。

Env 是 RT-Thread 的开发辅助工具,提供编译构建环境、图形化系统配置、软件包管理等功能。主要特性如下:

使用 scons 作为构建工具(根据一定的规则或指令,将源代码编译成可执行的二进制程序),提供编译环境,生成工程;

内置简单易用的配置剪裁工具——menuconfig,可对内核、组件和软件包进行自由裁剪,以搭积木的方式构建系统;

借助由 Kconfig 语法 编写的Kconfig 文件,生成系统配置文件 rtconfig.h。rtconfig.h 文件,负责在执行 menuconfig 命令时,指导生成 RT-Thread 系统的配置、剪裁界面;

提供多种软件包,可在线下载,各包耦合关联少,具有良好的可维护性。

RT-Thread RTOS的RT-Thread 开发者自述的相关图片

RT-Thread RTOS的RT-Thread 开发者自述

rt-thread 支持的Cpu列表:

支持所有内核的浮点和定点;

支持ISO 26262 ASIL-D;

支持TriCore系列MCAL驱动,包括CAN、CANFD、LIN、SPI、Watchdog等;

支持多核特性的RT-Thread版本,同时延续RT-Thread易用的API;

支持GNU GCC工具链(及HighTec集成开发环境),TASKING工具链(及ADS集成开发环境)。

RT Thread与uCOS区别的相关图片

RT Thread与uCOS区别

1、诞生

一切东西还得从头谈起。RT-Thread RTOS,Kernel部分完成于2006年上半年,其IPC部分甚至是年中时才具备相应的雏形。最开始时是因为要为朋友做一个小型的手持设备,而我本人起初又是另一国内老牌RTOS:DOOLOO RTOS开发人员,但这个团队在2005年底已经解散。但朋友的系统要上,用ucos吗,一不熟悉,二看不上。答应朋友的事,总得有解决方法吧,即使是原来的DOOLOO RTOS,因为其仿VxWorks结构,导致它的核心太大,包括太多不必要的东西(一套完整的libc库),这些方案都否决了。怎么办?当时朋友那边也不算太急,先自己写一套内核吧。这个就是源头!(后来虽然朋友的项目夭折了,但这套OS则保留下来了,并开源了,万幸)当然RT-Thread和原来的DOOLOO RTOS差别还是很大的。DOOLOO RTOS是一种类VxWorks风格的,而RT-Thread则是一种类NucluesPlus风格的,小型、实时、可剪裁。这三个方面RT-Thread可以骄傲的说做得比DOOLOO RTOS都要好很多,小型:RT-Thread核心能够小到4K ROM,1K RAM;实时:线程调度核心是完全bitmap方式,计算时间是完全固定的;可剪裁性,配置文件rtconfig.h包含多种选项,对Kernel细节进行精细调整,对各种组件(文件系统,使用EFSL、ELM FatFs;网络协议栈,finsh shell)进行可选配置。2、艰难的发展期在第一个公开板发布后(0.1),RT-Thread意识到了一个问题,光有核心不行。别人如何使用:虽然采用了doxygen风格的注释,并自动产生相应的API文档,但能够使用的人寥寥,有这个功底的人不见得认可你的系统,没相应功底的人也玩不转你的系统。所以下一个系列,考虑如何让系统能够支持更多的平台。首选ARM,为什么?应为ARM正处于发展的前期,使用的人也广泛,而RT-Thread第一个支持的平台就是s3c4510,这个是lumit开源项目赠送的平台。在其后,支持了包括s3c44b0,AT91SAM7S64,AT91SAM7X256,s3c2410,AT91SAM9200,coldfire,x86等一系列平台,编译器统一使用GCC,这个时期无疑是最艰难的时期(真的艰难吗?呵呵,但肯定是迷茫的),这个就是0.2.0、0.2.1、0.2.3、0.2.4版本等,不同的版本支持不同的平台。猜猜我这段时间是干什么工作的?不知道大家对这个领域是否熟悉,手机2G,3G协议栈开发。每天都和协议栈打交道,而且最痛苦的是上千页的25.331 RRC协议,都是英文的,所以RT-Thread算做是工作之外的苦中作乐吧。而也正是这个时候,shaolin同学出现了,帮助完成了RT-Thread/x86的移植,他当时还是学生。这其中还有一件郁闷的事,当时RT-Thread团队还有几个人,只不过主要是shaolin和我。当0.2.3发布时,我建议开始微内核的道路,嗯,可能很多人还比较困惑,RT-Thread后面跟着的为什么是“启动下一代RTOS演化”,当时就是因它而感慨:把微内核引入进来,把内核态和用户态分开来,并且建立一个类似于L4的微内核。当然最重要的是,其中有一个强实时核心。而且L4实际上是把页表操作放到内核之外的,如果内核是一个强实时内核将对整个系统的实时性提升很大,而因为微内核的缘故,也能够运行linux的应用程序,并且当时RT-Thread也提出了一种,线程即IPC的概念。。。只是,最后的提案被大家否决了。团队开始有数人,只是能够坚持的没几个。3、一年增加0.0.1本人很早就接触了Linux,算是国内资深的Linux接触者(早期也算一个Linux开发人员吧),KDE 1.0几乎是看着发展起来的(大家有谁用过RedHat 5.1?)。个人算是很多方面有一些自由软件的习惯:软件的版本号是非常重要的一个标志,宁愿增加一个细微的版本号也不轻易的增加一个大的版本号,因为大的版本号是需要对用户负责的。1.0版本更代表了系统的稳定性,健全性。例如mplayer到1.0版本就经历众多小版本,0.99的beta版本亦无数。RT-Thread也把这点体现得淋漓尽致,0.2.2到0.2.3一个版本的增加,整整花了一年多的时间。但这个小版本号的增加,却带来了开源社区嵌入式环境中最完善的TCP/IP协议栈:LwIP。当然,开始时并不算稳定。在这几个版本中,RT-Thread也终于从迷茫中走出来,RT-Thread需要自己的特色,一个单独的RTOS Kernel没太大的用处,因为你并没有上层应用代码的积累,并且一些基础组件也非常重要,有这些基础组件基本上意味着,在这个平台上写代码,这些代码就是你的,甚至是你哪天也可以把它放到另外一个硬件平台上运行。同样,0.2到0.3版本号的变更,花费的时间会更长^-^ 版本号的长短,是和计划的feature实现是密切相关的,没到设定的目标如何可能进行发布呢?4、Cortex-M3的变革RT-Thread的变革因为Cortex-M3而来,因为ST的STM32使用的人太广了,当然还有非常重要的一点。RT-Thread已经开始支持Keil MDK,armcc了。GNU GCC确实好,并且也由衷的推崇它,使用它,只是调试确实麻烦,阻碍了更多人使用它(ARM平台上)。当RT-Thread + Cortex-M3 + Keil MDK碰撞在一起的时候,火花因它而生,越来越多人使用RT-Thread了,当然这和RT-Thread厚积薄发是离不开的,因为这个时候,RT-Thread已经有一个稳定的内核,shell方式的调试利器finsh,DFS虚拟设备文件系统,以及LwIP协议栈。而RT-Thread/GUI则在密集的移植到CM3上,RT-Thread/GUI成型于2008年底,但为了Cortex-M3分支,这个组件停下来很多,但这种停留是值得的。另外就是特别感谢UET赠送的STM32开发板了,RT-Thread/STM32的分支都是在UET赠送的STM32开发板上验证的。5、RT-Thread为什么是对象化的设计方法可能这个话题太偏技术化了,说说其他,呵呵。面向对象编程有它的好处,例如继承。可以让具备相同父类的子类共享使用父类的方法,基本可以说是不用写代码就凭空多出了很多函数,何乐而不为呢。另外,对象的好处在于封装。当一个对象封装好了以后,并测试完成后,基本上就代表这个类是健全的,从这个类派生的子类不需要过多考虑父类的不稳定性。这里着重提提另外一个人,我工作后的第三年,曾向当时的同事也是好友,L.Huray学习面向对象的实时设计方法:Octpus II。深刻体会到了面向对象设计的好处(需求分析,体系结构设计,子系统分析,子系统设计,测试,实时性分析),但鉴于嵌入式系统中C++的不确定性,所以个人更偏向于使用C来实现。所以,L.Huray算是我的老师了,一直希望能够有时间把他老人家的思想更进一步的发扬光大,希望以后有这个机会。(Octpus I最初起源于Nokia,然后由M.Award, L.Huray发展成Octpus II,现在几乎见不到踪影了,唉)。

(作者原文:实时线程操作系统(RT-Thread)4年开发历程 乐与苦)

RT-THread如何定义缓冲区额外线程变量?的相关图片

RT-THread如何定义缓冲区额外线程变量?

1 、任务管理及调度:

RT-Thread - 32/256可选优先级抢占式调度,线程数不限,相同优先级线程时间片轮转调度;支持动态创建/销毁线程。

uCOS - 256优先级抢占式调度,不允许相同优先级任务存在。

2、 同步/通信机制:

RT-Thread - 支持semaphore, mutex, mailbox, message queue, event。mailbox可存储多条消息,任务等待可按优先级进行排队。

uCOS -semaphore,mutex, mailbox, message queue, event。mailbox只能存放1条消息。

3、内存管理:

RT-Thread -固定分区内存管理,小内存系统动态内存管理,大内存系统SLAB内存管理。

uCOS - 固定大小内存块管理。

4、定时器:

RT-Thread - 挂接到系统OS定时器的硬定时器。

uCOS - 只能使用OSTimeDly进行时间间隔处理。

5、中断嵌套:

RT-Thread - 允许

uCOS - 允许

6、源码许可证:

RT-Thread - 遵循GPLv2+许可证。可用于商业产品(只需要注明使用了RT-Thread)

uCOS - 商业收费

建立或调入工作文件以后,可以输入和编辑数据。 输入数据有两种基本方法:data命令方式和鼠标图形界面方式。(1) data命令方式。命令格式为:data <序列名1> <序列名2>......<序列名n>,序列名之间用空格隔开,输入全部序列后回车就进入数据编辑窗口。本例中输入data x y。确认之后自动弹出Group窗口,两个序列名称为X和Y,当前取值均为NA(空值),如图1.6。 图1.6我们可以按照Excel的输入习惯输入数据,也可以直接从电子文档中将数据拷贝过来。数据输入完毕,可以点击Name命令,自动弹出Object Name提示(如图1.7),在相应的空格中命名序列组文件名称,或者默认为自动生成的名称group01,关闭数据输入窗口即可,或者直接关闭数据输入窗口,也会弹出提示命名序列组文件的对话框,进行相关操作即可关闭。此时在工作文件窗口会自动多处3个对象,分别为序列组group01,序列x和序列y,如图1.8所示。图1.7图1.8(2) 鼠标图形界面方式。采用鼠标进行选单式操作也可两种方法输入数据:一种为数组方式,一种为序列方式。图1.9图1.10数组文件方式:点击Quick \ Empty Group (Edit Series), 进入数据窗口编辑窗口,EViews5.0之前的版本电子表格输入区第一行为空白的obs行,可以直接输入序列名,然后在下面相应的表格输入数据,并可以如此输入多个序列。而EViews5.0版隐藏了空白的obs行,需要用鼠标点击第一个行第一列obs下面的第一个观测列名称(如图1.9中的1990),然后拖动鼠标向上移动到obs的位置,此时隐藏的obs对应的空白行及观测列序号就会自动显示出来(如图所示),点击空白区域首行首列(如图1.10中选中的空格),输入序列名,然后可以输入数据,采用同样方式可以输入多个序列,而obs相应行便会显示各序列的名称。序列方式:点击Objects \ New object \ 选Series \ 输入序列名称\Ok,进入数据编辑窗口,点击Edit+/-打开数据编辑状态,(用户可以根据习惯点击Smpl+/-改变数据按行或列的显示形式,)然后输入数据,方式同上。1.3.2.3 生成序列 利用数学公式生成新序列,也就是利用普通的数学符号对已有序列进行变换。如生成log(Y)、D(Y)、X^2、1/X、时间变量T 等序列,在命令窗口中依次键入以下命令即可:GENR LNY=LOG(Y)GENR DY=D(Y)GENR X1=X^2GENR X2=1/XGENR T=@TREND(1989)图1.11如图1.11所示,在命令窗口输入GENR LNY=LOG(Y),回车后,便会在工作文件中自动生成新的序列lny。同样,除了采用命令方式外,也可以采用选单式操作。从工作文件窗口点击Quick/Generate Series,然后在弹出的窗口空白区输入公式即可,如图1.12所示。图1.12其他的函数命令可参阅《EViews使用指南与案例》等书籍。图1.131.3.2.4 编辑数组及序列在工作文件窗口中单击所要选择的变量,按住Ctrl 键不放,继续用鼠标选择要展示的变量,选择完以后,单击鼠标右键,在弹出的快捷菜单中点击Open/as Group(如图1.13),则会弹出如图1.14 所示的数组窗口,其中变量从左至右按在工作文件窗口中选择变量的顺序来排列。图1.14图1.15在数组窗口点击Edit+/-,进入全屏幕编辑状态,选择一个空列,既可以输入数据或者从其他文件拷贝列数据进来,增加一个新变量。如果想删除或更名序列,在工作文件窗口中选取该变量并单击鼠标右键,在弹出的快捷菜单中选择Delete(删除)或Rename(更名)即可,如图1.15所示。 “图片不好弄,就省啦,不过不看图相信你也能明白的”

原文地址:http://www.qianchusai.com/rt-thread-160.html

login.salesforce-70

login.salesforce-70

4000独显笔记本,4000元独显笔记本推荐

4000独显笔记本,4000元独显笔记本推荐

cavalli-90

cavalli-90

越大智跑-40,智跑越野性能怎么样

越大智跑-40,智跑越野性能怎么样

石一瑛,石一瑛个人资料

石一瑛,石一瑛个人资料

padavan双清,苹果ipad怎么双清

padavan双清,苹果ipad怎么双清

evictions-40

evictions-40

好句摘抄200字左右高中,好段摘抄大全200字左右高中生

好句摘抄200字左右高中,好段摘抄大全200字左右高中生

交换机tag与untag,交换机tagged和untagged的区别

交换机tag与untag,交换机tagged和untagged的区别

sits

sits