Skip to content

Instantly share code, notes, and snippets.

@lupyuen
Created January 20, 2025 06:34
luppy@thinkstation:~$ cd rust/nuttx
luppy@thinkstation:~/rust/nuttx$ ls
arch graphics nuttx.map
audio include nuttx.S
AUTHORS INVIOLABLES.md openamp
binfmt Kconfig pass1
boards libhello.S README.md
cmake libs ReleaseNotes
CMakeLists.txt LICENSE sched
CONTRIBUTING.md Make.defs staging
crypto Makefile syscall
defconfig mm System.map
Documentation net tools
drivers NOTICE video
dummy nuttx wireless
fs nuttx.manifest
luppy@thinkstation:~/rust/nuttx$ rustc --version
rustc 1.86.0-nightly (9a1d156f3 2025-01-19)
luppy@thinkstation:~/rust/nuttx$ git status && hash1=`git rev-parse HEAD`
pushd ../apps
git status && hash2=`git rev-parse HEAD`
popd
echo NuttX Source: https://github.com/apache/nuttx/tree/$hash1 >nuttx.hash
echo NuttX Apps: https://github.com/apache/nuttx-apps/tree/$hash2 >>nuttx.hash
cat nuttx.hash
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
libhello.S
nothing added to commit but untracked files present (use "git add" to track)
~/rust/apps ~/rust/nuttx
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
~/rust/nuttx
NuttX Source: https://github.com/apache/nuttx/tree/4857ea211f069ba1d2602edc1f1946f2d2917c08
NuttX Apps: https://github.com/apache/nuttx-apps/tree/9b6de015bc69f3c30159a1b967db25fb5c59b8bc
luppy@thinkstation:~/rust/nuttx$ make distclean
Removed 720 files, 563.7MiB total
Removed 0 files
luppy@thinkstation:~/rust/nuttx$ tools/configure.sh rv-virt:knsh64
Copy files
Select CONFIG_HOST_LINUX=y
Refreshing...
CP: arch/dummy/Kconfig to /home/luppy/rust/nuttx/arch/dummy/dummy_kconfig
CP: boards/dummy/Kconfig to /home/luppy/rust/nuttx/boards/dummy/dummy_kconfig
LN: platform/board to /home/luppy/rust/apps/platform/dummy
LN: include/arch to arch/risc-v/include
LN: include/arch/board to /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/include
LN: drivers/platform to /home/luppy/rust/nuttx/drivers/dummy
LN: include/arch/chip to /home/luppy/rust/nuttx/arch/risc-v/include/qemu-rv
LN: arch/risc-v/src/chip to /home/luppy/rust/nuttx/arch/risc-v/src/qemu-rv
LN: arch/risc-v/src/board to /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/src
mkkconfig in /home/luppy/rust/apps/audioutils
mkkconfig in /home/luppy/rust/apps/benchmarks
mkkconfig in /home/luppy/rust/apps/boot
mkkconfig in /home/luppy/rust/apps/canutils
mkkconfig in /home/luppy/rust/apps/crypto
mkkconfig in /home/luppy/rust/apps/database
mkkconfig in /home/luppy/rust/apps/examples/mcuboot
mkkconfig in /home/luppy/rust/apps/examples/module
mkkconfig in /home/luppy/rust/apps/examples/rust
mkkconfig in /home/luppy/rust/apps/examples/sotest
mkkconfig in /home/luppy/rust/apps/examples
mkkconfig in /home/luppy/rust/apps/fsutils
mkkconfig in /home/luppy/rust/apps/games
mkkconfig in /home/luppy/rust/apps/graphics
mkkconfig in /home/luppy/rust/apps/industry
mkkconfig in /home/luppy/rust/apps/inertial
mkkconfig in /home/luppy/rust/apps/interpreters/luamodules
mkkconfig in /home/luppy/rust/apps/interpreters
mkkconfig in /home/luppy/rust/apps/logging
mkkconfig in /home/luppy/rust/apps/lte
mkkconfig in /home/luppy/rust/apps/math
mkkconfig in /home/luppy/rust/apps/mlearning
mkkconfig in /home/luppy/rust/apps/netutils
mkkconfig in /home/luppy/rust/apps/sdr
mkkconfig in /home/luppy/rust/apps/system
mkkconfig in /home/luppy/rust/apps/testing
mkkconfig in /home/luppy/rust/apps/videoutils
mkkconfig in /home/luppy/rust/apps/wireless/bluetooth
mkkconfig in /home/luppy/rust/apps/wireless/ieee802154
mkkconfig in /home/luppy/rust/apps/wireless
mkkconfig in /home/luppy/rust/apps
#
# configuration written to .config
#
luppy@thinkstation:~/rust/nuttx$ kconfig-tweak --disable CONFIG_ARCH_FPU
## Enable CONFIG_SYSTEM_TIME64 / CONFIG_FS_LARGEFILE / CONFIG_DEV_URANDOM / CONFIG_TLS_NELEM = 16
kconfig-tweak --enable CONFIG_SYSTEM_TIME64
kconfig-tweak --enable CONFIG_FS_LARGEFILE
kconfig-tweak --enable CONFIG_DEV_URANDOM
kconfig-tweak --set-val CONFIG_TLS_NELEM 16
luppy@thinkstation:~/rust/nuttx$ make olddefconfig
CP: arch/dummy/Kconfig to /home/luppy/rust/nuttx/arch/dummy/dummy_kconfig
CP: boards/dummy/Kconfig to /home/luppy/rust/nuttx/boards/dummy/dummy_kconfig
LN: platform/board to /home/luppy/rust/apps/platform/dummy
LN: include/arch to arch/risc-v/include
LN: include/arch/board to /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/include
LN: drivers/platform to /home/luppy/rust/nuttx/drivers/dummy
LN: include/arch/chip to /home/luppy/rust/nuttx/arch/risc-v/include/qemu-rv
LN: arch/risc-v/src/chip to /home/luppy/rust/nuttx/arch/risc-v/src/qemu-rv
LN: arch/risc-v/src/board to /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/src
#
# configuration written to .config
#
luppy@thinkstation:~/rust/nuttx$ make -j
LN: platform/board to /home/luppy/rust/apps/platform/dummy
Create version.h
Register: init
Register: sh
Register: hello
Register: getprime
Register: ostest
CPP: /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel.script-> /home/luppy/rust/nuttx/boards/riscLD: nuttx
Memory region Used Size Region Size %age Used
kflash: 125036 B 2 MB 5.96%
ksram: 29344 B 2 MB 1.40%
pgram: 0 GB 4 MB 0.00%
luppy@thinkstation:~/rust/nuttx$ ## Build Apps Filesystem
make -j export
pushd ../apps
./tools/mkimport.sh -z -x ../nuttx/nuttx-export-*.tar.gz
make -j import
./tools/mkromfsimg.sh ../nuttx/arch/risc-v/src/board/romfs_boot.c
popd
make -j
~/rust/apps ~/rust/nuttx
cc -O2 -Wall -Wstrict-prototypes -Wshadow -DHAVE_STRTOK_C=1 /home/luppy/rust/apps/import/tools/mkdeps.c -o /home/luppy/rust/apps/import/tools/mkdeps
cc -O2 -Wall -Wstrict-prototypes -Wshadow -DHAVE_STRTOK_C=1 /home/luppy/rust/apps/import/tools/incdir.c -o "/home/luppy/rust/apps/import/tools/incdir"
make[1]: Entering directory '/home/luppy/rust/apps'
make[2]: Entering directory '/home/luppy/rust/apps'
make[3]: Entering directory '/home/luppy/rust/apps/examples/hello'
make[3]: Entering directory '/home/luppy/rust/apps/nshlib'
make[3]: Entering directory '/home/luppy/rust/apps/platform'
make[3]: Entering directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Entering directory '/home/luppy/rust/apps/system/nsh'
make[3]: Entering directory '/home/luppy/rust/apps/testing/ostest'
make[3]: Entering directory '/home/luppy/rust/apps/system/readline'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/nshlib'
make[3]: Nothing to be done for 'context'.
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/system/nsh'
make[3]: Leaving directory '/home/luppy/rust/apps/system/readline'
LN: platform/board to /home/luppy/rust/apps/platform/dummy
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/testing/ostest'
make[3]: Leaving directory '/home/luppy/rust/apps/platform'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/examples/hello'
make[2]: Leaving directory '/home/luppy/rust/apps'
make[2]: Entering directory '/home/luppy/rust/apps'
make[3]: Entering directory '/home/luppy/rust/apps/examples/hello'
make[3]: Entering directory '/home/luppy/rust/apps/nshlib'
make[3]: Entering directory '/home/luppy/rust/apps/platform'
make[3]: Entering directory '/home/luppy/rust/apps/system/nsh'
make[3]: Entering directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Entering directory '/home/luppy/rust/apps/system/readline'
make[3]: Entering directory '/home/luppy/rust/apps/testing/ostest'
make[3]: Leaving directory '/home/luppy/rust/apps/nshlib'
make[3]: Leaving directory '/home/luppy/rust/apps/platform'
make[3]: Leaving directory '/home/luppy/rust/apps/system/nsh'
make[3]: Leaving directory '/home/luppy/rust/apps/system/readline'
make[3]: Leaving directory '/home/luppy/rust/apps/examples/hello'
make[3]: Leaving directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Leaving directory '/home/luppy/rust/apps/testing/ostest'
make[2]: Leaving directory '/home/luppy/rust/apps'
make[2]: Entering directory '/home/luppy/rust/apps'
make[2]: Nothing to be done for 'context_wasm'.
make[2]: Leaving directory '/home/luppy/rust/apps'
make[1]: Leaving directory '/home/luppy/rust/apps'
make[1]: Entering directory '/home/luppy/rust/apps'
make[1]: Nothing to be done for 'register'.
make[1]: Leaving directory '/home/luppy/rust/apps'
make[1]: Entering directory '/home/luppy/rust/apps'
make[2]: Entering directory '/home/luppy/rust/apps/examples/hello'
make[2]: Entering directory '/home/luppy/rust/apps/nshlib'
make[2]: Entering directory '/home/luppy/rust/apps/platform'
make[2]: Entering directory '/home/luppy/rust/apps/system/nsh'
make[2]: Entering directory '/home/luppy/rust/apps/testing/getprime'
make[2]: Entering directory '/home/luppy/rust/apps/testing/ostest'
make[2]: Entering directory '/home/luppy/rust/apps/system/readline'
make[2]: Leaving directory '/home/luppy/rust/apps/platform'
make[2]: Leaving directory '/home/luppy/rust/apps/examples/hello'
make[2]: Leaving directory '/home/luppy/rust/apps/testing/getprime'
make[2]: Leaving directory '/home/luppy/rust/apps/system/nsh'
make[2]: Leaving directory '/home/luppy/rust/apps/system/readline'
make[2]: Leaving directory '/home/luppy/rust/apps/nshlib'
make[2]: Leaving directory '/home/luppy/rust/apps/testing/ostest'
make[1]: Leaving directory '/home/luppy/rust/apps'
make[1]: Entering directory '/home/luppy/rust/apps'
make[2]: Entering directory '/home/luppy/rust/apps/examples/hello'
make[2]: Entering directory '/home/luppy/rust/apps/nshlib'
make[2]: Entering directory '/home/luppy/rust/apps/platform'
make[2]: Entering directory '/home/luppy/rust/apps/system/nsh'
make[2]: Entering directory '/home/luppy/rust/apps/testing/ostest'
make[2]: Entering directory '/home/luppy/rust/apps/system/readline'
make[2]: Entering directory '/home/luppy/rust/apps/testing/getprime'
CC: cond.c make[2]: Leaving directory '/home/luppy/rust/apps/testing/getprime'
CC: getopt.c make[2]: Leaving directory '/home/luppy/rust/apps/examples/hello'
CC: nsh_mntcmds.c make[2]: Leaving directory '/home/luppy/rust/apps/system/nsh'
CC: nsh_proccmds.c make[2]: Leaving directory '/home/luppy/rust/apps/platform'
make[2]: Leaving directory '/home/luppy/rust/apps/system/readline'
make[2]: Leaving directory '/home/luppy/rust/apps/testing/ostest'
make[2]: Leaving directory '/home/luppy/rust/apps/nshlib'
make[2]: Entering directory '/home/luppy/rust/apps'
make[3]: Entering directory '/home/luppy/rust/apps/examples/hello'
make[3]: Entering directory '/home/luppy/rust/apps/nshlib'
make[3]: Entering directory '/home/luppy/rust/apps/platform'
make[3]: Entering directory '/home/luppy/rust/apps/system/nsh'
make[3]: Entering directory '/home/luppy/rust/apps/system/readline'
make[3]: Entering directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Entering directory '/home/luppy/rust/apps/testing/ostest'
make[3]: Leaving directory '/home/luppy/rust/apps/platform'
make[3]: Leaving directory '/home/luppy/rust/apps/nshlib'
CC: hello_main.c make[3]: Leaving directory '/home/luppy/rust/apps/system/readline'
LD: /home/luppy/rust/apps/bin/getprime make[3]: Leaving directory '/home/luppy/rust/apps/examples/hello'
make[3]: Leaving directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Leaving directory '/home/luppy/rust/apps/system/nsh'
make[3]: Leaving directory '/home/luppy/rust/apps/testing/ostest'
make[2]: Leaving directory '/home/luppy/rust/apps'
make[2]: Entering directory '/home/luppy/rust/apps'
make[2]: Nothing to be done for 'postinstall'.
make[2]: Leaving directory '/home/luppy/rust/apps'
make[1]: Leaving directory '/home/luppy/rust/apps'
~/rust/nuttx
CPP: /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel.script-> /home/luppy/rust/nuttx/boards/riscLD: nuttx
Memory region Used Size Region Size %age Used
kflash: 125036 B 2 MB 5.96%
ksram: 29344 B 2 MB 1.40%
pgram: 0 GB 4 MB 0.00%
luppy@thinkstation:~/rust/nuttx$ ## Enable Hello Rust Cargo App
kconfig-tweak --enable CONFIG_EXAMPLES_HELLO_RUST_CARGO
luppy@thinkstation:~/rust/nuttx$ ## Update the Kconfig Dependencies
make olddefconfig
CP: arch/dummy/Kconfig to /home/luppy/rust/nuttx/arch/dummy/dummy_kconfig
CP: boards/dummy/Kconfig to /home/luppy/rust/nuttx/boards/dummy/dummy_kconfig
LN: platform/board to /home/luppy/rust/apps/platform/dummy
LN: include/arch to arch/risc-v/include
LN: include/arch/board to /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/include
LN: drivers/platform to /home/luppy/rust/nuttx/drivers/dummy
LN: include/arch/chip to /home/luppy/rust/nuttx/arch/risc-v/include/qemu-rv
LN: arch/risc-v/src/chip to /home/luppy/rust/nuttx/arch/risc-v/src/qemu-rv
LN: arch/risc-v/src/board to /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/src
#
# configuration written to .config
#
luppy@thinkstation:~/rust/nuttx$ make -j
Create version.h
LN: platform/board to /home/luppy/rust/apps/platform/dummy
Compiling compiler_builtins v0.1.143
Compiling core v0.0.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core)
Compiling libc v0.2.169
Compiling object v0.36.7
Compiling std v0.0.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std)
Compiling proc-macro2 v1.0.93
Compiling unicode-ident v1.0.14
Compiling serde v1.0.217
Compiling serde_json v1.0.137
Compiling quote v1.0.38
Compiling syn v2.0.96
Compiling serde_derive v1.0.217
Compiling rustc-std-workspace-core v1.99.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-core)
Compiling alloc v0.0.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc)
Compiling cfg-if v1.0.0
Compiling adler2 v2.0.0
Compiling memchr v2.7.4
Compiling rustc-demangle v0.1.24
Compiling unwind v0.0.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/unwind)
Compiling rustc-std-workspace-alloc v1.99.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/rustc-std-workspace-alloc)
Compiling panic_abort v0.0.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/panic_abort)
Compiling panic_unwind v0.0.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/panic_unwind)
Compiling gimli v0.31.1
Compiling hashbrown v0.15.2
Compiling miniz_oxide v0.8.3
Compiling std_detect v0.1.5 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/stdarch/crates/std_detect)
Compiling addr2line v0.24.2
Compiling proc_macro v0.0.0 (/home/luppy/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/proc_macro)
Compiling ryu v1.0.18
Compiling itoa v1.0.14
Compiling pin-project-lite v0.2.16
Compiling tokio v1.43.0
Compiling hello v0.1.0 (/home/luppy/rust/apps/examples/rust/hello)
Finished `release` profile [optimized] target(s) in 57.59s
Register: hello_rust_cargo
Register: hello
Register: init
Register: sh
Register: getprime
Register: ostest
CPP: /home/luppy/rust/nuttx/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel.script-> /home/luppy/rust/nuttx/boards/riscLD: nuttx
Memory region Used Size Region Size %age Used
kflash: 125036 B 2 MB 5.96%
ksram: 29344 B 2 MB 1.40%
pgram: 0 GB 4 MB 0.00%
luppy@thinkstation:~/rust/nuttx$ ## Build Apps Filesystem
make -j export
pushd ../apps
./tools/mkimport.sh -z -x ../nuttx/nuttx-export-*.tar.gz
~/rust/apps ~/rust/nuttx
luppy@thinkstation:~/rust/apps$ make -j import
cc -O2 -Wall -Wstrict-prototypes -Wshadow -DHAVE_STRTOK_C=1 /home/luppy/rust/apps/import/tools/mkdeps.c -o /home/luppy/rust/apps/import/tools/mkdeps
cc -O2 -Wall -Wstrict-prototypes -Wshadow -DHAVE_STRTOK_C=1 /home/luppy/rust/apps/import/tools/incdir.c -o "/home/luppy/rust/apps/import/tools/incdir"
make[1]: Entering directory '/home/luppy/rust/apps'
make[2]: Entering directory '/home/luppy/rust/apps'
make[3]: Entering directory '/home/luppy/rust/apps/examples/hello'
make[3]: Entering directory '/home/luppy/rust/apps/system/nsh'
make[3]: Entering directory '/home/luppy/rust/apps/examples/rust/hello'
make[3]: Entering directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Entering directory '/home/luppy/rust/apps/nshlib'
make[3]: Entering directory '/home/luppy/rust/apps/platform'
make[3]: Entering directory '/home/luppy/rust/apps/testing/ostest'
make[3]: Entering directory '/home/luppy/rust/apps/system/readline'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/nshlib'
cargo build --release -Zbuild-std=std,panic_abort --manifest-path /home/luppy/rust/apps/examples/rust/hello/Cargo.toml --target
LN: platform/board to /home/luppy/rust/apps/platform/dummy
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/system/readline'
make[3]: Leaving directory '/home/luppy/rust/apps/platform'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/examples/hello'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/system/nsh'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/testing/getprime'
make[3]: Nothing to be done for 'context'.
make[3]: Leaving directory '/home/luppy/rust/apps/testing/ostest'
error: "--target" takes a target architecture as an argument.
Run `rustup target list` to see possible targets.
make[3]: *** [Makefile:31: context] Error 101
make[3]: Leaving directory '/home/luppy/rust/apps/examples/rust/hello'
make[2]: *** [Makefile:57: /home/luppy/rust/apps/examples/rust/hello_context] Error 2
make[2]: Leaving directory '/home/luppy/rust/apps'
make[1]: *** [Makefile:187: context] Error 2
make[1]: Leaving directory '/home/luppy/rust/apps'
make: *** [Makefile:105: import] Error 2
luppy@thinkstation:~/rust/apps$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment