OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5662|回复: 11

有没有使用过JSON 来进行把部分代码打包, 烧录进入MCU中的?

[复制链接]

49

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1182
金钱
1182
注册时间
2020-5-13
在线时间
202 小时
发表于 2020-12-23 17:23:54 | 显示全部楼层 |阅读模式
50金钱
     最近开发一个项目,   有一部分代码是固定的, 然后一部分代码是可以更改.  
我的想法是, 先把固定代码烧录在单片机中, 并且这部分代码可以独立运行, 不影响.   
另一部分代码可以改动, 想通过JSON打包 放入MCU指定的flash中. 然后实现改动代码的效果.

最佳答案

查看完整内容[请看2#楼]

我已经实现了并已通过验证,刚刚也把说明文档完善了,可以参考实现。 参见gitee: https://gitee.com/ufbycd/static_module 欢迎提交 Pull Request,共同改进。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

312

帖子

0

精华

高级会员

Rank: 4

积分
907
金钱
907
注册时间
2011-10-19
在线时间
196 小时
发表于 2020-12-23 17:23:55 | 显示全部楼层
本帖最后由 ufbycd 于 2020-12-30 15:33 编辑
肖暗博 发表于 2020-12-30 15:00
大神, 你这边的类似中断的向量表是如何做的?   有没有实践的资料?

我已经实现了并已通过验证,刚刚也把说明文档完善了,可以参考实现。
参见gitee: https://gitee.com/ufbycd/static_module
欢迎提交 Pull Request,共同改进。
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4471
金钱
4471
注册时间
2013-4-22
在线时间
335 小时
发表于 2020-12-23 20:37:20 | 显示全部楼层
JSON不可以吧
回复

使用道具 举报

49

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1182
金钱
1182
注册时间
2020-5-13
在线时间
202 小时
 楼主| 发表于 2020-12-23 23:11:57 | 显示全部楼层

我是想到这个方案, 具体可不可行不知道。  不知道大神有没有对应的解决方案。
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6719
金钱
6719
注册时间
2017-4-12
在线时间
1257 小时
发表于 2020-12-23 23:16:38 | 显示全部楼层
想多了。。。
回复

使用道具 举报

49

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1182
金钱
1182
注册时间
2020-5-13
在线时间
202 小时
 楼主| 发表于 2020-12-24 09:08:36 | 显示全部楼层

这个方案我也实施不出来. 看大神们有没有其他的解决方案.
回复

使用道具 举报

49

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1182
金钱
1182
注册时间
2020-5-13
在线时间
202 小时
 楼主| 发表于 2020-12-24 11:24:59 | 显示全部楼层

那大神有没有好一点的方法.
困惑在这儿了.
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2017-5-20
在线时间
30 小时
发表于 2020-12-25 16:58:05 | 显示全部楼层
可以使用C解析器。
不过你说的功能,怎么有点像IAP?
回复

使用道具 举报

49

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1182
金钱
1182
注册时间
2020-5-13
在线时间
202 小时
 楼主| 发表于 2020-12-25 17:14:47 | 显示全部楼层
winuc 发表于 2020-12-25 16:58
可以使用C解析器。
不过你说的功能,怎么有点像IAP?

有C解析器的相关资料?   

IAP 我做过的, IAP完全相当于是重新更新程序.
而我现在想做的是 只需要更新部分的代码.
就是看这个代码是用上位机解析嘞, 还是放在MCU里面去解析.
回复

使用道具 举报

3

主题

312

帖子

0

精华

高级会员

Rank: 4

积分
907
金钱
907
注册时间
2011-10-19
在线时间
196 小时
发表于 2020-12-25 22:30:18 | 显示全部楼层
肖暗博 发表于 2020-12-25 17:14
有C解析器的相关资料?   

IAP 我做过的, IAP完全相当于是重新更新程序.

你这类似于动态模块,可以参考linux和rt-thread的动态模块的实现。
但又不完全是动态模块,动态的意思是把模块加载到内在,而你是要加载到Flash,可以将模块放到指定的固定的位置,所以并不是动态的。

那么就可以简单实现:将模块需要调用的APP的函数地址存储在一张表里,类似于中断向量表;同样地,将APP的要调用的模块内的函数也做成“函数”向量表。这两个向量表的地址都固定,调用时就用函数指跳转就行了。
回复

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2017-5-20
在线时间
30 小时
发表于 2020-12-29 11:21:29 | 显示全部楼层
"这部分代码可以独立运行, 不影响"
那就是用IAP的方式做就可以了。IAP更新需要的部分代码。

C解析器其实就是在单片机里集成了可以解析C程序的代码,可以运行用TXT文档写的程序。这个很久以前使用过,用的是开源程序,好像叫 C parser 。你可以搜索看看。现在忘记源码在哪了。
我觉得你说的功能,还是用IAP的方法做好一些。
回复

使用道具 举报

49

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1182
金钱
1182
注册时间
2020-5-13
在线时间
202 小时
 楼主| 发表于 2020-12-30 15:00:10 | 显示全部楼层
ufbycd 发表于 2020-12-25 22:30
你这类似于动态模块,可以参考linux和rt-thread的动态模块的实现。
但又不完全是动态模块,动态的意思是 ...

大神, 你这边的类似中断的向量表是如何做的?   有没有实践的资料?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-1 05:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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