您尚未登录。

楼主 # 2021-07-31 10:27:49

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

rt thread如何通过tcp实现固件更新?

rtt有个通用bootloader,但是只有两种下载方式,Ymodem(这个好像是通过串口串数?),http方式。
那么如何实现tcp方式固件升级呢?

离线

#1 2021-07-31 10:49:56

aozima
会员
所在地: 深圳
注册时间: 2019-05-25
已发帖子: 463
积分: 330.5
个人网站

Re: rt thread如何通过tcp实现固件更新?

照猫画虎,自己改个呗。

先读代码搞清原理,Ymodem/http方式 是把新固件写哪了,你用你自己项目合适的方式给写入去呗。
http方式 也算是 TCP方式呢

离线

#2 2021-07-31 11:44:01

akinggw
会员
注册时间: 2020-04-02
已发帖子: 25
积分: 34.5

Re: rt thread如何通过tcp实现固件更新?

https://gitee.com/akinggw/MIVMS/tree/master/f1c100s-rtt 这里有现成的,但还没法实现脚本热更新,后面将实现逻辑热更新,最好再加上远程调试

离线

#3 2021-07-31 14:09:16

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 630
积分: 525
个人网站

Re: rt thread如何通过tcp实现固件更新?

直接作为ftp服务器,把固件拖进去就行了

离线

楼主 #4 2021-07-31 16:46:30

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: rt thread如何通过tcp实现固件更新?

看了通用bootloader的ymodem和http的例子,都是下载固件后,然后调用fal一些函数,来找“download"分区、擦除,然后写入,再重启芯片。

我现在是用板子作为tcp client来接收数据。那么,如何区分正常数据和传过来的固件呢?

另,芯片flash分区为何要是128k的倍数呢?我下载的通用bootloader也才十几k,分配128k boot分区不是太浪费了吗?

我用的是512k rom的片子,是4个128k,boot分区占1个,剩下3个128k,app给分256k,downloader分区就128k了。但升级固件不压缩的话,一般和app固件大小差不多的吧。这样来说如果只用片内flash的话,程序最好控制在128k以内,有点难啊。

离线

#5 2021-08-06 09:36:47

fanwei700615
会员
注册时间: 2021-08-05
已发帖子: 12
积分: 5

Re: rt thread如何通过tcp实现固件更新?

走lwip协议栈,开启一个tcp服务,接收数据,校验,存储

离线

#6 2021-08-06 11:27:57

JasonWoo
会员
注册时间: 2019-06-04
已发帖子: 84
积分: 55.5

Re: rt thread如何通过tcp实现固件更新?

@Gentlepig
1.通过TCP端口区分;
2.通过应用层协议的命令字区分;

离线

#7 2021-08-06 11:38:17

JasonWoo
会员
注册时间: 2019-06-04
已发帖子: 84
积分: 55.5

Re: rt thread如何通过tcp实现固件更新?

@Gentlepig
网上找到一篇FAL的原理,我觉得写得很详细,发给你参考下:
https://blog.csdn.net/m0_37621078/article/details/102689903

离线

楼主 #8 2021-09-13 09:08:04

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: rt thread如何通过tcp实现固件更新?

感谢各位,现在是计划用hfs这个软件,在pc上建立个http server。然后通过can发送个特殊指令,板子就开始从http server下载固件。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn