| |
| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| |
| <title>Getting Started with APP4MC | The Eclipse Foundation</title> |
| <meta property="og:title" content="Getting Started with APP4MC | The Eclipse Foundation" /> |
| <meta name="twitter:title" content="Getting Started with APP4MC | The Eclipse Foundation" /> |
| <meta name="description" content="General model content The purpose of this session is to get familiar with the structure of the AMALTHEA model itself as well as the currently available editor. Therefore, a new model should be created in its own project using the following steps and content. |
| The following image is a simplified overview of the model that will be created in this session. |
| General model setup Create a new general project named org."> |
| <meta property="og:description" content="General model content The purpose of this session is to get familiar with the structure of the AMALTHEA model itself as well as the currently available editor. Therefore, a new model should be created in its own project using the following steps and content. |
| The following image is a simplified overview of the model that will be created in this session. |
| General model setup Create a new general project named org."> |
| <meta name="twitter:description" content="General model content The purpose of this session is to get familiar with the structure of the AMALTHEA model itself as well as the currently available editor. Therefore, a new model should be created …"> |
| <meta name="author" content="Susan Iwai"/> |
| <link href='https://www.eclipse.org/favicon.ico' rel='icon' type='image/x-icon'/> |
| <meta property="og:image" content="https://www.eclipse.org/app4mc/images/logo.png" /> |
| <meta name="twitter:image" content="https://www.eclipse.org/app4mc/images/logo.png" /> |
| <meta name="twitter:card" content="summary" /> |
| <meta name="twitter:site" content="@EclipseFdn" /> |
| <meta name="twitter:creator" content="@EclipseFdn" /> |
| <meta property="og:url" content="https://www.eclipse.org/gs-create-model/" /> |
| <meta property="og:type" content="website" /> |
| <meta property="og:site_name" content="Application Platform Project for MultiCore (APP4MC)" /> |
| |
| <meta name="generator" content="Hugo 0.42.1" /> |
| <link rel="canonical" href="https://www.eclipse.org/gs-create-model/" /> |
| <link rel="alternate" href="https://www.eclipse.org/app4mc/index.xml" type="application/rss+xml" title="Application Platform Project for MultiCore (APP4MC)"> |
| <link rel="stylesheet" href="https://eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/quicksilver.min.css"> |
| <link href="//fonts.googleapis.com/css?family=Libre+Franklin:400,700,300,600,100" rel="stylesheet" type="text/css"/> |
| |
| <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': |
| new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], |
| j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= |
| 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); |
| })(window,document,'script','dataLayer','GTM-5WLCZXC');</script> |
| |
| |
| |
| |
| <script async src="https://www.googletagmanager.com/gtag/js?id=UA-164550450-1"></script> |
| <script> |
| function getEclipseCookieConsentStatus() { |
| var i,x,y,cookies_list=document.cookie.split(";"); |
| for (i = 0; i < cookies_list.length; i++) { |
| x = cookies_list[i].substr(0,cookies_list[i].indexOf("=")); |
| y = cookies_list[i].substr(cookies_list[i].indexOf("=")+1); |
| x = x.replace(/^\s+|\s+$/g,""); |
| if (x == 'eclipse_cookieconsent_status') { |
| return unescape(y); |
| } |
| } |
| } |
| var eclipse_cookieconsent_status = getEclipseCookieConsentStatus(); |
| if (eclipse_cookieconsent_status === 'allow') { |
| window.dataLayer = window.dataLayer || []; |
| function gtag(){dataLayer.push(arguments);} |
| gtag('js', new Date()); |
| gtag('config', 'UA-164550450-1'); |
| } |
| </script> |
| </head> |
| <body> |
| |
| <a class="sr-only" href="#content">Skip to main content</a> |
| <header class="header-wrapper" id="header-wrapper"> |
| <div class="clearfix toolbar-container-wrapper"> |
| <div class="container"> |
| <div class="text-right toolbar-row row hidden-print"> |
| <div class="col-md-24 row-toolbar-col"> |
| <ul class="list-inline"> |
| <li><a href="https://accounts.eclipse.org/user/edit" class="" data-tab-destination="tab-profile"><i class="fa fa-edit fa-fw"></i> Edit my account</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="container"> |
| <div class="row" id="header-row"> |
| <div class="col-sm-5 col-md-4" id="header-left"> |
| <div class="wrapper-logo-default"> |
| <a title="Application Platform Project for MultiCore (APP4MC)" href="https://www.eclipse.org/app4mc/"> |
| <img width="140" class="logo-eclipse-default img-responsive hidden-xs" src="https://www.eclipse.org/app4mc/images/logo.png" alt="Application Platform Project for MultiCore (APP4MC)" /> |
| </a> |
| |
| </div> |
| </div> |
| |
| <div class="col-sm-19 col-md-20 reset margin-top-10" id="main-menu-wrapper"> |
| |
| <div class="navbar yamm" id="main-menu"> |
| <div class="navbar-collapse collapse reset float-right" id="navbar-main-menu"> |
| <ul class="nav navbar-nav"> |
| |
| |
| |
| |
| <li> |
| <a class="" href="https://www.eclipse.org/app4mc/gettingstarted/"> |
| |
| Getting Started |
| </a> |
| |
| </li> |
| |
| |
| <li> |
| <a class="" href="https://www.eclipse.org/app4mc/documentation/"> |
| |
| Documentation |
| </a> |
| |
| </li> |
| |
| |
| <li> |
| <a class="" href="https://www.eclipse.org/app4mc/community/"> |
| |
| Community |
| </a> |
| |
| </li> |
| |
| |
| <li> |
| <a class="" href="https://www.eclipse.org/app4mc/downloads/"> |
| |
| Downloads |
| </a> |
| |
| </li> |
| |
| |
| <li> |
| <a class="" href="https://www.eclipse.org/app4mc/news/"> |
| |
| News |
| </a> |
| |
| </li> |
| |
| |
| <li class="dropdown eclipse-more"> |
| <a href="#" data-toggle="dropdown" class="dropdown-toggle"> |
| |
| |
| <span>About</span> |
| <b class="caret"></b> |
| </a> |
| <ul class="dropdown-menu"> |
| <div class="yamm-content"> |
| |
| <li><a href="https://www.eclipse.org/app4mc/history/">History</a> </li> |
| |
| <li><a href="https://www.eclipse.org/app4mc/snippets/">Snippets</a> </li> |
| |
| </div> |
| </ul> |
| |
| </li> |
| |
| |
| <li class="dropdown eclipse-more hidden-xs"> |
| <a data-toggle="dropdown" class="dropdown-toggle" role="button">More<b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li> |
| |
| <div class="yamm-content"> |
| <div class="row"> |
| <ul class="col-sm-8 list-unstyled"> |
| <li> |
| <p><strong>Community</strong></p> |
| </li> |
| <li><a href="http://marketplace.eclipse.org">Marketplace</a></li> |
| <li><a href="http://events.eclipse.org">Events</a></li> |
| <li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li> |
| <li><a href="https://www.eclipse.org/community/eclipse_newsletter/">Newsletter</a></li> |
| <li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li> |
| <li><a href="https://blogs.eclipse.org">Blogs</a></li> |
| </ul> |
| <ul class="col-sm-8 list-unstyled"> |
| <li> |
| <p><strong>Participate</strong></p> |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li> |
| <li><a href="https://www.eclipse.org/forums/">Forums</a></li> |
| <li><a href="https://www.eclipse.org/mail/">Mailing Lists</a></li> |
| <li><a href="https://wiki.eclipse.org/">Wiki</a></li> |
| <li><a href="https://wiki.eclipse.org/IRC">IRC</a></li> |
| </ul> |
| <ul class="col-sm-8 list-unstyled"> |
| <li> |
| <p><strong>Eclipse IDE</strong></p> |
| </li> |
| <li><a href="https://www.eclipse.org/downloads">Download</a></li> |
| <li><a href="https://help.eclipse.org">Documentation</a></li> |
| <li><a href="https://www.eclipse.org/getting_started">Getting Started / Support</a></li> |
| <li><a href="https://www.eclipse.org/contribute/">How to Contribute</a></li> |
| <li><a href="https://www.eclipse.org/ide/">IDE and Tools</a></li> |
| <li><a href="https://www.eclipse.org/forums/index.php/f/89/">Newcomer Forum</a></li> |
| </ul> |
| </div> |
| </div> |
| </li> |
| </ul> |
| </li> |
| |
| |
| |
| </ul> |
| </div> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-main-menu"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <div class="wrapper-logo-mobile"> |
| |
| <a class="navbar-brand visible-xs" title="Application Platform Project for MultiCore (APP4MC)" href="https://www.eclipse.org/app4mc/"> |
| <img width="140" class="logo-eclipse-default-mobile img-responsive" src="https://www.eclipse.org/app4mc/images/logo.png" alt="Application Platform Project for MultiCore (APP4MC)" /> |
| </a> |
| |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| </header> |
| |
| |
| <section class="default-breadcrumbs hidden-print" id="breadcrumb"> |
| <div class="container"> |
| <h3 class="sr-only">Breadcrumbs</h3> |
| <div class="row"> |
| <div class="col-sm-24"> |
| <ol class="breadcrumb"> |
| |
| |
| |
| |
| <li> |
| <a href="https://www.eclipse.org/app4mc/">Eclipse APP4MC</a> |
| </li> |
| |
| |
| <li class="active"> |
| <a href="https://www.eclipse.org/app4mc/gs-create-model/">Getting Started with APP4MC</a> |
| </li> |
| |
| </ol> |
| |
| </div> |
| </div> |
| </section> |
| |
| |
| <main> |
| <div class="container"> |
| |
| |
| <h1>Getting Started with APP4MC</h1> |
| |
| |
| |
| <h1 id="general-model-content">General model content</h1> |
| |
| <p>The purpose of this session is to get familiar with the structure of the <strong>AMALTHEA model</strong> itself as well as the currently available editor. Therefore, a new model should be created in its own project using the following steps and content.</p> |
| |
| <p>The following image is a simplified overview of the model that will be created in this session.</p> |
| |
| <div style="text-align: center"><img src="https://www.eclipse.org/app4mc/images/gs-create-model/training-overview-model.png" class="img-responsive"> </div> |
| |
| <hr /> |
| |
| <h2 id="general-model-setup">General model setup</h2> |
| |
| <ol> |
| <li><p>Create a new general project named <em>org.eclipse.amalthea.training.model</em></p> |
| |
| <ul> |
| <li>From the <strong>File</strong> menu, select the item <strong>New > Project…</strong></li> |
| <li>On the first page of the wizard, expand the item <strong>General</strong> |
| and select <strong>Project</strong>. Then click <strong>Next</strong></li> |
| <li>On the second page of the wizard fill the <strong>Project name</strong> field |
| with <em>org.eclipse.amalthea.training.model</em>, then click <strong>Finish</strong><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/01-create-project.png" class="img-responsive"><br /></li> |
| <li>The project created should appear in the <strong>Model Explorer</strong> view<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create a new folder named “model1” inside the created project</p> |
| |
| <ul> |
| <li>Select the created project</li> |
| <li>In the context menu (right mouse button) select <strong>New > Folder</strong><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/02-create-folder.png" class="img-responsive"><br /></li> |
| <li>Fill the text field <strong>Folder name</strong> with <em>model1</em>, then click <strong>Finish</strong><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/03-create-folder.png" class="img-responsive"><br /></li> |
| </ul></li> |
| |
| <li><p>Create a new AMALTHEA model</p> |
| |
| <ul> |
| <li>Select the folder named <em>model1</em></li> |
| <li>In the context menu, select <strong>New > AMALTHEA Model</strong><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/04-create-model.png" class="img-responsive"><br /></li> |
| <li>In the dialog |
| |
| <ul> |
| <li>Keep the defaults (ie. folder: “model1”, filename: “default.amxmi”)</li> |
| <li>Click <strong>Finish</strong> to create an empty model</li> |
| </ul></li> |
| <li>The model is created and the standard AMALTHEA tree editor |
| is opened on the left side of the workbench.<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/05-create-model.png" class="img-responsive"><br /></li> |
| </ul></li> |
| </ol> |
| |
| <hr /> |
| |
| <h2 id="adding-software-structure">Adding software structure</h2> |
| |
| <ol> |
| <li><p>Right-click on the AMALTHEA model on the tree editor then select the menu item <strong>New Child > Sw Model</strong>.<br /> |
| It will add a child node named <strong>Software</strong> to the model<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/06-create-sw-model.png" class="img-responsive"></p></li> |
| |
| <li><p>Create a label named <em>LabelA</em></p> |
| |
| <ul> |
| <li>Select the <strong>Software</strong> item and right-click on <strong>New Child > Label</strong>.<br /> |
| This will add a new child under <strong>Labels</strong>.</li> |
| <li>Select this <em>Label</em> then click on the <strong>Properties</strong> tab below the tree editor to display the label properties.</li> |
| <li>Click on the cell next to the property named <strong>Name</strong> and fill it with <em>LabelA</em>.<br /> |
| Press enter. The label item in the tree editor should be renamed <em>LabelA</em>.<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/07-create-label.png" class="img-responsive"><br /></li> |
| </ul></li> |
| |
| <li><p>Create a label named <em>LabelB</em></p></li> |
| |
| <li><p>Create a Runnable named <em>Runnable1</em></p> |
| |
| <ul> |
| <li>Select the <strong>Software</strong> item and right-click on <strong>New Child > Runnable</strong>.<br /> |
| This will add a new child under <strong>Runnables</strong></li> |
| <li>Select this <em>Runnable</em> then click on the <strong>Properties</strong> tab below the tree editor to name it <em>Runnable1</em>.<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create 2 additional runnables named respectively <em>Runnable2</em> and <em>Runnable3</em>.<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/08-create-runnables.png" class="img-responsive"></p></li> |
| |
| <li><p>Select the runnable named <em>Runnable1</em></p> |
| |
| <ul> |
| <li>Right-click on <strong>New Child > Call Graph</strong></li> |
| <li>Create * 20 constant ticks* |
| |
| <ul> |
| <li>From the context menu under <strong>Call Graph</strong>, select <strong>New Child > Items > Ticks</strong></li> |
| <li>From the context menu under <strong>Ticks</strong>, select <strong>New Child > Default > Discrete Value Constant</strong></li> |
| <li>Select the child created then click on the <strong>Properties</strong> tab below the tree editor.</li> |
| <li>Change the value of the <strong>Value</strong> property to <em>20</em></li> |
| </ul></li> |
| <li>Create a <em>write access to LabelA</em> |
| |
| <ul> |
| <li>Create another call graph item by selecting the menu item <strong>New Child > Items > Label Access</strong></li> |
| <li>Select the child created then click on the <strong>Properties</strong> tab above the tree editor.</li> |
| <li>Select for the <strong>Access</strong> property the value <em>write</em></li> |
| <li>Select for the <strong>Data</strong> property the value <em>Label LabelA</em><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/09-create-runnable1-label-access.png" class="img-responsive"><br /> |
| <br /></li> |
| </ul></li> |
| </ul></li> |
| |
| <li><p>Expand the runnable named <em>Runnable2</em> and, under its call graph:</p> |
| |
| <ul> |
| <li>Create a <em>read access to LabelA</em></li> |
| <li>Create <em>25 constant ticks</em></li> |
| <li>Create a <em>write access to LabelB</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Expand the runnable named <em>Runnable3</em> and, under its call graph:</p> |
| |
| <ul> |
| <li>Create a <em>read access to LabelB</em></li> |
| <li>Create <em>10 constant ticks</em><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/10-create-runnables-final.png" class="img-responsive"><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create 3 tasks named respectively <em>Task1</em>, <em>Task2</em> and <em>Task3</em></p> |
| |
| <ul> |
| <li>Select the <strong>Software</strong> item and right-click on <strong>New Child > Task</strong>.</li> |
| <li>Select this <em>Task</em> then click on the <strong>Properties</strong> tab above the tree editor to name it <em>Task1</em>.</li> |
| <li>Repeat these steps to create the 2 other tasks.<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create a <em>CallGraph</em> for the task <em>Task1</em></p> |
| |
| <ul> |
| <li>Right-click on the task named <em>Task1</em> then select the menu item <strong>New Child > Call Graph</strong></li> |
| <li>Create a Runnable Call to <em>Runnable1</em> |
| |
| <ul> |
| <li>Right-click on the call graph<br /> |
| then select the menu item <strong>New Child > Items > Runnable Call</strong></li> |
| <li>Select the created child then click on the <strong>Properties</strong> tab<br /> |
| and set the <strong>Runnable</strong> property to <em>Runnable Runnable1</em>.<br /> |
| <br /></li> |
| </ul></li> |
| </ul></li> |
| |
| <li><p>Create a <em>CallGraph</em> for the task <em>Task2</em></p> |
| |
| <ul> |
| <li>Right-click on the task named <em>Task2</em> then select the menu item <strong>New Child > Call Graph</strong></li> |
| <li>Create a Runnable Call to <em>Runnable2</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create a <em>CallGraph</em> for the task <em>Task3</em></p> |
| |
| <ul> |
| <li>Right-click on the task named <em>Task3</em> then select the menu item <strong>New Child > Call Graph</strong></li> |
| <li>Create a Runnable Call to <em>Runnable3</em><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/11-create-task-runnable-calls.png" class="img-responsive"></li> |
| </ul></li> |
| </ol> |
| |
| <hr /> |
| |
| <h2 id="add-stimuli-to-tasks">Add Stimuli to Tasks</h2> |
| |
| <p>Stimuli are describing the activation of Tasks.</p> |
| |
| <ol> |
| <li><p>Create 3 Stimuli named <em>Stimuli1</em>, <em>Stimuli2</em>, and <em>Stimuli3</em></p> |
| |
| <ul> |
| <li>Right-click on the AMALTHEA model on the tree editor then select the menu item <strong>New Child > Stimuli Model</strong>.<br /> |
| It will add a child node named <strong>Stimuli</strong> to the model.</li> |
| <li>Create a Periodic Stimuli named <em>Stimuli1</em> and set the recurrence to 10ms |
| |
| <ul> |
| <li>Right-click on the Stimuli Model and select the menu item <strong>New Child > Stimuli > Periodic</strong></li> |
| <li>Expand the <em>Stimuli</em> node to visualize the created child.</li> |
| <li>Select the Child named by default <em>Periodic</em> then rename it <em>Stimuli1</em></li> |
| <li>Right-click on the renamed stimuli and select the menu item <strong>New Child > Recurrence</strong></li> |
| <li>Select the created Recurrence</li> |
| <li>Set the value of the <strong>Unit</strong> property to <em>ms</em></li> |
| <li>Set the value of the <strong>Value</strong> property to <em>10</em></li> |
| </ul></li> |
| <li>Create a seconde Periodic Stimuli named *Stimuli2” and set the recurrence to 30ms</li> |
| <li>Create an Inter Process Stimuli named <em>Stimuli3</em> and set the recurrence to 10ms |
| |
| <ul> |
| <li>Right-click on the Stimuli Model and select the menu item <strong>New Child > Stimuli > Inter Process</strong></li> |
| <li>Select the Inter Process node and name it <strong>Stimuli3</strong><br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/12-create-stimuli.png" class="img-responsive"/><br /> |
| <br /></li> |
| </ul></li> |
| </ul></li> |
| |
| <li><p>Add the Stimuli <em>Stimuli1</em> to the task <em>Task1</em></p> |
| |
| <ul> |
| <li>Retrieve and select the task <em>Task1</em> which is located under the nodes AMALTHEA / Softwares / Tasks.<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/13-task1-stimulus-1.png" class="img-responsive"/><br /></li> |
| <li>On the <strong>Properties</strong>, click on the button next to the field |
| (<img src="https://www.eclipse.org/app4mc/images/gs-create-model/ui-edit-button.png"/>) |
| to open relationship dialog</li> |
| <li>Select the Stimuli <em>Periodic Stimuli1</em></li> |
| <li>Press the <strong>Add</strong> button<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/14-task1-stimulus-2.png" class="img-responsive"/><br /></li> |
| <li>Press <strong>OK</strong> to close the dialog.</li> |
| </ul></li> |
| |
| <li><p>Add the Stimuli <em>Stimuli2</em> to the task <em>Task2</em></p></li> |
| |
| <li><p>Add the Stimuli <em>Stimuli3</em> to the task <em>Task3</em></p></li> |
| |
| <li><p>Add an <em>Interprocess Activation</em> from <em>Task2</em> to <em>Task3</em></p> |
| |
| <ul> |
| <li>Expand the <em>Task2</em>,</li> |
| <li>Expand its <em>Call Graph</em> node</li> |
| <li>Right-click on the node and select the menu item <strong>New Child > Items > Inter Process Trigger</strong></li> |
| <li>Select the created node and in the <em>Stimuli</em> property, select the Stiuli named <strong>Inter Process Stimuli3</strong></li> |
| </ul></li> |
| </ol> |
| |
| <hr /> |
| |
| <h2 id="create-simple-hardware-model">Create simple hardware model</h2> |
| |
| <p>In this section we are creating a simple hardware model with 2 cores and 1 global memory.</p> |
| |
| <ol> |
| <li><p>Right-click on the AMALTHEA model on the tree editor then select the menu item <strong>New Child > Hw Model</strong>.<br /> |
| It will add a child node named <strong>Hardware</strong> to the model</p></li> |
| |
| <li><p>Create a new structure named <em>DemoSystem</em></p> |
| |
| <ul> |
| <li>Select the <em>Hardware</em> node previously created</li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Structure</strong>.</li> |
| <li>Name the created item <em>DemoSystem</em></li> |
| <li>Set the StructureType to <em>System</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create a new ECU named <em>Ecu1</em></p> |
| |
| <ul> |
| <li>Select the structure named <em>DemoSystem</em></li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Structure</strong>.</li> |
| <li>Name the created item <em>Ecu1</em></li> |
| <li>Set the StructureType to <em>ECU</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a microcontroller named <em>MC1</em> to the ECU <em>Ecu1</em></p> |
| |
| <ul> |
| <li>Select the ECU <em>Ecu1</em></li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Structure</strong>.</li> |
| <li>Name the created item <em>MC1</em></li> |
| <li>Set the StructureType to <em>Microcontroller</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create a memory definition named <em>GlobalMemoryType</em></p> |
| |
| <ul> |
| <li>Select the <em>Hardware</em> node under the AMALTHEA model node</li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Definitions > Memory Definition</strong>.</li> |
| <li>Set the name to <em>GlobalMemoryType</em></li> |
| <li>Set the size of memory to <em>512</em> (bytes)</li> |
| <li>Set the type of memory to RAM<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a memory named <em>GlobalMemory</em> to <em>MC1</em></p> |
| |
| <ul> |
| <li>Select the microcontroller <em>MC1</em></li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Modules > Memory</strong></li> |
| <li>Name the created item <em>GlobalMemory</em></li> |
| <li>Set the definition to <em>Memory Definition GlobalMemoryType</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create a frequency domain “100MHz”</p> |
| |
| <ul> |
| <li>Select the <em>Hardware</em> node under the AMALTHEA model node</li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Domains > Frequency Domain</strong>.</li> |
| <li>Name the created item <em>100MHz</em></li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Default Value</strong></li> |
| <li>Set value to 100.0 and unit to MHz<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Create a frequency domain “200MHz”</p></li> |
| |
| <li><p>Create a processing unit definition named <em>CT1</em></p> |
| |
| <ul> |
| <li>Select the <em>Hardware</em> node under the AMALTHEA model node</li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Definitions > Processing Unit Definition</strong></li> |
| <li>Set the name to <em>CT1</em></li> |
| <li>Set Pu Type to <em>CPU</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a processing unit “Core1” to “MC1”</p> |
| |
| <ul> |
| <li>Select the microcontroller <em>MC1</em></li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Modules > Processing Unit</strong></li> |
| <li>Name the created item <em>Core1</em></li> |
| <li>Set definition of “Core1” to “CT1”</li> |
| <li>Set frequency domain of “Core1” to “100MHz”<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a processing unit “Core2” to “MC1”</p> |
| |
| <ul> |
| <li>Select the microcontroller <em>MC1</em></li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Modules > Processing Unit</strong></li> |
| <li>Name the created item <em>Core2</em></li> |
| <li>Set definition of “Core2” to “CT1”</li> |
| <li>Set frequency domain of “Core2” to “200MHz”<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add an access element from “Core1” to “GlobalMemory”</p> |
| |
| <ul> |
| <li>Create an access element named <em>Path1</em> |
| |
| <ul> |
| <li>Select “Core1”</li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Access Element</strong></li> |
| <li>Name the created item <em>Path1</em></li> |
| <li>Set the <strong>Destination</strong> property to <em>Memory GlobalMemory</em></li> |
| </ul></li> |
| <li>Add a constant read latency to “Path1” with value 10 (cycles) |
| |
| <ul> |
| <li>Select the access element <em>Path1</em></li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Read Latency > Discrete Value Constant</strong></li> |
| <li>Select the created item</li> |
| <li>Set the <strong>Value</strong> property to <em>20</em></li> |
| </ul></li> |
| <li>Add a constant write latency to “Path1” with value 10 (cycles)<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add an access element from “Core2” to “GlobalMemory”</p> |
| |
| <ul> |
| <li>Create an access element named <em>Path2</em></li> |
| <li>Add a constant read latency to “Path2” with value 20 (cycles)</li> |
| <li>Add a constant write latency to “Path2” with value 20 (cycles)<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Optional: Feel free to add more memory elements to represent local memories |
| located at the cores with the proper latency access paths</p></li> |
| </ol> |
| |
| <p>At this point you should get a contents tree which looks like that:<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/15-hardware.png" class="img-responsive"></p> |
| |
| <hr /> |
| |
| <h2 id="create-simple-os-model">Create simple OS model</h2> |
| |
| <p>Create a simple OS model, containing schedulers for both cores.</p> |
| |
| <ol> |
| <li><p>Right-click on the AMALTHEA model on the tree editor then select the menu item <strong>New Child > Os Model</strong>.<br /> |
| It will add a child node named <strong>Operating System</strong> to the model</p></li> |
| |
| <li><p>Add a new operating system with name <em>Default</em></p> |
| |
| <ul> |
| <li>Select the <em>Operating System</em> node previously created</li> |
| <li>Right-click on the item then select the menu item <strong>New Child > Operating Systems > Operating System</strong>.</li> |
| <li>Name the created item <em>Default</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a Task Scheduler named <em>Scheduler1</em></p> |
| |
| <ul> |
| <li>Right-click on the <em>Default</em> operating system |
| then select the menu item <strong>New Child > Task Scheduler</strong></li> |
| <li>Name the created item <em>Scheduler1</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add scheduling algorithm OSEK to <em>Scheduler1</em></p> |
| |
| <ul> |
| <li>Right-click on the <em>Scheduler1</em> task scheduler |
| then select the menu item <strong>New Child > Scheduling Algorithm > OSEK</strong><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a Task Scheduler named <em>Scheduler2</em></p></li> |
| |
| <li><p>Add a scheduling algorithm OSEK to <em>Scheduler2</em></p></li> |
| |
| <li><p>Add a Scheduling HW Unit to <em>Scheduler2</em></p></li> |
| </ol> |
| |
| <p>At this point you should get a contents tree which looks like that:<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/16-operating-system.png" class="img-responsive"></p> |
| |
| <hr /> |
| |
| <h2 id="add-timing-requirements-for-tasks">Add timing requirements for Tasks</h2> |
| |
| <p>Adding some deadline informations to the already created tasks.</p> |
| |
| <blockquote> |
| <p>Note: Doing this in a separate file, it can easy be reused for other models if the names of the tasks are the same!</p> |
| </blockquote> |
| |
| <ol> |
| <li><p>Create a new AMALTHEA model “constraints.amxmi” in the same folder as the already created AMALTHEA meta model</p> |
| |
| <ul> |
| <li>Select the folder <em>model1</em> created during the paragraph <strong>General model setup</strong></li> |
| <li>Right-click on the mouse and select the menu item <strong>New > AMALTHEA Model</strong></li> |
| <li>Press <strong>Next</strong> to define the associated model file naming it <em>constraints.amxmi</em><br /> |
| then press on <strong>Finish</strong> to create an empty model.<br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Right-click on the AMALTHEA model on the tree editor then select the menu item <strong>New Child > Constraints Model</strong>.<br /> |
| It will add a child node named <strong>Constraints</strong> to the model</p></li> |
| |
| <li><p>Add a new Process Requirement named <em>DeadlineTask1</em></p> |
| |
| <ul> |
| <li>Select the <strong>Constraints</strong> item on the tree editor</li> |
| <li>Right-click on the mouse and select the menu item <strong>New Child > Requirements > Process Requirement</strong></li> |
| <li>Name the created item <em>DeadlineTask1</em></li> |
| <li>Set the <strong>Process</strong> property to the value <em>Task Task1</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a Time Requirement Limit to “DeadlineTask1” Process Requirement</p> |
| |
| <ul> |
| <li>Select the Process Requirement named <em>DeadlineTask1 Task1</em></li> |
| <li>Right-click on the mouse and select the menu item <strong>New Child > Limit > Time Requirement Limit</strong></li> |
| <li>Set the <strong>Limit Type</strong> property to <em>UpperLimit</em></li> |
| <li>Set the <strong>Metric</strong> property to <em>ResponseTime</em></li> |
| <li>Add limit to TimeRequirementLimit |
| |
| <ul> |
| <li>Right-click the mouse on the <em>ResponseTime</em> item and select the menu item <strong>New Child > Limit Value</strong></li> |
| <li>Set the <strong>Unit</strong> property of the new item to <em>ms</em></li> |
| <li>Set the <strong>Value</strong> property to <em>10</em><br /> |
| <br /></li> |
| </ul></li> |
| </ul></li> |
| |
| <li><p>Add a new Process Requirement named <em>DeadlineTask2</em> and set its <strong>Process</strong> property to the value <em>Task Task2</em></p></li> |
| |
| <li><p>Add a Time Requirement Limit to “DeadlineTask2” Process Requirement</p> |
| |
| <ul> |
| <li>Set the <strong>Limit Type</strong> property to <em>UpperLimit</em></li> |
| <li>Set the <strong>Metric</strong> property to <em>ResponseTime</em></li> |
| <li>Add limit to the Time Requirement Limit |
| |
| <ul> |
| <li>Right-click the mouse on the <em>ResponseTime</em> item and select the menu item <strong>New Child > Limit Value</strong></li> |
| <li>Set the <strong>Unit</strong> property of the new item to <em>ms</em></li> |
| <li>Set the <strong>Value</strong> property to <em>15</em></li> |
| </ul></li> |
| </ul></li> |
| |
| <li><p>Add a new Process Requirement named <em>DeadlineTask3</em> and set its <strong>Process</strong> property to the value <em>Task Task3</em></p></li> |
| |
| <li><p>Add a Time Requirement Limit to “DeadlineTask3” Process Requirement</p> |
| |
| <ul> |
| <li>Set the <strong>Limit Type</strong> property to <em>UpperLimit</em></li> |
| <li>Set the <strong>Metric</strong> property to <em>ResponseTime</em></li> |
| <li>Add limit to the Time Requirement Limit |
| |
| <ul> |
| <li>Right-click the mouse on the <em>ResponseTime</em> item and select the menu item <strong>New Child > Limit Value</strong></li> |
| <li>Set the <strong>Unit</strong> property of the new item to <em>ms</em></li> |
| <li>Set the <strong>Value</strong> property to <em>15</em></li> |
| </ul></li> |
| </ul></li> |
| </ol> |
| |
| <p>At this point your model should look like this:<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/17-constraints.png" class="img-responsive"></p> |
| |
| <hr /> |
| |
| <h2 id="add-mapping-information-of-sw-elements-to-hardware">Add mapping information of SW elements to hardware</h2> |
| |
| <p>The mapping represents which software elements are mapped to dedicated hardware elements.</p> |
| |
| <blockquote> |
| <p>Note: The mapping is separated into an extra file, which makes it easier to replace or change a mapping!</p> |
| </blockquote> |
| |
| <ol> |
| <li><p>Create a new AMALTHEA model “mapping.amxmi” in the same folder as the already created AMALTHEA meta model</p></li> |
| |
| <li><p>Right-click on the AMALTHEA model on the tree editor then select the menu item <strong>New Child > Mapping Model</strong>.<br /> |
| It will add a child node named <strong>Mapping</strong> to the model</p></li> |
| |
| <li><p>Add a <strong>Scheduler Allocation</strong> element Scheduler1 -> Core1</p> |
| |
| <ul> |
| <li>Right-click the mouse on the <em>Mapping</em> item and select<br /> |
| the menu item <strong>New Child > Scheduler Allocation</strong></li> |
| <li>Set the <strong>Scheduler</strong> property to <em>Task Scheduler Scheduler1</em><br /></li> |
| <li>Set the <strong>Responsibility</strong> property to <em>Processing Unit Core1</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Add a <strong>Scheduler Allocation</strong> element Scheduler2 -> Core2</p></li> |
| |
| <li><p>Add a <strong>Task Allocation</strong> element Task1 -> Scheduler1<br /> |
| set the <strong>Task</strong> to <em>Task1</em> and the <strong>Scheduler</strong> to <em>Scheduler1</em></p></li> |
| |
| <li><p>Add a <strong>Task Allocation</strong> element Task2 -> Scheduler1</p></li> |
| |
| <li><p>Add a <strong>Task Allocation</strong> element Task3 -> Scheduler2</p></li> |
| |
| <li><p>Add a <strong>Memory Mapping</strong> at least for all Labels to map them to <em>GlobalMemory</em></p> |
| |
| <ul> |
| <li>Right-click the mouse on the <em>Mapping</em> item and select<br /> |
| the menu item <strong>New Child > Memory Mapping</strong></li> |
| <li>Set the <strong>Abstract Element</strong> property to <em>Label LabelA</em></li> |
| <li>Set the <strong>Memory</strong> property to <em>Memory GlobalMemory</em></li> |
| <li>Repeat the last 3 steps steps for the <em>Label LabelB</em><br /> |
| <br /></li> |
| </ul></li> |
| |
| <li><p>Optional: If more memories are available, make a proper assignment to other memory elements.</p></li> |
| </ol> |
| |
| <p>At this point your model should look like this:<br /> |
| <br /> |
| <img src="https://www.eclipse.org/app4mc/images/gs-create-model/18-mapping.png" class="img-responsive"></p> |
| |
| <hr /> |
| |
| <h2 id="solution">Solution</h2> |
| |
| <p>The solution for this exercise is available in this plugin: <a href="https://www.eclipse.org/app4mc/models/org.eclipse.app4mc.amalthea.solution1.zip">org.eclipse.app4mc.amalthea.solution1</a></p> |
| |
| |
| </div> |
| </main> |
| |
| |
| <p id="back-to-top"> |
| <a class="visible-xs" href="#top">Back to the top</a> |
| </p> |
| <footer id="solstice-footer"> |
| <div class="container"> |
| <div class="row"> |
| <section class="col-sm-6 hidden-print" id="footer-eclipse-foundation"> |
| <h2 class="section-title">Eclipse Foundation</h2> |
| <ul class="nav"> |
| <li><a href="https://www.eclipse.org/org/">About Us</a></li> |
| <li><a href="https://www.eclipse.org/org/foundation/contact.php">Contact Us</a></li> |
| <li><a href="https://www.eclipse.org/donate">Donate</a></li> |
| <li><a href="https://www.eclipse.org/org/documents/">Governance</a></li> |
| <li><a href="https://www.eclipse.org/artwork/">Logo and Artwork</a></li> |
| <li><a href="https://www.eclipse.org/org/foundation/directors.php">Board of Directors</a></li> |
| </ul> |
| </section> |
| <section class="col-sm-6 hidden-print" id="footer-legal"> |
| <h2 class="section-title">Legal</h2> |
| <ul class="nav"> |
| <li><a href="https://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li> |
| <li><a href="https://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li> |
| <li><a href="https://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li> |
| <li><a href="https://www.eclipse.org/legal/epl-2.0/">Eclipse Public License</a></li> |
| <li><a href="https://www.eclipse.org/legal/">Legal Resources </a></li> |
| </ul> |
| </section> |
| <section class="col-sm-6 hidden-print" id="footer-useful-links"> |
| <h2 class="section-title">Useful Links</h2> |
| <ul class="nav"> |
| <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li> |
| <li><a href="//help.eclipse.org/">Documentation</a></li> |
| <li><a href="https://www.eclipse.org/contribute/">How to Contribute</a></li> |
| <li><a href="https://www.eclipse.org/mail/">Mailing Lists</a></li> |
| <li><a href="https://www.eclipse.org/forums/">Forums</a></li> |
| <li><a href="//marketplace.eclipse.org">Marketplace</a></li> |
| </ul> |
| </section> |
| <section class="col-sm-6 hidden-print" id="footer-other"> |
| <h2 class="section-title">Other</h2> |
| <ul class="nav"> |
| <li><a href="https://www.eclipse.org/ide/">IDE and Tools</a></li> |
| <li><a href="https://www.eclipse.org/projects">Community of Projects</a></li> |
| <li><a href="https://www.eclipse.org/org/workinggroups/">Working Groups</a></li> |
| <li><a href="https://www.eclipse.org/org/research/">Research@Eclipse</a></li> |
| <li><a href="https://status.eclipse.org">Service Status</a></li> |
| </ul> |
| </section> |
| <div class="col-sm-24 margin-top-20"> |
| <div class="row"> |
| <div id="copyright" class="col-md-16"> |
| <p id="copyright-text">Copyright © Eclipse Foundation, Inc. All Rights Reserved.</p> |
| </div> |
| <div class="col-md-8 social-media"> |
| <ul class="list-inline"> |
| <li> |
| <a class="social-media-link fa-stack fa-lg" href="https://twitter.com/EclipseFdn"> |
| <i class="fa fa-circle-thin fa-stack-2x"></i> |
| <i class="fa fa-twitter fa-stack-1x"></i> |
| </a> |
| </li> |
| <li> |
| <a class="social-media-link fa-stack fa-lg" href="https://plus.google.com/+Eclipse"> |
| <i class="fa fa-circle-thin fa-stack-2x"></i> |
| <i class="fa fa-google-plus fa-stack-1x"></i> |
| </a> |
| </li> |
| <li> |
| <a class="social-media-link fa-stack fa-lg" href="https://www.facebook.com/eclipse.org"> |
| <i class="fa fa-circle-thin fa-stack-2x"></i> |
| <i class="fa fa-facebook fa-stack-1x"></i> |
| </a> |
| </li> |
| <li> |
| <a class="social-media-link fa-stack fa-lg" href="https://www.youtube.com/user/EclipseFdn"> |
| <i class="fa fa-circle-thin fa-stack-2x"></i> |
| <i class="fa fa-youtube fa-stack-1x"></i> |
| </a> |
| </li> |
| <li> |
| <a class="social-media-link fa-stack fa-lg" href="https://www.linkedin.com/company/eclipse-foundation"> |
| <i class="fa fa-circle-thin fa-stack-2x"></i> |
| <i class="fa fa-linkedin fa-stack-1x"></i> |
| </a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| <a href="#" class="scrollup">Back to the top</a> |
| </div> |
| </div> |
| </footer> |
| |
| <script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/main.min.js"></script> |
| |
| </body> |
| </html> |
| </body> |
| </html> |
| |