スキップしてメイン コンテンツに移動

投稿

NuttX on ESP32: wapi_smpを使ってみる (as of Mar/29/2021)

レポジトリにESP関係のコードがかなり入ったことは知っていたのですが、久しぶりにESP32用にNuttxをビルドしてみたところ、生成されるnuttx.binがEsp32に直接書き込めるbinaryになっていたり、wapi scan などが動作したり、wapi_smpやsta_softapのコンフィグ等多数追加されるなどかなり進展があったので、本稿を挙げてみることにしました。 レポジトリの取得や、基本的な環境設定は、 前々回 / 前回 と違いtools/esp32/Makefileがなくなっったようなので、以下の様にしてみました。 ツール類のインストールなど # 念のため sudo apt-get update #nuttx用のツール類のインストール sudo apt-get install kconfig-frontends #esp32 idf用のツール類のインストール sudo apt-get install git automake autoconf cmake build-essential git wget flex bison gperf make \ libncurses5-dev python3 python3-pip python3-setuptools python3-serial python3-click \ python3-cryptography python3-future python3-pyparsing python3-pyelftools python3-libusb1 python3-pip \ pkg-config unzip ninja-build ccache #python3をデフォルトにしておく。 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 なおubuntu 18.04ではkconfig-frontendsのパッケージがないので、別途ソースを取得し、ビルド・インストールします。 kconfig-frontendsのビルド(ubuntu 18.04) cd /usr/src sudo mkdir kconfig-frontends chown yousrid...

Nuttx: zoneinfo(time zone)を使用してみる

前回はNTPClientを実行してみましたが、デフォルトではzoneinfo/timezoneの設定は入っていないので、同期できるのはGMT/UTCのみです。当然といえば当然なのですが、ローカルタイムを設定できないかと思いコンフィグをしてみたのですが、少し込み入った結果になったので 前回 とは別稿で本稿を挙げてみることにしました。なお、ビルドは今回Debianではビルドできず(malloc erro)、ubuntu 2004 LTSでビルドしました。 まず、Configです。 前回 と今回のコンフィグのdiffは以下の通りです。 $diff -urN boards/arm/stm32/weact-f401ce/configs/rndis_ipv6_ntpc/defconfig \ boards/arm/stm32/weact-f401ce/configs/rndis_tz/defconfig --- boards/arm/stm32/weact-f401ce/configs/rndis_ipv6_ntpc/defconfig 2021-03-28 03:34:21.000000000 +0900 +++ boards/arm/stm32/weact-f401ce/configs/rndis_tz/defconfig 2021-03-29 19:29:34.283539700 +0900 @@ -22,10 +22,17 @@ CONFIG_BOARD_LOOPSPERMSEC=8499 CONFIG_BUILTIN=y CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y CONFIG_HOST_WINDOWS=y CONFIG_INTELHEX_BINARY=y +CONFIG_LIB_ZONEINFO=y +CONFIG_LIB_ZONEINFO_ROMFS=y +CONFIG_LIBC_LOCALTIME=y +CONFIG_LIBC_TZDIR="/etc/zoneinfo" +CONFIG_LIBC_TZ_MAX_TIMES=370 +CONFIG_LIBC_TZ_MAX_TYPES=2...

Nuttx: NTP Clinetで時刻を合わせる

NuttxでNTPクライアントを実行し、時刻を合わせることができたので備忘録として本稿を挙げてみることにしました。 対象はweact-f401ceで、 前回のf401ccのrndis_ipv6の設定 と少ししか差がないのですが、configのdiffは以下の通りです。 $ diff -urN boards/arm/stm32/weact-f401cc/configs/rndis_ipv6/defconfig \ boards/arm/stm32/weact-f401ce/configs/rndis_ipv6_ntpc/defconfig --- boards/arm/stm32/weact-f401cc/configs/rndis_ipv6/defconfig 2021-03-27 08:14:07.000000000 +0900 +++ boards/arm/stm32/weact-f401ce/configs/rndis_ipv6_ntpc/defconfig 2021-03-28 03:34:21.000000000 +0900 @@ -9,13 +9,14 @@ # CONFIG_NSH_ARGCAT is not set # CONFIG_NSH_CMDOPT_HEXDUMP is not set # CONFIG_NSH_CMDPARMS is not set +# CONFIG_NSH_DISABLE_DATE is not set CONFIG_ARCH="arm" -CONFIG_ARCH_BOARD="weact-f401cc" -CONFIG_ARCH_BOARD_WEACT_F401CC=y +CONFIG_ARCH_BOARD="weact-f401ce" +CONFIG_ARCH_BOARD_WEACT_F401CE=y CONFIG_ARCH_BUTTONS=y CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32=y -CONFIG_ARCH_CHIP_STM32F401CC=y +CONFIG_ARCH_CHIP_STM32F401CE=y CONFIG_ARCH_STACKDUMP...

NuttX: W25Q64JV-_IM( JEDEC ID EF 70 17 )を認識させる

何種類かのW25Qを入手したのですが、どれも同じだろうと思っていたところ、結線は問題ないのに初期化に失敗するものがありました。チップの刻印をみてもわからず、とりあえず、 こちらのSTM32向けのコード を走らせたところ、 JEDEC ID : EF 70 17 と識別されていました。(作者の方に感謝します。)そこでこれをもとに検索すると、どうやら W25QJVでも_IMで終わるもの だそうです。ここまでわかれば、あとはソースコードで識別できるようにするだけでよさそうなので、以下の変更を加えると、無事、初期化・書込・読出ができました。 $ diff -urN drivers/mtd/w25.c.orig drivers/mtd/w25.c --- drivers/mtd/w25.c.orig 2020-09-21 00:09:41.000000000 +0900 +++ drivers/mtd/w25.c 2021-03-23 08:17:30.523539700 +0900 @@ -102,6 +102,7 @@ #define W25Q_JEDEC_MEMORY_TYPE_A 0x40 /* W25Q memory type */ #define W25Q_JEDEC_MEMORY_TYPE_B 0x60 /* W25Q memory type */ #define W25Q_JEDEC_MEMORY_TYPE_C 0x50 /* W25Q memory type */ +#define W25Q_JEDEC_MEMORY_TYPE_D 0x70 /* W25Q memory type */ #define W25_JEDEC_CAPACITY_8MBIT 0x14 /* 256x4096 = 8Mbit memory capacity */ #define W25_JEDEC_CAPACITY_16MBIT 0x15 /* 512x4096 = 16Mbit memory capacity */ @@ -363,7 +364,8 @@ (memory == W25X_JEDEC_MEMORY_TYPE || memory == W25Q_JEDEC_MEMO...

Nuttx: IPv6 over RNDIS on F411/F401 Black Pill

ネットでNuttXのIPv6関係のことを検索しても、情報はおおくはないのですが、調べてみたところ stm32f4discoveryにipv6のコンフィグが入っていることがわかりました。そこでさらにしらべたのですが、Ethernetでは動作するようですが、残念ながらそれ以上のことはわかりませんでした。 そこでソースをみたところ、CDCECMはIPv6に対応している様子で、いったんBlack PillでCDCECMをコンパイルし書き込んでみたのですが、IPv6は無論のこと、IPv4も動作しませんでした。どうやら、RNDISはF4のOTGFS依存であり、CDCECMはF103系のUSBDEV依存のようです。 そこで今一度気を取り直し、RNDISにIPv6関連の設定を入れ、動作しない場合は、ソースに手を入れるという方向でやろうとしたところ、結局コンフィグだけでアドレス取得、PING6, telnet over ipv6ができたので、備忘録として本稿を挙げてみることにしました。また、今回はコンフィグだけでなく、Black Pillを接続する母艦側の設定も挙げてあります。 まずは、 weact-f401cc(F401cc Black Pill) 向けのIPv6のコンフィグ設定です。 $ cat boards/arm/stm32/weact-f401cc/configs/rndis_ipv6/defconfig # # This file is autogenerated: PLEASE DO NOT EDIT IT. # # You can use "make menuconfig" to make any modifications to the installed .config file. # You can then do "make savedefconfig" to generate a new defconfig file that includes your # modifications. # # CONFIG_ARCH_FPU is not set # CONFIG_NSH_ARGCAT is not set # CONFIG_NSH_CMDOPT_HEXDUMP is not set # CONFIG_NSH...

NuttX: STM32F401CC/ST32F401CE Black Pill 向けにソースをフォーク

F4 Black Pillにはいくつか種類があり、F411CEのものもあれば、F401CC, F401CEのものもあります。その後、F411CEに続いてF401CE/F401CCを入手したので、今回はF401CCとF401CE向けにソースをフォークし、RCC関係のところだけですが本稿を挙げてみることにしました。 F401CCとF401CEはクロック関連は同じなので、以下、F401CE向けのboards/arm/stm32/weact-f401ce/include/board.hです。 $ diff -urN boards/arm/stm32/stm32f411-minimum/include/board.h boards/arm/stm32/weact-f401ce/include/board.h --- boards/arm/stm32/stm32f411-minimum/include/board.h 2021-03-16 23:33:19.400000000 +0900 +++ boards/arm/stm32/weact-f401ce/include/board.h 2021-01-09 02:52:09.000000000 +0900 @@ -1,5 +1,5 @@ /**************************************************************************** - * boards/arm/stm32/stm32f411-minimum/include/board.h + * boards/arm/stm32/weact-f401ce/include/board.h * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -18,8 +18,8 @@ * ****************************************************************************/ -#ifnde...

NuttX: STM32F411CE Black Pill 向けにソースをフォーク

前回はSTM32F103RC向けのソースフォーク をしたのですが、今回はSTM32F411CEBlackPill向けのフォークについてです。もともとboards/arm/stm32/stm32f411-minimumというソースがありますが、2021/03現在、RCCの設定がうまくいっていないようで、USBを使ったサンプルはなく、nsh(シリアルコンソール)しかサンプルが入っていません。そこで、 STM32F103RC向けのフォーク と同様に、ソースをフォークしてみました。 基本的には前回とおなじやり方 なのですが、USB関係を動かすためには、RCCの設定(include/board.h)を修正する必要がありますので、今回はそこだけですが、UPしておきます。 $ diff -urN boards/arm/stm32/stm32f411-minimum/include/board.h boards/arm/stm32/weact-f411ce/include/board.h --- boards/arm/stm32/stm32f411-minimum/include/board.h 2021-03-16 23:33:19.400000000 +0900 +++ boards/arm/stm32/weact-f411ce/include/board.h 2021-03-17 00:21:58.290000000 +0900 @@ -1,5 +1,5 @@ /**************************************************************************** - * boards/arm/stm32/stm32f411-minimum/include/board.h + * boards/arm/stm32/weact-f411ce/include/board.h * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -18,8 +18,8 @@ * ...