rt-thread 怎样搭建gui

rt-thread 怎样搭建gui,第1张

RT-Thread/GUI是专为RT-Thread *** 作系统开发的,并在相应的地方采用了RT-Thread特有的功能,它是一款几乎从零代码开始编写的,拥有独立知识产权的图形界面(不包括JPEG、PNG等图形库部分)。在RT-Thread许可证的条款下,能够免费的在商业产品中使用。RT-Thread/GUI的特性包括:

- 多线程图形用户界面;

- 依赖于RT-Thread线程调度器的实时图形用户界面;

- 创新式的在嵌入式系统中引入面板的概念,缩小了多线程,多窗口图形用户界面编程代价:

workbench,对应多线程;

view,对应不同的用户界面视图;

window,对应多窗口;

- C语言方式的全面向对象设计:

对象具备运行时类型信息;

对象自动销毁,使得内存的管理更为轻松;

- 丰富的控件支持:

button,checkbox,radiobox

textbox

progressbar,slider

listview,filelist_view

RT-Thread Smart 定位于成为一个专业的面向实时应用场合的高性能混合微内核 *** 作系统。填补传统 RTOS 和大型 *** 作系统 Linux 之间的空白,在实时性、成本、安全性、启动速度等方面取得最佳的平衡。

  01 RT-Thread Smart和Linux相比:

启动速度最快可在几百毫秒以内

抢占式调度内核,任务响应性能相比 Linux 更加优秀

OS占用内存空间以及Flash空间极小,可最大化节约物料成本;

支持Windows下开发应用程序,开发环境更加友好;

系统和应用分离,方便应用程序和系统单独发布、单独升级;

重大组件和服务运行在用户态, *** 作系统更加轻量、安全;

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 - 商业收费

功能不同。rt-thread和keil是两款不同的软件,其最主要的区别是功能不同。rtthread全称是RealTimeThread,是一个嵌入式实时多线程 *** 作系统,基本属性之一是支持多任务。

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方式,计算时间是完全固定的;可剪裁性,配置文件rtconfigh包含多种选项,对Kernel细节进行精细调整,对各种组件(文件系统,使用EFSL、ELM FatFs;网络协议栈,finsh shell)进行可选配置。2、艰难的发展期在第一个公开板发布后(01),RT-Thread意识到了一个问题,光有核心不行。别人如何使用:虽然采用了doxygen风格的注释,并自动产生相应的API文档,但能够使用的人寥寥,有这个功底的人不见得认可你的系统,没相应功底的人也玩不转你的系统。所以下一个系列,考虑如何让系统能够支持更多的平台。首选ARM,为什么?应为ARM正处于发展的前期,使用的人也广泛,而RT-Thread第一个支持的平台就是s3c4510,这个是lumit开源项目赠送的平台。在其后,支持了包括s3c44b0,AT91SAM7S64,AT91SAM7X256,s3c2410,AT91SAM9200,coldfire,x86等一系列平台,编译器统一使用GCC,这个时期无疑是最艰难的时期(真的艰难吗?呵呵,但肯定是迷茫的),这个就是020、021、023、024版本等,不同的版本支持不同的平台。猜猜我这段时间是干什么工作的?不知道大家对这个领域是否熟悉,手机2G,3G协议栈开发。每天都和协议栈打交道,而且最痛苦的是上千页的25331 RRC协议,都是英文的,所以RT-Thread算做是工作之外的苦中作乐吧。而也正是这个时候,shaolin同学出现了,帮助完成了RT-Thread/x86的移植,他当时还是学生。这其中还有一件郁闷的事,当时RT-Thread团队还有几个人,只不过主要是shaolin和我。当023发布时,我建议开始微内核的道路,嗯,可能很多人还比较困惑,RT-Thread后面跟着的为什么是“启动下一代RTOS演化”,当时就是因它而感慨:把微内核引入进来,把内核态和用户态分开来,并且建立一个类似于L4的微内核。当然最重要的是,其中有一个强实时核心。而且L4实际上是把页表 *** 作放到内核之外的,如果内核是一个强实时内核将对整个系统的实时性提升很大,而因为微内核的缘故,也能够运行linux的应用程序,并且当时RT-Thread也提出了一种,线程即IPC的概念。。。只是,最后的提案被大家否决了。团队开始有数人,只是能够坚持的没几个。3、一年增加001本人很早就接触了Linux,算是国内资深的Linux接触者(早期也算一个Linux开发人员吧),KDE 10几乎是看着发展起来的(大家有谁用过RedHat 51?)。个人算是很多方面有一些自由软件的习惯:软件的版本号是非常重要的一个标志,宁愿增加一个细微的版本号也不轻易的增加一个大的版本号,因为大的版本号是需要对用户负责的。10版本更代表了系统的稳定性,健全性。例如mplayer到10版本就经历众多小版本,099的beta版本亦无数。RT-Thread也把这点体现得淋漓尽致,022到023一个版本的增加,整整花了一年多的时间。但这个小版本号的增加,却带来了开源社区嵌入式环境中最完善的TCP/IP协议栈:LwIP。当然,开始时并不算稳定。在这几个版本中,RT-Thread也终于从迷茫中走出来,RT-Thread需要自己的特色,一个单独的RTOS Kernel没太大的用处,因为你并没有上层应用代码的积累,并且一些基础组件也非常重要,有这些基础组件基本上意味着,在这个平台上写代码,这些代码就是你的,甚至是你哪天也可以把它放到另外一个硬件平台上运行。同样,02到03版本号的变更,花费的时间会更长^-^ 版本号的长短,是和计划的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为什么是对象化的设计方法可能这个话题太偏技术化了,说说其他,呵呵。面向对象编程有它的好处,例如继承。可以让具备相同父类的子类共享使用父类的方法,基本可以说是不用写代码就凭空多出了很多函数,何乐而不为呢。另外,对象的好处在于封装。当一个对象封装好了以后,并测试完成后,基本上就代表这个类是健全的,从这个类派生的子类不需要过多考虑父类的不稳定性。这里着重提提另外一个人,我工作后的第三年,曾向当时的同事也是好友,LHuray学习面向对象的实时设计方法:Octpus II。深刻体会到了面向对象设计的好处(需求分析,体系结构设计,子系统分析,子系统设计,测试,实时性分析),但鉴于嵌入式系统中C++的不确定性,所以个人更偏向于使用C来实现。所以,LHuray算是我的老师了,一直希望能够有时间把他老人家的思想更进一步的发扬光大,希望以后有这个机会。(Octpus I最初起源于Nokia,然后由MAward, LHuray发展成Octpus II,现在几乎见不到踪影了,唉)。

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

初用rt-thread,看到rt-thread有越来越多的使用者,也想做个项目试试,但是这几天买了个art-pi开始学习发现有些不太理解的地方。

rt-thread为什么非常推崇keil iar之类的收费软件,甚至默认都会生成这些软件的工程文件,这些软件不仅有版权问题,还无法跨平台;目前rt-thread studio虽然基于eclipse开发,但现在一直只有Windows版本;rt-thread studio的vscode插件目前调试好想也只支持Windows?

keil iar之类的确实用起来非常爽,但是rt-thread要走国际化开源路线难道也是主推这些收费IDE软件吗?

以上就是关于rt-thread 怎样搭建gui全部的内容,包括:rt-thread 怎样搭建gui、rtthread和linux的区别、Thread和RT有啥区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10172377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存