Demo:wifi sta

来自Bouffalo Lab Docs
武楷轩留言 | 贡献2025年7月23日 (三) 07:37的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

基本介绍:

该系列demo存放在SDK 的路径为:bouffalo_sdk/examples/wifi/sta 。

该系列代码需要将开发板作为STA节点连接到WiFi或者路由器后进行一些基本的通讯数据功能性测试。

以下该系列demo的基本功能说明。

MQTT相关Demo说明:

wifi_mqtt_pub:

该demo将开发板作为mqtt中的publisher,向节点内发布主题信息。

要测试该节点需要以下前置:

1.建立一个mqtt服务器

2.使用mqttbox或者其他相关工具从服务器上订阅对应的主题。

3.可以向串口发送指令。

建议本地下载mosquito,在本地搭建一个mqtt服务器,或者使用emqX公用服务器。该案例的defult server是:`test.mosquitto.org:1883`

向串口发送指令连接WIFI并订阅:

wifi_sta_connect your_wifi_id your_passwd

mqtts_pub $local_ip 8883   #mqtt_pub  如果不带参数会默认发送到上述的公有服务器

#会得到以下输出:

bouffalolab />mqtt_pub is ready to begin publishing the time.
Press ENTER to publish the current time.
Press CTRL-C to exit.
mqtt_pub published : "{"hello mqtt by bl616/8 !"}
Now time is 2023-06-16 00:00:00"
mqtt_pub published : "{"hello mqtt by bl616/8 !"}
Now time is 2023-06-16 00:00:03"
mqtt_pub stop publish to test.mosquitto.org

订阅方会受到当前时间的字符串。

wifi_mqtt_sub:

和上述一样,但是该案例是submiter ,也就是消息订阅方。

前置条件:同上。

同样向串口发送指令来验证:

bouffalolab />wifi_sta_connect your_wifi_id your_pwd
bouffalolab />mqtt_sub your_server <port> 

#得到输出

bouffalolab />mqtt_sub listening for '<theme>' messages.
Press CTRL-C to exit.
Received publish('<theme>'):  {"hello mqtt"}
Received publish('<theme>'):  {"hello mqtt"}
mqtt_sub disconnecting from xxx.your_server

MQTTS功能:

上述的两个Demo现已支持TLS加密功能,该加密使用TLS1.2加密套件,未验证 CN name。

开启MQTT的选项在对应文件夹中的CmakeList中:

cmake_minimum_required(VERSION 3.15)

include(proj.conf)

find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})

# User
sdk_add_compile_definitions(-DCONFIG_CLI_CMD_ENABLE)
# sdk_add_compile_options(-DMQTT_USE_CUSTOM_SOCKET_HANDLE)
# sdk_add_compile_definitions(-DMBEDTLS_PK_PARSE_C)


sdk_add_compile_options(-DMQTT_USE_MBEDTLS)     #注释该行则不启用TLS加密,否则加密。

target_sources(app PRIVATE
                   wifi_mqtt_pub.c)

sdk_add_include_directories(.)

sdk_set_main_file(main.c)

project(wifi_mqtt_publisher)

其中的CA证书,密钥等具体为:

#ca.crt:
-----BEGIN CERTIFICATE-----
MIIDwzCCAqugAwIBAgIUT2Cy6wsGGycw6WvNoHot5I+GlTQwDQYJKoZIhvcNAQEL
BQAwcTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0Jl
aWppbmcxDzANBgNVBAoMBk15IE9yZzEWMBQGA1UECwwNQ0EgRGVwYXJ0bWVudDEV
MBMGA1UEAwwMTVFUVCBSb290IENBMB4XDTI1MDcxNzEwMzU1MVoXDTM1MDcxNTEw
MzU1MVowcTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcM
B0JlaWppbmcxDzANBgNVBAoMBk15IE9yZzEWMBQGA1UECwwNQ0EgRGVwYXJ0bWVu
dDEVMBMGA1UEAwwMTVFUVCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAzMguxj26xEFb1N5u6slSgEp62eak+dqkmq6BoxVW48V2GO62caCt
n7MZywknnKm1sFM9kOv/mdr4fjHF3ZhvZ4MCqu0EPy2crjROoV8ofsjMDoIp2PSh
VZ7wmDC5zu7ndCMX85C/vv3Ikows5sMr/r6Ieh7lgoLeXTFDbGixLM3u1vB2I/OQ
gepYnPVkUHmEWsRFtzwwBgbAkSlmf3UreCT/lDbcOsKGl3YY4PZtJjk3wwtJqLAE
M/dNJdleU9ENwwelotScu4CGex+OaPNfn1EwLgwBrX2FByYyfpw+DUTnhdXsPbGM
jly24NUcg7CavTJxow5ltuWLahN5oQZZ4wIDAQABo1MwUTAdBgNVHQ4EFgQUGIBW
MZwM5z40nEZde/GSQxszsDEwHwYDVR0jBBgwFoAUGIBWMZwM5z40nEZde/GSQxsz
sDEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEALp0qj9qWnc9l
9GWivdOHVSfIHWWuTUN7+2QXGEHZ7vyC6dPoMNvr0Wg35Wj3VLbmZm6vlIubQ0JW
3nt5Kru9Keh/BALAxFa6onRVdYahXWRzD1fjTMUfIpDjaRtFWE6luA3ztfj2ZtiL
q665MZulKQLFhIQeAXNfR7hpxaiR+qu5YVYvWQN7gigjB787Y+JUk+h3rnlZ5vPX
j/yf9BP2u9tK1VkF2Ir1c+Y0xcp0qomd25QOm0H/qwgEh5wnO3du8GrTS5WMlYq1
LJSLM7dmBKgvTPngAgewFiwNPyhtywM6Vdc/mrcNwqAcfmyV0U8oU/DReKbX4ed2
+zlke05LKA==
-----END CERTIFICATE-----

#ca.key:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMyC7GPbrEQVvU
3m7qyVKASnrZ5qT52qSaroGjFVbjxXYY7rZxoK2fsxnLCSecqbWwUz2Q6/+Z2vh+
McXdmG9ngwKq7QQ/LZyuNE6hXyh+yMwOginY9KFVnvCYMLnO7ud0IxfzkL++/ciS
jCzmwyv+voh6HuWCgt5dMUNsaLEsze7W8HYj85CB6lic9WRQeYRaxEW3PDAGBsCR
KWZ/dSt4JP+UNtw6woaXdhjg9m0mOTfDC0mosAQz900l2V5T0Q3DB6Wi1Jy7gIZ7
H45o81+fUTAuDAGtfYUHJjJ+nD4NROeF1ew9sYyOXLbg1RyDsJq9MnGjDmW25Ytq
E3mhBlnjAgMBAAECggEAJTvQpWLb7osjs1SuPipUwdbI942kOXmzrBxGnexnXAqv
KmFc8tQQPZVG/0+u0CFbU7AO5abDVqolvGw4Wc45k0yS05k8yG/2qQYBtf2jU0oX
MBwil7wDCZpYjJNvdVyi4M7wr+yFsKhcK6kpENwzx6HFFs8/U7ePzsoCRFfUvxxu
26rKP0rF5168DCTn8UMyYqEdPQ9MOD2xI6hPsJVelqu7eWRXAWrFgVH5L+xgd0mH
MhtidnvayrUKt5eE+FifZN9QK2rgJ9lppGw9bPANSOQ+K1O7F+HIOwSCXCD2hM2t
bHaQfeLfOeu32MlOMcGQIcQGqwWpI9XHWQBJO9OcgQKBgQD5azAYDJL/jRxaN4o+
1QXOBRuimKNT4XDDyoPA0j6uwcXQa6LbhxPAack2ocyXm4O+g/wySiO/tnPoaNUH
WGppGdnGuqX+JAK/35GsNb30BCXb0Gkz/bijTSm3fNKg63ZTREZlJ/KTH8/4bM+p
B6FIO2g+oREjvVI6pRlBiLF70wKBgQDSL3nGHRzo6FSUjGmZBJ9f7koylYT7QuE8
mLoHG4fMoYaVDZk8eY10Xc9gL79aO4Uf98N004qbfL5QcbCgi5DBwrrIE1eInq0Y
CNKtfySzg2sdCG8Ex3fhtZZyOljlc4bckTj4gmGgCuNUDhPo+k2roskSoXo0G3T/
gFLFHJwvsQKBgG3UqIH+j4Ce59xGVsciUQMOtsObyVg3jst40xnGuzmDNJN5wmY/
DhCNxMAc8ZXVMmdjgVu30BQsyM+P0jcA1SLg8kgTiuLlgpxxW5lktPfOF8m69Yii
cnrekL8u5SVdamZySzliJOxqds8jQzJgnMHM/zONA5okVSBj8UItalJnAoGBAM8F
8hSfwkTp6b0zHCOauPv9MlnmicgOVNmhuMGdbUGx62ROs5ssQpbWe5bLENfofjRB
juQ4JHMICFAl2woWzar7iYvd+T7Yw7dDoXdAHz8td0hucSMs8TiA6kFylPLTuobw
B0RG7696afT1tMiqGeyvdwuBv2MplDDBDUWW64PRAoGAXmCqgu4AgKDrg/BsKCH3
070IxOXc+7tVdESmWyexDyNUfBCF+6Kowl1Kw3IgIcywA19sKK2msykyIy0Om+rM
EaZfHaspt9srWNlzDsPy6nV5dkXZcSezKVXxJgriDk46sPlEBNKGrYPbNmSYpvrY
NKgGQaYrJ5ixe1aEARcF2CE=
-----END PRIVATE KEY-----

#server.crt:
-----BEGIN CERTIFICATE-----
MIID6zCCAtOgAwIBAgIUYSb6OOUA1AaPPfdB/QhCrJFxYfIwDQYJKoZIhvcNAQEL
BQAwcTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcMB0Jl
aWppbmcxDzANBgNVBAoMBk15IE9yZzEWMBQGA1UECwwNQ0EgRGVwYXJ0bWVudDEV
MBMGA1UEAwwMTVFUVCBSb290IENBMB4XDTI1MDcyMjA2MDk0MVoXDTI2MDcyMjA2
MDk0MVowazELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAOBgNVBAcM
B0JlaWppbmcxDzANBgNVBAoMBk15IE9yZzENMAsGA1UECwwETVFUVDEYMBYGA1UE
AwwPMTkyLjE2OC4xNTMuMTE0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAm1NDiGRlGbUKX938s9HFrTyprJ4fhjHgmVZuqy0Hj5jX5Wvq7iPDXQHUuStN
9rIMB31K8h8gBfTbWTALQnL/p5urvBACvLI8J3BEz8pweq61sUeqBNGFO8YnxRou
vRPUeel9zg4GbLIf4T6BfwKtgMoqX/ROnnUiuE8sdo/KCreB5we+ZriP+jS1gVSQ
NMiJFXbo08aEV8WefuQnTegjgooEbFpeq7dtHXKiDiHW5LUCj6TUGh1DcKVvlSTa
ur7SMCvADT0W4Mp8Q9VXFCGwJugwy6pmtOqnPHEEBxs+1EGX22XeGS6ccP5HH2bm
yJ1gSLI+yt0r+T0cMTsoeBR2EQIDAQABo4GAMH4wCQYDVR0TBAIwADALBgNVHQ8E
BAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0RBAgwBocEwKiZcjAdBgNV
HQ4EFgQUW7r5PWIFPiDa1RcxhUUcMwMID3wwHwYDVR0jBBgwFoAUGIBWMZwM5z40
nEZde/GSQxszsDEwDQYJKoZIhvcNAQELBQADggEBAKWlIJWaDzhhbBy9ftUkGIis
EDjMvmLnkFchFFNAOWZq1yBujf3K0KqcmdgKfSearMQrK/YTHR1a39P21BSqnRpk
dfNZfiVvRkJAcdY9SgderklUmPoY9huxumtGEPDtrkxkyuhgpk7/9YyavgyMCMdd
cFIwdeBUEHPhHLw8TlhVT1UotClKbhjyRHOMrpfWXVnsa+U/UrPeqGn8uL49XPH4
9DqzKZPSZaPxNoAj0iHvo+7RvEl5jy+ixwRgnvdOsDteRwFFW0Kxd4Ccn4QKEgTY
chx6XC0/a2Lg8KwxZbmDGoj4sqJ3PltuG8GZB6Vdv0FJnjAK6cZAQE0Hyclhhbs=
-----END CERTIFICATE-----

#server.key:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCbU0OIZGUZtQpf
3fyz0cWtPKmsnh+GMeCZVm6rLQePmNfla+ruI8NdAdS5K032sgwHfUryHyAF9NtZ
MAtCcv+nm6u8EAK8sjwncETPynB6rrWxR6oE0YU7xifFGi69E9R56X3ODgZssh/h
PoF/Aq2Ayipf9E6edSK4Tyx2j8oKt4HnB75muI/6NLWBVJA0yIkVdujTxoRXxZ5+
5CdN6COCigRsWl6rt20dcqIOIdbktQKPpNQaHUNwpW+VJNq6vtIwK8ANPRbgynxD
1VcUIbAm6DDLqma06qc8cQQHGz7UQZfbZd4ZLpxw/kcfZubInWBIsj7K3Sv5PRwx
Oyh4FHYRAgMBAAECgf8CjFso4a/6ImSix5sqi0Z/xEvRIsb7OW/cR1uJc2bfjdWW
h5Uf7Kl7EFltFq8ww1SiZGvWWd+TBj4sntBdRrjrBwkwpkXLn4ddHkc17k+Ds8B6
jn87lQE0LQwTlicuJiUjDhgCSWvRj+dcZEO7noLTzUoX4oPOFbd8G2oFuyL71s0l
4jO2poU42qsOxgBd2XIxePUc320/2a7Y0rABZJMLVx24oRzHqCLhyhRneqoqar0P
1hmS2tMeEr66db8U6Fr7J+P1SVt0KFSdrvEYCDHTCVf0TAZ25vYT69VznZGSok4U
YQkBQiFFuyGXLgiRfrX/aL7rYxj2KBRAbce/lUECgYEAyx1coRA+FyptMZLWh7ny
QSSq25/J7K+TPUMefIKFtKCmBRHg6gWu9YbTimXIOoq7l51xI+YT02VnEqjn9ToR
vkUlNRyHBzsDt2VQTH+00Slo0tn4NS9Sb8uMezHiUgKGjiQWPQqwzUG4ToG2cYkj
8+vcxyHK5CWkWEVjh/1sRRkCgYEAw8R9Zqic+nv+9wRV219bmqyeSw2SkDXIyQSM
tUBjqZHB1wh3Z+Tc0KdYSM9tymEwBJ5mx/nYxxF3gWXW0K4kuS1jtMFZscNaA2/1
VRweVXWBUlC/oZY1IEdLchtcQt3CfLIwQIKyikPwax0EU9YfQiTAiDNCAdBNJPF0
J/bMn7kCgYEAiBWbCxp7zz+Qu0cbTwJpafXsN4ueWWLlLoV6tocol/WOZhUtcP3v
0/bKYo6BEaADwbgtppSvMdJdtaXPC4ElhCqFnEkJuvFyMvzBSQ/DEORCpAp//vo+
rEJfU+b/MF0a078f2zP/cvYWSxsjJnxwxyt+1zgv3J3Pt4h+AA3t7XkCgYEAnCJh
VXgTQx+T2RUHGOBz4efck8VuaD/NNK3BP2nsUriiXcst2JnKl0tweRme2fMrZfOj
y8hz4UkIBBbh/it1tI8D34z56XIBn44yn7++XbBLBQjL3ac8FdNm08oIinftfqBr
JXhXxziqTfOlmOvEoG9JcxdWhLXKYTWFy73ls1kCgYEAsrPcSpF8Ce3r+izDW2TM
2M4arK3T7hcMItLAQQoLO7RCYIivgQQE0WV9BmbC0fVTkptDMfks5s7QcU/6vzqC
zPx0NowGnabNWS1vsXD4QyoOyV3gqfVhM46cWbRhxtRmMo/LGuJ8rXnHY3bgF5va
VJlSyLW96jWK9neR0QOTKM4=
-----END PRIVATE KEY-----

将对应的证书和密钥保存到文件中,放在mosquitto的路径下。注意要将这些文件的所属组归给mosquitto. 然后修改mosquito的配置文件 ,该文件储存在 /etc/mosquitto/mosquitto.conf 中,配置如下:

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at

log_dest file /var/log/mosquitto/mosquitto.log

listener 8883
tls_version tlsv1.2
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key

listener 1883
allow_anonymous true

mosquitto的测试命令:

#测试sub是否能收到信息
mosquitto_pub -h localhost -p 8883 -t bl618  -m "aaa" --cafile ca.crt --insecure

#测试pub是否能推送信息
mosquitto_sub -h localhost -p 8883 -t bl618 --cafile ca.crt --insecure

HTTP与HTTPS相关demo说明:

wifi_http:

该demo会向网络服务器发送请求,根据返回结果判断http请求功能是否正常。

前置条件为:一个可共上网的wifi,可以向串口发送指令。

bouffalolab />wifi_sta_connect your_wifi your_pwd
bouffalolab />wifi_http_test www.xxx.com

#以下为输出

bouffalolab />Http client task start ...
Host:www.xxx.com, Server ip Address : the ip of websit server
Http client connect server success!
Press CTRL-C to exit.
HTTP/1.1 200 OK

wifi_https:

该demo会自动发加密数据到www.baidu.com,根据结果判断加密功能是否正常

前置条件:同上

bouffalolab />wifi_https_test
bouffalolab />dst_addr is 842C9824

#以下为输出
[I: 124359488][bl_https.c:126]    HTTP/S> bouffalo connect fd = 0x62fd0dc0
[I: 124377783][bl_https.c:136]    HTTP/S> ret = -28
[I: 124598639][bl_https.c:156]    HTTP/S> ret = 0
[I: 124598987][bl_https.c:160]    HTTP/S> total time:471 ms
[I: 124679688][bl_https.c:168]    HTTP/S> rcv_ret = 1179
[I: 124680077][bl_https.c:172]    HTTP/S> proc_head_r 0, status_code 200, body_start_off 400
[I: 124680533][bl_https.c:180]    HTTP/S> Copy to resp @off 0, len 779, 1st char 3C
bl_TcpSslDisconnect end
[I: 124683390][bl_https.c:264]    HTTP/S> total time:555 ms
[I: 124683715][bl_https.c:265]    HTTP/S> test_1: status_code 200, resp_len 779
[I: 124684395][bl_https.c:267]    HTTP/S> resp body: <!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.

如果你想要更改测试服务器目标,可以在https.c源码中添加test,或者直接更改这部分代码:

static void test_1(void)
{
    const char *host = "www.baidu.com";
    const uint8_t send_buf[] = "GET / HTTP/1.1\r\n"
                               "Host: www.baidu.com\r\n"
                               "User-Agent: curl/7.58.0\r\n"
                               "accept: application/json\r\n"
                               "\r\n";
    uint8_t *buf;
    int resp_len;
    int status_code;

    buf = malloc(16 * 1024);
    if (NULL == buf) {
        LOG_E("malloc\r\n");
        return;
    }

    resp_len = 16 * 1024;

    uint32_t start_time = 0, stop_time = 0;
    start_time = xTaskGetTickCount();
    status_code = https_request(host, 443, send_buf, sizeof(send_buf) - 1, buf, &resp_len);
    stop_time = xTaskGetTickCount();

    LOG_I("total time:%d ms\r\n", (stop_time - start_time));
    LOG_I("test_1: status_code %d, resp_len %d\r\n", status_code, resp_len);
    buf[resp_len] = '\0';
    LOG_I("resp body: %s\r\n", buf);

    free(buf);
}

上述函数被调用用来执行测试,更改该部分代码可以实现更改测试目标的目的。

TCP的Demo说明:

wifi_tcp:

该部分代码编写了一个server.c和一个client.c,分别用于测试TCP服务端测试和客户端测试。

前置条件:PC端和开发板共同在一个局域网内,可以向串口发送指令。

使用picocom工具在串口中执行指令。

server测试:

bouffalolab />wifi_sta_connect your_wifi_id your_wifi_pwd
bouffalolab />wifi_tcp_echo_test 3365

#服务器建立成功

bouffalolab />tcp server task start ...
Server ip Address : 0.0.0.0:3365

# 执行 nc -v ipaddr port 连接板子的tcp服务器

new client connected from (192.168.1.2, 57480)
Press CTRL-C to exit.
recv 7 len data

client测试:

#首先执行 nc -l -p 3365 在本地架起一个服务器

bouffalolab />wifi_sta_connect BL_TEST 12345678
bouffalolab />wifi_tcp_test localip 3365

#输出

bouffalolab />tcp client task start ...
Server ip Address : 192.168.1.2:3365
TCP client connect server success!
Press CTRL-C to exit.

UDP的demo说明:

该部分代码将使用开发板作为sta节点连接wifi并且架起一个udp服务器。

前置条件:PC端和开发板在同一个局域网内,可以向串口发送指令。

测试过程:

#连接开发板终端并发送指令

bouffalolab />wifi_sta_connect your_wifi_id 12345678
bouffalolab />wifi_udp_echo 3365
bouffalolab />udp server task start ...

#服务其成功架起输出
ip Address : ip:3365
udp bind port success!
Press CTRL-C to exit.

#在PC端执行  nc -u server_ip server_port
#直接发送 1234567890

#成功接受到数据
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:X
recv from 192.168.1.2
recv:1234567890

OTA的demo说明:

wifi_ota:

该部分代码测试了基本tcp升级固件,使用pc端作为服务器,在同一局域网下,通过命令使得开发板连接ota服务器,接收固件包。

用于测试的固件包被放在了编译出的 build/build_out 目录下。

前置条件:PC端和开发板在同一个局域网内,可以向串口发送指令。

测试过程:

#该程序需要分区表,所以在编译之后需要执行make whole来烧录whole bin
make whole
cd build/build_out
cat wifi_ota_bl616.bin.ota | nc -nvl 3365   #在pc端架服务器并发送固件

#向串口发送指令连接WiFi并连接服务器开始测试
bouffalolab />wifi_sta_connect your_ssid your_passwd
bouffalolab />wifi_ota_test PC_ip_addr 3365

#收到以下回复则表示测试成功
[STA CONSOLE] Calculated SHA256 Checksum:9F5EA3181316DA72589CD4CB0702AA25ED3094F7BED2B5898187044A0A01A077
[STA CONSOLE] Header SET SHA256 Checksum:9F5EA3181316DA72589CD4CB0702AA25ED3094F7BED2B5898187044A0A01A077
[STA CONSOLE] [OTA] [TCP] prepare OTA partition info
[STA CONSOLE] [OTA] [TCP] Update PARTITION, partition len is 804560
reboot
[STA CONSOLE] [OTA] [TCP] Rebooting
[STA CONSOLE] dynamic memory init success, ocram heap size = 263 Kbyte

该源码可以支持配置自动连接WIFI,可以修改源码中的该部分内容:

#define AUTO_CONNECT_WIFI (0)

/****************************************************************************
 * Private Types
 ****************************************************************************/

/****************************************************************************
 * Private Data
 ****************************************************************************/

struct bflb_device_s *gpio;
static struct bflb_device_s *uart0;

static TaskHandle_t wifi_fw_task;
#if AUTO_CONNECT_WIFI
struct bflb_device_s *wdg;
static TaskHandle_t ota_task_handle;
#endif
static wifi_conf_t conf = {
    .country_code = "CN",
};

#if AUTO_CONNECT_WIFI
// clang-format off
/* config your wifi ssid and password */
static const uint8_t wifi_sta_connet[] = "wifi_sta_connect H3C_21A0AD\r";
/* config your ota server and port */
static const uint8_t wifi_ota_test[] = "wifi_ota_test 192.168.123.120 3365\r";
/* reboot command */
// static const uint8_t send_buf1[] = "reboot\r";
// clang-format on

extern Ring_Buffer_Type shell_rb;
extern void shell_release_sem(void);

SemaphoreHandle_t sem_wifi_init_done;
SemaphoreHandle_t sem_wifi_connect_done;
SemaphoreHandle_t sem_wifi_disconnect;
#endif

将宏定义 AUTO_CONNECT_WIFI 设定为1,并修改 wifi_sta_connect[] wifi_ota_test[] 字符串为你的对应命令即可。