rtt有个通用bootloader,但是只有两种下载方式,Ymodem(这个好像是通过串口串数?),http方式。
那么如何实现tcp方式固件升级呢?
离线
https://gitee.com/akinggw/MIVMS/tree/master/f1c100s-rtt 这里有现成的,但还没法实现脚本热更新,后面将实现逻辑热更新,最好再加上远程调试
离线
直接作为ftp服务器,把固件拖进去就行了
离线
看了通用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以内,有点难啊。
离线
走lwip协议栈,开启一个tcp服务,接收数据,校验,存储
离线
@Gentlepig
1.通过TCP端口区分;
2.通过应用层协议的命令字区分;
离线
@Gentlepig
网上找到一篇FAL的原理,我觉得写得很详细,发给你参考下:
https://blog.csdn.net/m0_37621078/article/details/102689903
离线
感谢各位,现在是计划用hfs这个软件,在pc上建立个http server。然后通过can发送个特殊指令,板子就开始从http server下载固件。
离线