| package templates.m2m.hw |
| |
| import com.google.inject.Inject |
| import org.eclipse.app4mc.amalthea.model.Cache |
| import org.eclipse.app4mc.amalthea.model.HwStructure |
| import org.eclipse.app4mc.amalthea.model.Memory |
| import templates.AbstractAmaltheaInchronTransformer |
| |
| class HWStructure_MicroControllerTransformer extends AbstractAmaltheaInchronTransformer{ |
| |
| @Inject MemoryTransformer memoryTransformer |
| |
| @Inject CacheTransformer cacheTransformer |
| |
| public def create inchronModelFactory.createCpu createCpu(HwStructure amltHWMicroController){ |
| |
| it.name=amltHWMicroController.name |
| |
| amltHWMicroController.modules.forEach[ |
| amltHwModule|{ |
| if(amltHwModule instanceof Memory){ |
| it.memories.add(memoryTransformer.createMemory(amltHwModule)) |
| |
| }else if(amltHwModule instanceof Cache){ |
| it.memories.add(cacheTransformer.createCache(amltHwModule)) |
| } |
| } |
| ] |
| |
| //creating default memory regions |
| |
| var inchronRamRegion= inchronModelFactory.createMemoryRegion |
| inchronRamRegion.name="ram" |
| inchronRamRegion.base= 16777216 |
| inchronRamRegion.sections="data:bss:stack:heap" |
| inchronRamRegion.pages=1 |
| inchronRamRegion.flags=290 |
| |
| var inchronRomRegion= inchronModelFactory.createMemoryRegion |
| inchronRomRegion.name="rom" |
| inchronRomRegion.base= 33554432 |
| inchronRomRegion.sections="text" |
| inchronRomRegion.pages=1 |
| inchronRomRegion.flags=275 |
| |
| it.memoryRegions.add(inchronRamRegion) |
| it.memoryRegions.add(inchronRomRegion) |
| |
| |
| |
| } |
| } |