介绍
Minnow Server , a super small and fast embedded HTTP(S) WebSocket server, lets small microcontrollers with no external memory act as real-time web servers.
总结一下就一个字 —— “小”,专为Cortex-M3这类资源有限的MCU设计的,只有MSLib.c
、MSLib.h
两个文件。此外还提供了下面这些平台的移植,非常省心:
- FreeRTOS-TCP https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/
- Harmony Microchip Harmony TCP/IP
- MDK Keil MDK
- MQX MQX and RTCS from Freescale
- NetX ThreadX and NetX from Express Logic
- Posix POSIX including Linux, Mac, VxWorks, QNX
- Windows Standard Windows and Win CE
- lwIP lwIP Netconn API for RTOS enabled systems
Bare metal (no RTOS) event based porting layers:- lwIP-raw lwIP raw TCP API port: http://lwip.wikia.com/wiki/Raw/TCP
注意:这些移植放在SMQ库中,所以即使不使用该库的功能也需要下载SMQ!!!
官方的介绍真的太低调,一句话就只说了“小”,其它的特点其实才是本文的重点。
WebSockets vs HTTP
lwip就实现有http server,为什么这里选WebSocket,两者之间的差异通过下图可以清晰的看到。
下面,通过例子(也就是下图中蓝色框框中的直接连接)来说说这个服务器的其它特点。

开发者模式
这是很方便的功能,先在PC端测试好web的效果再编译烧录到芯片上就可以得到一样的结果,不用web改一部分就得烧录一次,特别是web部分的开发不懂芯片和交叉编译的情况。用着也简单,就下面几步:
-
1、下载
MinnowServer
、SMQ
、JSON
这三个仓库,解压后放在同一路径下,如下图使用visual studio(工程是VS2010创建的,我这是用的VS2019)打开MinnowServer\example\VcMake\minnow.sln工程文件并编译、运行,从终端上可以看到运行了一个websocket服务器;
-
2、修改
hosts
文件,该文件在C:\Windows\System32\drivers\etc下,需要用管理员权限进行操作,在文件中添加下面这句即可;127.0.0.1 device # minnow server test
-
3、登录网页
在浏览器里打开写好的html文件,比如例程里的MinnowServer\www\index.html,输入用户名root,密码password就可以登录了。
发布模式
在前面开发测试完web之后就可以编译并烧录到芯片上,然后从浏览器直接访问。
- 1、打包开发好的web数据
打开HTML Resource Amalgamator Service,通过这个服务将前面设计的好的web文件转换成一个c文件。这里以例程作说明,将MinnowServer\www文件夹打包成.zip
格式,在打开的网页中选择打包好的文件,看下图红圈选择好后,在
Configure
出勾上两个选项,然后点击Upload
,就会自动下载一个名为index.c
的文件。提示的警告这里我就不管了。
这里比较奇怪的是,虽然用Gzip进行了压缩,但是这个c文件比web原文件的总大小还大不少。
还不如挂个文件系统把原文件仍里边省空间…………………………

-
2、编译并在芯片上运行服务器
将下载的index.c
替换工程中的同名文件,编译后烧到芯片上即可。这里要注意,前面修改的hosts
文件需要还原。 -
3、访问配置页面
输入板子的IP即可访问,这里通过域名是不能直接访问的,因为Minnow没提供DNS查询。
网友评论