rt-thread(rtthread和freertos选择哪个)

http://www.itjxue.com  2023-01-26 17:59  来源:未知  点击次数: 

rt-thread和keil的区别

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

RT Thread与uCOS区别

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]事件(event)

event就像是一个非定向的事件通知器,可以实现一( thread )对多( thread )、多( thread )对一( thread )、多( thread )对多( thread )的线程间同步。

一个 event 包含一个32位事件集,每一位都可以表一个单独事件。比如:

发送 event 可以任意组合:

接收 event 时也可以按需组合事件,看一下 rt_event_recv 函数用法:

那么使用就比较简单了,如果需要 EVENT_FLAG3 和 EVENT_FLAG5 都满足,则如下侦听( RT_EVENT_FLAG_CLEAR 按需):

EVENT_FLAG3 和 EVENT_FLAG5 可以是一个thread设置:

也可以是两个thread分别设置:

一个 event 的 suspended_thread 列表里的 thread 等待的事件集不一定相同,所以为做区分,在 rt_thread 中新增两个成员,用于存储 thread 等待的事件集:

RT_Thread组件开发

当重启开发板直接挂载文件系统,就会看到 spi flash mount to /spi failed! 的提示,因为此时在 SPI Flash 中还没有创建相应类型的文件系统。

文件系统的挂载指的是将文件系统和具体的存储设备关联起来,并挂载到某个挂载点,这个挂载点即为这个文件系统的根目录。

[图片上传失败...(image-dd0ae4-1563508716000)]

在 github 上有一份独立仓库: rtthread-apps ,这份仓库中放置了一些和动态模块。

编译成功会生成xxx.mo文件,将文件放置到rt-thread的文件系统上,就可以执行。

在msh命令中输入list_symbol命令。可以看到内核符号表(kernel symbol table)所映射的函数,这些函数就是模块模块开发当前能使用的函数

上述函数主要来自于rt-thread/src/xx.c文件、rt-thread/components/使用的组件xxx/src/xx.c文件

通过宏定义RTM_EXPORT(symbol) ,可以将函数导出到符号表。

rt_dlmodule结构体

动态模块API函数在rt-thread\components\libc\libdl\dlmodule.c文件中定义。

停止动态模块

rt-thread和kernel的区别

RT-Thread,全称是RealTime-Thread,是一款主要由中国开源社区主导开发的开源实时操作系统(许可证GPLv2),包含了实时、嵌入式系统相关的各个组件:TCP/IP协议栈、图形用户界面等。相较于Linux,RT-Thread具有体积小,成本低,功耗低、启动快速的优势,Kernel表示软件的内核,可重复使用,像种子一样。

(责任编辑:IT教学网)

更多

相关思科认证文章

推荐思科认证文章