この記事で紹介するすべてのWi-Fi機能、MACレイヤー機能などは、HaaS EDUK1でのWi-Fi用です。
1.Wi-Fi汎用モジュール
HaaS1000チップには4つのメインコンピューティングコアと、いくつかの補助的なスモールコアがあります。メインのコンピューティングコアには、2つのA7と2つのM33が含まれ、そのうちBTとWi-Fiは独立した小さなコアで実行されます。次の図に示すように、Wi-Fi汎用モジュールとチップ全体の他のハードウェアリソースとの関係は次のとおりです。
2.Wi-Fiサポート機能
- Wi-Fi®IEEE802.11a/ b / g / n
- 2.4GHzWi-Fiをサポート
- 20MHz、40MHz帯域幅モードをサポート
- Wi-FiとBluetoothの共存をサポートする
2.1、Wi-Fiリンク層(MAC)
Wi-Fiリンク層は、次の機能をサポートしています。
- ステーション、softAP、P2Pモードを同時にサポートできます
- A-MPDUおよびA-MSDUの送受信をサポートします
- WMM省電力モードをサポート
- 適応送信レートをサポート
- ときにWPA2PSK、WPA2エンタープライズセキュリティ
- WEPとTKIPをサポートする
- AES-CCMハードウェアアクセラレーションをサポート
- SMS4-WPI(WAPI)ハードウェアアクセラレーションをサポート
2.2、Wi-Fiベースバンド
Wi-Fiベースバンドは次の機能をサポートしています。
- IEEE 802.11a、11b、11g、11nをサポート
- 20Mhzおよび40Mhzチャネルをサポート
- MCS 0-7(BPSK、r = 1 / 2-64 QAM、r = 5/6)をサポートし、データ転送速度は150Mbpsに達する可能性があります
- shortguardinterval、greenfield、STBCをサポート
- デジタルプリディストーションテクノロジーをサポート
2.3、Wi-Fi RF
Wi-Fi RFは、次の機能をサポートしています。
- 統合された2.4GHzおよび5GHzPA、LNAおよびRFスイッチ
- 2400-2497MHz / 4900-5950MHzをサポート
3.Wi-Fi帯域無線規格
3.1、Wi-Fi2.4GHz帯域無線規格
2.4GHzRF受信特性
2.4GRF送信機のプロパティ
3.2、Wi- Fi5GHz帯電波
5GHzRF受信機の特性
5GHzRF送信機の特性
4.無線周波数インターフェース
5.ソフトウェア開発
5.1ネットワーク管理モジュールの基本的な紹介
特定のWi-Fi操作は、Wi-Fiネットワークの管理を容易にするアプリケーション層へのインターフェイスを提供するNetmgrを介して均一にカプセル化されます。以下は、Netgmrの主なアーキテクチャです。
netmgrは主に、上位のAPPにAPIを提供し、下位のWi-Fi接続にHAL抽象化レイヤーを提供します。Netmgrは、複数のサブモジュールで構成されています。各サブモジュールは、主にWi-Fiの初期化、Wi-Fiの動的管理、DHCPによるIPアドレスの取得、SNTPによるネットワーク時間の取得などを担当します。
5.2、機能紹介
Wi-Fiを初期化する
この機能は、主にWi-Fiモジュールを初期化するために使用されます。
int netmgr_init (void );
ネットワーク管理モジュールを起動します
定義:
int netmgr_start (bool autoconfig);
パラメータの説明:
autoconfig :trueは 自動的にネットワークに接続し、false は自動的にネットワークに接続しません
Wi-Fiに接続する
ssidおよびpasswdパラメーターの変更に注意してください。
定義:
int32_t netmgr_connect (const char * ssid、const uint8_t * password、uint32_t timeout);
パラメータの説明:
ssid :Wi - Fi接続の名前
password :Wi - Fiに接続するためのパスワード。空の場合はNULLとして指定します。
タイムアウト:接続タイムアウト時間(ミリ秒単位)
用例:
netmgr_connect (“ ssid”、“ passwd”、10 * 1000 );
5.3。紹介例
Wi-Fiの例は、helloworld_demoの旅に基づいて学習されます。
主に4つのステップに分かれています。
- コードを変更する
- コードをコンパイルする
- 画像を書き込む
- ビュー・ログ
5.3.1、コードを変更する
ネットワーク接続コードを変更する
ファイルに次のコードを置き換えアプリケーション/例/ helloworld_demo / appdemo.c 。
2つのヘッダーファイルnetmgr.hとaos / yloop.hを同時に追加する必要があることに注意してください。
コード内のこの行を変更することに注意してください。
netmgr_connect("test_wifi" 、"wifi_passwd" 、10 * 1000 );
test_wifiを、wifiに接続する必要のある名前に変更します。
Wi-Fiに接続する必要があるパスワードになるようにwifi_passwdを変更します。
#include <stdio.h>
#include <stdlib.h>
#include <aos/kernel.h>
#include "aos/init.h"
#include "board.h"
#include <k_api.h>
#include "netmgr.h"
#include "aos/yloop.h"
void start_netmgr(void) {
netmgr_init();
netmgr_start(false);
netmgr_connect("test_wifi", "wifi_passwd", 10 * 1000);
}
int application_start(int argc, char *argv[])
{
int count = 0;
printf("nano entry here!\r\n");
start_netmgr();
while(1) {
printf("hello world! count %d \r\n", count++);
aos_msleep(1000);
};
}
関連するコードを変更してコンパイルする
モジュールのコンパイル方法は、application / example / helloworld_demo / Config.inに追加することです:「!AOS_CREATE_PROJECTの場合はAOS_COMP_NETMGRを選択してください」
たとえば、次のデモでnetmgrコンポーネントが必要な場合は、次の行を追加します。
config AOS_APP_HELLOWORLD_DEMO
bool "Helloworld Demo"
select AOS_COMP_NETMGR if !AOS_CREATE_PROJECT
ここでselectを使用した後、実験プロジェクトのコンパイル時にnetmgrコンポーネントが自動的にコンパイルされます。次の図に示すように、aosmakeを実行するとnetmgrが表示されます。特定のコンパイル方法Config.inについては、その他の変更についてコンパイル環境の章を参照してください。
5.3.2、コードをコンパイルする
コマンドラインで次の3つのコマンドを実行します
aos make distclean
aos make helloworld_demo@haaseduk1 -c config
aos make
コンパイルログを参照してください。
aosはdistcleanを作ります
aos make helloworld_demo @ haaseduk1 -c config
作る
コンパイルの終了の兆候は、以下に示すように、「ビルドが完了しました:helloworld_demo @ haaseduk1」を確認することです。
5.3.3、画像を書き込む
デバイスを接続してから、次のコマンドを実行します
アップロード
書き込み開始ログ:
書き込みプロセスログ:
燃焼成功後の兆候:
5.3.4、ログを表示
シリアルポートソフトウェアを使用してシリアルポートを開き、接続ステータスを確認します。次のコマンドを実行して、wifi接続ステータスを確認します。
netmgr -t wifi -p
NETWORK_CONNECTEDがある場合、接続は成功しています。
6.コマンドラインからネットワークを使用します
Wi-Fiは、保存されている接続情報の読み取り/書き込み/削除、現在のネットワーク内のすべてのAP情報の印刷、APへの接続と切断、ネットワークステータスの照会など、コマンドを使用したWi-Fiネットワークに関連する操作をサポートします。
コマンドライン |
説明 |
netmgr -t wifi -i |
初期化 |
netmgr -t wifi -a [0/1] |
自動的に再接続するかどうかを設定します。0、自動的に再接続しません; 1、自動的に再接続します。 |
netmgr -t wifi -b [0/1] |
履歴接続レコードを保存するかどうか。0、履歴接続レコードを保存しません。1.履歴接続レコードを保存します。 |
netmgr -t wifi -c [ssid] [パスワード] |
ssidパスワードを使用してインターネットに接続します |
netmgr -t wifi -e |
Wi-Fi接続を切断します |
netmgr -t wifi -w [wifi_config] |
Wi-Fi構成ファイルを書き込みます。network = {\\ nssid = \ "aos \" \\ npassword = \ "123456 \" \\ nchannel = \ "0 \" \\ n} \\ nなどのwifi_config形式 |
netmgr -t wifi -r |
Wi-Fi構成ファイルを読み取る |
netmgr -t wifi -d |
Wi-Fiプロファイルを削除する |
netmgr -t wifi -p |
現在のネットワークステータスを印刷する |
netmgr -t wifi -s |
現在のネットワーク上のAP情報を出力します |
たとえば、SSIDが「aos」でパスワードが「123456」のAPでも次のようになります。
netmgr -t wifi -i
netmgr -t wifi -c aos 123456
7.分析方法
Netmgrキーログは、主に次のようなシリアルポートログに従ってデバイスの現在のネットワークステータスの識別を容易にするためのものです。
重要なログ |
説明 |
NETMGR_CONN conn_connecting |
Wi-Fi接続を意味します |
NETMGR_CONN conn_connected |
Wi-Fi接続が成功したことを示します |
NETMGR_CONN conn_obtaining_ip |
IPアドレスが取得されていることを示します |
wifi_dhcp_start:1763 start dhcp |
DHCPクライアントを起動してIPにアクセスすることを示します |
netmgr_ip_got_event |
IPアドレスを取得するイベントを示します |
sntpタスクを開始します。 |
sntpサーバーが起動していることを示します |
[sntp] OK:秒739241320 usec 1612343811 |
sntpが時間を正常に取得したことを示します |
通常、特定の問題の分析では、上記のログに基づいて現在のネットワーク状況を判断する必要があります。特に最後のsntpログ。このログが表示されている場合は、現在のネットワークのWi-Fiが接続されており、WANにアクセスできることを意味します。
開発者テクニカルサポート
さらにテクニカルサポートが必要な場合は、DingTalk開発者グループに参加するか、WeChatパブリックアカウントをフォローしてください。
テクノロジーとソリューションの詳細については、AliyunAIoTホームページhttps://iot.aliyun.com/をご覧ください。