first commit

This commit is contained in:
2026-06-16 15:40:19 +08:00
commit 8ba6324244
97 changed files with 6216 additions and 0 deletions

0
midware/bus/__init__.py Normal file
View File

View File

@@ -0,0 +1,55 @@
'''
5. 缓存交互模块midware/bus/cache_handler.py
实现与 SJA1000/61580 共享缓存的交互提供WriteDoubleWord/ReadDoubleWord核心操作对接虚拟芯片
'''
from loguru import logger
class CacheHandler:
"""缓存交互层实现sysbus WriteDoubleWord/ReadDoubleWord操作"""
def __init__(self):
# 模拟共享缓存字典实现key=内存地址value=32位无符号整数
self.shared_cache = {}
logger.info("共享缓存初始化完成模拟SJA1000/61580")
def write_double_word(self, mem_addr, data):
"""
写入双字32位数据到共享缓存
:param mem_addr: 内存地址int
:param data: 16/32位数据int自动转为32位无符号整数
"""
if not isinstance(mem_addr, int) or not isinstance(data, int):
logger.error("写入缓存参数错误,地址/数据必须为整数")
return False
# 转为32位无符号整数
##给RENODE的写入的语句未定
self.shared_cache[mem_addr] = data & 0xFFFFFFFF
logger.debug(f"写入缓存:地址{hex(mem_addr)},数据{hex(self.shared_cache[mem_addr])}")
return True
def read_double_word(self, mem_addr):
"""
从共享缓存读取双字32位数据
:param mem_addr: 内存地址int
:return: 32位无符号整数地址不存在返回0
"""
if not isinstance(mem_addr, int):
logger.error("读取缓存参数错误,地址必须为整数")
return 0
data = self.shared_cache.get(mem_addr, 0)
logger.debug(f"读取缓存:地址{hex(mem_addr)},数据{hex(data)}")
return data
def clear_cache(self, mem_addr=None):
"""清空指定地址/全部缓存"""
if mem_addr:
if mem_addr in self.shared_cache:
del self.shared_cache[mem_addr]
logger.debug(f"清空缓存地址:{hex(mem_addr)}")
else:
self.shared_cache.clear()
logger.info("清空全部共享缓存")
return True
# 单例模式,全局唯一缓存实例
cache_handler = CacheHandler()

View File