Pārlūkot izejas kodu

Add amlogic-boot-fip and amlogic-boot-fip-spi

orangepi-xunlong 1 gadu atpakaļ
vecāks
revīzija
e9165fce27
38 mainītis faili ar 350 papildinājumiem un 0 dzēšanām
  1. 1 0
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/Makefile
  2. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/acs.bin
  3. 134 0
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/acs_tool.py
  4. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/aml_ddr.fw
  5. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/aml_encrypt_g12a
  6. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl2.bin
  7. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl30.bin
  8. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl301.bin
  9. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl31.bin
  10. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl31.img
  11. 40 0
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/blx_fix.sh
  12. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/ddr3_1d.fw
  13. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/ddr4_1d.fw
  14. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/ddr4_2d.fw
  15. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/diag_lpddr4.fw
  16. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/lpddr3_1d.fw
  17. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/lpddr4_1d.fw
  18. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/lpddr4_2d.fw
  19. BIN
      external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/piei.fw
  20. 1 0
      external/cache/sources/amlogic-boot-fip/orangepi3plus/Makefile
  21. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/acs.bin
  22. 134 0
      external/cache/sources/amlogic-boot-fip/orangepi3plus/acs_tool.py
  23. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/aml_ddr.fw
  24. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/aml_encrypt_g12a
  25. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/bl2.bin
  26. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/bl30.bin
  27. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/bl301.bin
  28. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/bl31.bin
  29. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/bl31.img
  30. 40 0
      external/cache/sources/amlogic-boot-fip/orangepi3plus/blx_fix.sh
  31. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/ddr3_1d.fw
  32. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/ddr4_1d.fw
  33. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/ddr4_2d.fw
  34. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/diag_lpddr4.fw
  35. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/lpddr3_1d.fw
  36. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/lpddr4_1d.fw
  37. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/lpddr4_2d.fw
  38. BIN
      external/cache/sources/amlogic-boot-fip/orangepi3plus/piei.fw

+ 1 - 0
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/Makefile

@@ -0,0 +1 @@
+include ../g12a.inc

BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/acs.bin


+ 134 - 0
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/acs_tool.py

@@ -0,0 +1,134 @@
+# uncompyle6 version 3.2.4
+# Python bytecode 2.7 (62211)
+# Decompiled from: Python 3.6.7 (default, Nov  3 2018, 21:32:46)
+# [GCC 8.2.0]
+# Embedded file name: acs_tool.py
+# Compiled at: 2015-09-17 07:30:19
+import sys, os, os.path, json
+from struct import *
+import codecs, shutil, copy, collections
+ENTRY_POINT_OFFSET = 4
+BL2_HEADER_OFFSET = 4096
+ACS_TOOL_VERSION = 1
+acs_v1 = collections.OrderedDict()
+acs_v1['acs_magic'] = 'acs__'
+acs_v1['chip_type'] = 1
+acs_v1['version'] = 2
+acs_v1['acs_set_length'] = 8
+acs_v1['ddr_magic'] = 'ddrs_'
+acs_v1['ddr_set_version'] = 1
+acs_v1['ddr_set_length'] = 2
+acs_v1['ddr_set_addr'] = 8
+acs_v1['ddrt_magic'] = 'ddrt_'
+acs_v1['ddrt_set_version'] = 1
+acs_v1['ddrt_set_length'] = 2
+acs_v1['ddrt_set_addr'] = 8
+acs_v1['pll_magic'] = 'pll__'
+acs_v1['pll_set_version'] = 1
+acs_v1['pll_set_length'] = 2
+acs_v1['pll_set_addr'] = 8
+check_excepts = [
+ 'ddr_set_addr', 'ddrt_set_addr', 'pll_set_addr']
+check_excepts_length = ['ddr_set_length', 'ddrt_set_length', 'pll_set_length']
+key_versions = ['version', 'ddr_set_version', 'ddrt_set_version', 'pll_set_version']
+
+class acs_tool(object):
+
+    def __init__(self, file_des, file_des_tmp, file_src, debug):
+        self.debug = int(debug)
+        self.file_des = file_des
+        self.file_src = file_src
+        self.file_des_tmp = file_des_tmp
+        self.acs_des = copy.deepcopy(acs_v1)
+        self.acs_src = copy.deepcopy(acs_v1)
+        self.acs_base = copy.deepcopy(acs_v1)
+
+    def init_acs(self, acs_struct, file_name, bl2):
+        seek_position = 0
+        file_handler = open(file_name, 'rb')
+        file_handler.seek(ENTRY_POINT_OFFSET)
+        acs_entry_point, = unpack('H', file_handler.read(2))
+        acs_entry_point -= bl2 * BL2_HEADER_OFFSET
+        seek_position = acs_entry_point
+        self.log_print(file_name)
+        for key in list(acs_struct.keys()):
+            file_handler.seek(seek_position)
+            if isinstance(acs_struct[key], str):
+                seek_position += len(acs_struct[key])
+                acs_struct[key] = file_handler.read(len(acs_struct[key])).decode('utf-8')
+            else:
+                if isinstance(acs_struct[key], int):
+                    seek_position += acs_struct[key]
+                    if 1 == acs_struct[key]:
+                        acs_struct[key], = unpack('B', file_handler.read(1))
+                    else:
+                        acs_struct[key], = unpack('H', file_handler.read(2))
+                    if key in check_excepts:
+                        acs_struct[key] -= bl2 * BL2_HEADER_OFFSET
+            self.log_print(key + ' ' + str(acs_struct[key]))
+
+        file_handler.close()
+
+    def check_acs(self):
+        err_counter = 0
+        for key in list(self.acs_des.keys()):
+            if self.acs_des[key] != self.acs_src[key] and key not in check_excepts:
+                print("Warning! ACS %s doesn't match!! %s/%s" % (key, self.acs_des[key], self.acs_src[key]))
+
+        for key in key_versions:
+            if self.acs_des[key] > self.acs_src[key]:
+                self.acs_des[key] = self.acs_src[key]
+                print('Warning! ACS src %s too old!' % key)
+
+        for key in list(self.acs_base.keys()):
+            if isinstance(self.acs_base[key], str):
+                if self.acs_des[key] != self.acs_base[key]:
+                    err_counter += 1
+                    print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_des[key], self.acs_base[key]))
+                if self.acs_src[key] != self.acs_base[key]:
+                    err_counter += 1
+                    print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_src[key], self.acs_base[key]))
+
+        if self.acs_des['version'] > ACS_TOOL_VERSION:
+            print('Error! Please update acs tool! v%s>v%s' % (self.acs_des['version'], ACS_TOOL_VERSION))
+            err_counter += 1
+        return err_counter
+
+    def copy_data(self):
+        file_des = open(self.file_des_tmp, 'r+b')
+        file_src = open(self.file_src, 'rb')
+        for key_addr, key_length in zip(check_excepts, check_excepts_length):
+            file_des.seek(self.acs_des[key_addr])
+            file_src.seek(self.acs_src[key_addr])
+            file_des.write(file_src.read(self.acs_des[key_length]))
+
+        file_des.close()
+        file_src.close()
+        return 0
+
+    def run(self):
+        shutil.copyfile(self.file_des, self.file_des_tmp)
+        self.init_acs(self.acs_des, self.file_des_tmp, 1)
+        self.init_acs(self.acs_src, self.file_src, 0)
+        if self.check_acs():
+            print('ACS check failed! Compile Abort!')
+            return -1
+        self.copy_data()
+        print('ACS tool process done.')
+
+    def log_print(self, log):
+        if self.debug:
+            print(log)
+
+
+if __name__ == '__main__':
+    if sys.argv[1] == '--help' or sys.argv[1] == '-help':
+        print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
+        exit(1)
+    if len(sys.argv) != 5:
+        print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
+        exit(1)
+    tool = acs_tool(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
+    if tool.run():
+        exit(1)
+# okay decompiling acs_tool.pyc

BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/aml_ddr.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/aml_encrypt_g12a


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl2.bin


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl30.bin


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl301.bin


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl31.bin


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/bl31.img


+ 40 - 0
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/blx_fix.sh

@@ -0,0 +1,40 @@
+#!/bin/bash
+
+#bl2 file size 41K, bl21 file size 3K (file size not equal runtime size)
+#total 44K
+#after encrypt process, bl2 add 4K header, cut off 4K tail
+
+#bl30 limit 41K
+#bl301 limit 12K
+#bl2 limit 41K
+#bl21 limit 3K, but encrypt tool need 48K bl2.bin, so fix to 7168byte.
+
+#$7:name flag
+if [ "$7" = "bl30" ]; then
+	declare blx_bin_limit=40960
+	declare blx01_bin_limit=13312
+elif [ "$7" = "bl2" ]; then
+	declare blx_bin_limit=57344
+	declare blx01_bin_limit=4096
+else
+	echo "blx_fix name flag not supported!"
+	exit 1
+fi
+
+# blx_size: blx.bin size, zero_size: fill with zeros
+declare -i blx_size=`du -b $1 | awk '{print int($1)}'`
+declare -i zero_size=$blx_bin_limit-$blx_size
+dd if=/dev/zero of=$2 bs=1 count=$zero_size
+cat $1 $2 > $3
+rm $2
+
+declare -i blx01_size=`du -b $4 | awk '{print int($1)}'`
+declare -i zero_size_01=$blx01_bin_limit-$blx01_size
+dd if=/dev/zero of=$2 bs=1 count=$zero_size_01
+cat $4 $2 > $5
+
+cat $3 $5 > $6
+
+rm $2
+
+exit 0

BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/ddr3_1d.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/ddr4_1d.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/ddr4_2d.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/diag_lpddr4.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/lpddr3_1d.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/lpddr4_1d.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/lpddr4_2d.fw


BIN
external/cache/sources/amlogic-boot-fip-spi/orangepi3plus/piei.fw


+ 1 - 0
external/cache/sources/amlogic-boot-fip/orangepi3plus/Makefile

@@ -0,0 +1 @@
+include ../g12a.inc

BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/acs.bin


+ 134 - 0
external/cache/sources/amlogic-boot-fip/orangepi3plus/acs_tool.py

@@ -0,0 +1,134 @@
+# uncompyle6 version 3.2.4
+# Python bytecode 2.7 (62211)
+# Decompiled from: Python 3.6.7 (default, Nov  3 2018, 21:32:46)
+# [GCC 8.2.0]
+# Embedded file name: acs_tool.py
+# Compiled at: 2015-09-17 07:30:19
+import sys, os, os.path, json
+from struct import *
+import codecs, shutil, copy, collections
+ENTRY_POINT_OFFSET = 4
+BL2_HEADER_OFFSET = 4096
+ACS_TOOL_VERSION = 1
+acs_v1 = collections.OrderedDict()
+acs_v1['acs_magic'] = 'acs__'
+acs_v1['chip_type'] = 1
+acs_v1['version'] = 2
+acs_v1['acs_set_length'] = 8
+acs_v1['ddr_magic'] = 'ddrs_'
+acs_v1['ddr_set_version'] = 1
+acs_v1['ddr_set_length'] = 2
+acs_v1['ddr_set_addr'] = 8
+acs_v1['ddrt_magic'] = 'ddrt_'
+acs_v1['ddrt_set_version'] = 1
+acs_v1['ddrt_set_length'] = 2
+acs_v1['ddrt_set_addr'] = 8
+acs_v1['pll_magic'] = 'pll__'
+acs_v1['pll_set_version'] = 1
+acs_v1['pll_set_length'] = 2
+acs_v1['pll_set_addr'] = 8
+check_excepts = [
+ 'ddr_set_addr', 'ddrt_set_addr', 'pll_set_addr']
+check_excepts_length = ['ddr_set_length', 'ddrt_set_length', 'pll_set_length']
+key_versions = ['version', 'ddr_set_version', 'ddrt_set_version', 'pll_set_version']
+
+class acs_tool(object):
+
+    def __init__(self, file_des, file_des_tmp, file_src, debug):
+        self.debug = int(debug)
+        self.file_des = file_des
+        self.file_src = file_src
+        self.file_des_tmp = file_des_tmp
+        self.acs_des = copy.deepcopy(acs_v1)
+        self.acs_src = copy.deepcopy(acs_v1)
+        self.acs_base = copy.deepcopy(acs_v1)
+
+    def init_acs(self, acs_struct, file_name, bl2):
+        seek_position = 0
+        file_handler = open(file_name, 'rb')
+        file_handler.seek(ENTRY_POINT_OFFSET)
+        acs_entry_point, = unpack('H', file_handler.read(2))
+        acs_entry_point -= bl2 * BL2_HEADER_OFFSET
+        seek_position = acs_entry_point
+        self.log_print(file_name)
+        for key in list(acs_struct.keys()):
+            file_handler.seek(seek_position)
+            if isinstance(acs_struct[key], str):
+                seek_position += len(acs_struct[key])
+                acs_struct[key] = file_handler.read(len(acs_struct[key])).decode('utf-8')
+            else:
+                if isinstance(acs_struct[key], int):
+                    seek_position += acs_struct[key]
+                    if 1 == acs_struct[key]:
+                        acs_struct[key], = unpack('B', file_handler.read(1))
+                    else:
+                        acs_struct[key], = unpack('H', file_handler.read(2))
+                    if key in check_excepts:
+                        acs_struct[key] -= bl2 * BL2_HEADER_OFFSET
+            self.log_print(key + ' ' + str(acs_struct[key]))
+
+        file_handler.close()
+
+    def check_acs(self):
+        err_counter = 0
+        for key in list(self.acs_des.keys()):
+            if self.acs_des[key] != self.acs_src[key] and key not in check_excepts:
+                print("Warning! ACS %s doesn't match!! %s/%s" % (key, self.acs_des[key], self.acs_src[key]))
+
+        for key in key_versions:
+            if self.acs_des[key] > self.acs_src[key]:
+                self.acs_des[key] = self.acs_src[key]
+                print('Warning! ACS src %s too old!' % key)
+
+        for key in list(self.acs_base.keys()):
+            if isinstance(self.acs_base[key], str):
+                if self.acs_des[key] != self.acs_base[key]:
+                    err_counter += 1
+                    print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_des[key], self.acs_base[key]))
+                if self.acs_src[key] != self.acs_base[key]:
+                    err_counter += 1
+                    print('Error! ACS DES %s error!! Value: %s, Expect: %s' % (key, self.acs_src[key], self.acs_base[key]))
+
+        if self.acs_des['version'] > ACS_TOOL_VERSION:
+            print('Error! Please update acs tool! v%s>v%s' % (self.acs_des['version'], ACS_TOOL_VERSION))
+            err_counter += 1
+        return err_counter
+
+    def copy_data(self):
+        file_des = open(self.file_des_tmp, 'r+b')
+        file_src = open(self.file_src, 'rb')
+        for key_addr, key_length in zip(check_excepts, check_excepts_length):
+            file_des.seek(self.acs_des[key_addr])
+            file_src.seek(self.acs_src[key_addr])
+            file_des.write(file_src.read(self.acs_des[key_length]))
+
+        file_des.close()
+        file_src.close()
+        return 0
+
+    def run(self):
+        shutil.copyfile(self.file_des, self.file_des_tmp)
+        self.init_acs(self.acs_des, self.file_des_tmp, 1)
+        self.init_acs(self.acs_src, self.file_src, 0)
+        if self.check_acs():
+            print('ACS check failed! Compile Abort!')
+            return -1
+        self.copy_data()
+        print('ACS tool process done.')
+
+    def log_print(self, log):
+        if self.debug:
+            print(log)
+
+
+if __name__ == '__main__':
+    if sys.argv[1] == '--help' or sys.argv[1] == '-help':
+        print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
+        exit(1)
+    if len(sys.argv) != 5:
+        print('acs_tool.py [bl2.bin] [bl2_tmp.bin] [acs.bin] [debug(1/0)]')
+        exit(1)
+    tool = acs_tool(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
+    if tool.run():
+        exit(1)
+# okay decompiling acs_tool.pyc

BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/aml_ddr.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/aml_encrypt_g12a


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/bl2.bin


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/bl30.bin


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/bl301.bin


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/bl31.bin


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/bl31.img


+ 40 - 0
external/cache/sources/amlogic-boot-fip/orangepi3plus/blx_fix.sh

@@ -0,0 +1,40 @@
+#!/bin/bash
+
+#bl2 file size 41K, bl21 file size 3K (file size not equal runtime size)
+#total 44K
+#after encrypt process, bl2 add 4K header, cut off 4K tail
+
+#bl30 limit 41K
+#bl301 limit 12K
+#bl2 limit 41K
+#bl21 limit 3K, but encrypt tool need 48K bl2.bin, so fix to 7168byte.
+
+#$7:name flag
+if [ "$7" = "bl30" ]; then
+	declare blx_bin_limit=40960
+	declare blx01_bin_limit=13312
+elif [ "$7" = "bl2" ]; then
+	declare blx_bin_limit=57344
+	declare blx01_bin_limit=4096
+else
+	echo "blx_fix name flag not supported!"
+	exit 1
+fi
+
+# blx_size: blx.bin size, zero_size: fill with zeros
+declare -i blx_size=`du -b $1 | awk '{print int($1)}'`
+declare -i zero_size=$blx_bin_limit-$blx_size
+dd if=/dev/zero of=$2 bs=1 count=$zero_size
+cat $1 $2 > $3
+rm $2
+
+declare -i blx01_size=`du -b $4 | awk '{print int($1)}'`
+declare -i zero_size_01=$blx01_bin_limit-$blx01_size
+dd if=/dev/zero of=$2 bs=1 count=$zero_size_01
+cat $4 $2 > $5
+
+cat $3 $5 > $6
+
+rm $2
+
+exit 0

BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/ddr3_1d.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/ddr4_1d.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/ddr4_2d.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/diag_lpddr4.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/lpddr3_1d.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/lpddr4_1d.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/lpddr4_2d.fw


BIN
external/cache/sources/amlogic-boot-fip/orangepi3plus/piei.fw