b88561299b
In the current compilation environment, the recursive assignment(=) for compile flags will be delayed until every file is actually need to be compile. For example: -------------------------------------------------------------------------------- arch/arm/src/Makefile: INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)chip} INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)common} INCLUDES += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)$(ARCH_SUBDIR)} INCLUDES += ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)sched} CPPFLAGS += $(INCLUDES) $(EXTRAFLAGS) CFLAGS += $(INCLUDES) $(EXTRAFLAGS) CXXFLAGS += $(INCLUDES) $(EXTRAFLAGS) AFLAGS += $(INCLUDES) $(EXTRAFLAGS) -------------------------------------------------------------------------------- All compilation options will be included recursively, which will be delayed until the compilation options are actually used: tools/Config.mk: -------------------------------------------------------------------------------- define COMPILE @echo "CC: $1" $(Q) $(CC) -c $(CFLAGS) $($(strip $1)_CFLAGS) $1 -o $2 endef -------------------------------------------------------------------------------- All compile flags to be reexecuted $(INCDIR) as long as one file needs to be compiled, but in fact, the compilation options have not changed in the current directory. So the we recommand to change the syntax of assignment From Recursive (=) To Simple (:=) In this way, we can ensure that all compilation options are expanded only once and reducing repeated works. Signed-off-by: chao.an <anchao@xiaomi.com> |
||
---|---|---|
.. | ||
configs/nsh | ||
include | ||
scripts | ||
src | ||
Kconfig | ||
README.txt |
1. Download and install toolchain $ curl https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz 2. Follow instruction on https://github.com/enjoy-digital/litex to build the vexriscv softcore fpga gateware and flash to arty_a7 board 3. Configure and build NuttX $ mkdir ./nuttx; cd ./nuttx $ git clone https://bitbucket.org/nuttx/nuttx.git $ git clone https://bitbucket.org/nuttx/apps.git $ cd nuttx $ make distclean $ ./tools/configure.sh arty_a7:nsh $ make V=1 4. Setup tftp server on your laptop, copy nuttx.bin to your tftpboot directory and change its name to boot.bin 5. Setup the wire connection(uart and tftp) between your board and laptop 6. Run $ minicom -b 1000000 /dev/ttyUSB1 (the default baudrate on litex vexriscv is 1e6) when you see the bios prompt "litex>", type "netboot" and enter soon comes the nsh prompt 7. TODO Support GPIO/SPI/I2C/RTC/WDT/PWM Support RISC-V User mode