pre uart exchange
This commit is contained in:
53
tool/core/cmd/flash_info.py
Normal file
53
tool/core/cmd/flash_info.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# tool/core/cmd/flash_info.py
|
||||
import struct
|
||||
from core.utils import console, console_err
|
||||
from core.protocol import COMMANDS, ERRORS
|
||||
|
||||
class flash_info:
|
||||
def __init__(self, bus):
|
||||
self.bus = bus
|
||||
|
||||
|
||||
def get(self):
|
||||
import struct
|
||||
self.bus.send_request(COMMANDS['get_flash_info'])
|
||||
|
||||
data = self.bus.receive_response(length=21)
|
||||
if not data or data.get('type') == 'error':
|
||||
return None
|
||||
|
||||
payload = data['data']
|
||||
ext_block_size = struct.unpack('<I', payload[0:4])[0]
|
||||
ext_total_blocks = struct.unpack('<I', payload[4:8])[0]
|
||||
ext_free_blocks = struct.unpack('<I', payload[8:12])[0]
|
||||
int_slot_size = struct.unpack('<I', payload[12:16])[0]
|
||||
ext_page_size = struct.unpack('<H', payload[16:18])[0]
|
||||
int_page_size = struct.unpack('<H', payload[18:20])[0]
|
||||
max_path_len = payload[20]
|
||||
|
||||
result = {
|
||||
'ext_block_size': ext_block_size,
|
||||
'ext_total_blocks': ext_total_blocks,
|
||||
'ext_free_blocks': ext_free_blocks,
|
||||
'int_slot_size': int_slot_size,
|
||||
'ext_page_size': ext_page_size,
|
||||
'int_page_size': int_page_size,
|
||||
'max_path_len': max_path_len,
|
||||
'ext_total_size': ext_block_size * ext_total_blocks,
|
||||
'ext_free_size': ext_block_size * ext_free_blocks,
|
||||
'ext_used_size': ext_block_size * (ext_total_blocks - ext_free_blocks)
|
||||
}
|
||||
return result
|
||||
|
||||
def print(self, result):
|
||||
if not result:
|
||||
return
|
||||
|
||||
console.print(f"[info]Flash-Informationen:[/info]")
|
||||
console.print(f" • [info]Externer Flash:[/info] {result['ext_total_size']/1024/1024:.2f} MB ({result['ext_total_blocks']} Blöcke à {result['ext_block_size']} Bytes)")
|
||||
console.print(f" - Belegt: {result['ext_used_size']/1024/1024:.2f} MB ({result['ext_total_blocks'] - result['ext_free_blocks']} Blöcke)")
|
||||
console.print(f" - Frei: {result['ext_free_size']/1024/1024:.2f} MB ({result['ext_free_blocks']} Blöcke)")
|
||||
console.print(f" • [info]FW Flash Slot:[/info] {result['int_slot_size']/1024:.2f} KB")
|
||||
console.print(f" • [info]EXTFLASH Seitengröße:[/info] {result['ext_page_size']} Bytes")
|
||||
console.print(f" • [info]INTFLASH Seitengröße:[/info] {result['int_page_size']} Bytes")
|
||||
console.print(f" • [info]Maximale Pfadlänge:[/info] {result['max_path_len']} Zeichen")
|
||||
Reference in New Issue
Block a user