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