搜索
bottom↓
回复: 60

我一直想问的,除了死循环和上操作系统,还有没有其它的架构?

  [复制链接]
(43532830)

出0入0汤圆

发表于 2019-11-30 08:30:43 来自手机 | 显示全部楼层 |阅读模式
一直好奇,干了这么久了好像真没怎么接触过其它形式,谁能指导指导孤陋寡闻的我?
(43532715)

出0入0汤圆

发表于 2019-11-30 08:32:38 来自手机 | 显示全部楼层
状态机,哈哈哈
(43531711)

出0入0汤圆

发表于 2019-11-30 08:49:22 来自手机 | 显示全部楼层
当然还有了,树形结构,星形架构
(43530285)

出0入0汤圆

发表于 2019-11-30 09:13:08 | 显示全部楼层
什么架构都是死循环。
(43530128)

出0入50汤圆

发表于 2019-11-30 09:15:45 来自手机 | 显示全部楼层
最近玩Beagle Bone Black,发现里面自带的cloud9,不确定用的是什么语言的,发现今天可以两个函数互相调用,也就是在a函数最后面调用b函数,b函数最后面再调用a函数,整个代码就这样循环
(43529990)

出0入0汤圆

发表于 2019-11-30 09:18:03 | 显示全部楼层
操作系统不是死循环?
(43529462)

出0入0汤圆

发表于 2019-11-30 09:26:51 | 显示全部楼层
皇帝就是个死循环,批奏章,翻牌,喜欢的就多翻翻,不喜欢的就少翻。
(43529213)

出0入54汤圆

发表于 2019-11-30 09:31:00 来自手机 | 显示全部楼层
操作系统也是循环。以前写过一个程序,高压电环境用的,程序执行完了就复位,再从头来,被干扰死机了看门狗复位和程序自己复位一样。
(43529158)

出0入0汤圆

发表于 2019-11-30 09:31:55 来自手机 | 显示全部楼层
什么构架都是死循环+1
(43527571)

出0入0汤圆

发表于 2019-11-30 09:58:22 | 显示全部楼层
人都是死循环,何况计算机乎。
(43526794)

出0入0汤圆

 楼主| 发表于 2019-11-30 10:11:19 来自手机 | 显示全部楼层
just_lou 发表于 2019-11-30 08:32
状态机,哈哈哈

状态机是死循环的一种吧
(43526213)

出0入0汤圆

发表于 2019-11-30 10:21:00 | 显示全部楼层
430是个有趣的芯片,可以设置在中断中完成工作后就自己睡觉,因此可以做一个全部用中断(事件)驱动的方式,上电后初始化后睡觉;引脚,时间,AD等等中断发生后就处理,完成后自己又睡上了;
(43525426)

出0入0汤圆

发表于 2019-11-30 10:34:07 | 显示全部楼层
带操作系统的话,每个任务都是个独立的死循环,优点就是编程简单,单独的任务独占一个死循环。
另外就是我经常用的时间片轮询,其实还是一个大的死循环,但是通过时间片轮询,可以看起来多任务并行处理,但这个要求每个任务都是迅速执行完毕,不能有类似长时间延时等待之类的阻塞情况,也就是每个任务都是查询执行,再配合中断处理些紧急任务,基本上也都得心应手。
(43522912)

出0入0汤圆

发表于 2019-11-30 11:16:01 | 显示全部楼层
循环本来就是死的,永远在绕圈
(43522348)

出0入20汤圆

发表于 2019-11-30 11:25:25 | 显示全部楼层
为啥说一定就是死循环?
CPU不可以halt吗?
看到标题我就准备进来说事件响应来着。。。

13L提到的MSP430是比较早具有这种功能的MCU,实际上大部分的现代MCU都可以这么玩吧~
有活干活,没活睡觉~
(43521903)

出0入0汤圆

发表于 2019-11-30 11:32:50 来自手机 | 显示全部楼层
楼主想撸代码也会写代码,却卡在嵌入式软件的框架上是吗?
(43518417)

出0入0汤圆

 楼主| 发表于 2019-11-30 12:30:56 来自手机 | 显示全部楼层
BSMGood 发表于 2019-11-30 11:32
楼主想撸代码也会写代码,却卡在嵌入式软件的框架上是吗?

没有,只是觉得自己似乎都知道了,但是这不应该
(43518164)

出0入79汤圆

发表于 2019-11-30 12:35:09 | 显示全部楼层
干啥才重要,架构自然会发展起来。
(43517973)

出0入0汤圆

发表于 2019-11-30 12:38:20 来自手机 | 显示全部楼层
mcu5i51 发表于 2019-11-30 10:21
430是个有趣的芯片,可以设置在中断中完成工作后就自己睡觉,因此可以做一个全部用中断(事件)驱动的方式,上电 ...

cortex m3 m4 等也有这种功能,叫做sleep on exit!
(43504077)

出0入0汤圆

发表于 2019-11-30 16:29:56 | 显示全部楼层
还有事情驱动的架构
(43499012)

出200入1822汤圆

发表于 2019-11-30 17:54:21 | 显示全部楼层
HDL 了解下,可以不用循环,assign 就能一直联通了
(43496579)

出0入0汤圆

发表于 2019-11-30 18:34:54 | 显示全部楼层
楼主跳出循环试试!
(43491580)

出0入0汤圆

发表于 2019-11-30 19:58:13 | 显示全部楼层
干完活不死循环你想CPU干什么?一直向前跑直到不知飞到哪里去吗?
(43488083)

出0入0汤圆

发表于 2019-11-30 20:56:30 来自手机 | 显示全部楼层
yyts 发表于 2019-11-30 09:15
最近玩Beagle Bone Black,发现里面自带的cloud9,不确定用的是什么语言的,发现今天可以两个函数互相调用 ...

有种状态机就是这么写的
函数的返回值是一个函数指针,在函数返回前决定指针指向哪里,就实现了任意跳转,包括指向原函数。
(43486125)

出0入0汤圆

发表于 2019-11-30 21:29:08 | 显示全部楼层
还有一种基于事件的,ti的zigbee上用的那种
(43438305)

出0入0汤圆

发表于 2019-12-1 10:46:08 | 显示全部楼层
处理器都有中断 基本没人不用中断 也就所有人都用了事件触发  
(43240506)

出0入0汤圆

发表于 2019-12-3 17:42:47 | 显示全部楼层
操作系统也是死循环
(43240114)

出0入0汤圆

发表于 2019-12-3 17:49:19 来自手机 | 显示全部楼层
支持楼主深入研究
(43239208)

出0入0汤圆

发表于 2019-12-3 18:04:25 | 显示全部楼层
可以考虑一下“task-event”这个调度机制。参考:OSAL
(43237815)

出240入221汤圆

发表于 2019-12-3 18:27:38 | 显示全部楼层
本帖最后由 armstrong 于 2019-12-3 18:32 编辑

可以设计一个类似libuv这样的回调系统,还有微软的iocp模式也类似。
系统里没有任务的概念,都是各种I/O回调函数。
所有的调度都是为了给I/O回调提供执行环境,执行完要么服务后续I/O,要么释放栈?
为什么还是需要栈?
因为目前的C语言编译就是这么个模式——所有函数调用(参数/返回值/返回地址等等)和局部变量都需要栈。
我把这个系统叫做eios:意为 Embedded I/O System
(43218651)

出0入16汤圆

发表于 2019-12-3 23:47:02 | 显示全部楼层
生活就是吃吃喝喝,日日戳戳,九浅一深,时而高潮,时而低谷,要么呐喊,要么低吟,要么强忍。。。
(43217445)

出0入0汤圆

发表于 2019-12-4 00:07:08 | 显示全部楼层
曾经看过一个操作系统源码,(不记得是不是CP/M),好像不是用死循环,操作系统空闲是直接用halt指令的,然后不知道通过那种途径触发NMI返回操作系统的.
(43186848)

出0入0汤圆

发表于 2019-12-4 08:37:05 | 显示全部楼层
如果只执行一次,可以顺序执行,不是死循环。
操作系统也是死循环。
(43186514)

出0入0汤圆

发表于 2019-12-4 08:42:39 | 显示全部楼层
这是while(1)的形式不一样而已, 都是死循环, 除了干完就收工那种
(43182619)

出170入0汤圆

发表于 2019-12-4 09:47:34 来自手机 | 显示全部楼层
现在楼主都研究这么深入了啊,c语言还学不学了
(43049502)

出0入0汤圆

发表于 2019-12-5 22:46:11 来自手机 | 显示全部楼层
宏观来看都是个死循环
(43014605)

出0入0汤圆

发表于 2019-12-6 08:27:48 来自手机 | 显示全部楼层
protothread了解一下,协程架构,非操作系统但是可实现多任务并发,而且因为没有操作系统的任务调度,速度会很快。不过要做好任务的非阻塞性和主动yield,而且只能在任务主函数里yield
(43013379)

出0入0汤圆

发表于 2019-12-6 08:48:14 | 显示全部楼层
QP事件驱动框架了解下
(43010156)

出80入10汤圆

发表于 2019-12-6 09:41:57 | 显示全部楼层
所有架构都是死循环,只不过在死循环中玩的不同花样。
(43007311)

出0入0汤圆

发表于 2019-12-6 10:29:22 | 显示全部楼层
"死循环" 一语道破天机
(43007007)

出0入0汤圆

发表于 2019-12-6 10:34:26 | 显示全部楼层
应该说合理的程序行为是收敛的
(42886166)

出0入0汤圆

发表于 2019-12-7 20:08:27 来自手机 | 显示全部楼层
软件定时器+任务队列的框架挺好,应用程序分成两优先级执行,基本满足大多数嵌入式开发
(42819049)

出0入0汤圆

发表于 2019-12-8 14:47:04 | 显示全部楼层
Error.Dan 发表于 2019-11-30 11:25
为啥说一定就是死循环?
CPU不可以halt吗?
看到标题我就准备进来说事件响应来着。。。

Halt模式正解

已经不是死循环了
(42549828)

出0入0汤圆

发表于 2019-12-11 17:34:05 | 显示全部楼层
“task-event”模式,nordic ble协议栈工作方式
(42538664)

出0入0汤圆

发表于 2019-12-11 20:40:09 | 显示全部楼层
时间序列,task-event
(42537708)

出0入0汤圆

发表于 2019-12-11 20:56:05 | 显示全部楼层
常用状态机的飘过
(39263947)

出0入0汤圆

发表于 2020-1-18 18:18:46 | 显示全部楼层
打卡留名,关注后续
(39230848)

出0入0汤圆

发表于 2020-1-19 03:30:25 | 显示全部楼层
main下面就是while(1) while(1)里面不论是啥都是死循环了
(39212593)

出0入0汤圆

发表于 2020-1-19 08:34:40 | 显示全部楼层
生命不息,心跳不止
(39210844)

出0入0汤圆

发表于 2020-1-19 09:03:49 | 显示全部楼层
yyts 发表于 2019-11-30 09:15
最近玩Beagle Bone Black,发现里面自带的cloud9,不确定用的是什么语言的,发现今天可以两个函数互相调用 ...

尾递归???
(39200265)

出0入0汤圆

发表于 2020-1-19 12:00:08 | 显示全部楼层
对不起,还真没有
(39193040)

出0入0汤圆

发表于 2020-1-19 14:00:33 | 显示全部楼层
定时器触发,定时器调度
(39192639)

出0入0汤圆

发表于 2020-1-19 14:07:14 | 显示全部楼层
打卡,留名
(35276044)

出0入4汤圆

发表于 2020-3-4 22:03:49 | 显示全部楼层
除了死循环好像找不出什么了,总有等待的时候啊。。。一刻不停脑子瓦特了。。
(35263508)

出0入0汤圆

发表于 2020-3-5 01:32:45 来自手机 | 显示全部楼层
Doding 发表于 2019-11-30 09:31
操作系统也是循环。以前写过一个程序,高压电环境用的,程序执行完了就复位,再从头来,被干扰死机了看门狗 ...

这个是个好思路
(7931810)

出0入0汤圆

发表于 2021-1-15 09:41:03 | 显示全部楼层
宇宙也是个死循环:奇点-》大爆炸-》膨胀-》坍缩-》奇点-》大爆炸……
(7929556)

出140入640汤圆

发表于 2021-1-15 10:18:37 | 显示全部楼层
1.        分层模式 (Layered pattern)
2.        客户端/服务器模式 (Client-server pattern)
3.        主/从模式 (Master-slave pattern)
4.        管道/过滤器模式 (Pipe-filter pattern)
5.        代理模式 (Broker pattern)
6.        对等模式 (Peer-to-peer pattern)
7.        事件总线模式 (Event-bus pattern)
8.        模型/视图/控制器 (MVC) 模式 (Model-view-controller pattern)
9.        黑板模式 (Blackboard pattern)
10.        解析器模式 (Interpreter pattern)
(7929443)

出0入0汤圆

发表于 2021-1-15 10:20:30 | 显示全部楼层
wuha 发表于 2019-11-30 10:34
带操作系统的话,每个任务都是个独立的死循环,优点就是编程简单,单独的任务独占一个死循环。
另外就是我 ...

这个解释到位,
MCU是一个死循环
OS是多个死循环
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-4-17 04:57

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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