ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:308.51KB ,
资源ID:5316082      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5316082.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32F108C8 + W5200基于 HTTP的远程配置和固件更新Word格式文档下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

STM32F108C8 + W5200基于 HTTP的远程配置和固件更新Word格式文档下载.docx

1、当然,上位机程序可以实现UDP广播寻址终端,无需知道终端IP地址即可找到同一网段下的多个终端。而使用网页的话就只能是预先知道终端IP地址并逐一配置。其实,对于通过网页配置相信大家并不陌生,家里有无线路由器的朋友估计都有实践经验。通过浏览器键入路由器的默认IP,然后根据网页提示就可以一步步地实现设备信息配置,诸如WiFi密码、SSID等。今天,我们就是来探究一下这个应用的原理,在单片机里实现一个HTTP服务器,通过这个HTTP服务器来配置设备信息,并实现了设备固件更新。当然,我这里的这个HTTP服务器没有家里的路由器那样的功能强大,在这里也只是抛砖引玉,希望大家能够从中获取启发,设计出更出色的产

2、品。方便起见,我们仍旧延续上一篇文章的平台基于Cortex-M3的W5200评估板(STM32F108C8 + W5200)。图1 W5200评估板该评估板单片机的系统资源:64KB的闪存和20KB的SRAM。(W5200可以和任何单片机配合使用,如果用户想使用其他单片机+W5200来实现的话,需要您自行修改代码,这里暂不提供其他库。)功能演示在我们展开谈论基于HTTP的远程配置和固件更新的原理之前,先给大家看一下我们这个程序小样的功能演示。感兴趣的朋友可以在接下来的文章中,了解到具体该功能是如何实现的。步骤1:用ISP工具烧录Boot(评估板SW2 调至PROP),不了解的话,可以参考我们上

3、一个主题内容。图2用FlashLoader烧录boot.bin步骤2:将评估板上SW2 调到RUN模式,打开ConfigTool。点击按钮,可查找到当前设备,并可通过按钮,将app.bin程序上传至评估板中,右侧可看到当前设备的IP地址及版本号等信息,此时版本号为1.0,如图:图3配置工具烧录app.bin成功ConfigTool这里的工作也很简单,就是在第一次Boot启动时,把App传给单片机。当App运行时,ConfigTool就无用武之地了,因为用浏览器就可以完成ConfigTool的工作了。(注:以上途径并不是必须的,仅为了方便演示,保证boot和app程序已经烧录好即可。步骤3:在浏

4、览器中输入W5200评估板的IP地址,回车后出现Web界面。如图可看到,界面分为Device Settings和Firmware Updating两部分,其中Device Settings中依次列出W5200评估板的硬件版本号、MAC地址、IP地址、子网掩码以及默认网关基本配置。用户可以配置其他IP地址,子网掩码及网关,并点击Save settings and Reboot,设置并重启生效;图4 Web配置界面如:在WEB界面上,将IP地址192.168.1.2改为192.168.1.20。更改后保存,等待后更改成功:图5更改IP成功步骤4:下面针对固件更新,点击“浏览”按钮,选择好要更新文件

5、。;选好后开始上传,出现以下界面,更新过程需要6s.图6等待升级完成更新完成,可以看到新成功,版本号更改为5.0,IP地址以及界面颜色都进行了更新,如下图:图7升级成功是不是很简单?马上动手,也给你的设备加入一个HTTP服务器,实现远程配置升级功能吧。当然,配置和升级只是应用的一小部分,你也完全可以通过模拟/数字输入接入几个传感器,比如温度、湿度和PM2.5,这样打开浏览器就可以监视这些传感器数据了。这个小样只是一个简单的功能及原理演示,下面就让我们来看一下这个基于 HTTP的远程配置和固件更新实现的思路及原理。应用原理1. 方框图图8 HTTP远程更新固件框图每次重启,均从首地址开始执行程序

6、:1启动进入BOOT区,若BOOT检测APP区的不为空,则跳转到APP区的首地址执行主程序;2浏览器访问APP区的网页服务器 配置网络参数:即将浏览器中键入的参数通过APP更新到Configure Information区 远程更新固件:即进入到以下步骤33浏览器访问APP主程序的网页服务器,并通过浏览器将即将更新的APP写入到Backup区;4当APP检测到Backup区域已经有新的APP程序后,跳转到BOOT区,执行更新操作;5BOOT将APP区擦除,并将新APP从Backup区写入到APP区;重启,重新执行程序。2. 内存图图9 W5200评估板内存空间分配在我们要演示的程序中,将MCU

7、闪存划分成了四个区:3. 各分区的主要功能了解了空间分配之后,我们再来看一下我们这个演示中各部分的主要功能:1. BOOT区: 清空APP区,为新APP写入做准备; 把暂存在Backup区的新版本程序拷贝到APP区; 与上位机程序通信,获取App;备注:其实,这里Boot不必具备这个功能,只是我们编译完两个固件后,不想合并两个二进制文件,然后再通过ISP工具烧录,所以偷个懒,沿用了上次的上位机程序。1. APP区APP区是应用程序运行区域,实现了HTTP服务器,并集成了一个简单的网页。 配置网络参数; 在线固件升级;上电启动后,进入Boot区,若判断上层APP区的状态量成功,则直接从Boot区

8、跳转到APP区,运行主程序。想修改网页的话,可以参考webpage.h,所有的HTML代码都在这个头文件里面。1. Backup区 接收并备份需要更新的新App由于Backup区的大小为23K,所以意味着APP的大小最大为23K;APP区为24K,其实有1K是无数据存放的;1. Configure Information区 存放IP地址,MAC地址,子网掩码等网络参数,以供App调用; App可以再写入,更新该区域存放的网络配置参数;程序开发我们将App程序主要分为5个文件:main.c实现HTTP固件更新的主流程;httputil.c文件用于实现HTTP协议响应报文的发送;httpd.c文件

9、用于实现对HTTP请求报文的解析;device.c文件用于实现W5200的初始化及单片机的基本配置;webpage.h文件定义web界面的html语言。这里我们重点介绍一下http()函数:http()函数实现了Web服务器接受请求和回复响应的全过程,由于Web服务器在和浏览器通信时使用TCP协议工作,根据SOCK_HTTP之间状态的不同,执行不同的操作。图10 HTTP服务器通信过程示意图HTTP服务器的通信过程大致分为三步:1. 连接:W5200分配socket到HTTP服务器,打开socket并监听。2. 通信:连接建立了。W5200在接收到来自客户端的HTTP请求后发送HTTP应答。3

10、. 关闭:HTTP 请求/应答完成后关闭连接。voiddo_http(void)uint8 ch=SOCK_HTTP; /定义HTTP通信的socket端口变量uint16len;st_http_request *http_request;memset(rx_buf,000,MAX_URI_SIZE);http_request = (st_http_request*)rx_buf; / 定义HTTP请求报文的结构指针/* HTTP Server 状态之间的转换 */switch(getSn_SR(ch)case SOCK_INIT: /socket 初始化状态listen(ch); /Web服

11、务器监听break;case SOCK_LISTEN:/socket监听状态case SOCK_ESTABLISHED: /socket建立连接成功if(getSn_IR(ch) &Sn_IR_CON)setSn_IR(ch, Sn_IR_CON);/Sn_IR的第0位置1if (len = getSn_RX_RSR(ch) 0)len = recv(ch, (uint8*)http_request, len);/接收客户端的请求并存入http_request中*(uint8*)http_request)+len) = 0;proc_http(ch, (uint8*)http_request)

12、; /解析HTTP请求,并发送HTTP Responsedisconnect(ch);/断开TCP连接case SOCK_CLOSE_WAIT:/socket等待关闭状态/printf(“close wait: %drn”,len); / 解析HTTP请求,并发送HTTP Response / 断开TCP连接case SOCK_CLOSED:/ socket 关闭状态socket(ch, Sn_MR_TCP, 80, 000); /初始化socket端口default:完整的程序代码请于以下地址下载:后记以上我们介绍了基于 HTTP的远程配置和固件更新的相关原理及思路。细心的朋友可能会发现,我们这里的网页是和APP程序放在一起的,均在APP区。也就是意味着,我们通过网页更新APP程序,其实也同时把网页本身更新了(参见更新前后网页背景颜色变化)。我们这样做的目的是方便以后用户对于网页架构等内容重新编辑时使用的,这样用户不仅可以更新APP,也可更新网页。当然,如果我们的网页已经是确定不变的话,可以将MCU的内存再单独分离出一块作为网页存贮区(形如Configure Information区一般),这样用户就无需每次更新大量数据,只需针对性的更新APP即可。这个也是我们为读者留下的一个课题,供感兴趣的读者业余动手实践一下。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2