def update_flash_cfg_do(chipname, chiptype, flash_id, file=None, create=False, section=None): cfg_dir = app_path + '/common/flash_config/' + chiptype + '/' conf_name = get_suitable_file_name(cfg_dir, flash_id) value_key = [] if os.path.isfile(cfg_dir + conf_name) == False: return False fp = open(cfg_dir + conf_name, 'r') for line in fp.readlines(): value = line.split('=')[0].strip() if value == '[FLASH_CFG]': continue else: value_key.append(value) cfg1 = bflb_utils.BFConfigParser() cfg1.read(cfg_dir + conf_name) cfg2 = bflb_utils.BFConfigParser() cfg2.read(file) for i in range(len(value_key)): if cfg1.has_option('FLASH_CFG', value_key[i]): if cfg2.has_option(section, value_key[i]): tmp_value = cfg1.get('FLASH_CFG', value_key[i]) bflb_utils.Update_Cfg(cfg2, section, value_key[i], tmp_value) cfg2.write(file, 'w+') bflb_utils.printf('Update flash cfg finished')
def program_key_data(values, callback=None): global eflash_loader_bin eflash_loader_bin = os.path.join( app_path, chip_name, 'eflash_loader/' + get_eflash_loader(values['dl_xtal'])) cfg = bflb_utils.BFConfigParser() if os.path.isfile(eflash_loader_cfg_tmp) == False: shutil.copy(eflash_loader_cfg, eflash_loader_cfg_tmp) cfg.read(eflash_loader_cfg_tmp) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'interface', values['dl_device'].lower()) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'device', values['dl_comport']) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'speed_uart_load', values['dl_comspeed']) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'speed_jlink', values['dl_jlinkspeed']) if values['dl_chiperase'] == 'True': bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'erase', '2') else: bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'erase', '1') if 'dl_verify' in values.keys(): if values['dl_verify'] == 'True': bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'verify', '1') else: bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'verify', '0') bflb_utils.Update_Cfg(cfg, 'EFUSE_CFG', 'file', efuse_data) bflb_utils.Update_Cfg(cfg, 'EFUSE_CFG', 'maskfile', efuse_data_mask) cfg.write(eflash_loader_cfg_tmp, 'w+') ret = None try: try: cmd = '-p -t efuse -c %s' % eflash_loader_cfg_tmp eflash_loader_t = bflb_eflash_loader.BFLB_Eflash_Loader(chip_type) ret = eflash_loader_t.efuse_flash_loader(cmd.split(' '), None, eflash_loader_bin) except Exception as e: try: ret = str(e) traceback.print_exc(limit=5, file=(sys.stdout)) finally: e = None del e finally: return ret
def update_cfg(values): cfg = bflb_utils.BFConfigParser() if os.path.isfile(eflash_loader_cfg_tmp) == False: shutil.copy(eflash_loader_cfg, eflash_loader_cfg_tmp) cfg.read(eflash_loader_cfg_tmp) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'interface', values['dl_device'].lower()) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'device', values['dl_comport']) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'speed_uart_load', values['dl_comspeed']) bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'speed_jlink', values['dl_jlinkspeed']) if values['dl_chiperase'] == 'True': bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'erase', '2') else: bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'erase', '1') if 'dl_verify' in values.keys(): if values['dl_verify'] == 'True': bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'verify', '1') else: bflb_utils.Update_Cfg(cfg, 'LOAD_CFG', 'verify', '0') bflb_utils.Update_Cfg(cfg, 'EFUSE_CFG', 'file', efuse_data) bflb_utils.Update_Cfg(cfg, 'EFUSE_CFG', 'maskfile', efuse_data_mask) cfg.write(eflash_loader_cfg_tmp, 'w+')
def update_data_from_cfg(config_keys, config_file, section): bflb_utils.printf('Updating data according to <' + config_file + '[' + section + ']>') cfg = bflb_utils.BFConfigParser() cfg.read(config_file) filelen = 0 for key in config_keys: offset = int(config_keys.get(key)['offset'], 10) if offset > filelen: filelen = offset filelen += 4 bflb_utils.printf('Created file len:' + str(filelen)) data = bytearray(filelen) data_mask = bytearray(filelen) for key in cfg.options(section): if config_keys.get(key) == None: bflb_utils.printf(key + ' not exist') continue else: val = cfg.get(section, key) if val.startswith('0x'): val = int(val, 16) else: val = int(val, 10) offset = int(config_keys.get(key)['offset'], 10) pos = int(config_keys.get(key)['pos'], 10) bitlen = int(config_keys.get(key)['bitlen'], 10) oldval = bflb_utils.bytearray_to_int(bflb_utils.bytearray_reverse(data[offset:offset + 4])) oldval_mask = bflb_utils.bytearray_to_int(bflb_utils.bytearray_reverse(data_mask[offset:offset + 4])) newval = (oldval & get_int_mask(pos, bitlen)) + (val << pos) if val != 0: newval_mask = oldval_mask | ~get_int_mask(pos, bitlen) else: newval_mask = oldval_mask data[offset:offset + 4] = bflb_utils.int_to_4bytearray_l(newval) data_mask[offset:offset + 4] = bflb_utils.int_to_4bytearray_l(newval_mask) return (data, data_mask)
def create_sp_media_image(config, cpu_type=None): global cfg bflb_utils.printf('========= sp image create =========') cfg = bflb_utils.BFConfigParser() cfg.read(config) img_creat_process(1)
# decompyle3 version 3.3.2 # Python bytecode 3.7 (3394) # Decompiled from: Python 3.8.5 (default, Jul 28 2020, 12:59:40) # [GCC 9.3.0] # Embedded file name: lib\bl602\img_create_do.py import sys, hashlib, binascii, getopt from lib import bflb_utils from lib import bflb_aes import ecdsa cfg = bflb_utils.BFConfigParser() keyslot0 = 28 keyslot1 = keyslot0 + 16 keyslot2 = keyslot1 + 16 keyslot3 = keyslot2 + 16 keyslot4 = keyslot3 + 16 keyslot5 = keyslot4 + 16 keyslot6 = keyslot5 + 16 wr_lock_key_slot_4_l = 13 wr_lock_key_slot_5_l = 14 wr_lock_boot_mode = 15 wr_lock_dbg_pwd = 16 wr_lock_sw_usage_0 = 17 wr_lock_wifi_mac = 18 wr_lock_key_slot_0 = 19 wr_lock_key_slot_1 = 20 wr_lock_key_slot_2 = 21 wr_lock_key_slot_3 = 22 wr_lock_key_slot_4_h = 23 wr_lock_key_slot_5_h = 24 rd_lock_dbg_pwd = 25 rd_lock_key_slot_0 = 26