搜索
bottom↓
回复: 25

让单片机动态执行程序!

[复制链接]

出0入0汤圆

发表于 2013-6-14 23:58:25 | 显示全部楼层 |阅读模式
    最近客户提出一个想法,觉得对于单片机开发是个挑战,发上来看大家有没有好的想法。如下:
   客户一个产品,有20来个继电器,6个温度开关,个8个开关信号,想用单片机来做一个平台动态控置继电器根据温度和开关信号来工作。这个动态由我们帮他设计一个上位机软件来配置然后生成数据写到EEPROM
中供单片解释执行。

   

出0入0汤圆

发表于 2013-6-15 00:07:55 | 显示全部楼层
lua脚本呗

出0入0汤圆

发表于 2013-6-15 00:14:12 | 显示全部楼层
1. 程序要不是动态的就不是程序了
2. 楼主理解错了, 以为程序一运行,只能按一个方式, 所以想到让单片机执行eeprom里的程序.
3. 这个项目可以把上位机的配置当成程序的参数来做, 比如当温度怎么样的时候, 继电器怎么样. 这种逻辑关系. 存到eeprom里就行了.
4. 假设真要让程序"动态", 也不难, 好多MCU是支持程序在RAM中运行的.

出0入0汤圆

 楼主| 发表于 2013-6-15 09:11:44 | 显示全部楼层
chengjia535 发表于 2013-6-15 00:14
1. 程序要不是动态的就不是程序了
2. 楼主理解错了, 以为程序一运行,只能按一个方式, 所以想到让单片机执行 ...

首先谢谢你的回复。我对程序还是写过几年,有些小小理解。我是想包括程序逻辑都要改变。

出0入0汤圆

发表于 2013-6-15 09:17:38 | 显示全部楼层
那就做个PLC

出0入8汤圆

发表于 2013-6-15 09:32:59 | 显示全部楼层
应该可以吧,加载到ram里运行;应该就能满足LZ的要求了

出0入0汤圆

发表于 2013-6-15 09:42:43 | 显示全部楼层
可以参考脚本解释器,或虚拟机(比如JAVA)
http://www.amobbs.com/thread-5492296-1-1.html
http://www.amobbs.com/thread-5536737-1-1.html

出0入0汤圆

发表于 2013-6-15 09:45:12 | 显示全部楼层
BOOT + APP1 + APP2 + APP3 + APP4 + ...

出0入0汤圆

发表于 2013-6-15 10:50:00 | 显示全部楼层
本帖最后由 duanll 于 2013-6-15 10:53 编辑

我前段时间做了个类似的样品,可以联系我。
使用一两块的单片机,最低512字节内存,支持4线程,64K外部代码量。上位机程序也出来了。

出0入0汤圆

发表于 2013-6-15 10:55:23 | 显示全部楼层
直接给他个PLC

出0入0汤圆

发表于 2013-6-15 11:12:43 | 显示全部楼层
PLC 上位机用组态软件,随时可以改变。

出0入0汤圆

发表于 2013-6-15 11:33:47 | 显示全部楼层
就是一个逻辑关系的程序,你把程序写成  按照 EEPROM的表格来做,没什么特别。

出0入4汤圆

发表于 2013-6-15 11:37:50 | 显示全部楼层
做个串口通信就行嘛,收到的数据存到eeprom里,程序运行时根据eeprom里的数据进行跳转就行嘛。考虑下临界状态就行。太简单了。或者直接用IAP做,升级整个程序。

出0入0汤圆

发表于 2013-6-15 11:43:40 | 显示全部楼层
ycg123 发表于 2013-6-15 09:11
首先谢谢你的回复。我对程序还是写过几年,有些小小理解。我是想包括程序逻辑都要改变。 ...

我说的你理解错了, 不是说你没听懂客户的要求.
对于客户来说, 他想要的是程序执行逻辑的改变, 但是我们应该最先想到的是在eeprom里建立逻辑,
单片机调用, 而不是改程序, 这样程序老是跳来跳去,
我的建议是尽量在eeprom里只保存这个逻辑, 我也有想到如果这个逻辑太过复杂,或者没有任何关联,
那第四条就是我的对策, bootloader放在flash, 程序在RAM中运行. RAM中用串口或什么口接收特殊的更新
程序命令, 然后自动调到flash中, flash里的程序更新eeprom, 每次更新eeprom或上电, 都要同步RAM, 再调到RAM中运行.
这样的方法比起PLC和java NOR flash, 更适合小容量, 低管脚, 低频率, 低成本 单片机.

出0入0汤圆

发表于 2013-6-15 11:52:11 | 显示全部楼层
如果程序更新的不频繁, IAP当然是最简单的方案了.
但是不管是IAP,还是RAM等, 都有一个问题, 客户只想用一个上位机软件来配置, 他们不能动编译器的.
楼主不妨说一下客户大概想要的逻辑, 讨论一下能不能只保存逻辑.

出0入0汤圆

发表于 2013-6-15 11:52:13 | 显示全部楼层
把主程序写到引导区,然后动态更新要执行的程序.(只是设想,没有实现过)

出0入0汤圆

发表于 2013-6-15 11:55:40 来自手机 | 显示全部楼层
chengjia535 发表于 2013-06-15 11:43

我说的你理解错了, 不是说你没听懂客户的要求.
对于客户来说, 他想要的是程序执行逻辑的改变, 但是我们应该最先想到的是在eeprom里建立逻辑,
单片机调用, 而不是改程序, 这样程序老是跳来

支持…
来自:amoBBS 阿莫电子论坛 Windows Phone 7 客户端

出0入0汤圆

发表于 2013-6-15 12:42:13 来自手机 | 显示全部楼层
中国的产品是中国的产品,是中国人设计的产品,准确无误地说是中国式思维设计的产品。一开始这种思维入住的话,就百毒不侵了,说啥也没用。问问题的是一种思维问,回答的也是同一种思维去回答。所以就是这样的,论坛缺少妇科圣手啊。

出0入0汤圆

发表于 2013-6-15 12:52:32 | 显示全部楼层
chengjia535 说的精彩

出0入0汤圆

发表于 2013-6-15 13:00:36 来自手机 | 显示全部楼层
rtt 应用模块

出0入0汤圆

发表于 2013-6-15 13:32:32 | 显示全部楼层
万能的逻辑嘛 做好了就踢掉你了
所以收费要********************************

出0入264汤圆

发表于 2013-6-15 14:18:37 来自手机 | 显示全部楼层
最方便也最一劳永逸的方法是实现一个简单虚拟机。其实就是实现一种解释语言。按照你的客户要求,我猜测只需要逻辑运算,算术运算和简单跳转就可以了。上位机不需要做成图形配置,简单的语句表就可以了,这样上位机工作量比较少。

出0入264汤圆

发表于 2013-6-15 14:19:27 来自手机 | 显示全部楼层
最方便也最一劳永逸的方法是实现一个简单虚拟机。其实就是实现一种解释语言。按照你的客户要求,我猜测只需要逻辑运算,算术运算和简单跳转就可以了。上位机不需要做成图形配置,简单的语句表就可以了,这样上位机工作量比较少。

出0入0汤圆

发表于 2013-6-15 14:38:53 | 显示全部楼层
上虚拟机。

出0入16汤圆

发表于 2013-6-15 14:51:25 | 显示全部楼层
单片机程序做成执行EEPROM内简化指令的方式,EEPROM内存放判断条件的逻辑关系的简化指令

出0入0汤圆

发表于 2013-6-15 14:57:58 | 显示全部楼层
如三楼所述: "3. 这个项目可以把上位机的配置当成程序的参数来做, 比如当温度怎么样的时候, 继电器怎么样. 这种逻辑关系. 存到eeprom里就行了."
   单片机做一个解析程序,解析存放到 EEPROM 中的数据,预先你要考虑需要有多少种可能,设置相应的"命令”到EEPRM, 这些"命令"由用户从上位机输入到EEPROM, 单片机执行这些"命令"即可
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 21:28

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

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