{"id":1011,"date":"2026-05-03T17:31:59","date_gmt":"2026-05-04T00:31:59","guid":{"rendered":"https:\/\/sysprogs.com\/tutorials\/?p=1011"},"modified":"2026-05-03T18:44:02","modified_gmt":"2026-05-04T01:44:02","slug":"creating-embedded-projects-on-linux","status":"publish","type":"post","link":"https:\/\/sysprogs.com\/CodeVROOM\/tutorials\/stm32\/linux\/","title":{"rendered":"Creating Embedded Projects on Linux"},"content":{"rendered":"<p>This tutorial shows how to create a basic STM32 project on Linux using CodeVROOM.<\/p>\n<p>Before you begin, install the following packages:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Package<\/td>\n<td>Name in APT<\/td>\n<\/tr>\n<tr>\n<td>GCC for ARM<\/td>\n<td>gcc-arm-none-eabi<\/td>\n<\/tr>\n<tr>\n<td>Ninja<\/td>\n<td>ninja-build<\/td>\n<\/tr>\n<tr>\n<td>CMake<\/td>\n<td>cmake<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Also, make sure your system has a functioning xz executable, since CodeVROOM uses it to unpack the device packages.<\/p>\n<p>Once all the prerequisites have been fulfilled, <a href=\"https:\/\/sysprogs.com\/CodeVROOM\/download\/\">download<\/a> the latest CodeVROOM archive and unpack it.<\/p>\n<ol>\n<li>CodeVROOM for Linux is distributed in <strong>.tar.xz<\/strong> files that include all the necessary binaries. To start it, run CodeVROOM-&lt;platform&gt;:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-run.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1013\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-run.png\" alt=\"\" width=\"750\" height=\"465\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-run.png 750w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/01-run-300x186.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/li>\n<li>CodeVROOM does not need installation, so you can click &#8220;Run without installing&#8221;, or install it to any location of your choice:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-start.png\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1014\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-start.png\" alt=\"\" width=\"834\" height=\"483\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-start.png 834w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-start-300x174.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/02-start-768x445.png 768w\" sizes=\"(max-width: 834px) 100vw, 834px\" \/><\/a><\/li>\n<li>The installation only takes a few seconds and simply copies the files to another location and creates shortcuts. Once installed, or ran in-place, the main window will look like this:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-ide.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1015\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-ide.png\" alt=\"\" width=\"1322\" height=\"848\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-ide.png 1322w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-ide-300x192.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-ide-1024x657.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/03-ide-768x493.png 768w\" sizes=\"(max-width: 1322px) 100vw, 1322px\" \/><\/a><\/li>\n<li>Select File-&gt;New-&gt;Project or use the toolbar command to open the project wizard selector. Select the CMake project wizard:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-new.png\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1016\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-new.png\" alt=\"\" width=\"842\" height=\"453\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-new.png 842w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-new-300x161.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/04-new-768x413.png 768w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/a><\/li>\n<li>Proceed with the default choices for the project type:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-select.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1017\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-select.png\" alt=\"\" width=\"828\" height=\"646\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-select.png 828w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-select-300x234.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/05-select-768x599.png 768w\" sizes=\"(max-width: 828px) 100vw, 828px\" \/><\/a><\/li>\n<li>The next page allows selecting a toolchain to use. As of version 0.5, CodeVROOM only supports the embedded ARM toolchain, and it needs to be pre-installed via a package manager. Once it is selected, CodeVROOM will show a list of devices compatible with the toolchain:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-device.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1018\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-device.png\" alt=\"\" width=\"822\" height=\"645\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-device.png 822w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-device-300x235.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/06-device-768x603.png 768w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>Select the device and click &#8220;Install&#8221; to proceed with the installation:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-install-1.png\"><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1019\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-install-1.png\" alt=\"\" width=\"822\" height=\"652\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-install-1.png 822w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-install-1-300x238.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/07-install-1-768x609.png 768w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>Once the package is installed, CodeVROOM will show the configuration options for the device. Proceed with the default ones:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-configure.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1020\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-configure.png\" alt=\"\" width=\"820\" height=\"645\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-configure.png 820w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-configure-300x236.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/08-configure-768x604.png 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/a><\/li>\n<li>The next page allows choosing between basic project samples and vendor-supplied templates. Select &#8220;STM32CubeMX Samples&#8221;:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-sample.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1021\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-sample.png\" alt=\"\" width=\"824\" height=\"651\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-sample.png 824w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-sample-300x237.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/09-sample-768x607.png 768w\" sizes=\"(max-width: 824px) 100vw, 824px\" \/><\/a><\/li>\n<li>Pick the <strong>FatFS_USBDisk<\/strong> sample and click &#8220;Finish&#8221;:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-cubemx.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1022\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-cubemx.png\" alt=\"\" width=\"824\" height=\"646\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-cubemx.png 824w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-cubemx-300x235.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/10-cubemx-768x602.png 768w\" sizes=\"(max-width: 824px) 100vw, 824px\" \/><\/a><\/li>\n<li>CodeVROOM will create and load the project. You can build it via the Project-&gt;Build Workspace command:<a href=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-build-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1023\" src=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-build-1.png\" alt=\"\" width=\"1319\" height=\"842\" srcset=\"https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-build-1.png 1319w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-build-1-300x192.png 300w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-build-1-1024x654.png 1024w, https:\/\/sysprogs.com\/tutorials\/wp-content\/uploads\/2026\/05\/11-build-1-768x490.png 768w\" sizes=\"(max-width: 1319px) 100vw, 1319px\" \/><\/a><\/li>\n<\/ol>\n<p>Now that you have created the project, follow <a href=\"https:\/\/sysprogs.com\/CodeVROOM\/tutorials\/cpp\/editing\/\">this tutorial<\/a> to try some basic editing techniques.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to create a basic STM32 project on Linux using CodeVROOM. Before you begin, install the following<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[77,74],"_links":{"self":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/1011"}],"collection":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/comments?post=1011"}],"version-history":[{"count":2,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/1011\/revisions"}],"predecessor-version":[{"id":1024,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/posts\/1011\/revisions\/1024"}],"wp:attachment":[{"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/media?parent=1011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/categories?post=1011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sysprogs.com\/tutorials\/wp-json\/wp\/v2\/tags?post=1011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}