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)