Mercurial > lcfOS
diff customtasks.py @ 408:ad6be5454067
Added image build task
author | Windel Bouwman |
---|---|
date | Sat, 21 Feb 2015 12:17:47 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/customtasks.py Sat Feb 21 12:17:47 2015 +0100 @@ -0,0 +1,33 @@ +""" + Custom task to create boot image. +""" +from ppci import tasks +import struct + + +@tasks.register_task('mkimage') +class MkImageTask(tasks.Task): + """ Concatenate kernel and boot data in cunning manner """ + def run(self): + self.logger.info('Constructing boot image') + data = bytearray() + # TODO: parameterize: + + # Read kernel: + with open(self.relpath('kernel/obj/kernel.bin'), 'rb') as f: + data += f.read() + + # Read images: + with open(self.relpath('user/obj/init.bin'), 'rb') as f: + init = f.read() + + # Construct table: + table = struct.pack('<II', 0x1337, 1) + data += table + data += struct.pack('<I', len(init)) + data += init + + + # Produce output: + with open(self.relpath('image.img'), 'wb') as f: + f.write(data)