使用 STM32 WebServer 加载网页内容

Load web content using STM32 WebServer

我正在使用 STM32F405 制作 WebServer,以太网芯片是 Wiznet 的 W5500。

Wiznet 提供了一个 HTTP WebServer 演示。但是,他们使用 SD 卡加载网页内容。

我发现 Arduino WebServer 可以在不使用 SD 卡的情况下加载网页内容,它只需要在草图中添加一些 Arduino 代码。

所以问题是我的设备如何在没有 SD 卡的情况下加载网络内容。

顺便说一句,我正在使用 IAR。

您的问题没有提供足够的信息,但据我所知,您正在尝试使用 POST 和 GET 请求从 HTTP 服务器获取数据。

使用 SD 卡是有原因的,因为网络足够大,可以加载到控制器/处理器内存中。在 arduino 的情况下,您可能会看到一个示例,其中他们从本地服务器加载数据并且数据内容足够小以将内容加载和存储在 SRAM 中。

如果要加载网页内容,其大小必须小于 SRAM 的大小,否则会产生内存溢出中断。最好的方法是使用SD卡和一些外部存储芯片。

信息不足。如果您正在谈论 this demo it uses the ELM FatFS 库,只要有合适的块驱动程序,它就可以移植到任何媒体。 STM32F4 闪存块结构并不真正适合用作文件系统,除非它是 read-only,然后您必须静态创建文件系统结构。

为您的 STM32 添加 SD 卡支持是微不足道的,而且可能更简单 - 该示例使用 SPI 接口,它比 SDIO 连接和编码简单得多。该示例适用于 STM32F103 - 它与 STM32F405 之间可能存在细微差别,但我已经针对两者进行了编码,并且相对容易移植。

尽管您的问题细节不够详细,但我猜您希望在不访问文件系统的情况下从 C 代码内部提供页面。

建议你看看Bitty HTTP(不要脸的外挂)。我认为它接近你正在寻找的东西。它直接从 C 代码(无文件系统)提供页面,可以使用非标准套接字,并且不需要线程(不需要操作系统)。

我查看了 W5500,发现它不适合使用 Berkeley 套接字(尽管您也许可以添加这个),因此您需要一些可以在没有它们的情况下工作的东西。不幸的是,您需要将套接字写入 W5500 SPI 命令部分才能使其正常工作。

您还可以查看其他嵌入式网络服务器。 libmicrohttpd(它本身就是一个嵌入式网络服务器)有很多其他嵌入式网络服务器。我不认为你会在那里找到满足你需要的任何东西,但值得一试。