From fcb2a609fcbed64161842dfac49fd3a9c966e9f7 Mon Sep 17 00:00:00 2001 From: Piotr Esden-Tempski Date: Sun, 19 Dec 2021 12:36:04 -0800 Subject: [PATCH] scripts: Updated nrf51 id script for py3 and to parse newer oocd header. --- scripts/get_openocd_nrf51_ids.py | 62 +++++++++++++++----------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/scripts/get_openocd_nrf51_ids.py b/scripts/get_openocd_nrf51_ids.py index 5c90a296..33bdd60e 100755 --- a/scripts/get_openocd_nrf51_ids.py +++ b/scripts/get_openocd_nrf51_ids.py @@ -5,56 +5,52 @@ pasting into blackmagic's nrf51.c """ -import subprocess,re +import subprocess +import re +import io -cmd = 'git archive --remote=git://git.code.sf.net/p/openocd/code HEAD src/flash/nor/nrf51.c | tar -xO' +cmd = 'git archive --remote=git://git.code.sf.net/p/openocd/code HEAD src/flash/nor/nrf5.c | tar -xO' class Spec(): def __repr__(self): return "0x%04X: /* %s %s %s */"%(self.hwid,self.comment, self.variant,self.build_code) -fd = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE).stdout +proc = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE) -specdict={} -specs=[] -spec=Spec() -for line in fd.read().split('\n'): - m=re.search('/\*(.*)\*/',line) +specdict = {} +specs = [] +spec = Spec() +for line in io.TextIOWrapper(proc.stdout, encoding="utf-8"): + m = re.search('/\*(.*)\*/',line) if m: lastcomment=m.group(1) - m=re.search('.hwid.*=\s*(0x[0-9A-F]*),',line) + m = re.search('NRF51_DEVICE_DEF\((0x[0-9A-F]*),\s*"(.*)",\s*"(.*)",\s*"(.*)",\s*([0-9]*)\s*\),', line) if m: - spec.hwid=int(m.group(1),base=0) - m=re.search('.variant.*=\s*"(.*)",',line) - if m: - spec.variant=m.group(1) - m=re.search('.build_code.*=\s*"(.*)",',line) - if m: - spec.build_code=m.group(1) - m=re.search('.flash_size_kb.*=\s*([0-9]*),',line) - if m: - spec.flash_size_kb=int(m.group(1),base=0) - ram,flash = {'AA':(16,256), - 'AB':(16,128), - 'AC':(32,256)}[spec.variant[-2:]] - assert flash==spec.flash_size_kb + spec.hwid = int(m.group(1), base=0) + spec.variant = m.group(3) + spec.build_code = m.group(4) + spec.flash_size_kb = int(m.group(5), base=0) + ram, flash = {'AA':(16,256), + 'AB':(16,128), + 'AC':(32,256)}[spec.variant[-2:]] + assert flash == spec.flash_size_kb spec.ram_size_kb = ram - nicecomment =lastcomment.strip().replace('IC ','').replace('Devices ','').replace('.','') - spec.comment=nicecomment + nicecomment = lastcomment.strip().replace('IC ','').replace('Devices ','').replace('.','') + spec.comment = nicecomment specdict.setdefault((ram,flash),[]).append(spec) specs.append(spec) spec=Spec() -for (ram,flash),specs in specdict.iteritems(): +for (ram,flash),specs in specdict.items(): specs.sort(key=lambda x:x.hwid) for spec in specs: - print "\tcase",spec - print '\t\tt->driver = "Nordic nRF51";' - print '\t\ttarget_add_ram(t, 0x20000000, 0x%X);'%(1024*ram) - print '\t\tnrf51_add_flash(t, 0x00000000, 0x%X, NRF51_PAGE_SIZE);'%(1024*flash) - print '\t\tnrf51_add_flash(t, NRF51_UICR, 0x100, 0x100);' - print '\t\ttarget_add_commands(t, nrf51_cmd_list, "nRF51");' - print '\t\treturn true;' + print("\tcase",spec) + print('\t\tt->driver = "Nordic nRF51";') + print('\t\ttarget_add_ram(t, 0x20000000, 0x%X);'%(1024*ram)) + print('\t\tnrf51_add_flash(t, 0x00000000, 0x%X, NRF51_PAGE_SIZE);'%(1024*flash)) + print('\t\tnrf51_add_flash(t, NRF51_UICR, 0x100, 0x100);') + print('\t\ttarget_add_commands(t, nrf51_cmd_list, "nRF51");') + print('\t\treturn true;')