pro3_control_panel/base/device_profile.py
2025-12-15 09:23:52 +08:00

80 lines
3.0 KiB
Python

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2024 Realtek Semiconductor Corp.
# SPDX-License-Identifier: Apache-2.0
from .image_info import *
from .efuse_data import *
from .version import *
class RtkDeviceProfile():
DEFAULT_FLASH_START_ADDR = 0x08000000
DEFAULT_RAM_START_ADDR = 0x20000000
DEVICE_ID_AMEBAD = 0x6548
DEVICE_ID_AMEBAZ = 0x6547
def __init__(self, **kwargs):
self.version = kwargs.get("Version", "1.1.1")
self.device_name = kwargs.get("DeviceName", "")
self.device_id = kwargs.get("DeviceID", 0)
self.memory_type = kwargs.get("MemoryType", 0)
self.support_usb_download = kwargs.get("SupportUsbDownload", False)
self.flash_start_address = kwargs.get("FlashStartAddress", self.DEFAULT_FLASH_START_ADDR)
self.ram_start_address = kwargs.get("RamStartAddress", self.DEFAULT_RAM_START_ADDR)
self.floader = kwargs.get("Floader", "")
self.floader_address = kwargs.get("FloaderAddress", 0)
self.handshake_baudrate = kwargs.get("HandshakeBaudrate", 0)
self.log_baudrate = kwargs.get("LogBaudrate", 0)
self.logical_efuse_len = kwargs.get("LogicalEfuseLen", 0)
self.physical_efuse_len = kwargs.get("PhysicalEfuseLen", 0)
self.images = []
self.default_efuse_map = []
for image_info in kwargs.get("Images", []):
self.images.append(ImageInfo(**image_info))
for efuse_data in kwargs.get("DefaultEfuseMap", []):
self.default_efuse_map.append(EfuseData(**efuse_data))
def is_amebad(self):
return (self.device_id == self.DEVICE_ID_AMEBAD)
def is_amebaz(self):
return (self.device_id == self.DEVICE_ID_AMEBAZ)
def is_ram_address(self, address):
return (address >= self.DEFAULT_RAM_START_ADDR)
def is_flash_address(self, address):
return (address >= self.DEFAULT_FLASH_START_ADDR)
def get_version(self):
if self.version:
return Version(self.version)
else:
return Version("1.0.0")
def __repr__(self):
image_info_list = [ii.__repr__() for ii in self.images]
efuse_data_list = [ed.__repr__() for ed in self.default_efuse_map]
profile_dict = {
"Images": image_info_list,
"DefaultEfuseMap": efuse_data_list,
"Version": f"{self.version}",
"DeviceName": self.device_name,
"DeviceID": self.device_id,
"MemoryType": self.memory_type.value,
"SupportUsbDownload": self.support_usb_download,
"FlashStartAddress": self.flash_start_address,
"RamStartAddress": self.ram_start_address,
"Floader": self.floader,
"FloaderAddress": self.floader_address,
"HandshakeBaudrate": self.handshake_baudrate,
"LogBaudrate": self.log_baudrate,
"LogicalEfuseLen": self.logical_efuse_len,
"PhysicalEfuseLen": self.physical_efuse_len
}
return profile_dict