summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid-John Willis <John.Willis@Distant-earth.com>2012-04-12 22:21:28 +0100
committerDavid-John Willis <John.Willis@Distant-earth.com>2012-04-12 22:21:28 +0100
commit58aec28df8b749431bc217094768561c54ed5867 (patch)
tree6da76807b4763dd531ec2775b3419c7c57419d90
parent7dbc0ca1103d3ce445947979272038502ccf6cb0 (diff)
downloadmeta-raspberrypi-58aec28df8b749431bc217094768561c54ed5867.tar.gz
bcm2835-kernel-image: Add recipe to deal with prepending the 32KB header to the kerenl image.
* TODO: Clean up these recipes and merge -mkimage and -kernel-image.
-rw-r--r--recipes-bcm/kernel-image/bcm2835-kernel-image.bb17
-rw-r--r--recipes-bcm/kernel-image/bcm2835-mkimage.bb31
-rw-r--r--recipes-bcm/kernel-image/bcm2835-mkimage/LICENCE3
-rw-r--r--recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-args-uncompressed.txt12
-rw-r--r--recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-boot-uncompressed.txt17
-rw-r--r--recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-kernel-first32k.binbin0 -> 32768 bytes
-rw-r--r--recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-mkimage.py51
7 files changed, 131 insertions, 0 deletions
diff --git a/recipes-bcm/kernel-image/bcm2835-kernel-image.bb b/recipes-bcm/kernel-image/bcm2835-kernel-image.bb
new file mode 100644
index 0000000..06325f8
--- /dev/null
+++ b/recipes-bcm/kernel-image/bcm2835-kernel-image.bb
@@ -0,0 +1,17 @@
1DESCRIPTION = "Helper recipe to make the munged kernel.img image for the RaspberryPi."
2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
4
5PR = "${MACHINE_KERNEL_PR}.0"
6DEPENDS = "bcm2835-bootfiles bcm2835-mkimage-native"
7
8S = "${WORKDIR}"
9
10addtask deploy before do_package after do_install
11
12do_deploy() {
13 install -d ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles
14 bcm2835-mkimage.py ${DEPLOY_DIR_IMAGE}/zImage-${MACHINE}.bin ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/kernel.img ${STAGING_BINDIR_NATIVE}/
15}
16
17PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/recipes-bcm/kernel-image/bcm2835-mkimage.bb b/recipes-bcm/kernel-image/bcm2835-mkimage.bb
new file mode 100644
index 0000000..5afca12
--- /dev/null
+++ b/recipes-bcm/kernel-image/bcm2835-mkimage.bb
@@ -0,0 +1,31 @@
1DESCRIPTION = "Tools to append 32KB binary header to kernel image."
2LICENSE = "proprietary-binary"
3PR = "${MACHINE_KERNEL_PR}.2"
4
5SECTION = "bootloader"
6
7LIC_FILES_CHKSUM = "file://LICENCE;md5=3d7292881293368c0a9f3bc521c2b87e"
8
9SRC_URI = " \
10 file://LICENCE \
11 file://bcm2835-args-uncompressed.txt \
12 file://bcm2835-boot-uncompressed.txt \
13 file://bcm2835-mkimage.py \
14 file://bcm2835-kernel-first32k.bin \
15"
16
17S = "${WORKDIR}"
18
19BBCLASSEXTEND = "native nativesdk"
20
21do_install () {
22 install -d ${D}${bindir}
23 install -m 0755 bcm2835-mkimage.py ${D}${bindir}
24 install -m 0644 bcm2835-args-uncompressed.txt ${D}${bindir}
25 install -m 0644 bcm2835-boot-uncompressed.txt ${D}${bindir}
26 install -m 0644 bcm2835-kernel-first32k.bin ${D}${bindir}
27}
28
29FILES_${PN} = " \
30 ${bindir}/bcm2835-* \
31"
diff --git a/recipes-bcm/kernel-image/bcm2835-mkimage/LICENCE b/recipes-bcm/kernel-image/bcm2835-mkimage/LICENCE
new file mode 100644
index 0000000..c6849d9
--- /dev/null
+++ b/recipes-bcm/kernel-image/bcm2835-mkimage/LICENCE
@@ -0,0 +1,3 @@
1I believe this is a proprietary binary (the first32k.bin file) provided by Broadcom.
2
3It is distributed with the express permission of the RaspberryPi foundation.
diff --git a/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-args-uncompressed.txt b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-args-uncompressed.txt
new file mode 100644
index 0000000..09398b4
--- /dev/null
+++ b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-args-uncompressed.txt
@@ -0,0 +1,12 @@
1; kernel args (place at 0x00000100)
20x00000005
30x54410001
40x00000001
50x00001000
60x00000000
70x00000004
80x54410002
90x08000000
100x00000000
110x00000000
120x00000000
diff --git a/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-boot-uncompressed.txt b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-boot-uncompressed.txt
new file mode 100644
index 0000000..1cf5888
--- /dev/null
+++ b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-boot-uncompressed.txt
@@ -0,0 +1,17 @@
1; bootloader (place at 0x00000000)
20xea000006
30xe1a00000
40xe1a00000
50xe1a00000
60xe1a00000
70xe1a00000
80xe1a00000
90xe1a00000
10
110xe3a00000
120xe3a01042
130xe3811c0c
140xe59f2000
150xe59ff000
160x00000100
170x00008000
diff --git a/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-kernel-first32k.bin b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-kernel-first32k.bin
new file mode 100644
index 0000000..ebf74be
--- /dev/null
+++ b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-kernel-first32k.bin
Binary files differ
diff --git a/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-mkimage.py b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-mkimage.py
new file mode 100644
index 0000000..6ce9231
--- /dev/null
+++ b/recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-mkimage.py
@@ -0,0 +1,51 @@
1#!/usr/bin/python
2
3import os
4import re
5import sys
6
7try:
8 raw_kernel = sys.argv[1]
9except:
10 raw_kernel = "./zImage"
11
12try:
13 output_img = sys.argv[2]
14except:
15 output_img = "./kernel.img"
16
17try:
18 supfile_loc = sys.argv[3]
19except:
20 supfile_loc = "./"
21
22re_line = re.compile(r"0x(?P<value>[0-9a-f]{8})")
23
24mem = [0 for i in range(32768)]
25
26def load_to_mem(name, addr):
27 f = open(name)
28
29 for l in f.readlines():
30 m = re_line.match(l)
31
32 if m:
33 value = int(m.group("value"), 16)
34
35 for i in range(4):
36 mem[addr] = int(value >> i * 8 & 0xff)
37 addr += 1
38
39 f.close()
40
41load_to_mem(""+supfile_loc+"bcm2835-boot-uncompressed.txt", 0x00000000)
42load_to_mem(""+supfile_loc+"bcm2835-args-uncompressed.txt", 0x00000100)
43
44f = open(""+supfile_loc+"bcm2835-kernel-first32k.bin", "wb")
45
46for m in mem:
47 f.write(chr(m))
48
49f.close()
50
51os.system("cat "+supfile_loc+"bcm2835-kernel-first32k.bin "+raw_kernel+" > "+output_img+"")