fix: auto_erase/verif?
This commit is contained in:
@@ -11,7 +11,7 @@ set rtl8710_flasher_ready 0
|
||||
set rtl8710_flasher_capacity 0
|
||||
set rtl8710_flasher_auto_erase 0
|
||||
set rtl8710_flasher_auto_verify 0
|
||||
set rtl8710_flasher_auto_erase_sector 0xFFFFFFFF
|
||||
set rtl8710_flasher_auto_erase_sector 0
|
||||
|
||||
proc rtl8710_flasher_init {} {
|
||||
global rtl8710_flasher_ready rtl8710_flasher_firmware_ptr
|
||||
@@ -52,10 +52,14 @@ proc rtl8710_flasher_wait {} {
|
||||
while {[rtl8710_flasher_mrw $addr]} {}
|
||||
}
|
||||
|
||||
proc rtl8710_flasher_load_block {local_filename offset length} {
|
||||
# proc rtl8710_flasher_load_block {local_filename offset length} {
|
||||
# global rtl8710_flasher_buffer
|
||||
# set buffer_addr [expr {$rtl8710_flasher_buffer + 0x20}]
|
||||
# load_image $local_filename [expr {$buffer_addr - $offset}] bin $buffer_addr $length
|
||||
# }
|
||||
proc rtl8710_flasher_load_block {local_filename offset len} {
|
||||
global rtl8710_flasher_buffer
|
||||
set buffer_addr [expr {$rtl8710_flasher_buffer + 0x20}]
|
||||
load_image $local_filename [expr {$buffer_addr - $offset}] bin $buffer_addr $length
|
||||
load_image $local_filename [expr {$rtl8710_flasher_buffer + 0x20 - $offset}] bin [expr {$rtl8710_flasher_buffer + 0x20}] $len
|
||||
}
|
||||
|
||||
proc rtl8710_flasher_block {command offset len} {
|
||||
@@ -95,8 +99,25 @@ proc rtl8710_flasher_write_block {offset len} {
|
||||
rtl8710_flasher_block "write" $offset $len
|
||||
}
|
||||
|
||||
# proc rtl8710_flasher_verify_block {offset len} {
|
||||
# rtl8710_flasher_block "verify" $offset $len
|
||||
# }
|
||||
|
||||
proc rtl8710_flasher_verify_block {offset len} {
|
||||
rtl8710_flasher_block "verify" $offset $len
|
||||
global rtl8710_flasher_buffer
|
||||
global rtl8710_flasher_command_verify
|
||||
mww [expr {$rtl8710_flasher_buffer + 0x04}] $rtl8710_flasher_command_verify
|
||||
mww [expr {$rtl8710_flasher_buffer + 0x08}] 0x00000000
|
||||
mww [expr {$rtl8710_flasher_buffer + 0x10}] $offset
|
||||
mww [expr {$rtl8710_flasher_buffer + 0x14}] $len
|
||||
mww [expr {$rtl8710_flasher_buffer + 0x00}] 0x00000001
|
||||
rtl8710_flasher_wait
|
||||
set status [rtl8710_flasher_mrw [expr {$rtl8710_flasher_buffer + 0x08}]]
|
||||
if {[expr {$status > 0}]} {
|
||||
set status [rtl8710_flasher_mrw [expr {$rtl8710_flasher_buffer + 0x0C}]]
|
||||
set status [expr {$status + $offset}]
|
||||
error "verify error, offset $status"
|
||||
}
|
||||
}
|
||||
|
||||
proc rtl8710_flash_read_id {} {
|
||||
@@ -170,27 +191,24 @@ proc rtl8710_flash_write {local_filename loc} {
|
||||
global rtl8710_flasher_buffer_size rtl8710_flasher_sector_size
|
||||
global rtl8710_flasher_auto_erase rtl8710_flasher_auto_verify
|
||||
global rtl8710_flasher_auto_erase_sector
|
||||
|
||||
rtl8710_flasher_init
|
||||
set size [file size $local_filename]
|
||||
|
||||
for {set offset 0} {$offset < $size} {set offset [expr {$offset + $rtl8710_flasher_buffer_size}]} {
|
||||
set len [expr {($size - $offset) < $rtl8710_flasher_buffer_size ? ($size - $offset) : $rtl8710_flasher_buffer_size}]
|
||||
set flash_offset [expr {$loc + $offset}]
|
||||
|
||||
echo "write offset $flash_offset"
|
||||
rtl8710_flasher_load_block $local_filename $offset $len
|
||||
|
||||
if {$rtl8710_flasher_auto_erase} {
|
||||
set start_sector [expr {$flash_offset / $rtl8710_flasher_sector_size}]
|
||||
set end_sector [expr {($flash_offset + $len - 1) / $rtl8710_flasher_sector_size}]
|
||||
|
||||
# erase any new sectors we encounter
|
||||
for {set sector $start_sector} {$sector <= $end_sector} {incr sector} {
|
||||
if {$rtl8710_flasher_auto_erase_sector != $sector} {
|
||||
echo "erase sector $sector"
|
||||
rtl8710_flash_sector_erase [expr {$sector * $rtl8710_flasher_sector_size}]
|
||||
set rtl8710_flasher_auto_erase_sector $sector
|
||||
set sector_addr [expr {$sector * $rtl8710_flasher_sector_size}]
|
||||
if {$sector_addr >= $rtl8710_flasher_auto_erase_sector} {
|
||||
rtl8710_flash_sector_erase $sector_addr
|
||||
set rtl8710_flasher_auto_erase_sector [expr {$sector_addr + $rtl8710_flasher_sector_size}]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user