{"id":59538,"date":"2023-10-11T07:00:09","date_gmt":"2023-10-11T11:00:09","guid":{"rendered":"http:\/\/pappp.net\/?guid=7467a7642ffad7dea21db570f947049f"},"modified":"2023-10-11T07:00:09","modified_gmt":"2023-10-11T11:00:09","slug":"tiny-linux-on-a-no-mmu-risc-v-microcontroller","status":"publish","type":"post","link":"https:\/\/pappp.net\/?p=59538","title":{"rendered":"Tiny Linux on a No-MMU RISC-V Microcontroller"},"content":{"rendered":"<p class=\"syndicated-attribution\">Source: <a href=\"https:\/\/hackaday.com\/2023\/10\/11\/tiny-linux-on-a-no-mmu-risc-v-microcontroller\/\">Hack a Day<\/a><\/p>\n<div style=\"background-color : #fff7d5;\n\t\t\tborder-width : 1px; padding : 5px; border-style : dashed; border-color : #e7d796;margin-bottom : 1em; color : #9a8c59;\">Article note: I went to find documentation about the current state of nommu Linux systems the other day and things are _rough_ documentation-wise and mostly alarmingly out of date. This (and its sister article) actually strings together all the details in a comprehensible way, which is super nice.<\/div><div><img src=\"https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-thumbnail.jpg?w=800\" alt=\"\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-thumbnail.jpg 800w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-thumbnail.jpg?resize=250,141 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-thumbnail.jpg?resize=400,225 400w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-thumbnail.jpg 800w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-thumbnail.jpg?resize=250,141 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-thumbnail.jpg?resize=400,225 400w\" sizes=\"(max-width: 800px) 100vw, 800px\" referrerpolicy=\"no-referrer\"\/><\/div><p>In the vast majority of cases, running a Linux-based operating system involves a pretty powerful processor with a lot of memory on hand, and perhaps most importantly, a memory management unit, or MMU. This is a piece of hardware which manages virtual memory, seamlessly giving each process its own memory sandbox in which it shouldn&rsquo;t be able to rain on its neighbours&rsquo; parade. If there&rsquo;s no MMU all is not lost though, and [Uros Popovic] gives us <a href=\"https:\/\/popovicu.com\/posts\/789-kb-linux-without-mmu-riscv\/\"  rel=\"noopener noreferrer\">a complete guide to building the MMU-less &mu;Clinux on a RISC-V microcontroller<\/a>.<\/p>\n<p>The result is something of a Linux-from-scratch for this platform and kernel flavour, but it&rsquo;s so much more than that aside from its step-by-step explanation. It&rsquo;s probable that most of us have heard something of &mu;Clinux but have little direct knowledge of it, and he leads us through its workings as well as its limitations. As examples, standard ELF binaries aren&rsquo;t suitable for these systems, and programmers need to use memory-safe techniques.<\/p>\n<p>Whether or not any of you will run with this guide and build a tiny MMU-less Linux system, anything which expands our knowledge on the subject has to be a good thing. it&rsquo;s not the first time we&rsquo;ve seen a RISC-V microcontroller turned to this task, with<a href=\"https:\/\/hackaday.com\/2023\/04\/23\/run-linux-by-emulating-risc-v-on-a-risc-v-microcontroller\/\" rel=\"noopener noreferrer\"> a nifty trick to get round the limitations of a particular architecture<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>In the vast majority of cases, running a Linux-based operating system involves a pretty powerful pro&#8230;<\/p>\n<p> <a href=\"https:\/\/pappp.net\/?p=59538\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[226],"tags":[],"class_list":["post-59538","post","type-post","status-publish","format-standard","hentry","category-news-2"],"_links":{"self":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/59538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=59538"}],"version-history":[{"count":0,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/59538\/revisions"}],"wp:attachment":[{"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=59538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=59538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=59538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}