打印
[MCU新闻]

蹄牛操作系统TINIUX RTOS,好奇葩

[复制链接]
5825|39
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huahuagg|  楼主 | 2018-2-25 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
蹄牛操作系统TINIUX是一个源代码开放的、易于移植的、面向嵌入式应用的实时操作系统(RTOS),具有轻量级、低功耗、启动快、可裁剪、可分散加载等优点。主要应用领域为工业控制,智能传感器开发,智能终端,物联网,机器人等。
TINIUX遵循MIT开源许可协议,可以免费在商业产品中使用,不需要公布应用源码,没有任何潜在商业风险。
该微型嵌入式实时操作系统有如下特点:
1、支持多任务功能,系统对任务数量没有限制。每个任务都具有自己的优先级,不同优先级任务按照优先级的次序调度,同优先级任务采用时间片轮转机制调度;
2、系统中的任务在执行过程中可自行放弃执行权,以便系统的运行高效、灵活;
3、系统中的任务采用双向链表的方式排列分类,调度算法快捷、高效、稳定;
4、TINIUX为抢占式实时操作系统,支持高优先级任务抢断执行功能,彰显了操作系统调度的实时性及有效性;
5、系统为任务之间的通信设计有多种方式,支持信号量(Semaphore)、互斥锁(Mutex)、消息队列(MsgQ)等方式;
6、系统中任务优先级的数量可配置,优先级数值由小到大排列,优先级0为系统最低优先级;
7、系统没有对任务、信号量、消息队列等的使用数量进行任何限制,仅受限于RAM的硬件资源;
8、系统为硬中断与任务之间的同步与通信设计有多种方式,支持信号量(Semaphore)、互斥锁(Mutex)、消息队列(MsgQ)等方式;
9、多任务等待同一资源(如消息队列、信号量等)时,优先级高的任务先获取使用权,若任务优先级相同,则等待最久的任务先获取使用权;
10、支持软件定时器功能,可以通过TINIUX提供的API接口函数配置多个定时器及服务函数;
11、支持互斥信号量(Mutex)对临界区变量加锁保护的功能,互斥信号量具有优先级继承功能,最大限度的降低优先级反转的问题;
12、支持对内核配置成非抢占模式, 追求最大的数据吞吐量;
13、支持对组件模块的裁剪配置,信号量(Semaphore)、互斥锁(Mutex)、消息队列(MsgQ)等模块可配置裁剪;
14、系统具有丰富的API调用接口,配置简单、灵活,可控性强;
15、系统占用资源少,经裁剪后,运行最小内核仅需ROM 10K字节,RAM 2K字节。
16、支持8位、16位、32位等多种芯片类型,移植简单,稳定性高、可靠性强。
注:蹄牛操作系统TINIUX是小嵌操作系统SmallRTOS的升级版本,经过重构之后,系统更稳定、可靠。TINIUX系统使用MIT开源许可协议,商业应用更友好,请用户及时更新!
沙发
huahuagg|  楼主 | 2018-2-25 15:00 | 只看该作者
这单片机操作系统起的,太俗气了。哈哈

使用特权

评论回复
板凳
huahuagg|  楼主 | 2018-2-25 15:00 | 只看该作者
不过完美支持新唐等单片机,很不错,又免费

使用特权

评论回复
地板
huahuagg|  楼主 | 2018-2-25 15:01 | 只看该作者
Nuvoton新唐科技:
1、CORTEX_M0_M051_NuMicro_IAR与CORTEX_M0_M051_NuMicro_KEIL,该工程适用于新唐科技Nuvoton NuMicro Mini51/M051/M058S系列的芯片,分别采用IAR及KEIL开发平台;下载链接:http://www.tiniux.org/download/demo/TINIUX_NuMicro_M051_Demo.zip
2、CORTEX_M4F_M451_NuMicro_IAR与CORTEX_M4F_M451_NuMicro_KEIL,该工程适用于新唐科技Nuvoton NuMicro M451系列的芯片,分别采用IAR与KEIL开发平台;下载链接:http://www.tiniux.org/download/demo/TINIUX_NuMicro_M451_Demo.zip

使用特权

评论回复
5
huahuagg|  楼主 | 2018-2-25 15:02 | 只看该作者
不得不说,新唐的M051和M451确实很火的,每家的单片机操作系统貌似都要率先支持。

使用特权

评论回复
6
xuanhuanzi| | 2018-2-25 20:01 | 只看该作者
这么多重复的东西,学哪个好

使用特权

评论回复
7
21mengnan| | 2018-2-25 22:49 | 只看该作者
有更多的新系统出现是个好事情

使用特权

评论回复
8
xinxianshi| | 2018-2-26 13:29 | 只看该作者
配置低的单片机还是裸奔的好,但是如果想同时进行多项任务可以用用RTOS

使用特权

评论回复
9
yiy| | 2018-2-26 19:17 | 只看该作者
专为入门级ARM单片机设计的

使用特权

评论回复
10
dongnanxibei| | 2018-2-26 21:17 | 只看该作者
支持高优先级任务抢断执行功能,不错啊,亮点。

使用特权

评论回复
11
598330983| | 2018-2-27 07:56 | 只看该作者
推陈出新,每个都有自己的优点

使用特权

评论回复
12
xsq| | 2018-2-27 11:35 | 只看该作者
TINIUX\CPU\ARM\KEIL\Cortex_M0\FitCPU.c(174): warning:  #61-D: integer operation result is out of range

TINIUX\CPU\ARM\KEIL\Cortex_M0\FitCPU.c(174): warning:  #68-D: integer conversion resulted in a change of sign

想学习一下,例子编译时出项上述两条警告,是什么原因?

使用特权

评论回复
13
yiyigirl2014| | 2018-2-27 13:23 | 只看该作者
xsq 发表于 2018-2-27 11:35
TINIUX\CPU\ARM\KEIL\Cortex_M0\FitCPU.c(174): warning:  #61-D: integer operation result is out of ran ...

    在编写测试程序的过程中,有如下定义:
#define UART1_EN              (1<<31)
编译后编译器报错:
integer operation result is out of range (61-D),经查资料是由于溢出所致,宏定义默认常量是有符号型,当左移31位时,常数就变成负数,编译器就会给出如上的警告信息解决办法是强制类型转换成无符号类型:
#define UART1_EN              ((U32)1<<31)
这样,警告信息就消除了。

使用特权

评论回复
14
yiyigirl2014| | 2018-2-27 13:24 | 只看该作者
刚百度了一下,还真是个新东西,学习学习。

使用特权

评论回复
15
yiyigirl2014| | 2018-2-27 13:24 | 只看该作者
多个选择,多条路。

使用特权

评论回复
16
598330983| | 2018-2-27 14:50 | 只看该作者
越来越多的芯片和软件,比以前好多了

使用特权

评论回复
17
airwill| | 2018-2-27 15:13 | 只看该作者
这 RAM 占用 2K 是多少任务的条件下?  任务栈空间有设置限制吗

使用特权

评论回复
18
airwill| | 2018-2-27 15:13 | 只看该作者
这 RAM 占用 2K 是多少任务的条件下?  任务栈空间有设置限制吗

使用特权

评论回复
19
airwill| | 2018-2-27 15:13 | 只看该作者
这 RAM 占用 2K 是多少任务的条件下?  任务栈空间有设置限制吗

使用特权

评论回复
20
xsq| | 2018-2-27 15:29 | 只看该作者
#include <stdio.h>
#include "M051Series.h"
#include "TINIUX.h"
static void Task1Function(void *pvParameters){
        while(1){
        P36 ^= 1;
        OSTaskSleep(OSM2T(300));       
        }
}

static void Task2Function(void *pvParameters){
        while(1){
          P37 ^= 1;
        OSTaskSleep(OSM2T(300));
        }
}
int main()
{
     GPIO_SetMode(P3, BIT6, GPIO_PMD_OUTPUT);  
     GPIO_SetMode(P3, BIT7, GPIO_PMD_OUTPUT);
       
                OSTaskCreate(Task1Function,OS_NULL,OSMINIMAL_STACK_SIZE,OSLOWEAST_PRIORITY+1,"Task1");
                OSTaskCreate(Task2Function,OS_NULL,OSMINIMAL_STACK_SIZE,OSLOWEAST_PRIORITY+1,"Task2");
                OSStart();
                       
    while(1);
}
}仅剩这点代码,也出现上述报警,是什么原因呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

1254

帖子

2

粉丝