costpope 发表于 2019-11-30 08:30:43

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

一直好奇,干了这么久了好像真没怎么接触过其它形式,谁能指导指导孤陋寡闻的我?

just_lou 发表于 2019-11-30 08:32:38

状态机,哈哈哈

Nuker 发表于 2019-11-30 08:49:22

当然还有了,树形结构,星形架构

dzcn 发表于 2019-11-30 09:13:08

什么架构都是死循环。

yyts 发表于 2019-11-30 09:15:45

最近玩Beagle Bone Black,发现里面自带的cloud9,不确定用的是什么语言的,发现今天可以两个函数互相调用,也就是在a函数最后面调用b函数,b函数最后面再调用a函数,整个代码就这样循环

azeng 发表于 2019-11-30 09:18:03

操作系统不是死循环?

sdsdc 发表于 2019-11-30 09:26:51

皇帝就是个死循环,批奏章,翻牌,喜欢的就多翻翻,不喜欢的就少翻。

Doding 发表于 2019-11-30 09:31:00

操作系统也是循环。以前写过一个程序,高压电环境用的,程序执行完了就复位,再从头来,被干扰死机了看门狗复位和程序自己复位一样。

carefree1986 发表于 2019-11-30 09:31:55

什么构架都是死循环+1

luobote55 发表于 2019-11-30 09:58:22

人都是死循环,何况计算机乎。

costpope 发表于 2019-11-30 10:11:19

just_lou 发表于 2019-11-30 08:32
状态机,哈哈哈

状态机是死循环的一种吧

mcu5i51 发表于 2019-11-30 10:21:00

430是个有趣的芯片,可以设置在中断中完成工作后就自己睡觉,因此可以做一个全部用中断(事件)驱动的方式,上电后初始化后睡觉;引脚,时间,AD等等中断发生后就处理,完成后自己又睡上了;

wuha 发表于 2019-11-30 10:34:07

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

myxiaonia 发表于 2019-11-30 11:16:01

循环本来就是死的,永远在绕圈

Error.Dan 发表于 2019-11-30 11:25:25

为啥说一定就是死循环?
CPU不可以halt吗?
看到标题我就准备进来说事件响应来着。。。

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

BSMGood 发表于 2019-11-30 11:32:50

楼主想撸代码也会写代码,却卡在嵌入式软件的框架上是吗?

costpope 发表于 2019-11-30 12:30:56

BSMGood 发表于 2019-11-30 11:32
楼主想撸代码也会写代码,却卡在嵌入式软件的框架上是吗?

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

motor_control 发表于 2019-11-30 12:35:09

干啥才重要,架构自然会发展起来。

wzd5230 发表于 2019-11-30 12:38:20

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

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

muniao 发表于 2019-11-30 16:29:56

还有事情驱动的架构

t3486784401 发表于 2019-11-30 17:54:21

HDL 了解下,可以不用循环,assign 就能一直联通了

yy625 发表于 2019-11-30 18:34:54

楼主跳出循环试试!

not_at_all 发表于 2019-11-30 19:58:13

干完活不死循环你想CPU干什么?一直向前跑直到不知飞到哪里去吗?

Semiconductor 发表于 2019-11-30 20:56:30

yyts 发表于 2019-11-30 09:15
最近玩Beagle Bone Black,发现里面自带的cloud9,不确定用的是什么语言的,发现今天可以两个函数互相调用 ...

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

lanqilove 发表于 2019-11-30 21:29:08

还有一种基于事件的,ti的zigbee上用的那种

huangqi412 发表于 2019-12-1 10:46:08

处理器都有中断 基本没人不用中断 也就所有人都用了事件触发

liugu 发表于 2019-12-3 17:42:47

操作系统也是死循环

zllfdd 发表于 2019-12-3 17:49:19

支持楼主深入研究

广轻电气091 发表于 2019-12-3 18:04:25

可以考虑一下“task-event”这个调度机制。参考:OSAL

armstrong 发表于 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

redworlf007 发表于 2019-12-3 23:47:02

生活就是吃吃喝喝,日日戳戳,九浅一深,时而高潮,时而低谷,要么呐喊,要么低吟,要么强忍。。。

locky_z 发表于 2019-12-4 00:07:08

曾经看过一个操作系统源码,(不记得是不是CP/M),好像不是用死循环,操作系统空闲是直接用halt指令的,然后不知道通过那种途径触发NMI返回操作系统的.

Excellence 发表于 2019-12-4 08:37:05

如果只执行一次,可以顺序执行,不是死循环。
操作系统也是死循环。

newselect 发表于 2019-12-4 08:42:39

这是while(1)的形式不一样而已, 都是死循环, 除了干完就收工那种

knight_sh 发表于 2019-12-4 09:47:34

现在楼主都研究这么深入了啊,c语言还学不学了

ysu_er 发表于 2019-12-5 22:46:11

宏观来看都是个死循环

fnems 发表于 2019-12-6 08:27:48

protothread了解一下,协程架构,非操作系统但是可实现多任务并发,而且因为没有操作系统的任务调度,速度会很快。不过要做好任务的非阻塞性和主动yield,而且只能在任务主函数里yield

zhenglingo 发表于 2019-12-6 08:48:14

QP事件驱动框架了解下

lhj200304 发表于 2019-12-6 09:41:57

所有架构都是死循环,只不过在死循环中玩的不同花样。

jjj 发表于 2019-12-6 10:29:22

"死循环" 一语道破天机

rclong 发表于 2019-12-6 10:34:26

应该说合理的程序行为是收敛的

chenliangliang_ 发表于 2019-12-7 20:08:27

软件定时器+任务队列的框架挺好,应用程序分成两优先级执行,基本满足大多数嵌入式开发

嘀嘀 发表于 2019-12-8 14:47:04

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


Halt模式正解

已经不是死循环了

kxjie2006 发表于 2019-12-11 17:34:05

“task-event”模式,nordic ble协议栈工作方式

AlexYzhov 发表于 2019-12-11 20:40:09

时间序列,task-event

zhiweirui 发表于 2019-12-11 20:56:05

常用状态机的飘过

zlogon 发表于 2020-1-18 18:18:46

打卡留名,关注后续

keil_c51 发表于 2020-1-19 03:30:25

main下面就是while(1){:lol:} while(1)里面不论是啥都是死循环了

sml009 发表于 2020-1-19 08:34:40

生命不息,心跳不止

semonpic 发表于 2020-1-19 09:03:49

yyts 发表于 2019-11-30 09:15
最近玩Beagle Bone Black,发现里面自带的cloud9,不确定用的是什么语言的,发现今天可以两个函数互相调用 ...

尾递归???

jjj 发表于 2020-1-19 12:00:08

对不起,还真没有

qwe2231695 发表于 2020-1-19 14:00:33

定时器触发,定时器调度

zlogon 发表于 2020-1-19 14:07:14

打卡,留名

kyq_linux 发表于 2020-3-4 22:03:49

除了死循环好像找不出什么了,总有等待的时候啊。。。一刻不停脑子瓦特了。。

nnmnnm 发表于 2020-3-5 01:32:45

Doding 发表于 2019-11-30 09:31
操作系统也是循环。以前写过一个程序,高压电环境用的,程序执行完了就复位,再从头来,被干扰死机了看门狗 ...

这个是个好思路

gxlujd 发表于 2021-1-15 09:41:03

宇宙也是个死循环:奇点-》大爆炸-》膨胀-》坍缩-》奇点-》大爆炸……

dragonlands 发表于 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)

jjj 发表于 2021-1-15 10:20:30

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

这个解释到位,
MCU是一个死循环
OS是多个死循环

SCREA 发表于 2021-10-15 13:05:33

任何有规律的事物,都是状态的切换。至于状态怎么切换,就看业务逻辑了。
单片机也是如此,死循环和操作系统,都是状态切换

SCREA 发表于 2021-10-15 13:07:04

dragonlands 发表于 2021-1-15 10:18
1.        分层模式 (Layered pattern)
2.        客户端/服务器模式 (Client-server pattern)
3.        主/从模式 (Master-sl ...

Nice++++++

ycheng2004 发表于 2021-10-15 14:07:25

Doding 发表于 2019-11-30 09:31
操作系统也是循环。以前写过一个程序,高压电环境用的,程序执行完了就复位,再从头来,被干扰死机了看门狗 ...

抗干扰,程序执行完了就复位,这个思路不错,领教了,

dog 发表于 2021-10-15 14:15:17

Nuker 发表于 2019-11-30 08:49
当然还有了,树形结构,星形架构

还有二叉树,多叉树

tangmin 发表于 2021-10-16 09:29:33

halt后怎么退出

eddia2012 发表于 2022-6-27 16:47:54

"抗干扰,程序执行完了就复位,这个思路不错,领教了"不还是死循环吗?

Momo 发表于 2022-6-27 17:26:49

Doding 发表于 2019-11-30 09:31
操作系统也是循环。以前写过一个程序,高压电环境用的,程序执行完了就复位,再从头来,被干扰死机了看门狗 ...
(引用自9楼)

NB,复位后是不是要初始化一堆参数,你这些参数整个程序周期只用一次?

Doding 发表于 2022-6-28 07:25:28

Momo 发表于 2022-6-27 17:26
NB,复位后是不是要初始化一堆参数,你这些参数整个程序周期只用一次?
(引用自68楼)

是要初始化,程序的状态放ram里,放多份,复位后多份ram数据校验,恢复工作状态。校准参数放flash里,每次计算从flash里读。液晶屏根据ram存的装态判断要不要显示开机画面,其他芯片如果操作不正常就初始化。

albert_w 发表于 2022-6-28 07:48:35

Doding 发表于 2022-6-28 07:25
是要初始化,程序的状态放ram里,放多份,复位后多份ram数据校验,恢复工作状态。校准参数放flash里,每 ...
(引用自69楼)

数据和逻辑分离,高啊!
页: [1]
查看完整版本: 我一直想问的,除了死循环和上操作系统,还有没有其它的架构?