みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

NuttXをSTM32F103 minimum(BluePill)で動かす(NSH編)

NuttX + BluePillの続き。

UARTでシェル

前回まではBluePillとPCをUSBケーブルで接続しUSB経由でシェルを使用していたが、 今回はUSB-TTL変換ケーブルで接続しUART経由でシェルを使用してみる。

コンフィギュレーション

基本的なNuttXのビルド方法は変わらないが、コンフィギュレーションを次のようにする。

$ cd nuttx
$ tools/configure.sh -l configs/stm32f103-minimum/nsh

接続方法

ビルド方法と書き込み方法は省略する。

PCと接続するUSB-TTL変換ケーブルはこんな感じのものを使用する。

基本的には5VGNDTXDRXDを接続する。

変換ケーブルとBluePillの接続は次のようになる。

ケーブル側 BluePill
5V(赤) 5V
GND(黒) GND
TXD(緑) PA10(RX1)
RXD(白) PA9(TX1)

USB-TTL変換ケーブルの色は手元のケーブルのもので書いたが、実際のところすべての変換ケーブルがこのアサインなのかどうかはわからない。 ざっと調べたところ、これと同じ確率は高いとおもう。

Ubuntuでは/dev/ttyUSB0として見えるのでminicomなどで接続する。

比較

バイナリサイズ

configure.sh実行後、make menuconfigの変更をしない状態でのnuttx.binのサイズを比較した。

USBNSH NSH
50K 40K

UART接続のNSHの方が10K小さくできる。

RAM消費量

デフォルトのままではprocfsが無効のためmeminfoが見れないので、 CONFIG_FS_PROCFSだけ有効にして比較してみる。

まず、この状態のバイナリサイズ

USBNSH NSH
58K 49K

次にfreeコマンドの結果

total used free largest
USBNSH 16640 10208 6432 6416
NSH 17104 11536 5568 5552

freeコマンドの各項目の意味は次の通り。

項目 概要
total This is the total size of memory allocated for use by malloc in bytes.
used This is the total size of memory occupied by chunks handed out by malloc.
free This is the total size of memory occupied by free (not in use) chunks.
largest Size of the largest free (not in use) chunk.

largestってピークのことではないのね。

意外なことにRAMの消費量はUARTのNSHの方が大きいという結果になった。