high-level development of embedded software development of embedded software gunar schirner1,...

26
System-Level Development of Embedded Software Gunar Schirner 1 , Andreas Gerstlauer 2 , Rainer Dömer 3 1) ECE, Northeastern University, Boston, MA 2) University of Texas, Austin 3) CECS, University of California, Irvine

Upload: dohuong

Post on 17-Mar-2018

230 views

Category:

Documents


5 download

TRANSCRIPT

System-Level Development of Embedded Software

Gunar Schirner1, Andreas Gerstlauer2, Rainer Dömer3

1) ECE, Northeastern University, Boston, MA2) University of Texas, Austin3) CECS, University of California, Irvine

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 2

Motivation

• Increasing complexity of Multi-Processor System-on-Chip (MPSoCs)– Feature demands– Production capabilities + Implementation freedom

• Increasing software content– Flexible solution– Addresses complexity

• How to create SW for MPSoC?– Avoid break in ESL flow:

• Synthesize SW from abstract models

Source: simh.trailing-edge.com

?

SW

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 3

Goals

• Generate SW binaries for MPSoCfrom abstract specification– Eliminate tedious, error prone SW coding– Rapid exploration– High-level application developtment– Support wide range of system sizes

CE

...

Processor NExt. IP N1

Core Mem

Processor Bus N

PIC Timer

Processor 1Ext. IP 11

Core Mem

Processor Bus 1

PIC Timer

Ext. IP NM

...

MEM 11

MEM N1

... ...

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 4

System Design Flow Overview

Input Specification• Capture Application in C

(SpecC SLDL)– Computation

• Organize code in behaviors (processes)

– Communicate through point-to-point channels

• Select from feature-rich selection

– Synchronous / Asynchronous– Blocking / Non-Blocking– Synchronization only (e.g.

semaphore, mutex, barrier)

• Architecture decisions:– Processor(s)– HW component(s)– Busses– Mapping– …

100M

Hz

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 5

Outline

• Introduction • System Design Flow Overview• Processor Modeling• Software Generation

– Code Generation– Hardware-dependent Software Synthesis

• Communication Synthesis• Multi-Tasking• Binary Image Creation

• Experimental Results• Conclusions

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 6

System Design Flow Overview

100M

Hz

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 7

Outline

• Introduction • System Design Flow Overview• Processor Modeling• Software Generation

– Code Generation– Hardware-dependent Software Synthesis

• Communication Synthesis• Multi-Tasking• Binary Image Creation

• Experimental Results• Conclusions

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 8

CPU

TaskB2

C1

B1

TaskB3C2

B4

Automatic TLM Generation• System Compiler (SCE)

generates System TLM

Model containscomplete implementation information

– TLM generation, processor modeling described in:• [Doemer et. al, JES 07/2008], [Gerstlauer et. al, TCAD 09/2007],

[Schirner et. al, TODAES 01/2010]

Processor Model: Overview

CoreHALOSCPU

TaskB2

C1

B1

TaskB3C2

RTOS MODEL

HWInt

TimerPIC

SourceStatusMask

ControlLoadValue

INTCINTBINTA

HW1B4

INT

INT

TLM

SysInt

Driv

erD

river

MA

C

INTA INTB INTC

UsrInt1 UsrInt2

MAC

Driver

Sem1Sem2

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 9

Processor Model

• Summary of features:

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 10

Outline

• Introduction • System Design Flow Overview• Processor Modeling• Software Generation

– Code Generation– Hardware-dependent Software Synthesis

• Communication Synthesis• Multi-Tasking• Binary Image Creation

• Experimental Results• Conclusions

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 11

Software SynthesisSecond step: Software Synthesis• Code Generation [Yu et. al, ASPDAC 2004]

– Generate application code– Resolve behavioral hierarchy into flat C code

• Hardware-dependent Software (HdS) Synthesis– Multi-task

Synthesis– Communication Synthesis– Binary Image

Generation

– Generate ISS-basedvirtual platform

Software Synthesis

Code Generation

HdS Generation

SW DB- RTOS- Wrapper- HAL

Cross Compiler and Linker

TLM

C Code Build,Config.

Target Binary

Virtual Platform Exec.Hardware Platform Exec.

CommunucationMulti-tasking

Binary Image

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 12

Outline

• Introduction • System Design Flow Overview• Processor Modeling• Software Generation

– Code Generation– Hardware-dependent Software Synthesis

• Communication Synthesis• Multi-Tasking• Binary Image Creation

• Experimental Results• Conclusions

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 13

Code GenerationPE2

Bus

driv

er

PE1

B2 C1 B3

B1

S1

RTOS Model

ISR

Bus

driv

er

TaskB2

TaskB3

Task_PE

read()

write()

Code Generation

PE2

Bus

driv

er

PE1

S1

RTOS Model

ISR

Bus

driv

er read()

write()

C Code

Source: H. Yu, R Doemer, D.Gajski 2004

Rules for C code generation• Behaviors and channels are

converted into C struct• Child behaviors and channels

are instantiated as C structmembers inside the parent C struct

• Variables defined inside a behavior or channel are converted into data members of the corresponding C struct

• Ports of behavior or channel are converted into data members of the corresponding C struct

• Functions inside a behavior or channel are converted into global functions

• A static struct instantiation for each PE is added at the end of the output C code to allocate/initialize the data used by SW

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 14

C Code Generation Example

Source: H. Yu, R Doemer, D.Gajski 2004

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 15

Outline

• Introduction • System Design Flow Overview• Processor Modeling• Software Generation

– Code Generation– Hardware-dependent Software Synthesis

• Communication Synthesis• Multi-Tasking• Binary Image Creation

• Experimental Results• Conclusions

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 16

Hardware-dependent Software Synthesis• Communication Synthesis

– Internal communication• Replace with target specific implementation

– e.g. RTOS semaphore, event, msg. queue

– External communication• ISO / OSI layered to support heterogeneous architectures• Contains:

– Marshalling– System addressing– Packetizing– MAC

– Synchronization• Polling, or• Interrupt

CoreHALOSCPU

TaskB2 N

et

C1

B1

TaskB3C2

RTOS MODEL TLM

MA

C

HWInt

Timer

PIC

SourceStatusMask

ControlLoadValue

INT

INTA INTB INTC

UsrInt1

SysInt

Driv

erD

river

INTCINTBINTA

Sem2Sem1UsrInt2

Net

HW1

HW2

B4

B5

Net

MAC

Link

Net

MAC

Link

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 17

• Multi-Task Synthesis– RTOS-based Multi-Tasking

• Based on off the shelf RTOS – e.g. μC/OS-II, eCos, vxWorks

• RTOS Abstraction Layer– Canonical Interface

» limit interdependency RTOS / Synthesis• Generate task management code• Internal communication

Hardware-dependent Software Synthesis

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 18

behavior B2B3(RTOS os) {B2 b2();B3 b3();

void main(void) {

par {b2.main(); b3.main();

}o

};

1

5

10

15

Task_B2 task_b2(os);Task_B3 task_b3(os);

Task_B2 task_b2(os);Task_B3 task_b3(os);

task_b2.init();task_b3.init();

task_b2.init();task_b3.init();

os.par_start();os.par_start();

os.par_end();os.par_end();

• Multi-task Synthesis– Example

struct B2B3{ struct Task_B2 task_b2;

struct Task_B3 task_b3;};void *B2_main(void *arg){ struct Task_B2 *this=(struct Task_B2*)arg;

...pthread_exit(NULL); }

void *B3_main(void *arg){ struct Task_B3 *this=(struct Task_B3*)arg;

...pthread_exit(NULL); }

void *B2B3_main(void *arg){ struct B2B3 *this= (struct B2B3*)arg;

int status; pthread_t *task_b2, *task_b3;

}

taskCreate(task_b2, NULL, B2_main, &this->task_b2);

taskCreate(task_b3, NULL,B3_main, &this->task_b3);

taskCreate(task_b2, NULL, B2_main, &this->task_b2);

taskCreate(task_b3, NULL,B3_main, &this->task_b3);

taskJoin(*task_b2, (void **)&status);taskJoin(*task_b3, (void **)&status);

taskJoin(*task_b2, (void **)&status);taskJoin(*task_b3, (void **)&status);

taskTerminate(NULL);taskTerminate(NULL);

Source: H. Yu, R Doemer, D.Gajski 2004

Hardware-dependent Software Synthesis

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 19

Binary Image Generation

• Generate binary for each processor– Generate build and configuration files

• Select software database components • Configure RTOS

– Cross compileand link

– Significant effortin DB design

• Minimize components

• Analyze dependencies

• Goal: flexible composition

Cross Compileand Link

Software Synthesis

TLM

Gene-ratedCode

Libs

Target Binary

SW DB- RTOS- Wrapper- HAL

Appl.Driver

Int.

Build and Configuration

RALRTOS

RTOS PortStartup

HAL

Pro

cess

or

RTO

S

Com

pile

r

Boa

rd

Code Gen. FW Synth.

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 20

Validation

Prot

.

• Validate generated binaries– Integrate ISS into system model

• Execute target binary

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 21

Outline

• Introduction • System Design Flow Overview• Processor Modeling• Software Generation

– Code Generation– Hardware-dependent Software Synthesis

• Communication Synthesis• Multi-Tasking• Binary Image Creation

• Experimental Results• Conclusions

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 22

Experimental Results

• Automotive Example– ARM7TDMI / 2x CAN / Anti-Lock Brakes, RPM, Fan

• Multimedia Examples– JPEG, MP3 (w/o, w/ HW support)

ARM7TDMI

MP3

JPEG IRQFIQ

AMBA AHB

PIC

Cust. HWCust. HW Cust. HWMP3IN

BMPIN

JPEG Output

Cust. HWLeft

SYNTH

Cust. HWRight

SYNTH

Cust. HW

MADOuput

Cust. HWPCMOUT

DHS

INT0

INT31...

Timer

DHS

DHS

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 23

Experimental Results

0%

25%

50%

75%

100%

Aut

omot

ive

JPE

G

MP

3 S

W

MP

3 H

W

MP

3 H

W +

JPE

G

0 M

50 M

100 M

150 M

200 M

Aut

omot

ive

JPE

G

CPU Utilization CPU Cycles

MP

3 S

W

MP

3 H

W

MP

3 H

W +

JPE

G

0K

5K

10K

15K

Aut

omot

ive

JPE

G

MP

3 S

W

MP

3 H

W

MP

3 H

W +

JPE

G

Appl. HdS

Generated Lines (Appl., HdS)

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 24

Conclusions

• High-Level SW Development – Software Generation

• Code Generation• Hardware-dependent Software

– Communication synthesis– Multi-task synthesis– Binary image creation

– Seamlessly intergraded into ESL Flow• High-level specification, generate low-level implementation

– From abstract model to implementation!• Eliminates tedious and error prone manual SW development• Significant productivity gain• Enables rapid design space exploration

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 25

Acknowledgements

• SCE Research Team– Thanks for your support of the SCE environment

Schirner, Gerstlauer, Doemer @ ASP-DAC 2010 26

Thank You!