ycg123 发表于 2013-6-14 23:58:25

让单片机动态执行程序!

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

wyoujtg 发表于 2013-6-15 00:07:55

lua脚本呗

chengjia535 发表于 2013-6-15 00:14:12

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

ycg123 发表于 2013-6-15 09:11:44

chengjia535 发表于 2013-6-15 00:14 static/image/common/back.gif
1. 程序要不是动态的就不是程序了
2. 楼主理解错了, 以为程序一运行,只能按一个方式, 所以想到让单片机执行 ...

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

surken 发表于 2013-6-15 09:17:38

那就做个PLC

lindabell 发表于 2013-6-15 09:32:59

应该可以吧,加载到ram里运行;应该就能满足LZ的要求了

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

cheungman 发表于 2013-6-15 09:45:12

BOOT + APP1 + APP2 + APP3 + APP4 + ...

duanll 发表于 2013-6-15 10:50:00

本帖最后由 duanll 于 2013-6-15 10:53 编辑

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

zhugean 发表于 2013-6-15 10:55:23

直接给他个PLC

xiongh 发表于 2013-6-15 11:12:43

PLC 上位机用组态软件,随时可以改变。

abcd200844 发表于 2013-6-15 11:33:47

就是一个逻辑关系的程序,你把程序写成按照 EEPROM的表格来做,没什么特别。

wajlh 发表于 2013-6-15 11:37:50

做个串口通信就行嘛,收到的数据存到eeprom里,程序运行时根据eeprom里的数据进行跳转就行嘛。考虑下临界状态就行。太简单了。或者直接用IAP做,升级整个程序。

chengjia535 发表于 2013-6-15 11:43:40

ycg123 发表于 2013-6-15 09:11 static/image/common/back.gif
首先谢谢你的回复。我对程序还是写过几年,有些小小理解。我是想包括程序逻辑都要改变。 ...

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

chengjia535 发表于 2013-6-15 11:52:11

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

jiangxingyuan 发表于 2013-6-15 11:52:13

把主程序写到引导区,然后动态更新要执行的程序.(只是设想,没有实现过){:lol:}

Elec_Ramble 发表于 2013-6-15 11:55:40

chengjia535 发表于 2013-06-15 11:43 static/image/common/back.gif

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

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

erpao 发表于 2013-6-15 12:42:13

中国的产品是中国的产品,是中国人设计的产品,准确无误地说是中国式思维设计的产品。一开始这种思维入住的话,就百毒不侵了,说啥也没用。问问题的是一种思维问,回答的也是同一种思维去回答。所以就是这样的,论坛缺少妇科圣手啊。

雨雪随行 发表于 2013-6-15 12:52:32

chengjia535 说的精彩

majianjia1991 发表于 2013-6-15 13:00:36

rtt 应用模块

gongxd 发表于 2013-6-15 13:32:32

万能的逻辑嘛 做好了就踢掉你了
所以收费要********************************

mcu_lover 发表于 2013-6-15 14:18:37

最方便也最一劳永逸的方法是实现一个简单虚拟机。其实就是实现一种解释语言。按照你的客户要求,我猜测只需要逻辑运算,算术运算和简单跳转就可以了。上位机不需要做成图形配置,简单的语句表就可以了,这样上位机工作量比较少。

mcu_lover 发表于 2013-6-15 14:19:27

最方便也最一劳永逸的方法是实现一个简单虚拟机。其实就是实现一种解释语言。按照你的客户要求,我猜测只需要逻辑运算,算术运算和简单跳转就可以了。上位机不需要做成图形配置,简单的语句表就可以了,这样上位机工作量比较少。

AIHHLI 发表于 2013-6-15 14:38:53

上虚拟机。

xstt 发表于 2013-6-15 14:51:25

单片机程序做成执行EEPROM内简化指令的方式,EEPROM内存放判断条件的逻辑关系的简化指令

sz2009 发表于 2013-6-15 14:57:58

如三楼所述: "3. 这个项目可以把上位机的配置当成程序的参数来做, 比如当温度怎么样的时候, 继电器怎么样. 这种逻辑关系. 存到eeprom里就行了."
   单片机做一个解析程序,解析存放到 EEPROM 中的数据,预先你要考虑需要有多少种可能,设置相应的"命令”到EEPRM, 这些"命令"由用户从上位机输入到EEPROM, 单片机执行这些"命令"即可
页: [1]
查看完整版本: 让单片机动态执行程序!