world!を出力してみました。world!を出力してみます。XIAOだけでパソコンと通信できます。前回は~/myprojects/hello-worldにプロジェクトを作成しましたが、今回は~/myprojects/hello-world-usbにしましょう。OSのプロジェクトには最低限、CMakeLists.txt、prj.conf、ファームウェアのソースファイルの3つが必要です。これらを用意してみます。main.cこんな感じになるようにファイルを作っていきましょう✊CMakeLists.txt最低限の中身のCMakeLists.txtは次のようになります。OSのビルドシステムを取り込み、appというターゲットにアプリのソースファイルを指定します。project()はプロジェクト名の指定です。world!と同じです。OSのどの機能を使うかを指定するprj.confですが、USB機能を有効にしたり、USBシリアル機能関連の設定をする必要があります。OSにはいろんなサンプルが付属していて、それを真似するだけでOKになっているのでわかりやすいです☺️USBシリアルのサンプルは、zephyrproject/zephyr/samples/subsys/usbにあります。このサンプルをそのまま使って、中身を次のようにします。sample"CONFIG_USB_UART_CONSOLE=yCONFIG_UART_INTERRUPT_DRIVEN=yCONFIG_UART_LINE_CTRL=yCONFIG_UART_CONSOLE_ON_DEV_NAME="CDC_ACM_0"CONFIG_USB=yでUSBドライバを有効にします。CONFIG_USB_DEVICE_STACK=yはUSBのデバイスモードを有効にします。OSは現時点ではUSBホストモードは対応しておらず、デバイスモードのみです。CONFIG_USB_UART_CONSOLE=yで、USBシリアルコンソールを有効にします。その他、いくつかUSBやUARTのオプションを有効化したり設定したりしています。ちなみに、このオプションだけではUSBシリアルコンソールへの出力はできますが、入力は受け付けません。USBシリアルコンソールの入出力を両方使う場合のサンプルは、zephyrproject/zephyr/samples/subsys/cdc_acmを参照してください。OSは複数のUSBデバイスクラスを同時に使うことは対応していません。OSのコンソールの出力先を"CDC_ACM_0"にします。この"CDC_ACM_0"というのがUSBシリアルになります。src/main.cいよいよソースコードを用意しましょう。いえ、これもサンプルほぼそのままです。World!\n");}USB機能を有効にするには、usb_enable()を呼び出します。OSのドライバによっては、main()に入る前に自動で初期化・有効化してくれるものも多いのですが、USBは明示的に呼び出す必要があるようです。使用するUSBデバイスクラスによって、usb_enable()の前にアプリ側の設定などを行う必要があるからかと思われます。Ready)フラグが立つのを待っています。これで、パソコン側とUSBシリアルコンソールの接続が確立し、通信できるようになるのを待つことができます。この3行を外すと、パソコン側との接続の有無にかかわらず、先へ進みます。world!を出力します。動かしてみようプロジェクトの準備ができたら、早速ビルドしてみましょう。seeeduino_xiaoファームウェアのバイナリは、build/zephyr/zephyr.binにできます。XIAOのUSB-Cポートをパソコンにつないでみましょう。Windowsパソコンでも大丈夫です。自動的にドライバがインストールされ、COMポートとして認識されます。Termなどのソフトウェアを使って、認識されたCOMポートに接続してみましょう。XIAOで受けることもできます。»スポンサーリンクスポンサーリンクプロフィール無線モジュールのファームウェア開発を中心に、IoTサービス全般の開発に携わるエンジニアです。reserved.引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。