基于STM32F407 TFTP远程升级(局域网)

  1. 技术大纲摘要

基于TFTP文件传输协议,实现STM32F407局域网内远程网络升级。单片机与网络IC均采用正点原子的STM32F407探索者,采用RAW LWIP例程进行移植,采用lwip1.4.1版本。

在学习本技术前,应以熟悉TCP/IP中UDP协议,面向无连接,可支持同时多设备在线同时TFTP远程升级。

BootLoader_TFTP程序下载:

https://download.csdn.net/download/weixin_38366885/15419655?spm=1001.2014.3001.5503

APP应用程序:

https://download.csdn.net/download/weixin_38366885/15419655?spm=1001.2014.3001.5503

Tftpd64工具:

https://download.csdn.net/download/weixin_38366885/15419655?spm=1001.2014.3001.5503

1.1 关于TFTP介绍

TFTP是一个传输文件的简单协议,它基于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。(百度百科)

重点了解TFTP端口号69;TFTP基于UDP协议;TFTP操作码01-05;TFTP错误码01-07;TFTP各数据包,TFTP与FTP以及TFTP优势,等。

1.2 TFTP通讯架构图

单片机以客户端模式向TFTP服务器请求数据包;TFTP服务器收到请求后,开启一个客户端(可多个客户端)随机端口,连接到单片机服务端,并向单片机发送数据包1;单片机收到数据包1并完成处理后,向服务器返回收到数据包1确认消息。

若TFTP服务器没有收到ACK确认码,或单片机收到数据包错误,如下图:

              

2.  TFTP服务器搭建

2.1 Windows下TFTP服务器

开启WIN10下FTP服务:

配置本机电脑开启FTP传输协议(以WIN10_64位为例),“控制面板--》程序--》启用或关闭windows功能”,找到Internet information service(信息服务),并选中“FTP服务”、“FTP扩展性”和“IIS管理控制台”前的复选框,点击“确定”,

完成配置后,重启电脑。

下载“Tftpd64”应用,可作为Windows的TFTP服务器使用。

下载地址:...

2.2 基于Linux Ubuntu 18.04搭建TFTP服务器

        TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP 协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场合。TFTP 协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。

(1)安装xinetd                  “sudo apt-get install xinetd”

(2)安装tftp和tftpd            “sudo apt-get install tftp tftpd”

(3)简历tftp的配置文件     “vi /etc/xinetd.d/tftp”   必须严格按照下面的格式输入

     其中server_args 设置的/var/tftpboot 目录是tftp 服务器的目录,TFTP 客户端就是从这个目录里面获取服务器上的文件的

(4)新建tftp服务器目录 mkdir /var/tftpboot

(5)设置 /var/tftpboot 的访问权限为 777

(6)重启xinetd服务  “sudo /etc/init.d/xinetd restart”

根据上述操作,完成TFTP服务器搭建,并完成TFTP服务器配置。

linux系统建议采用静态IP。

服务器测试

(1)在/var/tftpboot 下面建立一个文件test,在里面输入tftptest success

(2)开启另外一个终端 输入   “tftp 127.0.0.1”

(3)输入get test

(4)通过ls 可以看到下载下来的那个文件  通过cat 输出文件内容

————————————————
原文链接:https://blog.csdn.net/zhuisaozhang1292/article/details/83047365

关于服务器上文件上传,前期可采用U盘,或TFTP命令来上传升级文件到服务器。

2.3 TFTP命令与测试

使用两条TFTP命令:

TFTP -i host GET source

TFTP -i host PUT source

将本地文件上传到TFTP服务器,具体操作如下:

host为服务器服务器IP地址。

将TFTP服务器文件下载到本地,具体操作如下:

2.4 抓取网络包

推荐使用wireshark , 具体使用,参考其他

下载地址:...

使用网络抓包工具,进行抓包分析数据,如下:

3. STM32F407编程

3.1 网络升级程序流程图Bootloader

3.2 BootLoader程序修改

本试验使用的网络芯片为LAN8720, 产品实际使用的是DP83848网络芯片,如有需求请联系博主。

LAN

修改tftp_example.c文件中的下载 文件名,目标IP

修改lwip_comm.c文件中的服务器IP,本地IP,子网掩码,默认网关

3.3 应用程序APP程序

应用程序应注意首地址起始位置,内存映射等问题。(参考正点原子的IAP程序

由于在BootLoader中将APP应用程序下载到0x08010000地址处(可修改),所以此处填写0x8010000。

偏移量设置为APP应用程序首地址:0x08010000

4.整体测试

将RTC.bin放到服务器上,烧录BootLoader程序:

完成测试,速度还可以。

5. 应用说明与实例

最好搭载W25QXX Flash与网络协议,做标志位判断,来判断是否升级APP应用程序。

因使用UDP方式,用于搭载本地服务器的设备。UDP外网技术涉及UDP穿透打洞技术,难以进行外网远程网络升级。

STM32是一种微控制器系列,具有强大的处理性能和丰富的外设功能。其中的以太网功能可以实现局域网中设备之间的通信。借助LWIP(Lightweight IP)协议栈,可以轻松地实现以太网通信。TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,用于在计算机网络中传输文件。通过将LWIP和TFTP结合使用,可以实现设备之间的文件传输。 而IAP(In-Application Programming)远程升级是指通过网络将固件或软件应用程序更新到设备中,而无需物理接触。使用STM32的以太网和LWIP协议栈,结合TFTP协议进行IAP远程升级是一种高效的方式。首先,设备需要连接到网络,然后使用LWIP协议栈进行以太网通信。接下来,通过TFTP协议从服务器下载更新的固件或软件应用程序。最后,通过IAP技术将更新的固件或软件应用程序烧录到设备中。 通过这种方式,可以方便、快捷地实现设备的远程升级。相较于传统的物理接触和手动升级方式,远程升级不仅节省了时间成本,还提高了效率和灵活性。同时,使用以太网和LWIP协议栈可以实现设备与网络的无缝连接,为设备的远程管理和维护提供了更多的可能性。 总而言之,STM32的以太网功能结合LWIP协议栈和TFTP协议,可以实现设备的远程升级。通过IAP技术,可以在无需物理接触的情况下,迅速将更新的固件或软件应用程序传输到设备中,提高设备的灵活性和维护效率。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值