你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在单片机上运行app程序  

[复制链接]
cheny3922 提问时间:2017-5-5 11:14 /
阅读主题, 点击返回1楼
收藏 1 评论34 发布时间:2017-5-5 11:14
34个回答
nyszx 回答时间:2017-12-21 19:56:20
估计可以参考java的运行方式,在stm32上跑一个特殊的虚拟机,执行可动态加载的程序。
nyszx 回答时间:2017-12-21 20:05:59
搜索了一下发现老早就有这样的想法了:http://www.openedv.com/posts/list/11846.
在RAM中执行Bin文件,但是要保存Flash中程序的运行状态,堆栈,PC指针等等执行完Bin后恢复现场,实现实时系统中的任务调度原理。

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

yangjiaxu 回答时间:2017-12-21 20:06:49
应该不能吧,没试过,可以加中断么?应该可以加中断的
回答时间:2017-12-21 20:11:02
我是觉得单片机的功能是简单可靠,如果需要比较复杂的任务,可以选择类似手机的芯片来运行。单片机能够做到稳定可靠,简单开发,就是最棒了~~~~~~
nyszx 回答时间:2017-12-21 20:17:38
RT-Thread可以创建动态线程。应该能实现楼主的想法
手捧流年风和月 回答时间:2017-12-21 20:20:20
我的想法是,我们稍加改动,使得在启动app之前先询问是否启动,确认即将系统任务状态进行记录,保存到flash中,完成之后载入app。然后在app启动之后我们通过复位按键重新进入系统,预先在主程序中写入加载flash记录,回到上一次任务中断的地方。

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

豳草 回答时间:2017-12-21 20:33:20
我觉得这么做是完全可以的,但是这样做还是有局限。倒不如将系统做的更完善一点。像手机一样,可以开发app同时也可以实现多任务共同运行。这样就可以将app与系统独立出来,
以后的开发也就更专业了。现在的单片机性能越来越好,我觉得肯定能实现。
predator-205795 回答时间:2017-12-21 21:11:55
这个问题推出后不能继续执行程序的原因,我认为是用这样的方法,mcu的中断向量表已经被改成所谓app程序的了,而当初的所谓系统的中断向量表偏移地址已经丢了,而且也没有设置机制让程序重新跳转回所谓的系统程序。
我的想法是,改掉app的中断向量表偏移地址,当执行app程序是,跳转到app程序开始的地方执行,但app程序中需要加入一个利用按键终端触发的无条件跳转到系统程序开始执行位置的语句,这样就能在系统程序和app程序之间来回切换而不必重新启动系统

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

anobodykey 回答时间:2017-12-21 21:27:57
感觉不太容易实现,如果要调用bin文件来执行,肯定是要把bin文件写入到STM32的内部FLASH空间的,但STM32内部FLASH的空间最大的也才2MB左右吧,而且需要十分严格的内存管理机制,毕竟STM32是不支持MMU的,而且楼主的思想感觉是有个操作系统的概念在里面,由操作系统来对bin文件进行调度,而且这个bin文件是可以结束的,如果是根据IAP的思想的话感觉无法做到无缝链接,期待高人解答吧

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

射手战斗的红星 回答时间:2017-12-21 21:37:02
不是很了解  ,做活动   。
wolfgang 回答时间:2017-12-21 22:12:57

主要主程序具备IAP功能,能将访问到的BIN文件烧写到SRAM并运行(PC指针运行到该区域);
Bin文件代码在运行完毕后,PC能恢复到主代码的PC栈中的代码继续执行主代码的程序;恢复主程序中断偏移量;

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

yang_alex 回答时间:2017-12-21 22:30:17
本帖最后由 yang_alex 于 2017-12-21 23:06 编辑

这个应该是没问题的啊。现成的有elua和micropython。只要是解释型的语言或者脚本语言都可以吧。elua可以看看:
http://www.eluaproject.net/
micropython可以看看:(已经移植到好几种Nucleo评估板上了)
http://micropython.org/

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

feixiang20 回答时间:2017-12-21 22:35:01
个人觉得想法是好的,可以尝试,但是恐怕编程能力需要很强
七哥 回答时间:2017-12-21 22:59:35
啥也不说了,你说的这功能不就是 micropython 能干的活嘛,哈哈。
或者组态软件,做成类似链表的形式,每个小子程序都存在ROM中,但是总体有一张表,可以随时通过加载链表序号的形式运行程序。

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

枫W 回答时间:2017-12-21 23:10:40
可以实现;每个任务bin文件单独编译(指定地址);存储到SPI Flash中,运行时直接拷贝到相应的地址上,底层硬件接口可以采用接口列表的形式实现底层接口的共享调用;

评分

参与人数 1ST金币 +1 收起 理由
zero99 + 1

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版