1import os 2import platform 3 4# toolchains options 5ARCH='risc-v' 6CPU='nuclei' 7CROSS_TOOL='gcc' 8 9if os.getenv('RTT_CC'): 10 CROSS_TOOL = os.getenv('RTT_CC') 11 12if CROSS_TOOL == 'gcc': 13 PLATFORM = 'gcc' 14 if platform.system().lower() == "windows": 15 EXEC_PATH = r'/NucleiStudio/toolchain/gcc/bin' 16 else: 17 EXEC_PATH = r'~/NucleiStudio/toolchain/gcc/bin' 18 if os.path.exists(EXEC_PATH) == False: 19 print("Warning: Toolchain path %s doesn't exist, assume it is already in PATH" % EXEC_PATH) 20 EXEC_PATH = '' # Don't set path if not exist 21else: 22 print("CROSS_TOOL = %s not yet supported" % CROSS_TOOL) 23 24if os.getenv('RTT_EXEC_PATH'): 25 EXEC_PATH = os.getenv('RTT_EXEC_PATH') 26 27BUILD = 'debug' 28# Fixed configurations below 29NUCLEI_SDK_SOC = "demosoc" 30NUCLEI_SDK_BOARD = "nuclei_fpga_eval" 31# Configurable options below 32# DOWNLOAD: https://doc.nucleisys.com/nuclei_sdk/develop/buildsystem.html#download 33NUCLEI_SDK_DOWNLOAD = "ilm" 34# CORE: See https://doc.nucleisys.com/nuclei_sdk/develop/buildsystem.html#core 35NUCLEI_SDK_CORE = "nx600" 36 37if PLATFORM == 'gcc': 38 # toolchains 39 PREFIX = 'riscv-nuclei-elf-' 40 CC = PREFIX + 'gcc' 41 CXX = PREFIX + 'g++' 42 AS = PREFIX + 'gcc' 43 AR = PREFIX + 'ar' 44 LINK = PREFIX + 'gcc' 45 GDB = PREFIX + 'gdb' 46 TARGET_EXT = 'elf' 47 SIZE = PREFIX + 'size' 48 OBJDUMP = PREFIX + 'objdump' 49 OBJCPY = PREFIX + 'objcopy' 50 51 CFLAGS = ' -ffunction-sections -fdata-sections -fno-common ' 52 AFLAGS = CFLAGS 53 LFLAGS = ' --specs=nano.specs --specs=nosys.specs -nostartfiles -Wl,--gc-sections ' 54 LFLAGS += ' -Wl,-cref,-Map=rtthread.map' 55 LFLAGS += ' -u _isatty -u _write -u _sbrk -u _read -u _close -u _fstat -u _lseek ' 56 CPATH = '' 57 LPATH = '' 58 LIBS = ['stdc++'] 59 AFLAGS += ' -D"irq_entry=SW_handler" ' 60 61 if BUILD == 'debug': 62 CFLAGS += ' -O2 -ggdb' 63 AFLAGS += ' -ggdb' 64 else: 65 CFLAGS += ' -O2 -Os' 66 67 CXXFLAGS = CFLAGS 68 69DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtt.asm\n' 70POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' 71 72def dist_handle(BSP_ROOT, dist_dir): 73 import sys 74 cwd_path = os.getcwd() 75 sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools')) 76 from sdk_dist import dist_do_building 77 dist_do_building(BSP_ROOT, dist_dir) 78