Scipt는 md 명령을 사용하여 Uboot를 통해 DVR에서 메모리를 덤프합니다.

Scipt는 md 명령을 사용하여 Uboot를 통해 DVR에서 메모리를 덤프합니다.

그래서 저는 이 DVR을 가지고 있고 잠겨 있으므로 U-boot에서 md 명령을 사용하여 메모리를 덤프해야 하지만 u-Boot는 약 15초마다 재부팅하므로 메모리를 덩어리로 덤프해야 합니다. 이는 제 쉘 스크립트입니다.

#!/usr/bin/expect

# Replace with the actual serial port of your device (e.g., /dev/ttyACM0)
set serial_port "/dev/ttyACM0"

# Replace with the starting memory address
set start_address 0xe1000000

# Replace with the size of each chunk
set chunk_size 0x3E00

# Replace with the target address to stop at
set stop_address 0xE100BA00

# Open a connection to the serial port
spawn cu -l $serial_port -s 115200

# Expect the message to stop autoboot
expect "Hit any key to stop autoboot:"
send "\r"
#after 2000
# Set the initial address
set current_address $start_address

# Dump memory in chunks
while {$current_address < $stop_address} {
    # Send the md command to the bootloader for the current chunk
    send "md $current_address $chunk_size\r"

    # Wait for the bootloader's response
    expect "Hit any key to stop autoboot:"
    send "\r"

    # Send any key to continue (press Enter)
    send "\r"
    # Update the current address for the next chunk
    set current_address [expr {$current_address + $chunk_size}]
}

# Close the connection
send "\x03"  ;# Send Ctrl+C to stop autoboot if needed
send "exit\r"
expect eof

따라서 처음 전원을 켤 때 메모리에서 첫 번째 블록의 내용을 인쇄하지만 재부팅 후 장치는 시작 시 "\r"을 전송하며 "자동 시작을 중지하려면 아무 키나 누르십시오."가 작동하지 않습니다. 이유를 모르겠어요. tnx에 대한 제안이 있나요?

관련 정보