NuttX + BluePillの続き。
UARTでシェル
前回まではBluePillとPCをUSBケーブルで接続しUSB経由でシェルを使用していたが、 今回はUSB-TTL変換ケーブルで接続しUART経由でシェルを使用してみる。
コンフィギュレーション
基本的なNuttXのビルド方法は変わらないが、コンフィギュレーションを次のようにする。
$ cd nuttx $ tools/configure.sh -l configs/stm32f103-minimum/nsh
接続方法
ビルド方法と書き込み方法は省略する。
PCと接続するUSB-TTL変換ケーブルはこんな感じのものを使用する。
基本的には5V
、GND
、TXD
、RXD
を接続する。
変換ケーブルと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の方が大きいという結果になった。