基于STM32F407 TFTP远程升级(局域网)_正点原子tftp服务器-程序员宅基地

技术标签: stm32  网络  bootloader  tftp  iap  STM32 TFTP  

  1. 技术大纲摘要

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

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

 

BootLoader_TFTP程序下载:

APP应用程序:

Tftpd64工具:

 

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穿透打洞技术,难以进行外网远程网络升级。

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38366885/article/details/115346192

智能推荐

http隧道 java_使用java语言实现http隧道技术-程序员宅基地

文章浏览阅读119次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼/***Getaparametervalue**@paramkeyString*@paramdefString*@returnString*/publicStringgetParameter(Stringkey,Stringdef){returnisStandalone?System.getProperty(ke..._java http隧道

Keepalived高可用+邮件告警_keepalived sendmail-程序员宅基地

文章浏览阅读913次。IP主机名备注192.168.117.14keepalived-master主节点192.168.117.15keepalived-slaver备节点192.168.117.100VIP1.主备节点均安装keepalived# yum install -y keepalived httpd2.主备节点均修改keepalived日志存放路径..._keepalived sendmail

SPFILE 错误导致数据库无法启动(ORA-01565)_ora01565 ora27046-程序员宅基地

文章浏览阅读469次。--==========================================--SPFILE错误导致数据库无法启动(ORA-01565)--========================================== SPFILE错误导致数据库无法启动 SQL> startup ORA-01078: failurein proce_ora01565 ora27046

功能测试基础知识(1)-程序员宅基地

文章浏览阅读6.1k次,点赞2次,收藏54次。功能测试基础知识总结_功能测试

postgresql 中文排序_pg中文排序-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏2次。pg 中文首字母排序_pg中文排序

[Mysql] CONVERT函数_mysql convert-程序员宅基地

文章浏览阅读3.1w次,点赞23次,收藏109次。本文主要讲解CONVERT函数_mysql convert

随便推点

HTML5与微信开发(2)-视频播放事件及API属性_微信开发者工具视频快进-程序员宅基地

文章浏览阅读8.6k次,点赞2次,收藏2次。HTML5 的视频播放事件想必大家已经期待很久了吧,在HTML4.1、4.0之前我们如果在网页上播放视频无外乎两种方法: 第一种:安装FLASH插件或者微软发布的插件 第二种:在本地安装播放器,在线播放组件之类的 因为并不是所有的浏览器都安装了FLASH插件,就算安装也不一定所有的都能安装成功。像苹果系统就是默认禁用FLASH的,安卓虽然一开始的时候支持FLASH,但是在安卓4.0以后也开始不_微信开发者工具视频快进

JedisConnectionException Connection Reset_jedisconnectionexception: java.net.socketexception-程序员宅基地

文章浏览阅读5.4k次,点赞3次,收藏4次。在使用redis的过程常见错误总结1.JedisConnectionException Connection Reset参考这边文章:Connection reset原因分析和解决方案https://blog.csdn.net/cwclw/article/details/527971311.1问题描述Exception in thread "main" redis.clients...._jedisconnectionexception: java.net.socketexception: connection reset

Lua5.3版GC机制理解_lua5.3 gc-程序员宅基地

文章浏览阅读8.3k次,点赞8次,收藏42次。目录1.Lua垃圾回收算法原理简述2.Lua垃圾回收中的三种颜色3.Lua垃圾回收详细过程4.步骤源码详解4.1新建对象阶段4.2触发条件4.3 GC函数状态机4.4标记阶段4.5清除阶段5.总结参考资料lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁,目前大多数有关这个方面的文章都还是基于lua5.1版本,有一定的滞后性。因此本文通过参考当前..._lua5.3 gc

手机能打开的表白代码_能远程打开,各种手机电脑进行监控操作,最新黑科技...-程序员宅基地

文章浏览阅读511次。最近家中的潮人,老妈闲着没事干,开始学玩电脑,引起他的各种好奇心。如看看新闻,上上微信或做做其他的事情。但意料之中的是电脑上会莫名出现各种问题?不翼而飞的图标?照片又不见了?文件被删了,卡机或者黑屏,无声音了,等等问题。常常让她束手无策,求助于我,可惜在电话中说不清,往往只能苦等我回家后才能解决,那种开心乐趣一下子消失了。想想,这样也不是办法啊, 于是,我潜心寻找了两款优秀的远程控制软件。两款软件...

成功Ubuntu18.04 ROS melodic安装Cartograhper+Ceres1.13.0,以及错误总结_ros18.04 安装ca-程序员宅基地

文章浏览阅读1.8k次。二.初始化工作空间三.设置下载地址四.下载功能包此处可能会报错,请看:rosdep update遇到ERROR: error loading sources list: The read operation timed out问题_DD᭄ꦿng的博客-程序员宅基地接下来一次安装所有功能包,注意对应ROS版本 五.编译功能包isolated:单独编译各个功能包,每个功能包之间不产生依赖。编译过程时间比较长,可能需要几分钟时间。此处可能会报错:缺少absl依赖包_ros18.04 安装ca

Harbor2.2.1配置(trivy扫描器、镜像签名)_init error: db error: failed to download vulnerabi-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏7次。Haobor2.2.1配置(trivy扫描器、镜像签名)docker-compose下载https://github.com/docker/compose/releases安装cp docker-compose /usr/local/binchmod +x /usr/local/bin/docker-composeharbor下载https://github.com/goharbor/harbor/releases解压tar xf xxx.tgx配置harbor根下建立:mkd_init error: db error: failed to download vulnerability db: database download

推荐文章

热门文章

相关标签