OpenEdv-开源电子网

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

服务器通过远传模块远程更新APP

[复制链接]

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
发表于 2018-7-4 16:43:44 | 显示全部楼层 |阅读模式
1金钱
我现在已经实现本地更新APP程序,即将HEX文件通过串口存入主站电路板的SD卡中,然后主站通过485通信以及modbus协议等,将HEX文件发送到从站中,从站已经下载好了bootloader引导程序,主站只要给出一个信号,比如按键操作,就可以进行更新了。现在要实现远程更新,由于我用的远传模块一次只能承载1K的数据,而HEX文件远远不止1K,所以只能在服务器中将HEX文件分割成1K的数据包,并且标上序号,如1.hex,2.hex,.....,将分割好的文件在服务器通过我的USR-G760c 3GDTU远传模块发送到单片机中,但是问题就是:

我该如何让单片机将这些文件重新有序拼接成一个完整的HEX文件?我了解了c文件操作函数,但是还是没有什么进展,希望能得到大家的指导。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-4 16:46:04 | 显示全部楼层
还请各位同仁发表意见,我最近也是为此很头疼啊!
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-4 16:47:27 | 显示全部楼层
各位理我一下嘞??
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-4 16:48:38 | 显示全部楼层
这是我本地更新的代码,仅供参考啊。
回复

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2018-7-3
在线时间
21 小时
发表于 2018-7-4 17:38:50 | 显示全部楼层
这叙事能力有待加强啊
你可以传1k,烧1k啊,干嘛要拼接啥的。
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-5 08:47:30 | 显示全部楼层
我更新HEX文件的话,必须是一个完整的HEX文件,按您说的传1K烧1K,这些分开的数据包并不是意义上的HEX文件。
我必须把她重新拼接成一个完整的HEX文件,通过串口存入SD卡,才能去更新我的从站APP。
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-7-5 09:32:11 | 显示全部楼层
楼主本地怎么干的,远程就怎么干
一分耕耘一分收获。
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-5 10:14:04 | 显示全部楼层
yklstudent 发表于 2018-7-5 09:32
楼主本地怎么干的,远程就怎么干

我.....................
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-7-5 10:21:21 | 显示全部楼层
新建一个文件,接收到数据就写入这个文件,用fatfs,不知这样能不能满足
我有故事,你有酒吗
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-7-5 10:24:03 | 显示全部楼层
来俩不甜的 发表于 2018-7-5 10:21
新建一个文件,接收到数据就写入这个文件,用fatfs,不知这样能不能满足

你主站通过modbus往从站发送hex文件,modbus一帧报文肯定小于255的,从站怎么把这些数据组装的,怎么到了1k反而不会操作了呢
我有故事,你有酒吗
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-5 10:39:06 | 显示全部楼层
来俩不甜的 发表于 2018-7-5 10:24
你主站通过modbus往从站发送hex文件,modbus一帧报文肯定小于255的,从站怎么把这些数据组装的,怎么到了 ...

BootLoader这段引导程序中有xmode协议,协议中定义了缓冲区,怎么接收数据以及文件的校验方式,只要我把桥(modbus协议,485通信)搭好,bootloader就可以将APP程序引导进从站更新。
现在是从服务器发过来,通过透传模块(相当于一个串口的功能)发送到我的主站SD卡中,这个透传模块一次最多发送1K数据包,我是想着把他拼接就好(注:对应序号接收到的文件放到集合里面,再给序号按大小排个序,再按排序好了之后的顺序把N个集合合成一个集合),然后再发送到SD卡中。
本地更新我就用串口调试助手发送文件,只要加入了串口写入SD卡的代码,就可以将HEX文件通过串口发送到SD卡中。
是不是我想的太复杂了?
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-5 10:40:38 | 显示全部楼层
来俩不甜的 发表于 2018-7-5 10:24
你主站通过modbus往从站发送hex文件,modbus一帧报文肯定小于255的,从站怎么把这些数据组装的,怎么到了 ...

上网查资料说是用到c文件操作函数,但是尝试无果,还是能力有限啊,所以发帖希望各位给点建议。
回复

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3772
金钱
3772
注册时间
2015-4-26
在线时间
765 小时
发表于 2018-7-5 10:42:35 | 显示全部楼层
xiaoyintongzhi 发表于 2018-7-5 10:40
上网查资料说是用到c文件操作函数,但是尝试无果,还是能力有限啊,所以发帖希望各位给点建议。

那你就用fatfs吗,肯定能满足你的要求
我有故事,你有酒吗
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-5 10:46:50 | 显示全部楼层
来俩不甜的 发表于 2018-7-5 10:42
那你就用fatfs吗,肯定能满足你的要求

嗯嗯,谢谢您的指导。
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2018-7-4
在线时间
4 小时
 楼主| 发表于 2018-7-5 10:54:48 | 显示全部楼层
xiaoyintongzhi 发表于 2018-7-5 10:46
嗯嗯,谢谢您的指导。

还有疑问就是,我用FATFS文件系统实现多次在一个文件中写入数据,一般HEX文件格式严谨,会不会出现些进去的内容格式混乱,没有及时换行等问题?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 22:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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