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

投稿

9月, 2020の投稿を表示しています

STM32F407VにてNUTTXを実行:その3 On board SPI flashとSDカードを同時に使う

STM32F4Discoveryと異なり、F4VBBにはSPI接続のW25Q16 Nor Flashが載っています。この接続はSPI1で接続しているのですが、接続は、PA5,PA6,PA7ではなく、PB3,PB4,PB5で接続されていて、CSはPB0で接続されていますので、STM32F4discoveryのコードそのままでは動きません。 また、ソースコードをみたところ、W25Qの初期化コードもF4Discoveryのコードには入っておらず、これもソースコードを修正しなければいけません。そこでnuttxでのデバイス初期化について、ネットで調べたところ、https://groups.google.com/g/nuttx/c/y0x8ud02rxA によると、CSピンの初期化は以下の様にするとありました。 stm32_gpiowrite(GPIO_DEVICE_CS_PIN, !selected); また、SPIデバイスの初期化は、https://cwiki.apache.org/confluence/display/NUTTX/Using+SmartFS に、例えば、 int board_app_initialize(uintptr_t arg) { FAR struct spi_dev_s *spi; FAR struct mtd_dev_s *mtd; int minor = 0; /* Initialize the SPI bus #3 with an M25P FLASH driver */ spi = stm32_spibus_initialize(3); mtd = m25p_initialize(spi); /* Initialize SMART MTD to work with M25P FLASH device */ smart_initialize(minor, mtd, NULL); } の様にすると記述がありました。そこで、ソースコードを見てみると、board_app_initializeは、stm32_bringup.cの int stm32_bringup(void) に該当することがわかりました。これでとりあえず足掛かりはできたので、早速コードを修正して動作させたところ、とりあえず動

STM32F407VにてNUTTXを実行:その2 MicroSD Cardをマウント

F4V Black Boardには、MicroSD カードスロットとSIPフラッシュが載っているのですが、今回はMicroSDカードをマウントしてみました。 それでは早速設定していきます。 cd /usr/src/nutxx-9.1.0/nuttx make distclean tools/configure.sh stm32f4discovery/nsh Copy files Select CONFIG_HOST_LINUX=y Refreshing... make menuconfig 最初にSystem Typeの STM32 Peripheral Supportを選択し、SDIOをEnableにします。 続いてexitし、System Typeの設定に戻ると、項目に SDIO Configuration ---> が表示されます。選択すると、以下の様に表示されますが、F4VBBの場合ボード側にSDIOのプルアップ抵抗が載っているので"Enable internal Pull-Ups"の設定はEnableにせず、そのままにしておきます。 [ ] SDIO Card support (NEW) [ ] Enable internal Pull-Ups (NEW) (0x00010000) SDIO DMA priority (NEW) [ ] Use D1 only (NEW) ここから、exitを二回エンターして、メインメニューに戻り、今度は RTOS Features ---> を選択し、さらに、 Work queue support ---> に入ります。ここで、 [*] High priority (kernel) worker thread を選択すると、9.1.0の場合、 [ ] Generic work notifier (NEW) [*] High priority (kernel) worker thread (1) Number of high-priority worker threads (NEW) (224) High priority worker thread priority (NEW) (2048) High priority

STM32F407VにてNUTTXを実行:その1

STM32F407VET6とMicro SDスロットと2MBのSPIフラッシュが載った、通称 F4V Black Boardというボードが手元にあったので、NUTTX(Real Time OS)をビルド・実行してみました。 では早速、設定していきますが、コンフィグレーションには、クロスコンパイラ類と、kconfig-frontendsが必要なので、先にhostマシン(Debian 11/Bullseye)にインストールしておきます。 sudo apt-get install kconfig-frontends binutils-arm-none-eabi gcc-arm-none-eabi 2020/9/21日時点での、wiki上でのリリース済の最新バージョンは、9.0の様ですが、( https://cwiki.apache.org/confluence/display/NUTTX/NuttX+9.0 ) git repository上での最新ブランチはrelease 9.1.0の様子なので、こちらをクローンしました。 mkdir /usr/src/nuttx-9.1.0 cd /usr/src/nuttx-9.1.0 git clone -b nuttx-9.1.0 https://github.com/apache/incubator-nuttx nuttx git clone -b nuttx-9.1.0 https://github.com/apache/incubator-nuttx-apps apps 今回は、stm32f407v black board (stm32f407ve, microsd slot, spi 16Mbit flash付き)なんですが、STM32F4DISCOVERY(stm32f407vg)の物をコンパイル/インストールしてみます。 NUTTXとSTM32F4DISCOVERYのwikiを参考にしました。 https://cwiki.apache.org/confluence/display/NUTTX/Wiki https://cwiki.apache.org/confluence/display/NUTTX/STM32F4DISCOVERY+Unix cd /usr/src/nuttx-9.1.