Rocket - subsystem - BaseSubsystem
https://mp.weixin.qq.com/s/RIW_YxjsrGtU07xtUDEYpA
简单介绍BaseSubsystem的实现。
1. 各种Key
定义了高层次模块使用配置Key:
其中:
a. SystemBusKey:用于定义系统总线参数;
b. FrontBusKey:用于定义前端总线参数;
c. PeripheryBusKey:用于定义外设总线参数;
d. ControlBusKey:用于定义控制总线参数;
e. MemoryBusKey:用于定义存储总线参数;
f. BankedL2Key:用于定义L2存储子系统的配置参数;
g. BuildSystemBus:用于定义构件系统总线的方法;
2. BareSubsystem
BareSubsystem中定义了子系统所需要的对象模型、设备树等结构:
BareSubsystem是LazyModule的子类,但是并没有实现LazyModule类中的抽象成员module:
所以BareSubsystem也是抽象类。
按接下来的实现,这个module应该是BareSubsystemModuleImp的实例。
3. BareSubsystemModuleImp
BareSubsystemModuleImp作为BareSubsystem的实现,而BareSubsystem是BareSubsystemModuleImp的概念节点:
这里的outer就是BareSubsystem的实例。BareSubsystemModuleImp把各类信息存放在文件中。
4. BaseSubsystem
BaseSubsystem继承自BareSubsystem:
1) BaseSubsystem与BaseSubsystemModuleImp成对使用,其module成员是BaseSubsystemModuleImp的实例:
2) 添加了各类总线:
3) Collect information for use in DTS
5. BaseSubsystemModuleImp
BaseSubsystemModuleImp是BaseSubsystem的实现:
其中搜集BaseSubsystem的各种信息。