ユーザ用ツール

サイト用ツール


mas1xx_devel:nuttx_firmware:nuttx_development_detail:build_default_firmware:start

デフォルト設定でのビルド


MA-S1xx で基本的な動作確認ができる最低限の config を用意してありますので、まずはその設定でビルドしてみます。

ファームウェアのビルド

nsh config の適用

mas1xx/nsh という config を適用します。

user1@G1:~/src/NuttX$ cd nuttx/
user1@G1:~/src/NuttX/nuttx$ tools/configure.sh mas1xx/nsh
  Copy files
  Select CONFIG_HOST_LINUX=y
  Refreshing...
CP: arch/dummy/Kconfig to /home/user1/src/NuttX/nuttx/arch/dummy/dummy_kconfig
CP: boards/dummy/Kconfig to /home/user1/src/NuttX/nuttx/boards/dummy/dummy_kconfig
LN: platform/board to /home/user1/src/NuttX/apps/platform/dummy
LN: include/arch to arch/arm/include
LN: include/arch/board to /home/user1/src/NuttX/nuttx/boards/arm/sama5/mas1xx/include
LN: drivers/platform to /home/user1/src/NuttX/nuttx/drivers/dummy
LN: include/arch/chip to /home/user1/src/NuttX/nuttx/arch/arm/include/sama5
LN: arch/arm/src/chip to /home/user1/src/NuttX/nuttx/arch/arm/src/sama5
LN: arch/arm/src/board to /home/user1/src/NuttX/nuttx/boards/arm/sama5/mas1xx/src
mkkconfig in /home/user1/src/NuttX/apps/audioutils
mkkconfig in /home/user1/src/NuttX/apps/benchmarks
mkkconfig in /home/user1/src/NuttX/apps/boot
mkkconfig in /home/user1/src/NuttX/apps/canutils
mkkconfig in /home/user1/src/NuttX/apps/centurysys/libs
mkkconfig in /home/user1/src/NuttX/apps/centurysys
mkkconfig in /home/user1/src/NuttX/apps/crypto
mkkconfig in /home/user1/src/NuttX/apps/database
mkkconfig in /home/user1/src/NuttX/apps/examples/mcuboot
mkkconfig in /home/user1/src/NuttX/apps/examples
mkkconfig in /home/user1/src/NuttX/apps/fsutils
mkkconfig in /home/user1/src/NuttX/apps/games
mkkconfig in /home/user1/src/NuttX/apps/graphics
mkkconfig in /home/user1/src/NuttX/apps/industry
mkkconfig in /home/user1/src/NuttX/apps/inertial
mkkconfig in /home/user1/src/NuttX/apps/interpreters/luamodules
mkkconfig in /home/user1/src/NuttX/apps/interpreters
mkkconfig in /home/user1/src/NuttX/apps/logging
mkkconfig in /home/user1/src/NuttX/apps/lte
mkkconfig in /home/user1/src/NuttX/apps/math
mkkconfig in /home/user1/src/NuttX/apps/mlearning
mkkconfig in /home/user1/src/NuttX/apps/netutils
mkkconfig in /home/user1/src/NuttX/apps/sdr
mkkconfig in /home/user1/src/NuttX/apps/system
mkkconfig in /home/user1/src/NuttX/apps/testing
mkkconfig in /home/user1/src/NuttX/apps/wireless/bluetooth
mkkconfig in /home/user1/src/NuttX/apps/wireless/ieee802154
mkkconfig in /home/user1/src/NuttX/apps/wireless
mkkconfig in /home/user1/src/NuttX/apps
#
# configuration written to .config
#
user1@G1:~/src/NuttX/nuttx$


コンパイル

make コマンドで NuttX のコンパイルを行います。-j オプションを付与した並列コンパイルにも対応しています。

user1@G1:~/src/NuttX/nuttx$ make -j4
...
printf "%s\n" *.map >> nuttx.manifest
CP: nuttx.bin
arm-none-eabi-objcopy  -O binary nuttx nuttx.bin
echo nuttx.bin >> nuttx.manifest
MKIMAGE: uImage
mkimage -A arm -O linux -C none -T kernel -a 0x22008000 \
        -e 0x22008E20 -n nuttx -d nuttx.bin uImage
Image Name:   nuttx
Created:      Tue Apr  2 14:34:47 2024
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    703624 Bytes = 687.13 KiB = 0.67 MiB
Load Address: 22008000
Entry Point:  22008e20
if [ -w /tftpboot ] ; then \
        cp -f uImage /tftpboot/uImage; \
fi
echo "uImage" >> nuttx.manifest
user1@G1:~/src/NuttX/nuttx$

ビルドが成功しました。


サンプル

ビルドしたサンプルです。

File Stat SHA1SUM Note
uImage2024/04/09 13:36 688.0 KBbfe63cda165721540666d1b8b4ff4715a1b54154NuttX uImage形式
System.map2024/04/09 13:36 100.2 KBee47ff2c9503ca6903eb466b4a0359adfe4a91f4Map


実機でのテスト

uImage 形式のファームウェアが生成されるので、それを MA-S1xx 実機に転送して barebox bootloader から起動することができます。


実機へのコピー

なんらかの方法で、MA-S1xx に uImage ファイルを持っていきます。

user1@G1:~/src/NuttX/nuttx$ ls -l uImage
-rw-rw-r-- 1 user1 user1 679560 Apr  2 11:31 uImage
user1@G1:~/src/NuttX/nuttx$ sftp user1@172.16.1.16
user1@172.16.1.16's password:
Connected to 172.16.1.16.
sftp> cd /tmp
sftp> put uImage
Uploading uImage to /tmp/uImage
uImage                                                       100%  664KB   2.2MB/s   00:00
sftp> quit
user1@G1:~/src/NuttX/nuttx$


eMMC へコピー

eMMC に “nuttx” というディレクトリを作成し、そこに uImage ファイルをコピーします。

user1@G1:~/src/NuttX/nuttx$ ssh -l user1 172.16.1.16
user1@172.16.1.16's password:
Last login: Mon Apr  1 15:36:29 2024 from 172.16.1.61
user1@gemini:~$ sudo su -
[sudo] password for user1:
root@gemini:~# mount_overlay
* remounting overlay partition as RW...
root@gemini:~# cd /ro/.host/
root@gemini:/ro/.host# mkdir nuttx
root@gemini:/ro/.host# cp /tmp/uImage nuttx/
root@gemini:/ro/.host# ls -l
total 24
drwxr-xr-x 2 root root 4096 Mar 27 13:15 area0
drwxr-xr-x 2 root root 4096 Sep 14  2023 area1
drwxr-xr-x 2 root root 4096 Mar 27 13:46 consolelog
drwxr-xr-x 2 root root 4096 Apr  2 13:08 nuttx <---- 作った
drwxr-xr-x 2 root root 4096 Apr  2 11:12 overlay
drwxr-xr-x 2 root root 4096 Apr  7  2023 soracom
root@gemini:/ro/.host# ls -l nuttx/
total 664
-rwxr-xr-x 1 root root 679560 Apr  2 13:08 uImage
root@gemini:/ro/.host# cd -
/root
root@gemini:~# mount_overlay -u
* remounting overlay partition as RO...
root@gemini:~#


起動

ブートデバイスおよびブートモードの選択 (DIPSW 設定) のとおり DIPSW を NuttX boot(OFF - ON - ON - OFF) に設定して再起動します。

Booting entry 'nuttx'
   Image Name:   nuttx
   Created:      2024-04-02   2:31:02 UTC
   OS:           Linux
   Architecture: ARM
   Type:         Kernel Image
   Compression:  uncompressed
   Data Size:    679496 Bytes = 663.6 KiB
   Load Address: 22008000
   Entry Point:  22008e20

Loading U-Boot uImage '/mnt/emmc.0/nuttx/uImage'
ramoops: Adding ramoops node
commandline:  console=ttyS0,115200                  
mobile_watch_nx [13:100]

NuttShell (NSH) NuttX-12.5.0-RC0
nsh> 

NuttX で起動し、シェル(NuttShell) が起動することが確認できました。


mas1xx_devel/nuttx_firmware/nuttx_development_detail/build_default_firmware/start.txt · 最終更新: 2024/04/09 13:42 by admin