Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

safer-rust-blinky4 #71

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Documentation/applications/examples/leds_rust/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
=================================
``leds_rust`` Toggle LEDs in Rust
=================================

This is a simple test in Rust of the board LED driver at
``nuttx/drivers/leds/userled_*.c``.
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,11 @@ leds64

Similar to the `nsh64`_ configuration, but with User LEDs support for 64-bit RISC-V.

leds64_rust
-----------

Similar to the `leds64`_ configuration, but with ``leds_rust`` example enabled.

netnsh
------

Expand Down
76 changes: 76 additions & 0 deletions boards/risc-v/qemu-rv/rv-virt/configs/leds64_rust/defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_DISABLE_OS_API is not set
# CONFIG_NSH_DISABLE_LOSMART is not set
CONFIG_16550_ADDRWIDTH=0
CONFIG_16550_UART0=y
CONFIG_16550_UART0_BASE=0x10000000
CONFIG_16550_UART0_CLOCK=3686400
CONFIG_16550_UART0_IRQ=37
CONFIG_16550_UART0_SERIAL_CONSOLE=y
CONFIG_16550_UART=y
CONFIG_ARCH="risc-v"
CONFIG_ARCH_BOARD="rv-virt"
CONFIG_ARCH_BOARD_QEMU_RV_VIRT=y
CONFIG_ARCH_CHIP="qemu-rv"
CONFIG_ARCH_CHIP_QEMU_RV64=y
CONFIG_ARCH_CHIP_QEMU_RV=y
CONFIG_ARCH_CHIP_QEMU_RV_ISA_A=y
CONFIG_ARCH_CHIP_QEMU_RV_ISA_C=y
CONFIG_ARCH_CHIP_QEMU_RV_ISA_M=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_RISCV=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_BCH=y
CONFIG_BOARDCTL_POWEROFF=y
CONFIG_BOARD_LATE_INITIALIZE=y
CONFIG_BOARD_LOOPSPERMSEC=6366
CONFIG_BUILTIN=y
CONFIG_DEBUG_FEATURES=y
CONFIG_DEBUG_FULLOPT=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DEVICE_TREE=y
CONFIG_DEV_ZERO=y
CONFIG_ELF=y
CONFIG_EXAMPLES_HELLO=y
CONFIG_EXAMPLES_LEDS=y
CONFIG_EXAMPLES_LEDS_RUST=y
CONFIG_FS_HOSTFS=y
CONFIG_FS_PROCFS=y
CONFIG_IDLETHREAD_STACKSIZE=2048
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=3072
CONFIG_LIBC_ENVPATH=y
CONFIG_LIBC_EXECFUNCS=y
CONFIG_LIBC_PERROR_STDOUT=y
CONFIG_LIBC_STRERROR=y
CONFIG_LIBM=y
CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_READLINE=y
CONFIG_PATH_INITIAL="/system/bin"
CONFIG_RAM_SIZE=33554432
CONFIG_RAM_START=0x80000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RISCV_SEMIHOSTING_HOSTFS=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_WAITPID=y
CONFIG_SERIAL_UART_ARCH_MMIO=y
CONFIG_STACK_COLORATION=y
CONFIG_START_MONTH=12
CONFIG_START_YEAR=2021
CONFIG_SYMTAB_ORDEREDBYNAME=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NSH_STACKSIZE=3072
CONFIG_TESTING_GETPRIME=y
CONFIG_TESTING_OSTEST=y
CONFIG_USEC_PER_TICK=1000
CONFIG_USERLED=y
CONFIG_USERLED_LOWER=y
30 changes: 10 additions & 20 deletions tools/D.defs
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,18 @@ ifeq ($(CONFIG_ARCH_SIM),y)
DFLAGS += -mtriple=$(LLVM_ARCHTYPE)-apple-$(LLVM_ABITYPE)
endif
else ifeq ($(CONFIG_ARCH_RISCV),y)
# Traget triple is riscv[32|64][isa]-unknown-none-elf
# Target triple is riscv[32|64]-unknown-none-elf
DFLAGS += -mtriple=$(LLVM_ARCHTYPE)-unknown-none-elf
DFLAGS += -mattr=+m,+a,+f,+d,+c

D_ARCHTYPE = $(LLVM_ARCHTYPE)i
ifeq ($(CONFIG_ARCH_RV_ISA_M),y)
D_ARCHTYPE := $(D_ARCHTYPE)m
# Handle ABI and CPU
ifeq ($(CONFIG_ARCH_RV32),y)
DFLAGS += -mcpu=generic-rv32
DFLAGS += -mabi=ilp32d
else ifeq ($(CONFIG_ARCH_RV64),y)
DFLAGS += -mcpu=generic-rv64
DFLAGS += -mabi=lp64d
endif
ifeq ($(CONFIG_ARCH_RV_ISA_A),y)
D_ARCHTYPE := $(D_ARCHTYPE)a
endif
ifeq ($(CONFIG_ARCH_RV_ISA_F),y)
D_ARCHTYPE := $(D_ARCHTYPE)f
endif
ifeq ($(CONFIG_ARCH_RV_ISA_D),y)
D_ARCHTYPE := $(D_ARCHTYPE)d
endif
ifeq ($(CONFIG_ARCH_RV_ISA_C),y)
D_ARCHTYPE := $(D_ARCHTYPE)c
endif

DFLAGS += -mtriple=$(D_ARCHTYPE)-unknown-none-elf
DFLAGS += -mattr=+m,+a,+f,+d,+c -mabi=ilp32d
DFLAGS += -mcpu=generic-rv32
else
# For arm, but there are some other archs not support yet,
# such as xtensa, x86 bare metal, etc.
Expand Down
37 changes: 21 additions & 16 deletions tools/Rust.defs
Original file line number Diff line number Diff line change
Expand Up @@ -45,23 +45,28 @@ ifeq ($(CONFIG_ARCH_SIM),y)
RUSTFLAGS += --target $(LLVM_ARCHTYPE)-apple-$(LLVM_ABITYPE)
endif
else ifeq ($(CONFIG_ARCH_RISCV),y)
# Traget triple is riscv[32|64][isa]-unknown-none-elf
# Target triple is riscv[32|64][isa]-unknown-none-elf
# "imafdc" becomes "gc"

RUST_ARCHTYPE = $(LLVM_ARCHTYPE)i
ifeq ($(CONFIG_ARCH_RV_ISA_M),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)m
endif
ifeq ($(CONFIG_ARCH_RV_ISA_A),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)a
endif
ifeq ($(CONFIG_ARCH_RV_ISA_F),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)f
endif
ifeq ($(CONFIG_ARCH_RV_ISA_D),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)d
endif
ifeq ($(CONFIG_ARCH_RV_ISA_C),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)c
ifeq ($(CONFIG_ARCH_RV_ISA_M)$(CONFIG_ARCH_RV_ISA_A)$(CONFIG_ARCH_FPU)$(CONFIG_ARCH_DPFPU)$(CONFIG_ARCH_RV_ISA_C),yyyyy)
RUST_ARCHTYPE = $(LLVM_ARCHTYPE)gc
else
RUST_ARCHTYPE = $(LLVM_ARCHTYPE)i
ifeq ($(CONFIG_ARCH_RV_ISA_M),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)m
endif
ifeq ($(CONFIG_ARCH_RV_ISA_A),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)a
endif
ifeq ($(CONFIG_ARCH_FPU),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)f
endif
ifeq ($(CONFIG_ARCH_DPFPU),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)d
endif
ifeq ($(CONFIG_ARCH_RV_ISA_C),y)
RUST_ARCHTYPE := $(RUST_ARCHTYPE)c
endif
endif

RUSTFLAGS += --target $(RUST_ARCHTYPE)-unknown-none-elf
Expand Down
3 changes: 2 additions & 1 deletion tools/ci/cibuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
############################################################################
set -e
set -o xtrace

set -x #### Echo commands

CID=$(cd "$(dirname "$0")" && pwd)
CIWORKSPACE=$(cd "${CID}"/../../../ && pwd -P)
Expand Down Expand Up @@ -139,6 +139,7 @@ function run_builds {

options+="-j ${ncpus}"

echo "run_builds: builds=${builds[@]}" ####
for build in "${builds[@]}"; do
"${nuttx}"/tools/testbuild.sh ${options} -e "-Wno-cpp -Werror" "${build}"
done
Expand Down
1 change: 1 addition & 0 deletions tools/ci/platforms/ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ rust() {
# Install targets supported from NuttX
rustup target add thumbv6m-none-eabi
rustup target add thumbv7m-none-eabi
rustup target add riscv64gc-unknown-none-elf
fi

command rustc --version
Expand Down
3 changes: 3 additions & 0 deletions tools/testbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
# under the License.
#

set -x #### Echo commands

WD=$(cd $(dirname $0) && cd .. && pwd)
nuttx=$WD/../nuttx

Expand Down Expand Up @@ -569,6 +571,7 @@ function dotest {

# Perform the build test for each entry in the test list file

echo "testbuild: testlist=$testlist" ####
for line in $testlist; do
firstch=${line:0:1}
if [ "X$firstch" == "X/" ]; then
Expand Down
Loading