STM32 WEB服务器经常用到CGI SSI,可是为啥这方面一个具体的应用教程都没有?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32 WEB服务器经常用到CGI SSI,可是为啥这方面一个具体的应用教程都没有?相关的知识,希望对你有一定的参考价值。

找不到相关例程,你们到底怎么学的LWIP的CGI应用?!

其实SSI跟asp差别蛮大的,ssi只能是在shtml文件载入的时候,其中的ss标签被替换为其他内容,(何种标签替换为何种内容 是用户在LwIP协议中自定义的),而ASP、CGi是可以在html载入后动态调用的,他们才能实现完善的动态交互功能

至于如何入手,lwip的源码里面有详尽的英文注释,lz可以对着看看。

如果你想进行lwip 的CGI编程,建议你看看这么几个文件:httpd.h httpd.c httpd_cgi_ssi.c

我刚好是先学习了普通的PC机上搭建 IIS 服务器,学习html 、cgi、asp方面的知识,然后才接触lwip,然后在别人搭建好的嵌入式服务器上进行cgi编程,基本上手了。

硬件上的cgi编程更底层,而复杂,如果你难以入手,你可以在你的windows下搭建IIS服务器,熟悉一下cgi,再转stm32上实现
参考技术A  shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来追问

意思倒是看的懂,但使用起来真是无从下手。比如LWIP的SSI初始化,需要调用哪些文件,进行怎样处理,找不到相关说明手册学不起额

在 STM32 板上实现 SSI 从接口

【中文标题】在 STM32 板上实现 SSI 从接口【英文标题】:Implementing an SSI slave interface on STM32 Board 【发布时间】:2020-10-30 22:35:57 【问题描述】:

我正在尝试在 STM32 板上实现 SSI 从协议。由于 STM32 开发板没有 SSI 接口,我在 Slave(仅发送模式)中使用了它的 SPI 接口。主机 SSI 发送 24 个时钟信号,从机通过 MISO 引脚发送其数据(3 字节)做出反应。我面临的问题是数据总是在来自主机的每个时钟信号上向左移动。例如,假设我不断地从 slave 发送 0x010101。

第一次传输主机收到 0x010101 在第二次传输中,主设备收到 0x020202 在第三次传输中,主机收到 0x040404

有人可以给我一些关于如何解决这个问题的提示吗?

【问题讨论】:

【参考方案1】:

当 SPI 从设备识别到(意外的)额外时钟脉冲时,可能会发生每次传输的数据移位。看看***上的SSI protocol description,这实际上是有道理的: 为了传输 N 位数据,主机发出 N 个时钟周期,然后是另一个时钟脉冲来表示传输结束(所谓的“单稳态触发器时间” - 指的是原始的硬件实现SSI 接口)。由于 SPI 协议/SPI 从机不知道这个额外的时钟脉冲,它开始输出下一个数据字节的第一位,而这反过来又不被 SSI 主机识别。因此,这会导致 SSI 主机在下一个 SSI 帧上识别的数据位发生偏移。

不幸的是,用 SPI 从机正确处理 Monoflop 时间并不容易。为了处理额外的时钟脉冲,我们可以尝试在从机端将 SPI 帧大小设置为 25 位。由于 STM32 硬件仅支持 4 位到 16 位之间的 SPI 帧大小,因此唯一的选择是将其设置为 5 位。这不是很方便,因为我们需要将 3 字节(24 位)输出数据转换为 5 块 5 位(24 位输出数据 + 1 位虚拟数据),但它应该适用于“正常”传输。

如果我们还想正确处理"Multiple transmissions" 和"Interrupting transmission" 的情况,事情会变得更加复杂。我们需要监控时钟信号才能检测到单稳态触发器超时。这可以使用带有外部触发器的 STM32 硬件定时器来完成。当定时器到期时,我们需要重置 SPI 单元(以处理中断的传输)并更新输出值。这个“简单”的任务可能非常具有挑战性,因为它需要几条指令——需要一个快速的 MCU,具体取决于 SSI 时钟频率。

或者,SSI 协议可以使用纯软件的“bit banging”解决方案来实现。但这也需要快速的 MCU 才能正确处理快速 SSI 时钟。

恕我直言,最好的解决方案是使用小型(廉价)FPGA 来实现 SSI 从机,并让 MCU 通过传统 SPI 接口为其提供数据。

【讨论】:

以上是关于STM32 WEB服务器经常用到CGI SSI,可是为啥这方面一个具体的应用教程都没有?的主要内容,如果未能解决你的问题,请参考以下文章

SSI

STM32定时器编码器接口模式

漏洞复现——Apache SSI远程命令执行

SSI-Server Side Inclued

SSI(服务器端嵌入)

PHPCMS shtml设置