mirror of
git://git.yoctoproject.org/meta-raspberrypi.git
synced 2025-07-19 12:59:03 +02: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…
Reference in New Issue
Block a user