mirror of
git://git.yoctoproject.org/meta-raspberrypi
synced 2026-04-02 02:49:12 +00:00
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.
This commit is contained in:
parent
7dbc0ca110
commit
58aec28df8
17
recipes-bcm/kernel-image/bcm2835-kernel-image.bb
Normal file
17
recipes-bcm/kernel-image/bcm2835-kernel-image.bb
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
DESCRIPTION = "Helper recipe to make the munged kernel.img image for the RaspberryPi."
|
||||||
|
LICENSE = "MIT"
|
||||||
|
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
|
||||||
|
|
||||||
|
PR = "${MACHINE_KERNEL_PR}.0"
|
||||||
|
DEPENDS = "bcm2835-bootfiles bcm2835-mkimage-native"
|
||||||
|
|
||||||
|
S = "${WORKDIR}"
|
||||||
|
|
||||||
|
addtask deploy before do_package after do_install
|
||||||
|
|
||||||
|
do_deploy() {
|
||||||
|
install -d ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles
|
||||||
|
bcm2835-mkimage.py ${DEPLOY_DIR_IMAGE}/zImage-${MACHINE}.bin ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/kernel.img ${STAGING_BINDIR_NATIVE}/
|
||||||
|
}
|
||||||
|
|
||||||
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||||
31
recipes-bcm/kernel-image/bcm2835-mkimage.bb
Normal file
31
recipes-bcm/kernel-image/bcm2835-mkimage.bb
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
DESCRIPTION = "Tools to append 32KB binary header to kernel image."
|
||||||
|
LICENSE = "proprietary-binary"
|
||||||
|
PR = "${MACHINE_KERNEL_PR}.2"
|
||||||
|
|
||||||
|
SECTION = "bootloader"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM = "file://LICENCE;md5=3d7292881293368c0a9f3bc521c2b87e"
|
||||||
|
|
||||||
|
SRC_URI = " \
|
||||||
|
file://LICENCE \
|
||||||
|
file://bcm2835-args-uncompressed.txt \
|
||||||
|
file://bcm2835-boot-uncompressed.txt \
|
||||||
|
file://bcm2835-mkimage.py \
|
||||||
|
file://bcm2835-kernel-first32k.bin \
|
||||||
|
"
|
||||||
|
|
||||||
|
S = "${WORKDIR}"
|
||||||
|
|
||||||
|
BBCLASSEXTEND = "native nativesdk"
|
||||||
|
|
||||||
|
do_install () {
|
||||||
|
install -d ${D}${bindir}
|
||||||
|
install -m 0755 bcm2835-mkimage.py ${D}${bindir}
|
||||||
|
install -m 0644 bcm2835-args-uncompressed.txt ${D}${bindir}
|
||||||
|
install -m 0644 bcm2835-boot-uncompressed.txt ${D}${bindir}
|
||||||
|
install -m 0644 bcm2835-kernel-first32k.bin ${D}${bindir}
|
||||||
|
}
|
||||||
|
|
||||||
|
FILES_${PN} = " \
|
||||||
|
${bindir}/bcm2835-* \
|
||||||
|
"
|
||||||
3
recipes-bcm/kernel-image/bcm2835-mkimage/LICENCE
Normal file
3
recipes-bcm/kernel-image/bcm2835-mkimage/LICENCE
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
I believe this is a proprietary binary (the first32k.bin file) provided by Broadcom.
|
||||||
|
|
||||||
|
It is distributed with the express permission of the RaspberryPi foundation.
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
; kernel args (place at 0x00000100)
|
||||||
|
0x00000005
|
||||||
|
0x54410001
|
||||||
|
0x00000001
|
||||||
|
0x00001000
|
||||||
|
0x00000000
|
||||||
|
0x00000004
|
||||||
|
0x54410002
|
||||||
|
0x08000000
|
||||||
|
0x00000000
|
||||||
|
0x00000000
|
||||||
|
0x00000000
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
; bootloader (place at 0x00000000)
|
||||||
|
0xea000006
|
||||||
|
0xe1a00000
|
||||||
|
0xe1a00000
|
||||||
|
0xe1a00000
|
||||||
|
0xe1a00000
|
||||||
|
0xe1a00000
|
||||||
|
0xe1a00000
|
||||||
|
0xe1a00000
|
||||||
|
|
||||||
|
0xe3a00000
|
||||||
|
0xe3a01042
|
||||||
|
0xe3811c0c
|
||||||
|
0xe59f2000
|
||||||
|
0xe59ff000
|
||||||
|
0x00000100
|
||||||
|
0x00008000
|
||||||
Binary file not shown.
51
recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-mkimage.py
Normal file
51
recipes-bcm/kernel-image/bcm2835-mkimage/bcm2835-mkimage.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
try:
|
||||||
|
raw_kernel = sys.argv[1]
|
||||||
|
except:
|
||||||
|
raw_kernel = "./zImage"
|
||||||
|
|
||||||
|
try:
|
||||||
|
output_img = sys.argv[2]
|
||||||
|
except:
|
||||||
|
output_img = "./kernel.img"
|
||||||
|
|
||||||
|
try:
|
||||||
|
supfile_loc = sys.argv[3]
|
||||||
|
except:
|
||||||
|
supfile_loc = "./"
|
||||||
|
|
||||||
|
re_line = re.compile(r"0x(?P<value>[0-9a-f]{8})")
|
||||||
|
|
||||||
|
mem = [0 for i in range(32768)]
|
||||||
|
|
||||||
|
def load_to_mem(name, addr):
|
||||||
|
f = open(name)
|
||||||
|
|
||||||
|
for l in f.readlines():
|
||||||
|
m = re_line.match(l)
|
||||||
|
|
||||||
|
if m:
|
||||||
|
value = int(m.group("value"), 16)
|
||||||
|
|
||||||
|
for i in range(4):
|
||||||
|
mem[addr] = int(value >> i * 8 & 0xff)
|
||||||
|
addr += 1
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
load_to_mem(""+supfile_loc+"bcm2835-boot-uncompressed.txt", 0x00000000)
|
||||||
|
load_to_mem(""+supfile_loc+"bcm2835-args-uncompressed.txt", 0x00000100)
|
||||||
|
|
||||||
|
f = open(""+supfile_loc+"bcm2835-kernel-first32k.bin", "wb")
|
||||||
|
|
||||||
|
for m in mem:
|
||||||
|
f.write(chr(m))
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
os.system("cat "+supfile_loc+"bcm2835-kernel-first32k.bin "+raw_kernel+" > "+output_img+"")
|
||||||
Loading…
x
Reference in New Issue
Block a user