rt-thread应用篇(03)—基于STM32F429实现web服务器功能

目录

参考示例

前言

一、需使用的组件与软件包及其ENV配置

1、文件系统相关组件与软件包

1.1、DFS 框架

1.2、fal 软件包

1.3、SFUD 组件

2、网络通信相关组件和软件包

2.1、SAL组件

2.2、netdev组件

2.3、协议栈组件

2.4、netutils工具集软件包

2.5、webnet软件包

二、添加驱动和初始化代码

1、SPI FLASH驱动

2、网卡驱动

3、FAL配置

4、格式化块设备

三、web服务器开发基础

1、HTTP简介

1.1、工作原理

1.2、消息结构

2、HTML简介

2.1、HTML 网页结构

2.2、HTML 标签

2.3、HTML 属性

3、CSS简介

4、CGI技术简介

5、SSI简介

四、web服务器应用程序设计

1、网页制作

1.1、效果图

1.2、CGI类型与SSI标签

2、功能实现

2.1、自定义注册CGI执行函数

2.2、自定义注册SSI执行函数

3、页面文件上传

4、启动webnet

5、解决的问题


参考示例

网络协议栈驱动移植笔记

在 STM32F407 上应用网络功能

在 STM32F429 上应用文件系统

SPI Flash 文件系统例程

前言

1、此次实现的web服务器是使用了rtthread的webnet软件包来实现的。WebNet 软件包是 RT-Thread 自主研发的,基于 HTTP 协议的 Web 服务器实现,它不仅提供设备(HTTP Seerver)与 HTTP Client 通讯的基本功能,而且支持多种模块功能扩展,满足开发者对嵌入式设备服务器的功能需求。要将WebNet软件包用起来,基础的网络通信功能肯定是需要的,同时还需要能对 静态页面 进行存储、上传 等功能,所以WebNet的使用还需要文件系统相关的组件网络通信相关的组件的支持,通过这些组件和软件包可以快速搭建好一个在STM32开发web服务器的环境。在搭建好环境后,先使用HBuilder(HTML5的Web开发IDE)制作好你的网页,然后将这些网页使用tftp工具上传到/webnet目录下,最后使用webnet软件包提供的SSI、CGI等功能模块实现web服务器与浏览器之间的交互

2、使用的硬件为  正点原子的阿波罗STM32F429开发板

3、在ENV中选中的组件或软件包,如果开启了包管理器自动更新或者手动使用 pkgs –update 命令,就能自动将选择的软件包更新到BSP中;然后再使用 scons –target=xxx 命令编译BSP时,选择的软件包相关源代码就会被自动添加进工程中并进行编译

一、需使用的组件与软件包及其ENV配置

1、文件系统相关组件与软件包

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

1.1、DFS 框架

DFS 框架 是 RT-Thread 提供的虚拟文件系统组件,全称为 Device File System,即设备虚拟文件系统。DFS 框架为应用程序提供统一的 POSIX 文件和目录操作接口,如 read、write、poll/select 等。DFS 框架支持多种类型的文件系统,如 FatFS、RomFS、DevFS 等,并提供普通文件、设备文件、网络文件描述符的管理。

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

1.2、fal 软件包

fal 全称为 Flash Abstraction Layer,即 Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API。并提供了将分区创建成 MTD 设备的 API

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

1.3、SFUD 组件

SFUD 是一款开源的串行 SPI Flash 通用驱动库。现有市面的大部分串行 Flash,用户只需要提供 SPI 或 QSPI 的读写接口,SFUD 就可以识别并驱动。同时 RT-Thread 提供了 FAL 针对 SFUD 的驱动移植,可以使两个组件无缝连接

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

2、网络通信相关组件和软件包

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

2.1、SAL组件

SAL 套接字抽象层,通过它 RT-Thread 系统能够适配下层不同的网络协议栈,并提供给上层统一的网络编程接口,方便不同协议栈的接入。套接字抽象层为上层应用层提供接口有:accept、connect、send、recv 等。具有如下特点:

  • 抽象、统一多种网络协议栈接口;
  • 提供 Socket 层面的 TLS 加密传输特性;
  • 支持标准 BSD Socket API;
  • 统一的 FD 管理,便于使用 read/write poll/select 来操作网络功能;

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

2.2、netdev组件

netdev 网卡层,主要作用是解决多网卡情况设备网络连接和网络管理相关问题,通过 netdev 网卡层用户可以统一管理各个网卡信息和网络连接状态,并且可以使用统一的网卡调试命令接口

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

2.3、协议栈组件

协议栈层包括几种常用的 TCP/IP 协议栈,例如嵌入式开发中常用的轻型 TCP/IP 协议栈 lwIP 以及 RT-Thread 自主研发的 AT Socket 网络功能实现等。这些协议栈或网络功能实现直接和硬件接触,完成数据从网络层到传输层的转化。这里使用的是lwip

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

2.4、netutils工具集软件包

netutils软件包中汇集了 RT-Thread 可用的全部网络小工具集合,这里主要使用TFTP小工具,TFTP (Trivial File Transfer Protocol, 简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为 69 ,比传统的 FTP 协议要轻量级很多,适用于小型的嵌入式产品上。在板卡上开启TFTP Server后,就可以在PC上使用TFTP Client软件将HTML网页文件上传到板卡的SPI FLASH中。

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

2.5、webnet软件包

官网有很详细的介绍,WebNet 软件包功能特点:

  • 支持 HTTP 1.0/1.1
  • 支持 CGI 功能
  • 支持 ASP 变量替换功能
  • 支持 AUTH 基本认证功能
  • 支持 INDEX 目录文件显示功能
  • 支持 ALIAS 别名访问功能
  • 支持 SSI 文件嵌入功能
  • 支持文件上传功能
  • 支持预压缩功能
  • 支持缓存功能
  • 支持断点续传功能

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

浏览器访问设备 IP 地址不显示页面信息

  • 原因:设置的根目录地址错误。
  • 解决方法:确定设置的根目录地址(/webnet)和设备文件系统上创建的目录地址一致,确定根目录下有页面文件。也就是说必须先在块设备上初始化文件系统,且在文件系统中有 /webnet 这个文件夹,同时页面文件也已经上传到了跟目录下。

二、添加驱动和初始化代码

1、SPI FLASH驱动

1.1、在spi_flash_init.c中添加如下内容,注册softspi1总线,注册softspi10设备并挂载到softspi1总线上;使能SFUD驱动W25Q64块设备

1.2、在ENV中开启模拟SPI,开启BSP_USING_SOFT_SPIBSP_USING_SOFT_SPI1宏定义,这样在scons构建工程时,drv_soft_spi.c 就能自动添加进工程中

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

2、网卡驱动

2.1、网卡驱动部分rtthread已经在drv_eth.c/h中写好了,唯一要改的就是在phy_reset.c中添加PHY网卡的复位,添加如下内容

2.2、在ENV中选中网卡驱动,开启 BSP_USING_ETH PHY_USING_LAN8720A宏定义,这样在scons构建工程时,drv_eth.c phy_reset.c 就能自动添加进工程中

rt-thread应用篇(03)---基于STM32F429实现web服务器功能

3、FAL配置

3.1、在 fal_cfg.h中定义 flash 设备、flash 设备表、flash 分区表。flash设备表中,nor_flash0是使用了SFUD接口实现片外SPI FLASH操作的fal_flash设备,具体实现在FAL针对 SFUD 的移植文件fal_flash_sfud_port.c中。stm32_onchip_flash_xx 是直接操作单片机片内FLASH的fal_flash设备,具体实现在 drv_flash_f4.c

来源:hurryddd

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月2日
下一篇 2022年4月2日

相关推荐