With serial access with limited U-boot options:
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
6: System Enter UBoot to Update Img or Bin.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP.
System Boot system code via Flash.
## Booting image at bc180000 ...
Image Name: Linux Kernel Image
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 18875616 Bytes = 18 MB
Load Address: 80001000
Entry Point: 8065eba0
I tried to backup with chunks to dump with following commands, each is less then 900kb (1mb gives malloc error)
nand init
nand page 0x100
nand read 0x81000000 0x1000
Although process was very slow but able to backup all chunks and ran python script to remove duplicates, unwanted data and create a clean backup:
def clean_uboot_hex_dump(input_file, output_file):
print("Analyzing U-Boot hex dump...")
seen_addresses = set()
clean_lines = []
total_lines = 0
duplicate_count = 0
with open(input_file, 'r', encoding='utf-8', errors='ignore') as f:
for line_num, line in enumerate(f, 1):
total_lines += 1
# Skip empty lines and U-Boot command prompts
if not line.strip() or line.startswith('MT7621') or '#' in line[:10]:
continue
# Match hex dump lines (address: data data data...)
if ':' in line:
parts = line.split(':', 1)
address = parts[0].strip()
# Validate address format (hex addresses)
if re.match(r'^81[0-9a-f]{6}$', address.lower()):
if address not in seen_addresses:
seen_addresses.add(address)
clean_lines.append(line)
else:
duplicate_count += 1
# Write cleaned data
with open(output_file, 'w', encoding='utf-8') as f:
f.writelines(clean_lines)
Unfortunately, integrity of backup remains very low. Looking for a practical solution. Thanks