├── .gitignore ├── LICENSE ├── README.md ├── burn ├── decode.py ├── profiles ├── gk7201v200.json ├── gk7201v300.json ├── gk7202v300.json ├── gk7205v200.json ├── gk7205v300.json ├── hi3110ev500-ca.json ├── hi3110ev500.json ├── hi3231v520.json ├── hi3231v530.json ├── hi3251v100.json ├── hi3251v200.json ├── hi3251v500.json ├── hi3251v510.json ├── hi3516a.json ├── hi3516av200.json ├── hi3516cv200.json ├── hi3516cv300.json ├── hi3516cv500.json ├── hi3516dv100.json ├── hi3516dv300.json ├── hi3516ev100.json ├── hi3516ev200.json ├── hi3516ev300.json ├── hi3518.json ├── hi3518ev200.json ├── hi3518ev201.json ├── hi3518ev300.json ├── hi3519.json ├── hi3519v101.json ├── hi3520d.json ├── hi3520dv100.json ├── hi3520dv200.json ├── hi3520dv400.json ├── hi3521a.json ├── hi3521dv100.json ├── hi3531.json ├── hi3531a.json ├── hi3531dv100.json ├── hi3531dv200.json ├── hi3535.json ├── hi3536.json ├── hi3536c.json ├── hi3536dv100.json ├── hi3556av100.json ├── hi3559av100.json ├── hi3559av100es.json ├── hi3559v100.json ├── hi3559v200.json ├── hi3712v100.json ├── hi3716-ca.json ├── hi3716.json ├── hi3716cv200-ca.json ├── hi3716cv200.json ├── hi3716cv200es-ca.json ├── hi3716cv200es.json ├── hi3716dv100-ca.json ├── hi3716dv100.json ├── hi3716dv110.json ├── hi3716dv110h.json ├── hi3716mv300-ca.json ├── hi3716mv300.json ├── hi3716mv310-ca.json ├── hi3716mv310.json ├── hi3716mv320.json ├── hi3716mv330-ca.json ├── hi3716mv330.json ├── hi3716mv410-ca-n.json ├── hi3716mv410-ca.json ├── hi3716mv410.json ├── hi3716mv420-ca-n.json ├── hi3716mv430.json ├── hi3719mv100-ca.json ├── hi3731v100.json ├── hi3731v101.json ├── hi3731v110.json ├── hi3731v201.json ├── hi3731v202.json ├── hi3751lv500.json ├── hi3751v310.json ├── hi3751v320.json ├── hi3751v500-ca.json ├── hi3751v500.json ├── hi3751v500_ca.json ├── hi3751v510.json ├── hi3751v530.json ├── hi3751v550.json ├── hi3751v551.json ├── hi3751v553.json ├── hi3751v600-ca.json ├── hi3751v600.json ├── hi3751v600_ca.json ├── hi3751v620.json ├── hi3751v800-ca.json ├── hi3751v800.json ├── hi3751v810.json ├── hi3751v811.json ├── hi3796mv200.json ├── hi3798cv100.json ├── hi3798cv200.json ├── hi3798cv200_a.json ├── hi3798mv100-ca.json ├── hi3798mv100.json ├── hi3798mv200.json ├── hi3798mv300.json ├── hi3798mv310.json ├── him5v100.json ├── s40.json ├── x5v200.json └── x5v300-ca.json ├── requirements.txt ├── settings.py └── u-boot ├── gk7205v200.bin └── gk7205v300.bin /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | *.bin 132 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 OpenIPC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Burn 2 | 3 | ## Video Tutorials 4 | ![YoutubeScreenshot](https://github.com/OpenIPC/burn/assets/37488/7c19fd75-1806-40c3-901e-ff087f5e35e4) 5 | 6 | [OpenIPC BURN Utility Playlist][youtube_burn] 7 | 8 | ## Archive of current bootloaders for devices 9 | 10 | **Please use only this [Archive of current bootloaders for devices][uboot_archive] !!!** 11 | 12 | ## Features of use in MacOS 13 | 14 | **Attention !** There are some problems with using Burn in MacOS and you can participate in the [discussion](https://github.com/OpenIPC/burn/issues/16) 15 | 16 | ## Basic usage 17 | 18 | ```console 19 | usage: burn [-h] -c 20 | {hi3516ev200,hi3520dv100,hi3518ev200,hi3516ev100,hi3518ev201,gk7205v300,hi3516ev300,hi3520dv200,hi3516cv500,hi3556v100,hi3516cv200,hi3516cv300,gk7205v200} 21 | -f FILE [-p PORT] [-b] [-d] 22 | 23 | options: 24 | -h, --help show this help message and exit 25 | -c {hi3516ev200,hi3520dv100,hi3518ev200,hi3516ev100,hi3518ev201,gk7205v300,hi3516ev300,hi3520dv200,hi3516cv500,hi3556v100,hi3516cv200,hi3516cv300,gk7205v200}, --chip {hi3516ev200,hi3520dv100,hi3518ev200,hi3516ev100,hi3518ev201,gk7205v300,hi3516ev300,hi3520dv200,hi3516cv500,hi3556v100,hi3516cv200,hi3516cv300,gk7205v200} 26 | Chip model name 27 | -f FILE, --file FILE U-Boot binary file to upload 28 | -p PORT, --port PORT Serial port device name 29 | -b, --break Send Ctrl-C just after upload 30 | -d, --debug Set debug mode 31 | ``` 32 | 33 | If burn complains about **missing python modules**, you should install the list of modules by running: 34 | 35 | ``` 36 | pip install -r requirements.txt 37 | ``` 38 | 39 | ### HI3516CV300 40 | 41 | Download [general 42 | version](https://github.com/OpenIPC/firmware/releases/download/latest/u-boot-hi3516cv300-universal.bin) 43 | of U-Boot. 44 | 45 | ``` 46 | ./burn --chip hi3516cv300 --file=u-boot-hi3516cv300-universal.bin --break; screen -L /dev/ttyUSB0 115200 47 | ``` 48 | 49 | ### Hi3516EV300 50 | 51 | Download [general 52 | version](https://github.com/OpenIPC/firmware/releases/download/latest/u-boot-hi3516ev300-universal.bin) 53 | of U-Boot. 54 | 55 | ```console 56 | $ ./burn --chip hi3516ev300 --file=u-boot-hi3516ev300-universal.bin --break; screen -L /dev/ttyUSB0 115200 57 | ``` 58 | 59 | ### Unlock flash on gk7205v200 and gk7205v210 60 | 61 | ```console 62 | $ ./burn --chip gk7205v200 --file=u-boot/gk7205v200.bin --break; screen -L /dev/ttyUSB0 115200 63 | goke # sf probe 64 | @do_spi_flash_probe() flash->erase_size: 65536, flash->sector_size: 0 65 | goke # sf lock 0 66 | unlock all block. 67 | ``` 68 | 69 | ### Unlock flash on gk7205v300 70 | 71 | ```console 72 | $ ./burn --chip gk7205v300 --file=u-boot/gk7205v300.bin --break; screen -L /dev/ttyUSB0 115200 73 | goke # sf probe 74 | @do_spi_flash_probe() flash->erase_size: 65536, flash->sector_size: 0 75 | goke # sf lock 0 76 | unlock all block. 77 | ``` 78 | 79 | ### Start kernel from memory 80 | 81 | ```console 82 | setenv ipaddr 192.168.1.1; setenv serverip 192.168.1.10; mw.b 0x42000000 ff 1000000; tftpboot 0x42000000 uImage.${soc}; bootm 0x42000000 83 | ``` 84 | 85 | ## U-Boot continuous integration 86 | 87 | Real world example on U-Boot developing for CV300 board: 88 | 89 | ```bash 90 | set -e 91 | 92 | # In case of buggy USB UART adapter 93 | sudo usbreset /dev/bus/usb/005/007 94 | 95 | # In U-Boot directory: 96 | make ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- -j$(nproc) 97 | cp u-boot.bin full-boot.bin 98 | cp reg_info_hi3516cv300.bin ./hi3516cv300.reg 99 | make CPU=hi3516cv300 ARCH=arm CROSS_COMPILE=arm-hisiv500-linux- mini-boot.bin 100 | 101 | #./mkboot.sh reg_info_hi3516cv300.bin u-boot-ok.bin 102 | cp mini-boot.bin ~/git/burn 103 | 104 | cd ~/git/burn 105 | # Custom script to power reset camera via network switch 106 | ./restart_eth4.sh 107 | ./burn --chip hi3516cv300 --file=mini-boot.bin 108 | screen /dev/ttyUSB0 115200 109 | ``` 110 | 111 | [youtube_burn]: https://youtube.com/playlist?list=PLh0sgk8j8CfsMPq9OraSt5dobTIe8NXmw 112 | [uboot_archive]: https://github.com/OpenIPC/firmware/releases/tag/latest 113 | -------------------------------------------------------------------------------- /burn: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import sys 4 | import os 5 | import serial 6 | import struct 7 | import progressbar 8 | import argparse 9 | import json 10 | import time 11 | 12 | import settings 13 | 14 | gk7205v500_socs = ["gk7205v500", "gk7205v510", 15 | "gk7205v530", "xm7205v500", "xm7205v510", "xm7205v530"] 16 | 17 | 18 | class bootdownload(): 19 | ''' 20 | Hisilicon boot downloader 21 | 22 | >>> downloader = bootdownload() 23 | >>> downloader.burn(filename) 24 | 25 | ''' 26 | def init_bootmode(self): 27 | i = 0 28 | counter = 0 29 | while i < 30: 30 | in_bin = self.s.read(1) 31 | if in_bin == b'\x00': 32 | continue 33 | if in_bin == b'\x20': 34 | counter = counter + 1 35 | if counter == 5: 36 | self.s.flushOutput() 37 | self.s.write(settings.AA) 38 | self.s.flushInput() 39 | print("Welcome to boot-mode\n") 40 | return None 41 | i = i + 1 42 | sys.exit(1) 43 | 44 | def load_config(self, chiptype): 45 | max_nesting = 23 46 | while max_nesting > 0: 47 | max_nesting -= 1 48 | with open("profiles/" + chiptype + ".json", "r") as read_file: 49 | file_contents = read_file.read() 50 | file_lines = file_contents.split() 51 | if len(file_lines) == 1 and file_lines[0].endswith(".json"): 52 | chiptype = file_lines[0][0:-5] 53 | continue 54 | return json.loads(file_contents) 55 | return None 56 | 57 | def __init__(self, args): 58 | serialport = args.port 59 | self.chiptype = args.chip 60 | self.DEBUG = args.debug 61 | print("Trying open", serialport) 62 | try: 63 | self.s = serial.Serial( 64 | port=serialport, 65 | baudrate=115200, 66 | parity=serial.PARITY_NONE, 67 | stopbits=serial.STOPBITS_ONE, 68 | bytesize=serial.EIGHTBITS, 69 | timeout=None 70 | # timeout = 1 71 | ) 72 | if self.chiptype in gk7205v500_socs: 73 | self.handshake_v500() 74 | return 75 | else: 76 | self.init_bootmode() 77 | 78 | except serial.serialutil.SerialException: 79 | # no serial connection 80 | self.s = None 81 | print("\nFailed to open serial!", serialport) 82 | sys.exit(2) 83 | 84 | data = self.load_config(self.chiptype) 85 | print(data) 86 | self.chip = data 87 | 88 | def __del__(self): 89 | print("Exiting...") 90 | if self.s is not None: 91 | self.s.close() 92 | 93 | def calc_crc(self, data, crc=0): 94 | for char in data: 95 | crc = ((crc << 8) | char) ^ settings.crctable[(crc >> 8) & 0xff] 96 | for i in range(0, 2): 97 | crc = ((crc << 8) | 0) ^ settings.crctable[(crc >> 8) & 0xff] 98 | return crc & 0xffff 99 | 100 | def append_crc(self, frm): 101 | crc = self.calc_crc(frm) 102 | frm += (crc >> 8 & 255).to_bytes(1, 'big') 103 | frm += (crc & 255).to_bytes(1, 'big') 104 | return frm 105 | 106 | def sendframe(self, data, loop): 107 | for i in range(1, loop): 108 | self.s.flushOutput() 109 | if self.DEBUG == 1: 110 | if len(data) > 20: 111 | print( 112 | "len: ", 113 | len(data), 114 | "write : [", 115 | ''.join('%02x ' % i for i in data[:20]), "... ]" 116 | ) 117 | else: 118 | print( 119 | "len: ", 120 | len(data), 121 | "write : [", 122 | ''.join('%02x ' % i for i in data), "]" 123 | ) 124 | self.s.write(data) 125 | self.s.flushInput() 126 | try: 127 | ack = self.s.read() 128 | if len(ack) == 1: 129 | if self.DEBUG == 1: 130 | print( 131 | "ret ack : ", 132 | ''.join('0x%02x ' % i for i in ack) 133 | ) 134 | if ack == settings.ack_b: 135 | return None 136 | except: 137 | return None 138 | 139 | print('failed') 140 | 141 | def send_head_frame(self, length, address): 142 | print('Send HEAD frame...') 143 | self.s.timeout = 0.03 144 | 145 | frame = bytearray(14) 146 | frame[0] = settings.twos_complement_to_int(-2, 8) 147 | frame[1] = settings.twos_complement_to_int(0, 8) 148 | frame[2] = settings.twos_complement_to_int(-1, 8) 149 | frame[3] = settings.twos_complement_to_int(1, 8) 150 | 151 | frame[4] = (length >> 24) & 0xff 152 | frame[5] = (length >> 16) & 0xff 153 | frame[6] = (length >> 8) & 0xff 154 | frame[7] = (length) & 0xff 155 | frame[8] = (address >> 24) & 0xff 156 | frame[9] = (address >> 16) & 0xff 157 | frame[10] = (address >> 8) & 0xff 158 | frame[11] = (address) & 0xff 159 | crc = self.calc_crc(frame[:12]) 160 | frame[12] = (crc >> 8) & 0xff 161 | frame[13] = crc & 0xff 162 | 163 | self.sendframe(frame, 16) 164 | 165 | def send_ddrstep(self): 166 | print('Send DDRSTEP frame...') 167 | seq = 1 168 | self.s.timeout = 0.15 169 | 170 | address0 = int(self.chip["ADDRESS"][0], 16) 171 | self.send_head_frame(64, address0) 172 | head = bytearray(3) 173 | head[0] = 0xDA # b'\xDA' # 0xDA 174 | head[1] = seq & 0xFF 175 | head[2] = (~seq) & 0xFF 176 | data = head + bytes(self.chip["DDRSTEP0"]) 177 | crc = self.calc_crc(data) 178 | h = bytearray(2) 179 | h[0] = (crc >> 8) & 0xff 180 | h[1] = crc & 0xff 181 | data += h 182 | 183 | self.sendframe(data, 16) 184 | self.send_tail_frame(seq + 1) 185 | 186 | def send_tail_frame(self, seq): 187 | print('Send TAIL frame...') 188 | data = bytearray(3) 189 | data[0] = 0xED 190 | data[1] = seq & 0xFF 191 | data[2] = (~seq) & 0xFF 192 | 193 | crc = self.calc_crc(data) 194 | h = bytearray(2) 195 | h[0] = (crc >> 8) & 0xff 196 | h[1] = crc & 0xff 197 | data += h 198 | 199 | self.sendframe(data, 16) 200 | 201 | def send_data_frame(self, seq, data): 202 | self.s.timeout = 0.15 203 | head = bytearray(3) 204 | head[0] = 0xDA 205 | head[1] = seq & 0xFF 206 | head[2] = (~seq) & 0xFF 207 | data = head + data 208 | 209 | crc = self.calc_crc(data) 210 | h = bytearray(2) 211 | h[0] = (crc >> 8) & 0xff 212 | h[1] = crc & 0xff 213 | data += h 214 | 215 | self.sendframe(data, 32) 216 | 217 | def store_SPL(self, data): 218 | first_length = int(self.chip["FILELEN"][1], 16) 219 | address1 = int(self.chip["ADDRESS"][1], 16) 220 | self.send_head_frame(first_length, address1) 221 | 222 | bar = progressbar.ProgressBar(maxval=first_length, widgets=[ 223 | 'Send DATA frame', 224 | progressbar.Bar(left='[', marker='=', right=']'), 225 | progressbar.SimpleProgress(), 226 | ], term_width=80).start() if self.DEBUG == 0 else None 227 | 228 | seq = 1 229 | data = data[:first_length] 230 | for chunk in ( 231 | data[_:_+settings.MAX_DATA_LEN] for _ in range( 232 | 0, first_length, settings.MAX_DATA_LEN 233 | ) 234 | ): 235 | self.send_data_frame( 236 | seq, 237 | chunk 238 | ) 239 | bar.update(seq*len(chunk)) if self.DEBUG == 0 else None 240 | seq += 1 241 | bar.finish() if self.DEBUG == 0 else None 242 | self.send_tail_frame(seq) 243 | 244 | def store_Uboot(self, data): 245 | length = len(data) 246 | address2 = int(self.chip["ADDRESS"][2], 16) 247 | self.send_head_frame(length, address2) 248 | 249 | bar = progressbar.ProgressBar(maxval=length, widgets=[ 250 | 'Send DATA frame', 251 | progressbar.Bar(left='[', marker='=', right=']'), 252 | progressbar.SimpleProgress(), 253 | ], term_width=80).start() if self.DEBUG == 0 else None 254 | seq = 1 255 | for chunk in ( 256 | data[_:_+settings.MAX_DATA_LEN] for _ in range( 257 | 0, length, settings.MAX_DATA_LEN 258 | ) 259 | ): 260 | self.send_data_frame( 261 | seq, 262 | chunk 263 | ) 264 | bar.update(seq*len(chunk)) if self.DEBUG == 0 else None 265 | seq += 1 266 | bar.finish() if self.DEBUG == 0 else None 267 | self.send_tail_frame(seq) 268 | 269 | def sendFrmWaitAck(self, wdata, timeout): 270 | ret = self.s.write(wdata) 271 | if not ret: 272 | return False 273 | tryX = 0 274 | start_time = time.time() 275 | while time.time() - start_time < timeout and tryX < 10: 276 | rdata = self.s.read() 277 | if rdata is None: 278 | return False 279 | if rdata == b'\xaa': 280 | # print('ACK') 281 | return True 282 | if rdata == b'U': 283 | # print('bootrom NAK. Retransmission...') 284 | ret = self.s.write(wdata) 285 | if not ret: 286 | return False 287 | tryX += 1 288 | continue 289 | return False 290 | 291 | def sendDataToBootrom_v500(self, data, address, title): 292 | idx = 0 293 | pos = 0 294 | length = len(data) 295 | count = (length + 1023) // 1024 296 | 297 | frm0 = b'\xfe\x00\xff\x01' 298 | frm0 += struct.pack('BBBB', length >> 24 & 255, 299 | length >> 16 & 255, length >> 8 & 255, length & 255) 300 | frm0 += struct.pack('BBBB', address >> 24 & 255, address >> 301 | 16 & 255, address >> 8 & 255, address & 255) 302 | frm0 = self.append_crc(frm0) 303 | ret = self.sendFrmWaitAck(frm0, 4) 304 | if ret != True: 305 | return ret 306 | 307 | bar = progressbar.ProgressBar(maxval=length, widgets=[ 308 | title, 309 | progressbar.Bar(left='[', marker='=', right=']'), 310 | progressbar.Percentage(), 311 | ], term_width=80).start() if self.DEBUG == 0 else None 312 | 313 | while length > 0: 314 | idx += 1 315 | numOfSend = 1024 if length > 1024 else length 316 | length -= numOfSend 317 | splitx = data[pos:pos + numOfSend] 318 | pos += numOfSend 319 | frm1 = b'\xda' 320 | frm1 += struct.pack('B', idx & 255) 321 | frm1 += struct.pack('B', ~idx & 255) 322 | frm1 += splitx 323 | frm1 = self.append_crc(frm1) 324 | 325 | bar.update(numOfSend*idx) if self.DEBUG == 0 else None 326 | ret = self.sendFrmWaitAck(frm1, 4) 327 | if ret != True: 328 | return ret 329 | count += 1 330 | frm2 = b'\xed' 331 | frm2 += struct.pack('B', count & 255) 332 | frm2 += struct.pack('B', ~count & 255) 333 | frm2 = self.append_crc(frm2) 334 | ret = self.sendFrmWaitAck(frm2, 4) 335 | if ret != True: 336 | return ret 337 | bar.finish() if self.DEBUG == 0 else None 338 | return True 339 | 340 | def handshake_v500(self): 341 | """Send bootrom handshake until a valid response is received.""" 342 | frmRemoteBurnBoot = self.append_crc( 343 | b'\xbd\x00\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00') 344 | try: 345 | start_time = time.time() 346 | self.s.timeout = 0 347 | while time.time() - start_time < 20: 348 | self.s.write(frmRemoteBurnBoot) 349 | response = self.s.read(14) 350 | if response.startswith(b'\xbd\x00'): 351 | chipid, = struct.unpack('>I', response[8:12]) 352 | print("Detected SoC:", hex(chipid)) 353 | break 354 | except: 355 | print(f"Handshake error") 356 | sys.exit(1) 357 | 358 | def send_data(self, data): 359 | if self.chiptype in gk7205v500_socs: 360 | bootLoadAddr = 0x41000000 361 | headOffset = 0 362 | headAreaLen = 8192 363 | auxcodeOffset = 8192 364 | auxcodeAreaLen, = struct.unpack('I', data[1024:1028]) 365 | headAreaData = data[headOffset:headOffset + headAreaLen] 366 | headAreaAddr = headOffset 367 | auxcodeAreaData = data[auxcodeOffset:auxcodeOffset + auxcodeAreaLen] 368 | auxcodeAreaAddr = auxcodeOffset 369 | self.sendDataToBootrom_v500( 370 | headAreaData, headAreaAddr, "Sending HEAD") 371 | self.sendDataToBootrom_v500( 372 | auxcodeAreaData, auxcodeAreaAddr, "Sending AUX") 373 | time.sleep(0.1) 374 | self.sendDataToBootrom_v500(data, bootLoadAddr, "Sending BOOT") 375 | else: 376 | self.send_ddrstep() 377 | self.store_SPL(data) 378 | self.store_Uboot(data) 379 | 380 | def burn(self, filename, term): 381 | f = open(filename, "rb") 382 | data = f.read() 383 | f.close() 384 | 385 | print('Sending', filename, '...') 386 | self.send_data(data) 387 | print('Done\n') 388 | 389 | if term: 390 | print('Sending Ctrl-C\n') 391 | for i in range(1, 50): 392 | self.s.write(b'\x03') 393 | pkt = self.s.read(1) 394 | 395 | 396 | def available_chips(): 397 | result = [] 398 | for file in os.listdir("profiles"): 399 | if file.endswith(".json"): 400 | result.append(file[:-5]) 401 | result.extend(gk7205v500_socs) 402 | return result 403 | 404 | 405 | def main(): 406 | parser = argparse.ArgumentParser() 407 | parser.add_argument("-c", "--chip", required=True, 408 | choices=available_chips(), help="Chip model name") 409 | parser.add_argument("-f", "--file", required=True, 410 | help="U-Boot binary file to upload") 411 | parser.add_argument("-p", "--port", default="/dev/ttyUSB0", 412 | help="Serial port device name") 413 | parser.add_argument("-b", "--break", dest='term', action='store_true', 414 | help="Send Ctrl-C to prevent autoload") 415 | parser.add_argument("-d", "--debug", action='store_true', 416 | help="Set debug mode") 417 | args = parser.parse_args() 418 | 419 | downloader = bootdownload(args) 420 | downloader.burn(args.file, args.term) 421 | 422 | 423 | if __name__ == "__main__": 424 | main() 425 | -------------------------------------------------------------------------------- /decode.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from Crypto.Cipher import AES 4 | import hashlib 5 | import os 6 | import sys 7 | import re 8 | import json 9 | 10 | directory = sys.argv[1] if len(sys.argv) > 1 else "." 11 | key = "HiReg-5D765B15-8F5B-46DC-9B7C-80322B8F74E4" 12 | 13 | def decrypt(content, key): 14 | try: 15 | aes_key = hashlib.md5(key.encode()).digest() 16 | cipher = AES.new(aes_key, AES.MODE_ECB) 17 | return cipher.decrypt(content).decode() 18 | except ValueError as e: 19 | print(f"Invalid key: {str(e)}") 20 | return None 21 | 22 | def getjsonprofile(filename, content): 23 | var = {} 24 | variable_pattern = re.compile(r'(\w+)=(.+)') 25 | 26 | for match in variable_pattern.finditer(content): 27 | name = match.group(1) 28 | value = match.group(2) 29 | var[name] = value 30 | 31 | json_data = { 32 | "name": filename, 33 | "DDRSTEP0": [int(x, 16) for x in var['DDRSTEP0'].split(',')], 34 | "ADDRESS": [ 35 | var['ADDRESS0'], 36 | var['ADDRESS1'], 37 | var['ADDRESS2'] 38 | ], 39 | "FILELEN": [ 40 | var['FILELEN0'], 41 | var['FILELEN1'] 42 | ], 43 | "STEPLEN": [ 44 | var['STEPLEN0'], 45 | var['STEPLEN1'] 46 | ] 47 | } 48 | 49 | return json_data 50 | 51 | def main(): 52 | for filename in os.listdir(directory): 53 | if filename.endswith(".chip"): 54 | name, _ = os.path.splitext(filename) 55 | filepath = os.path.join(directory, filename) 56 | try: 57 | with open(filepath, 'rb') as file: 58 | content = file.read() 59 | 60 | print(f"Decoding {filename}") 61 | decrypted_content = decrypt(content, key).replace('\r','') 62 | jsonprofile = getjsonprofile(name.lower(), decrypted_content) 63 | 64 | if jsonprofile: 65 | with open(directory + '/' + name.lower() + '.json', 'w') as f: 66 | json.dump(jsonprofile, f) 67 | 68 | except Exception as e: 69 | print(f"Error processing {filename}: {str(e)}") 70 | 71 | if __name__ == "__main__": 72 | main() 73 | -------------------------------------------------------------------------------- /profiles/gk7201v200.json: -------------------------------------------------------------------------------- 1 | gk7205v200.json -------------------------------------------------------------------------------- /profiles/gk7201v300.json: -------------------------------------------------------------------------------- 1 | gk7205v200.json -------------------------------------------------------------------------------- /profiles/gk7202v300.json: -------------------------------------------------------------------------------- 1 | hi3516ev200.json -------------------------------------------------------------------------------- /profiles/gk7205v200.json: -------------------------------------------------------------------------------- 1 | {"name": "gk7205v200", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 2, 18, 120, 86, 52, 18, 64, 1, 2, 18, 117, 106, 105, 122], "ADDRESS": ["0x04013000", "0x04010500", "0x41000000"], "FILELEN": ["0x0040", "0x6000"], "STEPLEN": ["0x0040", "0x0080"]} -------------------------------------------------------------------------------- /profiles/gk7205v300.json: -------------------------------------------------------------------------------- 1 | hi3516ev300.json -------------------------------------------------------------------------------- /profiles/hi3110ev500-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3110ev500-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3110ev500.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3110ev500", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3231v520.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3231v520", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x800000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3231v530.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3231v530", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x1400000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3251v100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3251v100", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3251v200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3251v200", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x800000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3251v500.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3251v500", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3251v510.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3251v510", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3516a.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3516a", "DDRSTEP0": [0, 64, 45, 233, 60, 1, 0, 227, 5, 0, 66, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 5, 0, 66, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x2300"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3516av200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3516av200", "DDRSTEP0": [4, 224, 45, 229, 60, 1, 0, 227, 2, 2, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 2, 2, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04013000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0080"]} -------------------------------------------------------------------------------- /profiles/hi3516cv200.json: -------------------------------------------------------------------------------- 1 | hi3518ev200.json -------------------------------------------------------------------------------- /profiles/hi3516cv300.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3516cv300", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 2, 18, 120, 86, 52, 18, 64, 1, 2, 18, 117, 106, 105, 122], "ADDRESS": ["0x04013000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0090"]} -------------------------------------------------------------------------------- /profiles/hi3516cv500.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3516cv500", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 2, 18, 120, 86, 52, 18, 64, 1, 2, 18, 117, 106, 105, 122], "ADDRESS": ["0x04017000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x6000"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3516dv100.json: -------------------------------------------------------------------------------- 1 | hi3516a.json -------------------------------------------------------------------------------- /profiles/hi3516dv300.json: -------------------------------------------------------------------------------- 1 | hi3516cv500.json -------------------------------------------------------------------------------- /profiles/hi3516ev100.json: -------------------------------------------------------------------------------- 1 | hi3516cv300.json -------------------------------------------------------------------------------- /profiles/hi3516ev200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3516ev200", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 2, 18, 120, 86, 52, 18, 64, 1, 2, 18, 117, 106, 105, 122], "ADDRESS": ["0x04013000", "0x04010500", "0x41000000"], "FILELEN": ["0x0040", "0x6000"], "STEPLEN": ["0x0040", "0x0080"]} -------------------------------------------------------------------------------- /profiles/hi3516ev300.json: -------------------------------------------------------------------------------- 1 | hi3516ev200.json -------------------------------------------------------------------------------- /profiles/hi3518.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3518", "DDRSTEP0": [0, 64, 45, 233, 60, 1, 0, 227, 5, 0, 66, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 5, 0, 66, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x2300"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3518ev200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3518ev200", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 32, 120, 86, 52, 18, 64, 1, 5, 32, 117, 106, 105, 122], "ADDRESS": ["0x04013000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x3b00"], "STEPLEN": ["0x0040", "0x0060"]} -------------------------------------------------------------------------------- /profiles/hi3518ev201.json: -------------------------------------------------------------------------------- 1 | hi3518ev200.json -------------------------------------------------------------------------------- /profiles/hi3518ev300.json: -------------------------------------------------------------------------------- 1 | hi3516ev200.json -------------------------------------------------------------------------------- /profiles/hi3519.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3519", "DDRSTEP0": [4, 224, 45, 229, 60, 1, 0, 227, 2, 2, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 2, 2, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04013000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0060"]} -------------------------------------------------------------------------------- /profiles/hi3519v101.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3519v101", "DDRSTEP0": [4, 224, 45, 229, 60, 1, 0, 227, 2, 2, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 2, 2, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04013000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0080"]} -------------------------------------------------------------------------------- /profiles/hi3520d.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3520d", "DDRSTEP0": [0, 64, 45, 233, 60, 1, 0, 227, 5, 0, 66, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 5, 0, 66, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x2300"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3520dv100.json: -------------------------------------------------------------------------------- 1 | hi3520d.json -------------------------------------------------------------------------------- /profiles/hi3520dv200.json: -------------------------------------------------------------------------------- 1 | hi3520d.json -------------------------------------------------------------------------------- /profiles/hi3520dv400.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3520dv400", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x3b00"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3521a.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3521a", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x3b00"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3521dv100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3521dv100", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x3b00"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3531.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3531", "DDRSTEP0": [0, 64, 45, 233, 60, 1, 0, 227, 5, 0, 66, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 5, 0, 66, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x2300"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3531a.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3531a", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04012000", "0x04010500", "0x41000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3531dv100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3531dv100", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04012000", "0x04010500", "0x41000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3531dv200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3531dv200", "DDRSTEP0": [253, 123, 191, 169, 160, 1, 0, 88, 65, 1, 0, 24, 1, 0, 0, 185, 128, 1, 0, 88, 1, 1, 0, 24, 1, 68, 0, 184, 30, 0, 0, 185, 253, 123, 193, 168, 192, 3, 95, 214, 239, 190, 173, 222, 239, 190, 173, 222, 120, 86, 52, 18, 117, 106, 105, 122, 60, 1, 2, 17, 0, 0, 0, 0, 64, 1, 2, 17, 0, 0, 0, 0], "ADDRESS": ["0x04013000", "0x04010500", "0x41000000"], "FILELEN": ["0x0048", "0x7800"], "STEPLEN": ["0x0048", "0x0088"]} -------------------------------------------------------------------------------- /profiles/hi3535.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3535", "DDRSTEP0": [0, 64, 45, 233, 60, 1, 0, 227, 5, 0, 66, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 5, 0, 66, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x2300"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3536.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3536", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04015000", "0x04010c00", "0x41000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3536c.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3536c", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x3b00"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3536dv100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3536dv100", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 5, 18, 120, 86, 52, 18, 64, 1, 5, 18, 117, 106, 105, 122], "ADDRESS": ["0x04012000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x5000"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3556av100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3556av100", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 82, 4, 120, 86, 52, 18, 64, 1, 82, 4, 117, 106, 105, 122], "ADDRESS": ["0x04203000", "0x04240000", "0x21000000"], "FILELEN": ["0x0040", "0x8000"], "STEPLEN": ["0x0040", "0x0068"]} -------------------------------------------------------------------------------- /profiles/hi3559av100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3559av100", "DDRSTEP0": [253, 123, 191, 169, 160, 1, 0, 88, 65, 1, 0, 24, 1, 0, 0, 185, 128, 1, 0, 88, 1, 1, 0, 24, 1, 68, 0, 184, 30, 0, 0, 185, 253, 123, 193, 168, 192, 3, 95, 214, 239, 190, 173, 222, 239, 190, 173, 222, 120, 86, 52, 18, 117, 106, 105, 122, 60, 1, 2, 18, 0, 0, 0, 0, 64, 1, 2, 18, 0, 0, 0, 0], "ADDRESS": ["0x08083000", "0x08040000", "0x41000000"], "FILELEN": ["0x0060", "0x8000"], "STEPLEN": ["0x0060", "0x0400"]} -------------------------------------------------------------------------------- /profiles/hi3559av100es.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3559av100es", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 2, 18, 120, 86, 52, 18, 64, 1, 2, 18, 117, 106, 105, 122], "ADDRESS": ["0x04013000", "0x04010500", "0x41000000"], "FILELEN": ["0x0040", "0x8000"], "STEPLEN": ["0x0040", "0x02A0"]} -------------------------------------------------------------------------------- /profiles/hi3559v100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3559v100", "DDRSTEP0": [4, 224, 45, 229, 60, 1, 0, 227, 2, 2, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 64, 1, 0, 227, 2, 2, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x04013000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0080"]} -------------------------------------------------------------------------------- /profiles/hi3559v200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3559v200", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 60, 1, 2, 18, 120, 86, 52, 18, 64, 1, 2, 18, 117, 106, 105, 122], "ADDRESS": ["0x04017000", "0x04010500", "0x81000000"], "FILELEN": ["0x0040", "0x6000"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3712v100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3712v100", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3716-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716-ca", "DDRSTEP0": [0, 64, 45, 233, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3716.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716", "DDRSTEP0": [0, 64, 45, 233, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0070"]} -------------------------------------------------------------------------------- /profiles/hi3716cv200-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716cv200-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716cv200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716cv200", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716cv200es-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716cv200es-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716cv200es.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716cv200es", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716dv100-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716dv100-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716dv100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716dv100", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716dv110.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716dv110", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716dv110h.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716dv110h", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716mv300-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv300-ca", "DDRSTEP0": [0, 64, 45, 233, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3716mv300.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv300", "DDRSTEP0": [0, 64, 45, 233, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3716mv310-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv310-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3716mv310.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv310", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3716mv320.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv320", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3716mv330-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv330-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3716mv330.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv330", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 30, 0, 65, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 30, 0, 65, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x12000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3716mv410-ca-n.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv410-ca-n", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716mv410-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv410-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716mv410.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv410", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716mv420-ca-n.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv420-ca-n", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3716mv430.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3716mv430", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3719mv100-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3719mv100-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3731v100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3731v100", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x800000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3731v101.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3731v101", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x800000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3731v110.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3731v110", "DDRSTEP0": [151, 2, 0, 0, 131, 162, 2, 3, 23, 3, 0, 0, 3, 35, 3, 3, 35, 160, 98, 0, 151, 3, 0, 0, 131, 163, 3, 2, 23, 14, 0, 0, 3, 46, 14, 2, 35, 160, 195, 1, 35, 162, 19, 0, 103, 128, 0, 0, 176, 0, 0, 248, 184, 0, 0, 248, 120, 86, 52, 18, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x800000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0050"]} -------------------------------------------------------------------------------- /profiles/hi3731v201.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3731v201", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x800000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3731v202.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3731v202", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x800000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/hi3751lv500.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751lv500", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v310.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v310", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v320.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v320", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v500-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v500-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v500.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v500", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v500_ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v500_ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v510.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v510", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v530.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v530", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v550.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v550", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v551.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v551", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v553.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v553", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v600-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v600-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v600.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v600", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v600_ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v600_ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v620.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v620", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v800-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v800-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v800.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v800", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v810.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v810", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3751v811.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3751v811", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x11000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3796mv200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3796mv200", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798cv100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798cv100", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798cv200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798cv200", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798cv200_a.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798cv200_a", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798mv100-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798mv100-ca", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798mv100.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798mv100", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x5400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798mv200.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798mv200", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798mv300.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798mv300", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/hi3798mv310.json: -------------------------------------------------------------------------------- 1 | {"name": "hi3798mv310", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 0, 8, 79, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 0, 8, 79, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x7400"], "STEPLEN": ["0x0040", "0x0040"]} -------------------------------------------------------------------------------- /profiles/him5v100.json: -------------------------------------------------------------------------------- 1 | {"name": "him5v100", "DDRSTEP0": [4, 224, 45, 229, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 176, 0, 0, 248, 120, 86, 52, 18, 184, 0, 0, 248, 117, 106, 105, 122], "ADDRESS": ["0xFFFE1000", "0xFFFE0C00", "0x01000000"], "FILELEN": ["0x0040", "0x4F00"], "STEPLEN": ["0x0040", "0x0030"]} -------------------------------------------------------------------------------- /profiles/s40.json: -------------------------------------------------------------------------------- 1 | {"name": "s40", "DDRSTEP0": [4, 224, 45, 229, 176, 0, 0, 227, 13, 0, 66, 227, 120, 22, 5, 227, 52, 18, 65, 227, 0, 16, 128, 229, 184, 0, 0, 227, 13, 0, 66, 227, 117, 26, 6, 227, 105, 26, 71, 227, 4, 16, 128, 228, 0, 224, 128, 229, 4, 240, 157, 228, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222], "ADDRESS": ["0x11000", "0x10C00", "0x81000000"], "FILELEN": ["0x0040", "0x4400"], "STEPLEN": ["0x0040", "0x0060"]} -------------------------------------------------------------------------------- /profiles/x5v200.json: -------------------------------------------------------------------------------- 1 | {"name": "x5v200", "DDRSTEP0": [0, 64, 45, 233, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 100, 0, 30, 16, 120, 86, 52, 18, 72, 0, 30, 16, 117, 106, 105, 122], "ADDRESS": ["0x12000", "0x10C00", "0x60800000"], "FILELEN": ["0x0040", "0x3400"], "STEPLEN": ["0x0040", "0x0060"]} -------------------------------------------------------------------------------- /profiles/x5v300-ca.json: -------------------------------------------------------------------------------- 1 | {"name": "x5v300-ca", "DDRSTEP0": [0, 64, 45, 233, 36, 0, 159, 229, 36, 16, 159, 229, 0, 16, 128, 229, 32, 0, 159, 229, 32, 16, 159, 229, 4, 16, 128, 228, 0, 224, 128, 229, 0, 128, 189, 232, 239, 190, 173, 222, 239, 190, 173, 222, 239, 190, 173, 222, 100, 0, 30, 16, 120, 86, 52, 18, 72, 0, 30, 16, 117, 106, 105, 122], "ADDRESS": ["0x12000", "0x10C00", "0x60800000"], "FILELEN": ["0x0040", "0x3400"], "STEPLEN": ["0x0040", "0x0060"]} -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | progressbar 2 | pyserial 3 | -------------------------------------------------------------------------------- /settings.py: -------------------------------------------------------------------------------- 1 | 2 | # crctab calculated by Mark G. Mendel, Network Systems Corporation 3 | crctable = [ 4 | 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 5 | 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 6 | 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 7 | 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 8 | 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 9 | 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 10 | 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 11 | 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 12 | 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 13 | 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 14 | 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 15 | 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 16 | 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 17 | 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 18 | 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 19 | 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 20 | 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 21 | 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 22 | 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 23 | 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 24 | 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 25 | 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 26 | 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 27 | 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 28 | 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 29 | 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 30 | 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 31 | 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 32 | 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 33 | 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 34 | 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 35 | 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, 36 | ] 37 | 38 | MAX_DATA_LEN = 0x400 39 | 40 | AA = b'\xaa' 41 | ACK = 170 42 | 43 | 44 | def twos_complement_to_int(n, bits=32): 45 | mask = (1 << bits) - 1 46 | if n < 0: 47 | n = ((abs(n) ^ mask) + 1) 48 | return (n & mask) 49 | 50 | ack_b = bytearray(1) 51 | ack_b[0] = twos_complement_to_int(ACK) 52 | -------------------------------------------------------------------------------- /u-boot/gk7205v200.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIPC/burn/595cdc0de7da865a2a1ebc83b212ccb47351813b/u-boot/gk7205v200.bin -------------------------------------------------------------------------------- /u-boot/gk7205v300.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIPC/burn/595cdc0de7da865a2a1ebc83b212ccb47351813b/u-boot/gk7205v300.bin --------------------------------------------------------------------------------