mplab® harmony 3 之基础篇(21 --搭建简单的 http 服务器 · mplab® harmony 3....

28
1 MPLAB® Harmony 3 之基础篇(21-- 搭建简单的 HTTP 服务器 Microchip Technology Inc. MCU32 产品部 一、 简介 本文主要介绍如何利用 MPLAB X IDE 创建一个工程,利用 MPLAB Harmony 3 Configurator(MHC)添加所需要的硬件驱动,TCP/IP 协议栈,其他服务等,在 SAM E54 Xplained Pro evaluation kit 开发板上轻松创建一个完整的 HTTP Server 端的例 程。 二、 硬件工具和软件平台 硬件SAM E54 Xplained Pro evaluation kit https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAME54-XPRO

Upload: others

Post on 26-Jan-2020

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

1

MPLAB® Harmony 3 之基础篇(21)

-- 搭建简单的 HTTP 服务器

Microchip Technology Inc. MCU32 产品部

一、 简介

本文主要介绍如何利用 MPLAB X IDE 创建一个工程,利用 MPLAB Harmony 3 Configurator(MHC)添加所需要的硬件驱动,TCP/IP 协议栈,其他服务等,在 SAM E54 Xplained Pro evaluation kit 开发板上轻松创建一个完整的 HTTP Server 端的例

程。

二、 硬件工具和软件平台

硬件:SAM E54 Xplained Pro evaluation kit https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAME54-XPRO

Page 2: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

2

软件(开发工具和环境的安装和使用,见“MPLAB® Harmony 3 之基础篇(01) -- Harmony 3 开发环境搭建”): MPLAB® X: v5.25 或者更新 XC32: v2.15 或者更新 Harmony 3: v3.40 或者更新 (当前例程 bsp-3.4.0,core-3.4.0,crypto-3.3.0,csp-3.4.0, net-3.4.0) MPFS2 Utility

Page 3: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

3

三、 详细步骤

首先我们来了解一下我们需要用到的这一块 SAM E54 Xplained Pro Evaluation Kit。这块开发板,使用的主控 MCU 是 SAME54P20A。这是一颗 ARM Cortex-M4 内核

的 MCU,主频高达 120MHz,带有 1MB 的 Flash,256KB 的 SRAM。拥有 10/100 Mbps的 Ethernet Media Access Controller (GMAC),支持 MII,RMII 接口。开板上带有一

颗 KSZ8091 网络 PHY 芯片。该开发板同时自带了 EDBG,可以直接通过 Micro USB连接电脑,用 MPLAB 进行下载,或者在线调试。同时还有一个虚拟串口,可供

打印调试信息。 接下来我们就用 MPLAB X IDE 和 MHC 一步步地创建和配置基于 TCPIP 的 HTTP 应

用。SAM E54 Xplained Pro Evaluation Kit 采用的是 RMII 接口,搭配的 PHY 芯片就

是板子上自带的 KSZ8061。 注:以下 MHC 配置里没有特别标注出来的地方,说明使用的是默认选项。 (一) 新建一个 MPLAB Harmony 3 的工程 在 MPLAB X IDE 里点击 File > New Project:

选择“32-bit MPLAB Harmony Porject”,然后点击“Next”按钮。

Page 4: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

4

选择“Harmony Framework”路径,然后点击“Next”按钮。

在这里输入需要的项目名称,项目代码的存放位置,然后点击“Next”按钮。

Page 5: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

5

这个页面最主要是选择我们需要使用的芯片,我们用的这个开发板的 MCU 是

ATSAM 的 ATSAME54P20A。另外需要设置当前配置的名称,用于保存配置文件。

然后点击“Finish”按钮。 (二) 添加所需要的基础软件包

Page 6: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

6

这个页面是选择我们需要加入使用的基础的 Harmony 软件 package。在这里我们

选择 bsp,core,crypto,net 四个主要的 package。其他几个在本例程中不需要

使用。点击 “Launch” 完成。 (三) 往当前新建工程里面添加所需要的功能 从 MPLAB X IDE 的 Tools 菜单,选择 Embedded,MPLAB Harmony3 Configurator。

从 MPLAB X IDE 左下角的 Available Components 页面中,选择添加当前使用开发

板的 BSP – SAM E54 Xplained Pro BSP。

Page 7: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

7

从左下角的 Available Components 页面中,选择添加 Libraries->TCPIP 列表里面的

几个 layer 的 configurator: TCP/IP Application Layer Configurator TCP/IP Basic Configurator TCP/IP Driver Layer Configurator TCP/IP Network Layer Configurator TCP/IP Transport Layer Configurator (四) TCP/IP Application Layer Configurator 的配置

然后选中添加进去的 TCP/IP Application Layer Configurator, 在右侧的属性配置区

域,勾选 HTTP SERVER。这个时候,MHC 会弹出来一系列的自动添加功能部件,

按以下的选择来进行操作。

Page 8: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

8

Page 9: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

9

Page 10: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

10

然后再勾选 ANNOUNCE, DHCP CLIENT, DNS CLIENT, NBNS, SMTP CLIENT, SNTP 等:

Page 11: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

11

全部勾选之后,如下图所示:

(五) TCP/IP Basic Configurator 的配置

Page 12: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

12

TCPIP CMD 也需要勾选上。

然后选择TCPIP CORE,在右侧的属性配置窗口中,把TCP/IP Stack Dynamic RAM Size改为64250。

Page 13: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

13

(六) TCP/IP Driver Layer Configurator 的配置 需要把 GMA,MIIM_DRIVER,KSZ8091 都勾选上。KSZ8091 就是 SAME54 这个开

发板上自带的网络 PHY 芯片。

Page 14: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

14

(七) TCP/IP Network Layer Configurator 的配置 需要把 ARP,ICMPv4,IPv4,IPv6,ICMPv6,NDP 都勾选上。

Page 15: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

15

Page 16: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

16

(八) TCP/IP Transport Layer Configurator 的配置 需要把 TCP,UDP 都勾选上。

(九) TIME 的配置 把 View 切换到 Root,然后在当前的功能模块中选择 TIME,在可视区域,右键点

击 TMR,然后在 Satisfiers 的列表里面选择 TC0。

Page 17: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

17

(十) CONSOLE 的配置 把 View 切换到 Root,然后在当前的功能模块中选择 CONSOLE,在可视区域,右

键点击 UART,然后在 Satisfiers 的列表里面选择 SERCOM2。

(十一) FILE SYSTEM 的配置 把 View 切换到 Root,然后在当前的功能模块中选择 FILE SYSTEM,在可视区域,

右键点击 DRV_MEDIA,然后在 Satisfiers 的列表里面选择 MEMORY。

Page 18: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

18

另外在右侧的 FILE SYSTEM 属性区域中,需要把文件系统配置为 Microchip File System。

(十二) MEMORY 的配置 把 View 切换到 Root,然后在当前的功能模块中选择 MEMORY,在可视区域,右

键点击 MEMORY,然后在 Satisfiers 的列表里面选择 NVMCTRL。

Page 19: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

19

另外,在右侧的 MEMORY 属性配置区域,需要把 MEMORY Device Type 设置成

SYS_FS_MEDIA_TYPE_NVM。

(十三) Cryptographic (Crypto) Library 的配置 需要把 Hash-MD5,Hash-SHA-1,Hash-SHA-256,Hash-SAH-512,Hash-HMAC 都

勾选上。注意不要勾选 Use Hardware Acceleration。

Page 20: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

20

(十四) SERCOM2 的配置 在当前项目的功能模块中,选择 SERCOM2,然后在右侧的属性窗口中,把 Receive Pinout 的配置改为 SERCOM Pad[1] is used for data reception。

(十五) System 的配置 在当前项目的功能模块中,选择 System,然后在右侧的属性窗口中,把 Heap Size改为 74960,把 Data Cache 和 Instruction Cache 都打开。

Page 21: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

21

在当前项目的功能模块中,选择 TC0,然后在右侧的属性窗口中,把 Counter Mode设置成 Counter in 32-bit mode。

(十六) Pinout 的配置

Page 22: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

22

按如下的列表配置 pinout: PA12 -> GMAC_GRX1 PA13 -> GMAC_GRX0 PA14 -> GMAC_GTXCK PA15 -> GMAC_GRXER PA17 -> GMAC_GTXEN PA18 -> GMAC_GTX0 PA19 -> GMAC_GTX1 PC11 -> GMAC_GMDC PC12 -> GMAC_GMDIO PC20 -> GMAC_GRXDV PB24 -> SERCOM2_PAD1 PB25 -> SERCOM2_PAD0 PB31 -> SWITCH PC18 -> LED1 这里需要注意,对 PB31 和 PC18 的 Function 配置需要更改为 GPIO:

Page 23: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

23

(十七) 输出项目基础代码

Page 24: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

24

(十八) 添加 HTTP Server 端的处理代码 相关的参考代码如下: <Harmony 3 Framework path>\ net\apps\web_server_nvm_mpfs 主要的改动在以下几个文件:

Page 25: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

25

app.h app.c custom_http_app.c http_print.c mpfs_img2.c 本例程使用的网页: <Harmony 3 Framework path>\ net\web_pages 前面有提到当前例程,网页存储使用的是 Microchip 的 MPFS 文件系统。默认的

image 在 mpfs_img2.c。当前默认的 Server 端网页,主页是 index.htm。

Page 26: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

26

在这个简单的网页上,会有一个开发板的 LED 跟 user switch 的实时状态显示。

是通过 index.htm 的一个 javascript 函数来实现的。

在 Application 初始化之后,会首先加载 MPFS 文件系统, if(SYS_FS_Mount(SYS_FS_NVM_VOL, LOCAL_WEBSITE_PATH_FS, MPFS2, 0, NULL) == 0)

Page 27: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

27

之后 Application 就会定时的翻转 LED 的亮灭状态。 另 外 一 个 比 较 重 要 的 函 数 在 <Harmony 3 Framework path>\ net\apps\web_server_nvm_mpfs\firmware\src\ custom_http_app.c: static void TCPIP_HTTP_ProcessConnection(HTTP_CONN* pHttpCon);

在这里函数里面会处理很多 HTTP 的相关事务。 对于 LED 跟 switch,最后会调用到以下两个函数来进行状态的更新: void TCPIP_HTTP_Print_btn(HTTP_CONN_HANDLE connHandle, uint16_t num); void TCPIP_HTTP_Print_led(HTTP_CONN_HANDLE connHandle, uint16_t num);

更多的具体内容,请参考之前提到的 Harmony3 自带的例程代码。 (十九) HTTP Server 的网页代码 在 MHC 产生代码的时候,这里默认产生了一份 Microchip 的测试网页。需要更换

成用户自己的网页,需要使用到以下工具: <Harmony 3 Framework path>\ net\utilities\mpfs_generator\mpfs2.jar 具体的使用方法,请参考以下的 Appnote: http://ww1.microchip.com/downloads/en/DeviceDoc/MPFS2%20Utility_v111.pdf (二十) 访问 HTTP Server 服务器 通过开发板的调试口,下载代码。 板子启动之后,在打印信息窗口会输出当前开发板获取到的 IP 地址。

然后在 PC 的浏览器上输入 http://<ip address>,就可以访问到开发板上的 HTTP服务器了。可以看到右上方有一个框。“LED”显示的就是当前开发板 LED 的亮灭

状态。“Buttons”显示的是开发板的 user button 的状态,当我们按下开发板上的

user button 的时候,会变成箭头向下。

Page 28: MPLAB® Harmony 3 之基础篇(21 --搭建简单的 HTTP 服务器 · MPLAB® Harmony 3. 之基础篇( 21 )--搭建简单的 . HTTP. 服务器. Microchip Technology Inc. MCU32

28

四、 总结

本文通过 MPLAB X IDE 的 MHC 一步步的配置,最后生成代码,完成了一个 HTTP Server 的简单应用。基本的应用框架以及所有的底层驱动代码都是系统自动生成

了。用户只需要实现 Server 功能相应的逻辑代码就可以。所以利用 MPLAB X IDE的 MHC 来创建工程是非常简单的,大部分的代码都能自动生成。用户只需要集

中精力处理自己需要实现的功能代码就可以了。