打印

MCU内部模拟多核运行问题

[复制链接]
2383|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
magic_yuan|  楼主 | 2013-4-24 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 magic_yuan 于 2013-4-24 23:02 编辑

各位大侠,
  近来做一个东西,用MCU控制机器进行动作(测试,测量,判断)。原来是一个MCU控制一台机器。但公司为了节约成本(人力,时间,仪器成本等),需要用一片MCU控制两台或者多台机器(最多四台),这些机器的动作基本一致(对同一的产品进行测试),假设机器执行的动作可分为A-B-C-D四部,当然也可能存在循环,比如某台机器X出现A-B-A-B-C-D这样执行,但循环次数不多。每台仪器根据生产情况不一样会出现不同这样的循环(比如某台机器Y会出现A-B-C-B-C-D)。
  简而言之,差不多就是如何用单核的MCU实现类似多核的动作(效果差不多是并行)。
  像以上的动作是不是要用到系统了,单纯的C代码裸奔是不是很难搞定(至少目前我觉得是)?
  目前我用的是STM32,不知道配上UCOS对以上的控制会不会有帮助或者立竿见影的效果?
  十分感谢!

相关帖子

沙发
huangxz| | 2013-4-24 23:54 | 只看该作者
如果动作简单,没有什么数据处理什么之类的,随便一个stm32控制10台机都没什么问题,不需要操作系统,
当然如果用操作系统也不算错:lol

使用特权

评论回复
板凳
airwill| | 2013-4-25 09:13 | 只看该作者
事实上, 这看起来象个 OS 的需求.
配上UCOS对这样的控制会有帮助
不过, 如果控制得并不复杂, 事件驱动方式的裸奔系统也能应付.
软件也不会太复杂

使用特权

评论回复
地板
magic_yuan|  楼主 | 2013-4-25 09:15 | 只看该作者
huangxz 发表于 2013-4-24 23:54
如果动作简单,没有什么数据处理什么之类的,随便一个stm32控制10台机都没什么问题,不需要操作系统,
当然如果 ...

多谢大侠,
   这个动作不简单,有给电,有等待,有测量,也有扫描。一个MCU控制一台机器有时候都达到了1秒钟。

使用特权

评论回复
5
huangxz| | 2013-4-25 09:17 | 只看该作者
magic_yuan 发表于 2013-4-25 09:15
多谢大侠,
   这个动作不简单,有给电,有等待,有测量,也有扫描。一个MCU控制一台机器有时候都达到了1 ...

关键看单片机的利用率(时间),比如大部分时间是在那里delay,这段时间就可以拿来做别的事情了

使用特权

评论回复
6
magic_yuan|  楼主 | 2013-4-25 09:17 | 只看该作者
airwill 发表于 2013-4-25 09:13
事实上, 这看起来象个 OS 的需求.
配上UCOS对这样的控制会有帮助
不过, 如果控制得并不复杂, 事件驱动方式 ...

多谢大侠,
  控制的动作有点点复杂,见该帖上一个回复。UCOS对这种控制采用时分方式控制,也就是把系统分成很多时间片段,然后逐个扫描执行?

使用特权

评论回复
7
magic_yuan|  楼主 | 2013-4-25 09:25 | 只看该作者
huangxz 发表于 2013-4-25 09:17
关键看单片机的利用率(时间),比如大部分时间是在那里delay,这段时间就可以拿来做别的事情了 ...

多谢!
  那这样就只能针对较具体的实例来写了。我在做一个测试系统,想做得较有通用性。
  系统的软件由若干子函数构成,编写软件时就是这些子函数的反复调用,中间可能配上一些简单循环。

使用特权

评论回复
8
zd420325| | 2013-4-25 17:49 | 只看该作者
你就把那三台机器当一台机器来做就行了

使用特权

评论回复
9
老老实实| | 2013-4-25 19:06 | 只看该作者
一个MCU完全可以同时搞掂。关键是时间的概念,看你如何分时复用了。如果上os,恐怕你更难驾驭

使用特权

评论回复
10
magic_yuan|  楼主 | 2013-4-25 21:03 | 只看该作者
老老实实 发表于 2013-4-25 19:06
一个MCU完全可以同时搞掂。关键是时间的概念,看你如何分时复用了。如果上os,恐怕你更难驾驭 ...

OS为何难以驾驭呢?听说好搞,我不大懂。

使用特权

评论回复
11
西门看雪| | 2013-4-26 01:31 | 只看该作者
magic_yuan 发表于 2013-4-25 21:03
OS为何难以驾驭呢?听说好搞,我不大懂。

虽然好搞,但是如果没有一定的积累,风险难以控制。

万一搞不好出一两个bug,在某种条件下死机或者重启是否会产生重大的影响?

使用特权

评论回复
12
mcu5i51| | 2013-4-26 15:23 | 只看该作者
用C++比较方便,写个类,弄几个实例就好了,就是小心不要有阻塞的地方,一切用标志位或其他方法实现

使用特权

评论回复
13
magic_yuan|  楼主 | 2013-4-27 00:23 | 只看该作者
mcu5i51 发表于 2013-4-26 15:23
用C++比较方便,写个类,弄几个实例就好了,就是小心不要有阻塞的地方,一切用标志位或其他方法实现 ...

多谢大侠!
   那照这么讲,上WINDOWS系统用VC写那是最好的了?

使用特权

评论回复
14
mcu5i51| | 2013-4-27 08:54 | 只看该作者
C++不一定需要系统,只是一种实现方式,单片机中的多的类实例会共享(运行)代码,使用自己的变量,好像用C函数配上结构体参数一样

使用特权

评论回复
15
受不了了| | 2013-4-27 09:32 | 只看该作者
又没啥复杂计算,也没什么速度要求,只是繁,没难度

使用特权

评论回复
16
magic_yuan|  楼主 | 2013-4-27 10:37 | 只看该作者
受不了了 发表于 2013-4-27 09:32
又没啥复杂计算,也没什么速度要求,只是繁,没难度

多谢大侠!
  写单个特性程序可能没问题。关键是我想做一套系统,使用一些固定的函数指令,做到通用,这样就麻烦很多了。

使用特权

评论回复
17
江枫渔火| | 2013-4-27 10:40 | 只看该作者
你关键的问题是:不要阻塞等待。
所以不管用不用OS,让串行处理能并行处理就行了。
如果OS的话,就用系统延时,信号量啥的,不用OS的话就用全局变量,状态机流程

使用特权

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

本版积分规则

个人签名:发到3000帖时,生活大概完成了一种转折。

359

主题

2770

帖子

7

粉丝