1import os 2import sys 3import rtconfig 4 5if os.getenv('RTT_ROOT'): 6 RTT_ROOT = os.getenv('RTT_ROOT') 7else: 8 RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..') 9 10sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] 11from building import * 12 13TARGET = 'rtthread.' + rtconfig.TARGET_EXT 14 15AddOption('--run', 16 dest = 'run', 17 type='string', 18 nargs=1, 19 action = 'store', 20 default = "", 21 help = 'Upload or debug application using openocd') 22 23DefaultEnvironment(tools=[]) 24env = Environment(tools = ['mingw'], 25 AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, 26 CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS, CCFLAGS = '', 27 CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, 28 AR = rtconfig.AR, ARFLAGS = '-rc', LIBS = rtconfig.LIBS, 29 LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) 30env.PrependENVPath('PATH', rtconfig.EXEC_PATH) 31env['ASCOM'] = env['ASPPCOM'] 32 33Export('RTT_ROOT') 34Export('rtconfig') 35 36SDK_ROOT = os.path.abspath('./') 37 38if os.path.exists(SDK_ROOT + '/libraries'): 39 libraries_path_prefix = SDK_ROOT + '/libraries' 40else: 41 libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' 42 43SDK_LIB = libraries_path_prefix 44Export('SDK_LIB') 45 46GDB = rtconfig.GDB 47 48# prepare building environment 49objs = PrepareBuilding(env, RTT_ROOT) 50 51bsp_library_type = rtconfig.NUCLEI_SDK_SOC 52rtconfig.BSP_LIBRARY_TYPE = bsp_library_type 53 54if hasattr(rtconfig, 'NUCLEI_SDK_OPENOCD_CFG'): 55 openocd_cfg = rtconfig.NUCLEI_SDK_OPENOCD_CFG.replace('\\', '/') 56else: 57 print("ERROR: Nuclei SDK package is not yet downloaded, please execute <pkgs --update> in command line first!") 58 exit(0) 59 60# include hal drivers 61hal_sconscript = os.path.join(libraries_path_prefix, bsp_library_type, 'HAL_Drivers', 'SConscript') 62 63if os.path.isfile(hal_sconscript): 64 objs.extend(SConscript(hal_sconscript)) 65 66# make a building 67DoBuilding(TARGET, objs) 68 69# Run upload or debug if --run=upload or --upload=debug 70run_target = GetOption('run') 71SUPPORT_RUN_TARGETS = ["upload", "debug"] 72if run_target in SUPPORT_RUN_TARGETS: 73 if os.path.isfile(TARGET): 74 if run_target == "upload": 75 upload_cmd = '{} {} -ex "set remotetimeout 240" \ 76 -ex "target remote | openocd --pipe -f {}" \ 77 --batch -ex "monitor halt" -ex "monitor flash protect 0 0 last off" -ex "load" \ 78 -ex "monitor resume" -ex "quit"'.format(GDB, TARGET, openocd_cfg) 79 print("Upload application {} using openocd and gdb".format(TARGET)) 80 print(upload_cmd) 81 os.system(upload_cmd) 82 elif run_target == "debug": 83 debug_cmd = '{} {} -ex "set remotetimeout 240" \ 84 -ex "target remote | openocd --pipe -f {}"'.format(GDB, TARGET, openocd_cfg) 85 print("Debug application {} using openocd and gdb".format(TARGET)) 86 print(debug_cmd) 87 os.system(debug_cmd) 88 else: 89 print(TARGET + ' not exist, please run scons first!!') 90 exit(0) 91