你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
在单片机上运行app程序
[复制链接]
cheny3922
提问时间:2017-5-5 11:14 /
阅读主题, 点击返回1楼
赞
0
收藏
1
评论
34
分享
发布时间:2017-5-5 11:14
请先
登录
后回复
34个回答
手捧流年风和月
回答时间:2017-12-21 20:20:20
a0a.1 32b0c
我的想法是,我们稍加改动,使得在启动app之前先询问是否启动,确认即将系统任务状态进行记录,保存到flash中,完成之后载入app。然后在app启动之后我们通过复位按键重新进入系统,预先在主程序中写入加载flash记录,回到上一次任务中断的地方。
评分
参与人数
1
ST金币
+1
收起
理由
zero99
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
fashaoyoua
回答时间:2017-12-21 20:33:20
a0a.1 32b0c
我觉得这么做是完全可以的,但是这样做还是有局限。倒不如将系统做的更完善一点。像手机一样,可以开发app同时也可以实现多任务共同运行。这样就可以将app与系统独立出来,
以后的开发也就更专业了。现在的单片机性能越来越好,我觉得肯定能实现。
赞
0
评论
回复
支持
反对
predator-205795
回答时间:2017-12-21 21:11:55
a0a.1 32b0c
这个问题推出后不能继续执行程序的原因,我认为是用这样的方法,mcu的中断向量表已经被改成所谓app程序的了,而当初的所谓系统的中断向量表偏移地址已经丢了,而且也没有设置机制让程序重新跳转回所谓的系统程序。
我的想法是,改掉app的中断向量表偏移地址,当执行app程序是,跳转到app程序开始的地方执行,但app程序中需要加入一个利用按键终端触发的无条件跳转到系统程序开始执行位置的语句,这样就能在系统程序和app程序之间来回切换而不必重新启动系统
评分
参与人数
1
ST金币
+1
收起
理由
zero99
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
anobodykey
回答时间:2017-12-21 21:27:57
a0a.1 32b0c
感觉不太容易实现,如果要调用bin文件来执行,肯定是要把bin文件写入到STM32的内部FLASH空间的,但STM32内部FLASH的空间最大的也才2MB左右吧,而且需要十分严格的内存管理机制,毕竟STM32是不支持MMU的,而且楼主的思想感觉是有个操作系统的概念在里面,由操作系统来对bin文件进行调度,而且这个bin文件是可以结束的,如果是根据IAP的思想的话感觉无法做到无缝链接,期待高人解答吧
评分
参与人数
1
ST金币
+1
收起
理由
zero99
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
射手战斗的红星
回答时间:2017-12-21 21:37:02
a0a.1 32b0c
不是很了解 ,做活动 。
赞
0
评论
回复
支持
反对
wolfgang2015
回答时间:2017-12-21 22:12:57
a0a.1 32b0c
主要主程序具备IAP功能,能将访问到的BIN文件烧写到SRAM并运行(PC指针运行到该区域);
Bin文件代码在运行完毕后,PC能恢复到主代码的PC栈中的代码继续执行主代码的程序;恢复主程序中断偏移量;
评分
参与人数
1
ST金币
+1
收起
理由
zero99
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
yang_alex
回答时间:2017-12-21 22:30:17
a4a.1 32b0c
本帖最后由 yang_alex 于 2017-12-21 23:06 编辑
这个应该是没问题的啊。现成的有elua和micropython。只要是解释型的语言或者脚本语言都可以吧。elua可以看看:
http://www.eluaproject.net/
micropython可以看看:(已经移植到好几种Nucleo评估板上了)
http://micropython.org/
评分
参与人数
1
ST金币
+1
收起
理由
zero99
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
feixiang20
回答时间:2017-12-21 22:35:01
a0a.1 32b0c
个人觉得想法是好的,可以尝试,但是恐怕编程能力需要很强
赞
0
评论
回复
支持
反对
toofree
回答时间:2017-12-21 22:59:35
a0a.1 32b0c
啥也不说了,你说的这功能不就是 micropython 能干的活嘛,哈哈。
或者组态软件,做成类似链表的形式,每个小子程序都存在ROM中,但是总体有一张表,可以随时通过加载链表序号的形式运行程序。
评分
参与人数
1
ST金币
+1
收起
理由
zero99
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
xiefy21
回答时间:2017-12-21 23:10:40
a0a.1 32b0c
可以实现;每个任务bin文件单独编译(指定地址);存储到SPI Flash中,运行时直接拷贝到相应的地址上,底层硬件接口可以采用接口列表的形式实现底层接口的共享调用;
评分
参与人数
1
ST金币
+1
收起
理由
zero99
+ 1
查看全部评分
赞
0
评论
回复
支持
反对
1
2
3
4
/ 4 页
下一页
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
评分
查看全部评分
以后的开发也就更专业了。现在的单片机性能越来越好,我觉得肯定能实现。
我的想法是,改掉app的中断向量表偏移地址,当执行app程序是,跳转到app程序开始的地方执行,但app程序中需要加入一个利用按键终端触发的无条件跳转到系统程序开始执行位置的语句,这样就能在系统程序和app程序之间来回切换而不必重新启动系统
评分
查看全部评分
评分
查看全部评分
主要主程序具备IAP功能,能将访问到的BIN文件烧写到SRAM并运行(PC指针运行到该区域);
Bin文件代码在运行完毕后,PC能恢复到主代码的PC栈中的代码继续执行主代码的程序;恢复主程序中断偏移量;
评分
查看全部评分
这个应该是没问题的啊。现成的有elua和micropython。只要是解释型的语言或者脚本语言都可以吧。elua可以看看:
http://www.eluaproject.net/
micropython可以看看:(已经移植到好几种Nucleo评估板上了)
http://micropython.org/
评分
查看全部评分
或者组态软件,做成类似链表的形式,每个小子程序都存在ROM中,但是总体有一张表,可以随时通过加载链表序号的形式运行程序。
评分
查看全部评分
评分
查看全部评分