0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用AT32F407以太网通信接口实现在应用中编程(IAP)

jf_pJlTbmA9 来源:AT32 MCU 雅特力科技 作者:AT32 MCU 雅特力科技 2023-11-07 17:20 次阅读

IAP概述

工作原理

在应用中编程(IAP)是一种在现场通过 MCU 通信接口(例如 USART、USBCAN以太网)进行固件升级的方式。

启动微控制器时,可以选择让其在以下任一模式运行:

IAP模式,用于执行IAP代码

正常模式,用于执行应用程序代码

无论是IAP代码还是应用程序代码都位于微控制器的内置FLASH中,IAP代码通常存储在MCU FLASH的第一页,而用户应用程序代码则占据剩余的FLASH区域。

图1介绍了IAP操作流程

100564539-273307-1.png

使用MCU以太网接口实现IAP

如果有以太网可用,则它通常是嵌入式系统中实现IAP功能的首选接口,其优势包含:

高速通信接口(10/100 Mbps)

通过网络(LAN或WAN)进行远程编程

可以使用FTP、TFTP、HTTP等基于TCP/IP栈的标准应用协议实现IAP

通过以太网在AT32F407上实现IAP

本应用笔记将介绍两种使用以太网通信外设在AT32F407上实现IAP的解决方案:

使用TFTP(简单文件传输协议)的IAP

使用HTTP(超文本传输协议)的IAP

这两种解决方案均基于LwIP栈(2.1.2), 它是轻量级的TCP/IP协议栈

使用TFTP实现IAP方法

使用TFTP实现IAP的方法广泛应用于需要具有固件升级功能的嵌入式系统应用中(例如,嵌入式Linux bootloader中)。

TFTP是一种在UDP传输层上执行的简单文件传输协议。此协议非常适合在局域网环境中使用。它基于客户端/服务器架构,在这种架构中,客户端会向服务器发出文件传输请求(读取或写入操作)。为实现IAP,需要在LwIP协议栈上实现一个简单的TFTP服务器,服务器只须处理来自PC的TFTP客户端的写入请求即可。

使用HTTP实现IAP方法

使用HTTP协议进行固件升级没有使用TFTP常见,但是在需要通过Internet进行远程编程时,这种解决方案就显得极为有用。这时,需要使用TCP传输协议来实现HTTP服务。

HTTP基于TCP协议运行,它提供了一个一种以HTML表单形式从Web客户端(Mozilla Firefox或Microsoft Internet Explorer)发送一个二进制文件的方式。这称为HTTP文件上传(RFC1867)。

本文档中的后续章节将详细介绍这两种IAP方法的实现,并会对如何使用软件进行说明。

使用TFTP实现IAP

TFTP概述

TFTP是一种基于UDP的简单文件传输协议。文件传输由TFTP客户端发起,会向TFTP服务器发送读取或写入请求。服务器确认请求后,即开始进行文件数据传输。数据将以固定大小的块尽情发送(例如每块含512个字节)。

必须在每个发出的数据块都得到接收方确认后,才可以发送下一个数据块。这种确认机制通过随各个数据块一同发送的编块号来实现。数据块小于固定块大小表示文件传输的结束。

图2描述了各种TFTP数据包的格式:

100564539-273308-2.png 图2 TFTP数据包

表1列出了TFTP操作码。

100564539-273309-3.png 表1 TFTP操作码

使用TFTP为AT32F407实现IAP

此IAP实现由基于LwIP TCP/IP栈的TFTP服务器组成。

此服务器会对远程TFTP客户端(PC)发来的写请求做出响应。

TFTP读请求会被忽略。

TFTP通常会将接收到的文件写入到文件系统,但是该服务器却并非如此,它会将接受到的数据块写入到MCU FLASH(用户FLASH区域中)。

注:在这个实现过程中,数据块大小固定为512个字节。

图3概述了使用TFTP实现IAP操作的过程。

100564539-273310-4.png 图3 使用TFTP实现IAP流程图

使用软件

要通过TFTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消USE_IAP_TFTP选项的注释。

2. 重新编译软件。使用生成的映射文件,确保IAP代码区域之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要在按住开发版上的USER Key。

5. 分配完IP后(可以是静态或动态地址),用户即可启动IAP流程。

6. 在PC侧,打开TFTP客户端(例如Tftpd64),然后配置TFTP服务器地址(Tftpd64中的主机地址)

7. 单击Tftpd64实用程序中的Put(写入)按钮,启动文件写请求

8. 在IAP操作结束时,可以复位开发板并在AT32 FLASH中运行刚刚编写的应用程序

wKgZomUD3DaAP0M9AAEvs8SXF7g900.png 图4 TFTP64对话框

使用HTTP实现IAP

HTTP文件上传概述

RFC1867中定义了使用HTTP进行文件上传。此文件上传方法是基于HTTP表单。发送原始二进制数据时,要使用HTTP POST方法而不是GET方法。

以下是一个HTML代码示例,用于实现基于表单的文件上传:

100564539-273312-6.png 图5 文件上传HTML表单的浏览器画面

注:在发送文件数据前,Web客户端会首先发送HTTP头文件数据,其中包含诸如文件名称和内容长度等信息,Web 服务器必须对其中的一些信息进行解析。

Web客户端使用的HTTP头文件格式并不总是相同。图6显示的是Internet Explorer在POST请求中的HTTP头文件格式。图7显示的是Mozilla Firefox的HTTP头文件格式。

HTTP Web服务器必须能够处理这些不同的格式。

wKgaomUD3DqACfeYAAFiiVe6dqc646.png 图6 IE11 HTTP头文件格式

wKgaomUD3DuAFUgnAAGnPgAqMfk246.png 图7 Mozilla Firefox HTTP头文件格式

使用HTTP在AT32F407上实现IAP

此IAP实现由基于LwIP栈的HTTP Web服务器组成。

在浏览器中输入的AT32的IP地址后,将显示登录Web页面(图8)。此登录Web页面只有已获授权的用户才能使用IAP文件上传功能。

wKgZomUD3D2ABqUjAABPXgYvK2o705.png 图8 登录web页面

注:1. 默认的User ID(用户ID)为user, Password(密码)为at32
2. 如果User ID(用户ID)或Password(密码)不正确,登录Web页面会重新加载。

登录成功后,浏览并选择要上传到AT32 FLASH的二进制文件

注:确保二进制文件大小不超过AT32用户FLASH区域的总容量。
单击Upload(上传)按钮后(参见图x),将向服务器发出POST请求。这时,服务器开始擦除用户FLASH区域的全部内容,等待接受二进制文件原始数据。然后将街收到的数据写入用户FLASH区域。

注意,要接收的数据总长度信息将从传输开始时发出的HTTP头文件数据中提取。

在IAP操作结束后,Web页面将只是IAP操作成功,同时显示一个可用于复位MCU的按钮。

wKgZomUD3D6ARSbDAAAx1_xGT3w209.png 图9 文件上传完成web页面

图10对使用HTTP实现IAP方法进行了总结

wKgaomUD3ECAMH76AAKoL4-m0EA128.png 图10 使用HTTP实现IAP的流程图

使用软体

要使用HTTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消选项USE_IAP_HTTP的注释。

2. 重新编译软件,使用生成的映射文件,确保IAP区域代码之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要再按住开发版上的USER Key。

5. 分配完IP地址后(可以是静态或动态地址),用户即可启动IAP流程

6. 打开Web客户端(Mozilla Firefox或Internet Explorer),输入AT32 IP地址

7. 会显示登录Web页面。在User ID(用户ID)字段中输入”user”,在Password(密码)字段中输入”at32”,然后按下Login(登录)按钮。

8. IP操作结束后,将加载新的Web页面,只是文件上传操作已经成功完成。

9. 可以按下Reset MCU(复位MCU)按钮复位MCU,然后在AT32 FLASH中运行刚刚编写的应用程序。

注:使用以下Web客户端对软件进行测试:Microsoft Internet Explorer 11和Mozilla Firefox 80.0

已知限制

二进制文件中添加的额外字节

Internet浏览器(Microsoft Internet Explorere或Mozilla Firefox)会在上传的二进制文件的末尾添加一个随机边界标记(根据RFC1521规定,此标记不得超过72个字节)。在最新的IAP软件版本中,并没有删除此边界标记,而是在空间足够的情况下将其存储在FLASH中。如果没有足够空间,则不会在FLASH中写入额外字节,也不会返回错误。

环境

硬件配置

1. DM9162以太网模块

2. AT-START-F407开发板

3. 以太网线

软件源码

utilitiesat32f407_emac_iap_demosource_codebootloader, emac iap源程序,运行iap升级程序

MAC地址和IP地址设置

在netconf.h文件中对MAC地址进行了定义。

默认的MAC地址固定为:00:00:44:45:56:01。

在netconf.h文件中对IP地址进行了定义。

IP地址可以设置为静态地址,也可以设置为由DHCP服务器分配的动态地址。默认的静态地址为:192.168.81.37。

可以通过在lwipopts.h文件中使能LWIP_DHCP来选择DHCP模式。

软件文件组成

wKgZomUD3EGAHBV_AAFI1u1nYIs915.png 表2 介绍了项目源文件

注:表格中没有列出标准固件库和LwIP栈中所使用的文件。

构建IAP映像

为了构建IAP映像(将会使用IAP软件加载),应确保以下几点:

1. 编译/链接的软件必须从用户FLASH区域的起始地址开始运行(此地址应与iap.h的
APP_START_SECTOR_ADDR 中所定义的地址相同)。

2. 将向量表的起始地址配置为用户FLASH区域的起始地址:
A. 在应用程序代码中,使用misc.h/.c驱动程序的NVIC_SetVectorTable函数来重新定位应用程序加载地址的向量表。

例如,将向量表基本位置设置为0x08010000:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);

B. 通过修改system_at32f4xx.c文件中定义的VECT_TAB_OFFSET常量的值。

例如,将向量表基本位置设置为0x08010000:

#define VECT_TAB_OFFSET 0x10000

3. 编译后的软件大小不超过用户FLASH区域的总容量。

来源:AT32 MCU 雅特力科技

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5334

    浏览量

    170700
  • 通信接口
    +关注

    关注

    3

    文章

    234

    浏览量

    30952
  • IAP
    IAP
    +关注

    关注

    2

    文章

    163

    浏览量

    24198
收藏 人收藏

    评论

    相关推荐

    以太网通信网关是什么

    在日益复杂的网络环境以太网通信网关作为连接不同设备和网络的桥梁,扮演着至关重要的角色。本文将深入探讨以太网通信网关的定义、功能、工作机制及其在各个领域的应用。 一、以太网通信网关的
    的头像 发表于 08-29 14:04 264次阅读
    <b class='flag-5'>以太网通信</b>网关是什么

    工业以太网通信协议的主要类别

    随着工业4.0和智能制造的快速发展,工业以太网通信协议与标准在工业自动化领域扮演着越来越重要的角色。工业以太网不仅提供了高效、可靠的数据传输手段,还为实现设备间的无缝集成和信息共享提供了可能。本文将详细介绍工业
    的头像 发表于 06-28 18:02 989次阅读

    上位机与PLC的以太网通信方法

      在现代工业自动化系统,上位机与PLC(可编程逻辑控制器)之间的通信实现高效、稳定控制的关键环节。以太网作为一种广泛应用的局域
    的头像 发表于 06-18 09:13 2624次阅读

    PLC以太网通讯怎么掉线

    在现代工业自动化领域,PLC(可编程逻辑控制器)作为核心控制设备,其以太网通讯的稳定性和可靠性对于整个生产流程至关重要。然而,在实际应用,PLC以太网通讯掉线问题时有发生,严重影响了
    的头像 发表于 06-13 11:28 1903次阅读

    如何实现以太网功能的,是用F107或F407芯片自己移植Lwip还是采用SPI转以太网模块?

    一般大家是如何实现以太网功能的,是用F107或F407芯片自己移植Lwip还是采用SPI转以太网模块?
    发表于 05-17 06:49

    PLC以太网开放式通信概述

    以太网开放式通信与其他PLC或者第三方设备通信;   4、每种PLC实现以太网开放式通信均需单独
    发表于 04-16 12:06 908次阅读
    PLC<b class='flag-5'>以太网</b>开放式<b class='flag-5'>通信</b>概述

    PLC以太网通讯模块是什么?PLC以太网通讯模块的功能特点

    PLC以太网通讯模块是一种专为工业控制系统设计的硬件设备,用于将PLC系统连接到以太网(Ethernet)网络,实现与其它设备或系统的高效、可靠的数据交换。它是PLC系统与外部通信的关
    的头像 发表于 04-10 14:04 1873次阅读

    plc以太网通讯模块在哪 plc以太网通讯掉线怎么解决

    PLC(可编程逻辑控制器)是一种用于工业自动化控制的设备,常用于监控和控制机器、生产线、工厂等。PLC通常使用多种通信接口进行数据交换,以太网通信是其中一种常用的方式。 一、PLC
    的头像 发表于 02-05 10:14 2909次阅读

    如何用aurix开发工具进行以太网通信

    我想用aurix开发工具进行以太网通信。 你能提供示例代码或方法吗?
    发表于 01-22 06:02

    plc怎么通过以太网远程通信

    以太网(Ethernet)是一种常用的局域网通信技术,广泛应用于各种领域。PLC(可编程逻辑控制器)是一种常用的自动化控制设备,用于实现工业过程的监控与控制。在许多工业自动化应用
    的头像 发表于 01-15 09:52 1793次阅读

    plc以太网通讯模块在哪个位置

    PLC以太网通信模块是一种常用的工业自动化设备,广泛应用于工厂、机械设备和自动化控制系统。它被用来实现PLC与其他设备之间的数据传输和通信。在本文中,我们将详细介绍PLC
    的头像 发表于 01-10 15:30 1080次阅读

    组态王与S7-1200PLC之间 Profinet无线以太网通信

    组态王与S7-1200PLC之间想要搭建 Profinet无线以太网通信,需要用到以下设备: ● 西门子PLC型号:S7-1200 × 2台 ● 上位机:组态王6.55 × 1台 ● 无线通讯终端
    的头像 发表于 01-09 09:21 862次阅读
    组态王与S7-1200PLC之间 Profinet无线<b class='flag-5'>以太网通信</b>

    stm32f407 LAN8720A速率调整

    STM32F407是一款基于ARM Cortex-M4内核的高性能微控制器,而LAN8720A是一款高速以太网PHY芯片。它们的组合可以实现在STM32F407上使用
    的头像 发表于 01-05 13:54 3334次阅读

    串行通信以太网通信,该怎么选才好?

    串行通信以太网通信都通过有线传输数据,但各自有不同的用途。串行通信以太网通信的主要区别在于:串行通信是通过串行
    的头像 发表于 12-22 08:20 1009次阅读
    串行<b class='flag-5'>通信</b>和<b class='flag-5'>以太网通信</b>,该怎么选才好?

    力控与多台PLC的ModbusTCP/IP协议无线以太网通信实现过程

    ,不但施工麻烦也会徒增成本。这里所介绍的无线以太网方案通信距离从几米到1公里,与布线施工的成本(材料、人工、时间)进行综合比较的话,无线以太网是更为经济和实施简便的组网通讯方案。
    的头像 发表于 11-27 09:25 1739次阅读
    力控与多台PLC的ModbusTCP/IP协议无线<b class='flag-5'>以太网通信实现</b>过程