1import os 2 3def GetStringFromConfig(bsp_dir, string): 4 try: 5 config = open(bsp_dir + '/rtconfig.h', 'r') 6 except IOError: 7 print('no found rtconfig.h, use scons --menuconfig before compile') 8 else: 9 cfg_list = config.readlines() 10 for cfg in cfg_list: 11 if cfg.find(string) != -1: 12 target = cfg[cfg.find('"'):-1] 13 target = eval(target) 14 config.close() 15 return target 16 print('no found ' + string + ' in rtconfig.h, you must define this in kconfig of board') 17 18 return '' 19 20def GetRTConfigOption(bsp_dir, option): 21 value = False 22 try: 23 config = open(bsp_dir + '/rtconfig.h', 'r') 24 except IOError: 25 print('no found rtconfig.h, use scons --menuconfig before compile') 26 else: 27 cfg_list = config.readlines() 28 for cfg in cfg_list: 29 if cfg.find('#define ' + option) != -1: 30 cfg = cfg.rstrip('\n') 31 values = cfg.split(' ') 32 33 if len(values) == 3: 34 value = values[2] 35 else: 36 value = True 37 38 config.close() 39 return value 40 41 return value 42 43def GetImageSetting(bsp_dir): 44 board = GetStringFromConfig(bsp_dir, 'RT_BOARD_NAME') 45 path = 'board/{dir}/setting.ini'.format(dir = board) 46 if (bsp_dir.endswith('/') == False): 47 bsp_dir += '/' 48 if os.path.exists(bsp_dir + path) == True: 49 return path 50 else: 51 return 'board/common/setting.ini' 52 53def ParsePartitionStart(bsp_dir, name): 54 start = -1 55 path = GetImageSetting(bsp_dir) 56 configer = configparser.ConfigParser() 57 configer.read(path) 58 for section in configer.sections(): 59 if (configer.has_option(section, 'Name')): 60 if configer.get(section, 'Name') == name: 61 sector = int(configer.get(section, 'PartOffset'), 16) 62 start = (sector + 1) * 512 63 return start 64