• Home
Name Date Size #Lines LOC

..--

BUILD.gnD12-May-20241 KiB3026

README.mdD12-May-20246.3 KiB127106

demo_entry_cmsis.cD12-May-20241.6 KiB6136

demo_entry_posix.cD12-May-2024988 3012

lwip_tcp_client.cD12-May-20242.6 KiB6943

lwip_tcp_server.cD12-May-20243.7 KiB9665

net_demo.hD12-May-2024771 214

net_params.hD12-May-20241.1 KiB3918

wifi_connecter.cD12-May-20243.9 KiB13895

wifi_connecter.hD12-May-2024780 235

README.md

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![输入图片说明](../doc/figures/lwip_demo/077lwip.png)
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    ![输入图片说明](../doc/figures/lwip_demo/078lwip.png)
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    ![输入图片说明](../doc/figures/lwip_demo/079lwip.png)
124
125    客户端串口打印:
126
127    ![输入图片说明](../doc/figures/lwip_demo/080lwip.png)