common-sercomm.mk 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. DEVICE_VARS += SERCOMM_KERNEL_OFFSET SERCOMM_ROOTFS_OFFSET
  2. DEVICE_VARS += SERCOMM_KERNEL2_OFFSET SERCOMM_ROOTFS2_OFFSET
  3. define Build/sercomm-append-tail
  4. printf 16 | dd seek=$$((0x90)) of=$@ bs=1 conv=notrunc 2>/dev/null
  5. printf 11223344556677889900112233445566 | \
  6. sed 's/../\\x&/g' | xargs -d . printf >> $@
  7. endef
  8. define Build/sercomm-crypto
  9. $(TOPDIR)/scripts/sercomm-crypto.py \
  10. --input-file $@ \
  11. --key-file [email protected] \
  12. --output-file [email protected] \
  13. --version $(SERCOMM_SWVER)
  14. $(STAGING_DIR_HOST)/bin/openssl enc -md md5 -aes-256-cbc \
  15. -in $@ \
  16. -out [email protected] \
  17. -K `cat [email protected]` \
  18. -iv 00000000000000000000000000000000
  19. dd [email protected] >> [email protected] 2>/dev/null
  20. mv [email protected] $@
  21. rm -f [email protected] [email protected]
  22. endef
  23. define Build/sercomm-factory-cqr
  24. $(TOPDIR)/scripts/sercomm-pid.py \
  25. --hw-version $(SERCOMM_HWVER) \
  26. --hw-id $(SERCOMM_HWID) \
  27. --sw-version $(SERCOMM_SWVER) \
  28. --pid-file [email protected] \
  29. --extra-padding-size 0x190
  30. printf $$(stat -c%s $(IMAGE_KERNEL)) | \
  31. dd seek=$$((0x70)) [email protected] bs=1 conv=notrunc 2>/dev/null
  32. printf $$(($$(stat -c%s $@)-$$(stat -c%s $(IMAGE_KERNEL))-$$((0x200)))) | \
  33. dd seek=$$((0x80)) [email protected] bs=1 conv=notrunc 2>/dev/null
  34. dd if=$@ >> [email protected] 2>/dev/null
  35. mv [email protected] $@
  36. endef
  37. define Build/sercomm-fix-buc-pid
  38. printf 1 | dd seek=$$((0x13)) of=$@ bs=1 conv=notrunc 2>/dev/null
  39. endef
  40. define Build/sercomm-kernel
  41. $(TOPDIR)/scripts/sercomm-kernel-header.py \
  42. --kernel-image $@ \
  43. --kernel-offset $(SERCOMM_KERNEL_OFFSET) \
  44. --rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
  45. --output-header [email protected]
  46. dd if=$@ >> [email protected] 2>/dev/null
  47. mv [email protected] $@
  48. endef
  49. define Build/sercomm-kernel-factory
  50. $(TOPDIR)/scripts/sercomm-kernel-header.py \
  51. --kernel-image $@ \
  52. --kernel-offset $(SERCOMM_KERNEL_OFFSET) \
  53. --rootfs-offset $(SERCOMM_ROOTFS_OFFSET) \
  54. --output-header [email protected]
  55. $(TOPDIR)/scripts/sercomm-kernel-header.py \
  56. --kernel-image $@ \
  57. --kernel-offset $(SERCOMM_KERNEL2_OFFSET) \
  58. --rootfs-offset $(SERCOMM_ROOTFS2_OFFSET) \
  59. --output-header [email protected]
  60. cat [email protected] [email protected] > [email protected]
  61. dd if=$@ >> [email protected] 2>/dev/null
  62. mv [email protected] $@
  63. endef
  64. define Build/sercomm-mkhash
  65. dd bs=$$((0x400)) skip=1 if=$@ conv=notrunc 2>/dev/null | \
  66. $(MKHASH) md5 | awk '{print $$1}' | tr -d '\n' | \
  67. dd seek=$$((0x1e0)) of=$@ bs=1 conv=notrunc 2>/dev/null
  68. endef
  69. define Build/sercomm-part-tag
  70. $(call Build/sercomm-part-tag-common,$(word 1,$(1)) $@)
  71. endef
  72. define Build/sercomm-part-tag-common
  73. $(eval file=$(word 2,$(1)))
  74. $(TOPDIR)/scripts/sercomm-partition-tag.py \
  75. --input-file $(file) \
  76. --output-file $(file).tmp \
  77. --part-name $(word 1,$(1)) \
  78. --part-version $(SERCOMM_SWVER)
  79. mv $(file).tmp $(file)
  80. endef
  81. define Build/sercomm-payload
  82. $(TOPDIR)/scripts/sercomm-pid.py \
  83. --hw-version $(SERCOMM_HWVER) \
  84. --hw-id $(SERCOMM_HWID) \
  85. --sw-version $(SERCOMM_SWVER) \
  86. --pid-file [email protected] \
  87. --extra-padding-size 0x10 \
  88. --extra-padding-first-byte 0x0a
  89. $(TOPDIR)/scripts/sercomm-payload.py \
  90. --input-file $@ \
  91. --output-file [email protected] \
  92. --pid-file [email protected]
  93. mv [email protected] $@
  94. rm [email protected]
  95. endef
  96. define Build/sercomm-prepend-tagged-kernel
  97. $(CP) $(IMAGE_KERNEL) $(IMAGE_KERNEL).tagged
  98. $(call Build/sercomm-part-tag-common,$(word 1,$(1)) \
  99. $(IMAGE_KERNEL).tagged)
  100. dd if=$@ >> $(IMAGE_KERNEL).tagged 2>/dev/null
  101. mv $(IMAGE_KERNEL).tagged $@
  102. endef
  103. define Build/sercomm-reset-slot1-chksum
  104. printf "\xff\xff\xff\xff" | \
  105. dd of=$@ seek=$$((0x118)) bs=1 conv=notrunc 2>/dev/null
  106. endef
  107. define Device/sercomm
  108. $(Device/nand)
  109. LOADER_TYPE := bin
  110. IMAGES += factory.img
  111. endef
  112. define Device/sercomm_cxx_dxx
  113. $(Device/sercomm)
  114. KERNEL_SIZE := 6144k
  115. KERNEL_LOADADDR := 0x81001000
  116. LZMA_TEXT_START := 0x82800000
  117. SERCOMM_KERNEL_OFFSET := 0x400100
  118. SERCOMM_ROOTFS_OFFSET := 0x1000000
  119. endef
  120. define Device/sercomm_cxx
  121. $(Device/sercomm_cxx_dxx)
  122. SERCOMM_KERNEL2_OFFSET := 0xa00100
  123. SERCOMM_ROOTFS2_OFFSET := 0x3000000
  124. KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | lzma -a0 | \
  125. uImage lzma
  126. IMAGE/sysupgrade.bin := append-kernel | sercomm-kernel | \
  127. sysupgrade-tar kernel=$$$$@ | append-metadata
  128. IMAGE/factory.img := append-kernel | sercomm-kernel-factory | \
  129. append-ubi | sercomm-factory-cqr | sercomm-mkhash
  130. endef
  131. define Device/sercomm_dxx
  132. $(Device/sercomm_cxx_dxx)
  133. KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | lzma -a0 | \
  134. uImage lzma | sercomm-kernel
  135. KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | \
  136. lzma -a0 | uImage lzma
  137. IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
  138. IMAGE/factory.img := append-ubi | check-size | \
  139. sercomm-part-tag rootfs | sercomm-prepend-tagged-kernel kernel | \
  140. gzip | sercomm-payload | sercomm-crypto
  141. endef
  142. define Device/sercomm_s1500
  143. $(Device/sercomm)
  144. SERCOMM_KERNEL_OFFSET := 0x1700100
  145. SERCOMM_ROOTFS_OFFSET := 0x1f00000
  146. SERCOMM_KERNEL2_OFFSET := 0x1b00100
  147. KERNEL := kernel-bin | append-dtb | lzma | loader-kernel | lzma -a0 | \
  148. uImage lzma
  149. KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-kernel | \
  150. lzma -a0 | uImage lzma
  151. IMAGE/sysupgrade.bin := append-kernel | sercomm-kernel | \
  152. sysupgrade-tar kernel=$$$$@ | append-metadata
  153. DEVICE_PACKAGES := kmod-mt76x2 kmod-usb3
  154. endef