diff options
Diffstat (limited to 'target/linux/x86/image')
-rw-r--r-- | target/linux/x86/image/Config.in | 2 | ||||
-rw-r--r-- | target/linux/x86/image/Makefile | 32 | ||||
-rwxr-xr-x | target/linux/x86/image/mkimg_bifferboard.py | 50 | ||||
-rwxr-xr-x | target/linux/x86/image/mkimg_sitecom.pl | 11 |
4 files changed, 94 insertions, 1 deletions
diff --git a/target/linux/x86/image/Config.in b/target/linux/x86/image/Config.in index 653aa61..9ced34c 100644 --- a/target/linux/x86/image/Config.in +++ b/target/linux/x86/image/Config.in @@ -15,7 +15,7 @@ config X86_ETHERBOOT_BOOTOPTS config X86_GRUB_IMAGES bool "Build GRUB images (Linux x86 or x86_64 host only)" - depends TARGET_x86 && !TARGET_x86_olpc + depends TARGET_x86 && !(TARGET_x86_olpc || TARGET_x86_rdc) depends TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_ISO || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS select PACKAGE_grub2 default y diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index 3552748..399ce3c 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -206,12 +206,40 @@ define Image/BuildKernel endif endef +define Image/Build/Profile/ar525w + cp $(KDIR)/bzImage $(KDIR)/bzImage.tmp + $(SCRIPT_DIR)/pad_image $(1) $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) 32 + $(STAGING_DIR_HOST)/bin/airlink -b 1 $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) \ + $(BIN_DIR)/$(IMG_PREFIX)-$(1)-ar525w.img + $(STAGING_DIR_HOST)/bin/airlink -e -b 1 $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) \ + $(BIN_DIR)/$(IMG_PREFIX)-$(1)-ar525w-web.img +endef + +define Image/Build/Profile/sitecom + cp $(KDIR)/bzImage $(KDIR)/bzImage.tmp + #32k config data + 20 bytes header + 2 bytes checksum after kernel image + $(SCRIPT_DIR)/pad_image $(1) $(KDIR)/bzImage.tmp $(KDIR)/root.$(1) 32790 + $(TOPDIR)/target/linux/rdc/image/mkimg_sitecom.pl $(KDIR)/bzImage.tmp > $(KDIR)/tmp.img + cat $(KDIR)/root.$(1) >> $(KDIR)/tmp.img + cp $(KDIR)/tmp.img $(BIN_DIR)/$(IMG_PREFIX)-$(1)-sitecom.img + rm $(KDIR)/tmp.img $(KDIR)/bzImage.tmp +endef + +define Image/Build/Profile/bifferboard + $(TOPDIR)/target/linux/rdc/image/mkimg_bifferboard.py $(KDIR)/bzImage $(KDIR)/root.$(1) \ + $(BIN_DIR)/$(IMG_PREFIX)-$(1)-bifferboard.img +endef + define Image/Prepare $(CP) $(LINUX_DIR)/arch/x86/boot/bzImage $(KDIR)/bzImage $(call Image/Prepare/bootscript) $(call Image/Prepare/grub2) endef +define Image/Build/Initramfs + $(CP) $(KDIR)/bzImage $(BIN_DIR)/$(IMG_PREFIX)-ramfs.bzImage +endef + define Image/Build $(call Image/Build/$(1)) $(call Image/Build/bootscript,$(1)) @@ -225,6 +253,10 @@ define Image/Build endif $(CP) $(KDIR)/bzImage $(BIN_DIR)/$(IMG_PREFIX)-vmlinuz $(call Image/Build/gzip/$(1)) + $(call Image/Build/Profile/$(PROFILE),$(1)) +ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y) + $(call Image/Build/Initramfs) +endif endef $(eval $(call BuildImage)) diff --git a/target/linux/x86/image/mkimg_bifferboard.py b/target/linux/x86/image/mkimg_bifferboard.py new file mode 100755 index 0000000..5444abe --- /dev/null +++ b/target/linux/x86/image/mkimg_bifferboard.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +""" + Create firmware for 4/8MB Bifferboards, suitable for uploading using + either bb_upload8.py or bb_eth_upload8.py +""" + +import struct, sys + +# Increase the kmax value if the script gives errors about the kernel being +# too large. You need to set the Biffboot kmax value to the same value you +# use here. +kmax = 0x10 + +# No need to change this for 4MB devices, it's only used to tell you if +# the firmware is too large! +flash_size = 0x800000 + +# This is always the same, for 1MB, 4MB and 8MB devices +config_extent = 0x6000 + +kernel_extent = kmax * 0x10000 + +if __name__ == "__main__": + + if len(sys.argv) != 4: + print "usage: mkimg_bifferboard.py <kernel> <rootfs> <output file>" + sys.exit(-1) + + bzimage = sys.argv[1] + rootfs = sys.argv[2] + target = sys.argv[3] + + # Kernel first + fw = file(bzimage).read() + if len(fw) > (kernel_extent - config_extent): + raise IOError("Kernel too large") + + # Pad up to end of kernel partition + while len(fw) < (kernel_extent - config_extent): + fw += "\xff" + + fw += file(rootfs).read() + + # Check length of total + if len(fw) > (flash_size - 0x10000 - config_extent): + raise IOError("Rootfs too large") + + file(target,"wb").write(fw) + print "Firmware written to '%s'" % target diff --git a/target/linux/x86/image/mkimg_sitecom.pl b/target/linux/x86/image/mkimg_sitecom.pl new file mode 100755 index 0000000..cfd5e65 --- /dev/null +++ b/target/linux/x86/image/mkimg_sitecom.pl @@ -0,0 +1,11 @@ +#!/usr/bin/perl + +open (bzimg, @ARGV[0]); +while (<bzimg>) { $i .= $_; } +$i .= pack "v", -(unpack "%v*", $i); +print "CSYS"; +print pack("V", length($i)); +print pack("V", 0); +print "WRRM"; +print pack("V", length($i)); +print $i; |