发新帖我要提问
12
返回列表
打印
[MCU新闻]

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

[复制链接]
楼主: huahuagg
手机看帖
扫描二维码
随时随地手机跟帖
21
643757107| | 2018-2-27 16:38 | 只看该作者 回帖奖励 |倒序浏览
报警不可怕,淡定,不报错就行。

使用特权

评论回复
22
TiniUX| | 2018-2-28 19:06 | 只看该作者
xsq 发表于 2018-2-27 15:29
#include
#include "M051Series.h"
#include "TINIUX.h"

在工程中,找到OSPreset.h文件
把宏定义OSMAX_HWINT_PRI与OSMIN_HWINT_PRI的数值加上UL
若是使用的Demo工程,则直接更改如下:

#define OSMAX_HWINT_PRI                                        ( 0x5 << (8 - SETHW_PRIO_BITS) )
更改为
#define OSMAX_HWINT_PRI                                        ( 0x5UL << (8 - SETHW_PRIO_BITS) )

#define OSMIN_HWINT_PRI                                        ( 0xF << (8 - SETHW_PRIO_BITS) )
更改为
#define OSMIN_HWINT_PRI                                        ( 0xFUL << (8 - SETHW_PRIO_BITS) )

使用特权

评论回复
23
小明的同学| | 2018-2-28 21:36 | 只看该作者
TiniUX 发表于 2018-2-28 19:06
在工程中,找到OSPreset.h文件
把宏定义OSMAX_HWINT_PRI与OSMIN_HWINT_PRI的数值加上UL
若是使用的Demo工 ...

竟然把牛蹄操作系统的作者勾引来了,加油。给我们讲讲这个系统的优点和特点。

使用特权

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

我们测试了下,裁剪后,不用开任务堆栈的情况下,系统占用不到500字节。

一般任务若不使用太多变量,为其分配64字节就够了,这样算来,2K的RAM使用10到15个任务应该不成问题。

当然了,最终要看任务的大小了。

使用特权

评论回复
25
123ycli| | 2018-2-28 22:23 | 只看该作者
听这名字,一看就是国产的,有待推广。

使用特权

评论回复
26
TiniUX| | 2018-2-28 22:38 | 只看该作者
小明的同学 发表于 2018-2-28 21:36
竟然把牛蹄操作系统的作者勾引来了,加油。给我们讲讲这个系统的优点和特点。 ...

呵呵,这个系统的命名确实有点奇葩,本意是TiniUX,相当于Tiny Unix,小巧的类Unix系统吧,但是更突出在实时性,即RTOS。字母组合的谐音就是"蹄牛"操作系统了!

目前系统在8位51单片机及32位ARM Cortex平台均运行正常!系统中的变量使用自身定义的类型,相信在其它平台的移植会非常方便。

欢迎朋友们在项目中使用!

使用特权

评论回复
27
airwill| | 2018-3-1 06:59 | 只看该作者
TiniUX 发表于 2018-2-28 22:17
我们测试了下,裁剪后,不用开任务堆栈的情况下,系统占用不到500字节。

一般任务若不使用太多变量,为 ...

64字节的任务堆栈 = 16字 ?  你真的测试过吗?

Cortex-M0/3 的上下文就要 17字以上

使用特权

评论回复
28
TiniUX| | 2018-3-1 07:38 | 只看该作者
本帖最后由 TiniUX 于 2018-3-1 10:31 编辑
airwill 发表于 2018-3-1 06:59
64字节的任务堆栈 = 16字 ?  你真的测试过吗?

Cortex-M0/3 的上下文就要 17字以上 ...


airwill是资深人士,我回答时不够严谨!

最近主要在51上测试运行的次数多一点,默认按照51单片机的配置回答了,测试时把包括信号量,消息队列,软件定时器等功能都通过宏定义裁剪掉了...只留有轻量级的同步信号和消息。

M0平台32位宽,一般任务使用的堆栈再放宽一倍吧,应该可以运行7到8个任务,对一个中等复杂度的项目足够了。Tiniux运行最低要求2k RAM,这个应该没有问题...

说到这里也顺便提示一下,OSTaskCreate函数传入的长度为字长度,不是字节长度。在OSPreset.h头文件中定义的SETOS_TOTAL_HEAP_SIZE,是为整个系统分配的堆栈空间长度,指定的是字节的长度,系统会自动根据平台字长向高截断。因为这些堆栈不仅仅供任务使用,所以使用字节长度定义。在分配使用时需要注意一下!

另外,M0平台一般RAM空间均较大,信号量,消息队列,软件定时器等功能可以根据需要放开使用,这些功能会稍占一些空间...

再次感谢airwill :) 欢迎朋友们评估使用。

使用特权

评论回复
29
TiniUX| | 2018-3-1 09:48 | 只看该作者
严谨归严谨,轻松归轻松!老牛一家亲,蹄牛操作系统将全面支持牛卧堂的芯片!

使用特权

评论回复
30
airwill| | 2018-3-1 10:57 | 只看该作者
TiniUX 发表于 2018-3-1 07:38
airwill是资深人士,我回答时不够严谨!

最近主要在51上测试运行的次数多一点,默认按照51单片机的配置 ...

哦, 还支持 51 哪.  需要 2K Ram 的处理器, 就得需要 XDATA 区了, 这种外扩 SRAM 的系统已经在性价比上不如 Cortex-m0 的内核板了, 如果需要这么大 SRAM, 那就不要支持 51 了
倒是系统优化值得进一步提升一下. 毕竟数据链表的操作还是效率不高的

使用特权

评论回复
31
xsq| | 2018-3-2 11:30 | 只看该作者
请教一下信号量:信号量可不可以这样理解:其实就是一个boolean数组,OSSemPost好像就是往这个数组中放入一个true,PendTask好像就是从这个数组中取出一个true,当这个数组中true的数量小于1的时候,这个数组对外界表现为flase,当大于0的时候对外表现为true?

使用特权

评论回复
32
TiniUX| | 2018-3-2 18:36 | 只看该作者
xsq 发表于 2018-3-2 11:30
请教一下信号量:信号量可不可以这样理解:其实就是一个boolean数组,OSSemPost好像就是往这个数组中放入一 ...

基本原理是这样的,实际上只需要一个变量用来计数就可以了。

实现上则要考虑多种情况了,比如当计数为0时,调用OSSemPend的任务需要挂起等操作...

使用特权

评论回复
33
xsq| | 2018-3-3 19:21 | 只看该作者
挂起的任务需要等条件成熟才能转化为就绪状态,对吧?那挂起和阻塞不是一样的吗?有什么实质的区别吗?

使用特权

评论回复
34
xuanhuanzi| | 2018-3-3 19:35 | 只看该作者
总有人才出现。

使用特权

评论回复
35
小明的同学| | 2018-3-5 21:03 | 只看该作者
好神奇,貌似大部分单片机都可以用

使用特权

评论回复
36
Q80351951| | 2018-3-10 10:08 | 只看该作者
n76资源还不够它自己用

使用特权

评论回复
37
韬铸88| | 2018-4-24 13:44 | 只看该作者
了解一下

使用特权

评论回复
38
springvirus| | 2018-4-24 15:38 | 只看该作者
有空看看,截至目前,在M453和NUC472上的FreeRTOS很好用的说

使用特权

评论回复
39
xdzys2008| | 2018-4-26 14:45 | 只看该作者
FreeRTOS系统USB接口网络芯片SR9700,SR9800~啥啥的 能跑吗?

使用特权

评论回复
40
156323135| | 2019-10-29 00:44 | 只看该作者
TiniUX 发表于 2018-2-28 19:06
在工程中,找到OSPreset.h文件
把宏定义OSMAX_HWINT_PRI与OSMIN_HWINT_PRI的数值加上UL
若是使用的Demo工 ...

Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(78): error C132: '__naked': not in formal parameter list
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(88): error C132: '_FitInitializeStack': not in formal parameter list
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(89): error C132: 'FitStartScheduler': not in formal parameter list
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(90): error C132: 'FitOSTickISR': not in formal parameter list
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(90): error C141: syntax error near '__interrupt', expected ';'
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(90): error C136: '__interrupt': 'void' on variable
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(90): error C132: '__interrupt': not in formal parameter list
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(90): error C136: '__naked': 'void' on variable
Tiniux\Tiniux-v3.0.0-comments-master\CPU\MCS51\SDCC\8052\FitCPU.h(90): error C132: '__naked': not in formal parameter list
这是啥原因

使用特权

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

本版积分规则