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 worker thread stack size (NEW) [ ] Low priority (kernel) worker threadとなりますが、
(1) Number of high-priority worker threads (NEW)のままですと、起動できませんでした。High priority/Low priorityのthread数を算出する方法は現時点では不明なのですが、High priority thread数を、nshとsdioハンドリングで最低数の2を入力した場合、とりあえず起動しましたが、残念ながらマウントできませんでした。そこで、今度は4を設定したところ、マウントもできましたが、なにか突っかかりがあるような動作でした。そこで今度は8に設定したところスムーズにマウントもできました。今度は、high priority threadを設定せず、low priority threadだけをconfigした場合は、コンパイルできませんでしたが、low/high priority のスレッド数をともに1にした場合は、コンパイル・マウントまでできましたので、この設定を保存します。(参考までに、high/lowいずれも設定しない場合はコンパイルできませんでした。)high/low スレッド の違いも含めて、この辺りは少し掘り下げて理解する必要がありそうです。なお、他の設定についてはそのままにしてあります。 続いて、exitして、RTOS Featuresメニューに戻り、次は
RTOS hooks --->に入りますが、9.1.0の場合、
[*] Custom board late initializationが初めからEnableの状態になっているので、以下の様にそのままにしておきます。
[ ] Custom board early initialization [*] Custom board late initialization (2048) Board initialization thread stack size (240) Board initialization thread priority [ ] Enable startup hook [ ] Enable atexit() API [ ] Enable on_exit() API確認が済んだら、Exitを二回して、メインメニューに戻り今度は、
Device Drivers --->サブメニューに入り、MMC/SD DriverサポートをEnableにします。
[*] MMC/SD Driver Support ----Enableにした後は、さらにサブメニューに入りますので、以下の様にします。
--- MMC/SD Driver Support (1) Number of MMC/SD slots (NEW) [ ] Disable MMC/SD write access (NEW) [ ] Disable MMC/SD multiblock transfer (NEW) [*] MMC cards support (NEW) [ ] MMC/SD card detect pin [ ] MMC/SD write protect pin [ ] MMC/SD SPI transfer support [*] MMC/SD SDIO transfer support [ ] SDIO bus share support (NEW) [ ] Use D0 Busy to detect Write Complete (NEW) [ ] SDIO 1-bit transfer (NEW) [ ] SDIO block setup (NEW)設定内容としては、SPIを使わずにSDIOを使い、MMCカードのサポートを入れますが、F4VBBには、ライトプロテクトピンもなければ、Card Detect pinもないので、このように設定します。 設定が済んだらExitを二回して、またメインメニューに戻り、次はFile Systemの設定を行います。
File Systems --->File Systemsサブメニューに入り、FAT file systemをEnableにし、他の設定は、とりあえず以下の様にしておきます。
[*] FAT file system [*] FAT upper/lower names [*] FAT long file names (32) FAT maximum file name size (NEW) [ ] Use faster method for forming long filename 8.3 alias (NEW) (0) Number of trailing characters to use for 8.3 alias (NEW) [ ] FAT timestamps (NEW) [ ] Force direct transfers (NEW) [ ] DMA memory allocator (NEW) [ ] Direct transfer retry (NEW)今回のコンフィグレーションは以上ですので、ここからExitを二回入力しメインメニューから抜けます。すると、セーブするか聞いてくるので、Saveしてください。
Do you wish to save your new configuration?保存したら、make clean; makeして、出来上がったnuttx.binを書き込みます。書き込み後リセットして
NuttShell (NSH) NuttX-9.1.0 nsh> ls /dev /dev: conole mmcsd0 null tyS0 nsh> mount -t vfat /dev/mmcsd0 /mnt nsh> ls /mnt /mnt: System Volume Information/となればとりあえず動いているということになります。感想としてはconfigurationメニューをみているといろいろな設定ができそうだなと思う反面、資源の管理もしないとだめだから、もう少し掘り下げて理解する必要があるなと思いました。 今回は以上です。それでは。
コメント
コメントを投稿