硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3387|回复: 16
收起左侧

[其它] 坛子里有玩儿 Contiki 这个小 OS 的吗?

[复制链接]

65

主题

432

回帖

632

积分

金牌会员

积分
632
发表于 2021-8-9 13:21:25 | 显示全部楼层 |阅读模式
这个小OS的作者就是uIP & lwIP的作者,把OS的时钟移植好就可以,不需要分配任务栈,所以节省很多RAM,因为这个OS任务切换的时候不保存上下文,只记住当前离开时候的行号,等任务切换回来之后接着之前离开时候的行号继续执行代码,传统的OS需要分配堆栈,切换的时候需要保存上下文,新手儿在这块容易出问题,所以说 Contiki 这个小 OS 还是挺安全的,有没有正在使用或者准备研究的队友?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106574
QQ
发表于 2021-8-9 18:18:50 | 显示全部楼层
他们的官网刷进去了,不太正常

http://www.contiki-os.org/
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
 楼主| 发表于 2021-8-9 19:49:33 | 显示全部楼层
我刚又进去官网看了看,没问题,其实这种小OS值得推一推,因为它有别于现在教程中所有的OS,因为它不需要保存上下文,这样节省了大量的RAM,对于M0这样的紧凑资源来说非常有价值,其它的uC FREE RT啥的其实熟练掌握一种就够了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106574
QQ
发表于 2021-8-10 08:47:09 | 显示全部楼层
taobaofarmer 发表于 2021-8-9 19:49
我刚又进去官网看了看,没问题,其实这种小OS值得推一推,因为它有别于现在教程中所有的OS,因为它不需要保 ...

我这边打开官方首页只有三个按钮

我记得之前不是这样的
QQ截图20210810084639.png
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2021-8-10 11:08:13 | 显示全部楼层
用contiki只需要注意两个事项,1:事件等待缓存,可能会有不同唤醒源需要缓存下来然后发布处理.2:竞态
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
 楼主| 发表于 2021-8-10 12:58:38 | 显示全部楼层
eric2013 发表于 2021-8-10 08:47
我这边打开官方首页只有三个按钮

我记得之前不是这样的

没错,之前直接就是主页,因为Contiki还在不断的升级完善维护,所以之前的主页上去之后直接出现了三个分支,没有问题的
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
 楼主| 发表于 2021-8-10 12:59:41 | 显示全部楼层
qq57379550 发表于 2021-8-10 11:08
用contiki只需要注意两个事项,1:事件等待缓存,可能会有不同唤醒源需要缓存下来然后发布处理.2:竞态

您用这个 OS 多久了?都在哪些处理器下跑过?
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
 楼主| 发表于 2021-8-13 08:33:02 | 显示全部楼层
qq57379550 发表于 2021-8-10 11:08
用contiki只需要注意两个事项,1:事件等待缓存,可能会有不同唤醒源需要缓存下来然后发布处理.2:竞态

有在M3和M4上移植过吗?
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2021-8-13 16:55:44 | 显示全部楼层
taobaofarmer 发表于 2021-8-13 08:33
有在M3和M4上移植过吗?

这玩意什么内核都通用,m0,stm8,51都用过完全没区别啊,挺简单的啊,用的时候对着demo,出问题再看下就行了.也就用下事件和定时器中断,和rtos用起来差不多.就是事件通知注意下就好了
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
发表于 2021-8-14 12:01:40 | 显示全部楼层
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
发表于 2021-8-14 12:02:29 | 显示全部楼层
推荐“小小调度器”,以前在阿莫论坛,更精简。
https://www.amobbs.com/thread-5508720-2-1.html
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
 楼主| 发表于 2021-8-15 09:35:01 | 显示全部楼层
bondxie 发表于 2021-8-14 12:02
推荐“小小调度器”,以前在阿莫论坛,更精简。
https://www.amobbs.com/thread-5508720-2-1.html

这个小小调度器有源码吗?
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
 楼主| 发表于 2021-8-15 09:41:59 | 显示全部楼层
另外阿莫论坛这种小小调度器对编程是有限制的

1 - 任务函数内部变量,建议都用静态局部变量来定义。
2 - 任务函数内不能用switch语句。
3 - 任务函数内,不能用return语句。 因为return已经被赋予任务延时的特定意义。(这是返回型任务函数版本的一个强制要求)

上面1是很容易实现的,23的限制就有点儿大了,在 Contiki 里是没有这样的限制的
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
发表于 2021-8-17 08:57:53 | 显示全部楼层
taobaofarmer 发表于 2021-8-15 09:41
另外阿莫论坛这种小小调度器对编程是有限制的

1 - 任务函数内部变量,建议都用静态局部变量来定义。

好多年前关注过这类调度器,contiki中的调度器模块叫protothread。我觉得 小小调度器和protothread本质上一样,帮应用编程实现状态机。这对主循环中的任务写法有较高要求,如果有任务耗时太长,整个系统的实时性就大打折扣。至于这几个限制,我觉得:
1、不同状态都用到的变量用静态,比如wait前后。因为wait会函数返回。
2、可以用if。一般谁在任务里面写很长的代码呢?
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
发表于 2021-8-17 09:07:36 | 显示全部楼层
taobaofarmer 发表于 2021-8-15 09:41
另外阿莫论坛这种小小调度器对编程是有限制的

1 - 任务函数内部变量,建议都用静态局部变量来定义。

3、任务函数返回结果,一般都不需要吧? 必须要有返回,也可以用指针、全局变量等其它方式实现。
大致又看了一下protothread的实现,内部使用的if做状态判断。 小小调度器用的switch,所以不能在任务函数中使用switch。
不知道你们能不能上amo,好好的网站现在搞得.............唉
对这个调度器的讨论,盖了上千层楼,仔细看大牛的分析,受益匪浅。
回复

使用道具 举报

2

主题

12

回帖

18

积分

新手上路

积分
18
发表于 2021-8-17 09:58:03 | 显示全部楼层
看代码就停不下来啊,上班到现在,90分钟,不能继续摸鱼了。
回复

使用道具 举报

73

主题

1192

回帖

1411

积分

至尊会员

积分
1411
发表于 2022-6-16 08:50:35 | 显示全部楼层
bondxie 发表于 2021-8-17 08:57
好多年前关注过这类调度器,contiki中的调度器模块叫protothread。我觉得 小小调度器和protothread本质上 ...

谢谢你的分析
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-25 09:35 , Processed in 0.414062 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表