'src/bootloader/flash.rs',
]
+bootloader_bins = []
+
for s in ['intermediate', 'final']:
bootloader_env = env.Clone()
Default(bootloader_bin)
+ bootloader_bins.append(bootloader_bin)
+
+bootloader_intermediate_frm = \
+ bootloader_env.Frm(bootloader_bins[0])
+
+Default(bootloader_intermediate_frm)
+
application_source_files = [
'src/application/main.rs', # Must be listed first (see below).
'src/application/button.rs',
root_env['ARCOMSTR'] = ' AR $TARGET'
root_env['RANLIBCOMSTR'] = ' RANLIB $TARGET'
root_env['OBJCOPYCOMSTR'] = ' OBJCOPY $TARGET'
+ root_env['FRMCOMSTR'] = ' FRM $TARGET'
# Make colored output of e.g. gcc work.
root_env['ENV']['TERM'] = os.environ.get('TERM')
suffix='.bin',
src_suffix='.elf')})
+def xor8(buf):
+ import functools
+
+ return functools.reduce(lambda x, y: (x & 0xff) ^ (y & 0xff), buf)
+
+def build_frm(target, source, env):
+ with open(str(source[0]), 'rb') as f_in:
+ buf = f_in.read()
+
+ with open(str(target[0]), 'wb') as f_out:
+ f_out.write(buf)
+ f_out.write(bytearray([xor8(buf)]))
+
+ return 0
+
+root_env.Append(BUILDERS = { 'Frm': Builder(
+ action=Action(build_frm, '$FRMCOMSTR'),
+ suffix='.frm',
+ src_suffix='.bin')})
+
env = root_env.Clone()
env['variant_dir'] = 'build-target'
env['LIBPATH'] = env['variant_dir']