{"id":1537,"date":"2018-11-04T08:33:53","date_gmt":"2018-11-04T07:33:53","guid":{"rendered":"http:\/\/section5.ch\/?p=1537"},"modified":"2018-12-18T12:12:37","modified_gmt":"2018-12-18T11:12:37","slug":"masocist-opensource-0-2-release","status":"publish","type":"post","link":"https:\/\/section5.ch\/index.php\/2018\/11\/04\/masocist-opensource-0-2-release\/","title":{"rendered":"MaSoCist opensource 0.2 release"},"content":{"rendered":"<p>I&#8217;ve finally got to release the opensource tree of our <a href=\"https:\/\/section5.ch\/index.php\/documentation\/masocist-soc\/\">SoC builder environment<\/a> on github:<\/p>\n<p><a href=\"https:\/\/github.com\/hackfin\/MaSoCist\">https:\/\/github.com\/hackfin\/MaSoCist<\/a><\/p>\n<p>Changes in this release:<\/p>\n<ul>\n<li>Active support for Papilio and Breakout MachXO2 board had been dropped<\/li>\n<li>Very basic support for the <a href=\"https:\/\/github.com\/stnolting\/neo430\">neo430<\/a> (msp430 compatible) added, see Docker notes below<\/li>\n<li>Includes a non-configureable basic &#8216;eval edition&#8217; (in VHDL only) of our pipelined <a href=\"\/index.php\/2015\/06\/24\/zpu-next-generation-pipelined\/\">ZPUng<\/a> core<\/li>\n<li>Basic Virtual board support (using ghdlex co-simulation extensions)<\/li>\n<li>Docker files and recipes included<\/li>\n<\/ul>\n<h3>Docker environment<\/h3>\n<p><a href=\"https:\/\/www.docker.com\/\">Docker<\/a> containers are in my opinion the optimum for automated deployment and for testing different configurations. To stay close to actual GHDL simulator development, the container is based on the <strong> ghdl\/ghdl:buster-gcc-7.2.0<\/strong> edition.<\/p>\n<p>Here&#8217;s a short howto to set up an environment ready to play with. You can try this online at<\/p>\n<p><a href=\"https:\/\/labs.play-with-docker.com\"> https:\/\/labs.play-with-docker.com<\/a>, for example.<\/p>\n<p>Just register yourself a Docker account, login and start playing in your online sandbox.<\/p>\n<p>If you want to skip the build, you can use the precompiled docker image by running<\/p>\n<pre>docker run -it -v\/root:\/usr\/local\/src hackfin\/masocist<\/pre>\n<p>and skip (3.) below.<\/p>\n<p>You&#8217;ll need to build and copy some files from contrib\/docker to the remote Docker machine instance.<\/p>\n<ol>\n<li>Run &#8216;make dist&#8217; inside contrib\/docker, this will create a file <strong>masocist_sfx.sh<\/strong><\/li>\n<li>Copy <strong>Dockerfile<\/strong> and <strong>init-pty.sh<\/strong> to Docker playground by dragging the file onto the shell window<\/li>\n<li>Build the container and run it:\n<pre>docker build -t masocist .\r\n\r\ndocker run -it -v\/root:\/usr\/local\/src masocist<\/pre>\n<\/li>\n<li>Copy <strong>masocist_sfx.sh<\/strong> to the Docker machine and run, inside the running container&#8217;s home dir (\/home\/masocist):\n<pre>sudo sh \/usr\/local\/src\/masocist_sfx.sh<\/pre>\n<\/li>\n<li>Now pull and build all necessary packages:\n<pre>make all run<\/pre>\n<\/li>\n<li>If nothing went wrong, the simulation for the neo430 CPU will be built and started with a virtual UART and SPI simulation. A minicom terminal will connect to that UART and you&#8217;ll be able to speak to the neo430 &#8216;bare metal&#8217; shell, for example, you can dump the content of the virtual SPI flash by:\n<pre>s 0 1\r\n<\/pre>\n<p><b>Note: This can be very slow<\/b>. On a docker playground virtual machine, it can take up to a minute until the prompt appears, depending on the server load.\n<\/li>\n<\/ol>\n<h3>Development details<\/h3>\n<p>The simulation is a cycle accurate model of your user program, which you can of course modify. During the build process, i.e. when you run &#8216;make sim&#8217; in the masocist(-opensource) directory, the msp430-gcc compiler builds the software C code from the sw\/ directory and places the code into memory according to the linker script in sw\/ldscripts\/neo430. This results in a ELF binary, which is again converted into a VHDL initialization file for the target. Then the simulation is built.<\/p>\n<p>The linker script is, however very basic. Since a somewhat different, automatically generated memory map is used at this experimental stage, all peripherals are configured in the XML device description at hdl\/plat\/minimal.xml, however the data memory configuration (&#8216;dmem&#8217; entity) does <strong>not<\/strong> automatically adapt the linker script.<\/p>\n<p>Turning this into a fully configurable solution is left to be done.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve finally got to release the opensource tree of our SoC builder environment on github: https:\/\/github.com\/hackfin\/MaSoCist Changes in this release: Active support for Papilio and Breakout MachXO2 board had been dropped Very basic support for the neo430 (msp430 compatible) added, see Docker notes below Includes a non-configureable basic &#8216;eval edition&#8217; (in VHDL only) of our [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23],"tags":[],"_links":{"self":[{"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/posts\/1537"}],"collection":[{"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/comments?post=1537"}],"version-history":[{"count":6,"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/posts\/1537\/revisions"}],"predecessor-version":[{"id":1603,"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/posts\/1537\/revisions\/1603"}],"wp:attachment":[{"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/media?parent=1537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/categories?post=1537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/section5.ch\/index.php\/wp-json\/wp\/v2\/tags?post=1537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}