1# LWIP协议的TCP/IP通信<a name="ZH-CN_TOPIC_0000001130176841"></a> 2 3## 硬件环境搭建 4- 硬件要求:Hi3861V100核心板、扩展板;硬件搭建及组网图如下图所示。 5- [Hi3861V100核心板参考:HiSpark_WiFi_IoT智能开发套件_原理图硬件资料\原理图\HiSpark_WiFi-IoT_Hi3861_CH340G_VER.B.pdf](http://gitee.com/hihope_iot/embedded-race-hisilicon-track-2022/blob/master/%E7%A1%AC%E4%BB%B6%E8%B5%84%E6%96%99/HiSpark_WiFi_IoT%E6%99%BA%E8%83%BD%E5%AE%B6%E5%B1%85%E5%BC%80%E5%8F%91%E5%A5%97%E4%BB%B6_%E5%8E%9F%E7%90%86%E5%9B%BE.rar) 6- [扩展板参考:HiSpark_WiFi_IoT智能开发套件_原理图硬件资料\原理图\HiSpark_WiFi-IoT_Hi3861_CH340G_VER.B.pdf](http://gitee.com/hihope_iot/embedded-race-hisilicon-track-2022/blob/master/%E7%A1%AC%E4%BB%B6%E8%B5%84%E6%96%99/HiSpark_WiFi_IoT%E6%99%BA%E8%83%BD%E5%AE%B6%E5%B1%85%E5%BC%80%E5%8F%91%E5%A5%97%E4%BB%B6_%E5%8E%9F%E7%90%86%E5%9B%BE.rar) 7 8 9 10## 软件介绍 11- 1.代码目录结构及相应接口功能介绍 12``` 13vendor_hisilicon/hispark_pegasus/demo/lwip_demo 14├── BUILD.gn # BUILD.gn文件由三部分内容(目标、源文件、头文件路径)构成,开发者根据需要填写,static_library中指定业务模块的编译结果,为静态库文件netDemo,开发者根据实际情况完成填写。 15| sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//"则表示绝对路径(此处为代码根路径),若不包含"//"则表示相对路径。include_dirs中指定source所需要依赖的.h文件路径。 16├── demo_entry_cmsis.c # 17├── demo_entry_posix.c # 18├── lwip_tcp_client.c # 19├── lwip_tcp_server.c # 20├── net_demo.h # 21├── net_params.h # 22├── wifi_connecter.c # 23├── wifi_connecter.h # 24└── oled_ssd1306.h # 25``` 26- 2.工程编译 27 - 将源码./vendor/hisilicon/hispark_pegasus/demo目录下的lwip_demo整个文件夹及内容复制到源码./applications/sample/wifi-iot/app/下,如下图所示。 28 ``` 29 . 30 └── applications 31 └── sample 32 └── wifi-iot 33 └── app 34 └──lwip_demo 35 └── 代码 36 ``` 37 38 - 编译lwip_tcp_server端,修改./applications/sample/wifi-iot/app/lwip_demo/BUILD.gn文件中,在sources = [ "lwip_tcp_server.c" ]字段中添加,如下图所示。 39 ``` 40 static_library("netDemo") { 41 sources = [ "lwip_tcp_server.c" ] 42 43 sources += [ 44 "demo_entry_cmsis.c", 45 "wifi_connecter.c", 46 ] 47 48 include_dirs = [ 49 "//utils/native/lite/include", 50 "//kernel/liteos_m/components/cmsis/2.0", 51 "//base/iot_hardware/interfaces/kits/wifiiot_lite", 52 "//base/iothardware/peripheral/interfaces/inner_api", 53 "//foundation/communication/wifi_lite/interfaces/wifiservice", 54 ] 55 } 56 ``` 57 58 - 修改./applications/sample/wifi-iot/app/lwip_demo/net_params.h文件中内容,PARAM_HOTSPOT_SSID设置为网络名称,PARAM_HOTSPOT_PSK设置为网络密码。 59 ``` 60 #define PARAM_HOTSPOT_SSID "xxx" // your AP SSID 61 #define PARAM_HOTSPOT_PSK "xxxxx" // your AP PSK 62 ``` 63 64 - 修改源码./applications/sample/wifi-iot/app/BUILD.gn文件,在features字段中增加索引,使目标模块参与编译。features字段指定业务模块的路径和目标,features字段配置如下图所示。 65 ``` 66 import("//build/lite/config/component/lite_component.gni") 67 68 lite_component("app") { 69 features = [ 70 "lwip_demo:netDemo", 71 ] 72 } 73 ``` 74 75 - 修改完成后编译rebuild,烧录到Hi3861V100开发板上,烧录成功后,再次点击Hi3861核心板上的“RST”复位键,在串口工具栏可以看到server服务端IP地址,如下图所示。 76 77  78 79 - 修改./applications/sample/wifi-iot/app/lwip_demo/net_params.h中PARAM_SERVER_ADDR字段为server服务端IP地址,同时PARAM_HOTSPOT_SSID设置为网络名称,PARAM_HOTSPOT_PSK设置为网络密码,这里注意Hi3861V100服务端与客户端需要在同一个局域网内。 80 ``` 81 #define PARAM_HOTSPOT_SSID "xxx" // your AP SSID 82 #define PARAM_HOTSPOT_PSK "xxxxx" // your AP PSK 83 #define PARAM_SERVER_ADDR "服务端IP地址" // your PC IP address 84 ``` 85 86 - 编译lwip_tcp_client端,修改./applications/sample/wifi-iot/app/lwip_demo/BUILD.gn文件中,在sources = [ "lwip_tcp_client.c" ]字段中添加。 87 ``` 88 static_library("netDemo") { 89 sources = [ "lwip_tcp_client.c" ] 90 91 sources += [ 92 "demo_entry_cmsis.c", 93 "wifi_connecter.c", 94 ] 95 96 include_dirs = [ 97 "//utils/native/lite/include", 98 "//kernel/liteos_m/components/cmsis/2.0", 99 "//base/iot_hardware/interfaces/kits/wifiiot_lite", 100 "//base/iothardware/peripheral/interfaces/inner_api", 101 "//foundation/communication/wifi_lite/interfaces/wifiservice", 102 ] 103 } 104 ``` 105 106 - 修改源码./applications/sample/wifi-iot/app/BUILD.gn文件,在features字段中增加索引,使目标模块参与编译。features字段指定业务模块的路径和目标,features字段配置如下。 107 ``` 108 import("//build/lite/config/component/lite_component.gni") 109 110 lite_component("app") { 111 features = [ 112 "lwip_demo:netDemo", 113 ] 114 } 115 ``` 116 117 - 工程相关配置完成后,然后rebuild编译。 118- 3.HiBurn烧录 119 - 编译成功后,点击DevEco Home->配置工程->hi3861->upload_port->选择对应串口端口号->选择upload_protocol->选择hiburn-serial->点击save保存,在保存成功后点击upload进行烧录,出现connecting, please reset device..字样复位开发板等待烧录完成。 120 - 烧录成功后,再次点击Hi3861核心板上的“RST”复位键,此时开发板的系统会运行起来。运行结果:在串口工具栏看到Hello,I am lwip。 121 服务端串口打印: 122 123  124 125 客户端串口打印: 126 127 