Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. #
  2. # Copyright (C) 2008-2012 OpenWrt.org
  3. #
  4. # This is free software, licensed under the GNU General Public License v2.
  5. # See /LICENSE for more information.
  6. #
  7. include $(TOPDIR)/rules.mk
  8. include $(INCLUDE_DIR)/image.mk
  9. include $(INCLUDE_DIR)/host.mk
  10.  
  11. SQUASHFSCOMP:=xz
  12. FLASH_BLOCKSIZE:=64
  13. FLASH_SZ:=128
  14. UBOOT_SZ:=4
  15. UBOOT_ENV_SZ:=1
  16. KERNEL_SZ:=23
  17. ROOTFS_SZ:=0
  18.  
  19. ROOTFS_ADDR=$(shell printf %x $$(((($(UBOOT_SZ) + $(UBOOT_ENV_SZ) + $(KERNEL_SZ)) * $(FLASH_BLOCKSIZE)) * 1024)))
  20. JFFS2_ADDR=$(shell printf %x $$(((($(UBOOT_SZ) + $(UBOOT_ENV_SZ) + $(KERNEL_SZ) + $(ROOTFS_SZ)) * $(FLASH_BLOCKSIZE)) * 1024)))
  21. SQUASHFS_SZ=$(shell printf %x $$((($(1) * $(FLASH_BLOCKSIZE)) * 1024)))
  22.  
  23. rootfs_size=$(shell du -B $(FLASH_BLOCKSIZE)k $(BIN_DIR)/$(IMG_PREFIX)-$(1).img | awk '{print $$1}')
  24. jffs_size=$(shell expr $$(((($(FLASH_SZ) - $(UBOOT_SZ) - $(UBOOT_ENV_SZ) - $(KERNEL_SZ) - $(ROOTFS_SZ))* $(FLASH_BLOCKSIZE)) * 1024)))
  25.  
  26.  
  27. define MkuImage
  28. # Should get zImage size and sed it in the
  29. # zipit-z2_template.dts first to allow for expanding/contracting kernel size
  30. $(shell sed -e 's:DT_SZ_KERNEL:170000:' -e 's:DT_ADDR_SQUASH:$(call ROOTFS_ADDR):' -e 's:DT_SZ_SQUASH:$(call SQUASHFS_SZ,$(ROOTFS_SZ)):' -e 's:DT_ADDR_JFFS2:$(call JFFS2_ADDR):' <$(DTS_DIR)/zipit-z2_template.dts >$(DTS_DIR)/zipit-z2.new.dts)
  31. $(call Image/BuildDTB,$(DTS_DIR)/zipit-z2.new.dts,$(DTS_DIR)/zipit-z2.dtb)
  32. cat $(KDIR)/zImage $(DTS_DIR)/zipit-z2.dtb > $(KDIR_TMP)/zImage-dtb
  33. mkimage -A Arm \
  34. -O linux \
  35. -C none \
  36. -T kernel \
  37. -a 0xA0008000 -e 0xA0008000 \
  38. -n uImage-dtb -d $(KDIR_TMP)/zImage-dtb $(KDIR_TMP)/uImage
  39. dd if=$(KDIR_TMP)/uImage of=$(BIN_DIR)/$(IMG_PREFIX)-uImage bs=$(FLASH_BLOCKSIZE)k conv=sync
  40. endef
  41.  
  42. # Build a fake flash image for usage in Qemu
  43. define Image/Build/Gumstix
  44. dd if=/dev/zero bs=128k count=256 of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-qemu-flash.img
  45. dd if=$(BIN_DIR)/openwrt-pxa-gumstix-u-boot.bin conv=notrunc bs=128k \
  46. of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-qemu-flash.img
  47. dd if=$(KDIR)/root.$(1) conv=notrunc bs=128k seek=2 \
  48. of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-qemu-flash.img
  49. dd if=$(KDIR)/uImage conv=notrunc bs=128k seek=248 \
  50. of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-qemu-flash.img
  51. endef
  52.  
  53. define Image/Build/jffs2-64k
  54. dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-$(1).img bs=64k conv=sync
  55. endef
  56.  
  57. # $(call Image/Build/firmware,$(1))
  58. define Image/Build/squashfs
  59. $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
  60. dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-$(1).img bs=$(FLASH_BLOCKSIZE)k conv=sync
  61. $(eval ROOTFS_SZ=$(call rootfs_size,$(1)))
  62. endef
  63.  
  64. define Image/Build/firmware
  65. # Build SquashFS First
  66. $(call Image/Build/squashfs,$(1))
  67. # Build Kernel 2nd
  68. $(call MkuImage,$(1))
  69. # Should verify size of squash/kernel to make sure it will fit in flash and error if too big
  70. # Build empty JFFS last
  71. mkdir -p $(KDIR_TMP)/empty_jffs
  72. $(STAGING_DIR_HOST)/bin/mkfs.jffs2 -v -X lzma -y 80:lzma -y 70:zlib \
  73. --pad=$(call jffs_size,$(1)) \
  74. --little-endian --squash -e 64KiB \
  75. -d '$(KDIR_TMP)/empty_jffs' \
  76. -o '$(BIN_DIR)/$(IMG_PREFIX)-overlay.jffs2'
  77. # Combine everything into one 'firmware' file
  78. cat $(BIN_DIR)/$(IMG_PREFIX)-uImage \
  79. $(BIN_DIR)/$(IMG_PREFIX)-$(1).img \
  80. $(BIN_DIR)/$(IMG_PREFIX)-overlay.jffs2 >$(BIN_DIR)/$(IMG_PREFIX)-firmware.img
  81. endef
  82.  
  83. define Image/Build
  84. $(call Image/Build/$(1),$(1))
  85. $(call Image/Build/$(PROFILE),$(1))
  86. $(call Image/Build/firmware,$(1))
  87. endef
  88.  
  89. $(eval $(call BuildImage))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement