{"id":5336,"date":"2026-04-18T09:56:08","date_gmt":"2026-04-18T07:56:08","guid":{"rendered":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?p=5336"},"modified":"2026-04-18T10:05:11","modified_gmt":"2026-04-18T08:05:11","slug":"one-rom-praxisbeispiel","status":"publish","type":"post","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?p=5336","title":{"rendered":"One ROM &#8211; Praxisbeispiel: Zwei Firmware-Versionen"},"content":{"rendered":"<h1 data-section-id=\"qdkugw\" data-start=\"215\" data-end=\"288\">One ROM \u2013 Praxisbeispiel: Zwei Firmware-Versionen in einem Retro-System<\/h1>\n<p data-start=\"290\" data-end=\"408\">Nach den bisherigen Grundlagen und den Custom Images schauen wir uns diesmal ein konkretes Beispiel aus der Praxis an.<\/p>\n<p data-start=\"410\" data-end=\"505\">\ud83d\udc49 Ziel: <strong data-start=\"419\" data-end=\"505\">Zwei unterschiedliche ROM-Inhalte in einem Ger\u00e4t nutzen \u2013 umschaltbar per Hardware<\/strong><\/p>\n<p data-start=\"507\" data-end=\"578\">Das ist einer der F\u00e4lle, in denen One ROM seine St\u00e4rken voll ausspielt.<\/p>\n<hr data-start=\"580\" data-end=\"583\" \/>\n<h2 data-section-id=\"1r3rms8\" data-start=\"585\" data-end=\"605\">Ausgangssituation<\/h2>\n<p data-start=\"607\" data-end=\"715\">Viele Retro-Systeme (z. B. alte Computer, Steuerungen oder Spielekonsolen) arbeiten mit fest verbauten ROMs.<\/p>\n<p data-start=\"717\" data-end=\"735\">Typische Probleme:<\/p>\n<ul data-start=\"737\" data-end=\"867\">\n<li data-section-id=\"mvcwjh\" data-start=\"737\" data-end=\"776\">Original-ROM ist schwer zu bekommen<\/li>\n<li data-section-id=\"14hy0ks\" data-start=\"777\" data-end=\"810\">EPROMs m\u00fcssen gebrannt werden<\/li>\n<li data-section-id=\"18if2x1\" data-start=\"811\" data-end=\"867\">mehrere Versionen lassen sich nur umst\u00e4ndlich testen<\/li>\n<\/ul>\n<p data-start=\"869\" data-end=\"907\">\ud83d\udc49 Genau hier kommt One ROM ins Spiel.<\/p>\n<hr data-start=\"909\" data-end=\"912\" \/>\n<h2 data-section-id=\"1nsy09v\" data-start=\"914\" data-end=\"934\">Ziel des Projekts<\/h2>\n<p data-start=\"936\" data-end=\"966\">In diesem Beispiel wollen wir:<\/p>\n<ul data-start=\"968\" data-end=\"1079\">\n<li data-section-id=\"6qjacw\" data-start=\"968\" data-end=\"998\">Original-Firmware behalten<\/li>\n<li data-section-id=\"19vsy8h\" data-start=\"999\" data-end=\"1031\">modifizierte Firmware testen<\/li>\n<li data-section-id=\"1yh9rij\" data-start=\"1032\" data-end=\"1079\">zwischen beiden Versionen umschalten k\u00f6nnen<\/li>\n<\/ul>\n<p data-start=\"1081\" data-end=\"1114\">Und das Ganze ohne EPROM-Brenner.<\/p>\n<hr data-start=\"1116\" data-end=\"1119\" \/>\n<h2 data-section-id=\"19t2amn\" data-start=\"1121\" data-end=\"1142\">Ben\u00f6tigte Hardware<\/h2>\n<ul data-start=\"1144\" data-end=\"1274\">\n<li data-section-id=\"8ushwq\" data-start=\"1144\" data-end=\"1188\">One ROM (Fire oder Ice \u2013 je nach Aufbau)<\/li>\n<li data-section-id=\"j835tg\" data-start=\"1189\" data-end=\"1223\">Zielsystem mit gesockeltem ROM<\/li>\n<li data-section-id=\"ww3172\" data-start=\"1224\" data-end=\"1274\">optional: Jumper oder Schalter f\u00fcr Umschaltung<\/li>\n<\/ul>\n<hr data-start=\"1276\" data-end=\"1279\" \/>\n<h2 data-section-id=\"1kn5rwn\" data-start=\"1281\" data-end=\"1312\">Vorbereitung der ROM-Dateien<\/h2>\n<div class=\"no-scrollbar flex min-h-36 flex-nowrap gap-0.5 overflow-auto sm:gap-1 sm:overflow-hidden xl:min-h-44 mt-1 mb-5 [&amp;:not(:first-child)]:mt-4\">\n<div class=\"border-token-border-default relative w-32 shrink-0 overflow-hidden rounded-xl border-[0.5px] md:shrink max-h-64 sm:w-[calc((100%-0.5rem)\/3)] rounded-s-xl\">\n<div class=\"group\/search-image @container\/search-image relative rounded-[inherit] h-full w-full\"><span style=\"font-size: 16px;\">Du brauchst zwei Dateien:<\/span><\/div>\n<\/div>\n<\/div>\n<ol data-start=\"1383\" data-end=\"1496\">\n<li data-section-id=\"fvu19c\" data-start=\"1383\" data-end=\"1440\"><strong data-start=\"1386\" data-end=\"1402\">Original-ROM<\/strong><br data-start=\"1402\" data-end=\"1405\" \/>\u2192 ausgelesen oder aus dem Netz<\/li>\n<li data-section-id=\"upufd4\" data-start=\"1442\" data-end=\"1496\"><strong data-start=\"1445\" data-end=\"1466\">Modifiziertes ROM<\/strong><br data-start=\"1466\" data-end=\"1469\" \/>\u2192 gepatcht \/ angepasst<\/li>\n<\/ol>\n<p data-start=\"1498\" data-end=\"1506\">Wichtig:<\/p>\n<ul data-start=\"1508\" data-end=\"1580\">\n<li data-section-id=\"13imztx\" data-start=\"1508\" data-end=\"1548\">beide m\u00fcssen die gleiche Gr\u00f6\u00dfe haben<\/li>\n<li data-section-id=\"11flycu\" data-start=\"1549\" data-end=\"1580\">typischerweise .bin-Dateien<\/li>\n<\/ul>\n<p data-start=\"1582\" data-end=\"1665\">\ud83d\udc49 Falls die Gr\u00f6\u00dfe nicht passt, kannst du sie mit Tools einfach anpassen (padding).<\/p>\n<hr data-start=\"1667\" data-end=\"1670\" \/>\n<h2 data-section-id=\"1po3w6n\" data-start=\"1672\" data-end=\"1697\">Custom Image erstellen<\/h2>\n<p data-start=\"1699\" data-end=\"1754\">Jetzt geht\u2019s ins Web-Interface: <a class=\"decorated-link\" href=\"https:\/\/onerom.org\/web\/\" target=\"_new\" rel=\"noopener\" data-start=\"1731\" data-end=\"1754\">https:\/\/onerom.org\/web\/<\/a><\/p>\n<h3 data-section-id=\"1a7l885\" data-start=\"1756\" data-end=\"1780\">Schritt 1: Verbinden<\/h3>\n<ul data-start=\"1781\" data-end=\"1826\">\n<li data-section-id=\"smattr\" data-start=\"1781\" data-end=\"1804\">One ROM anschlie\u00dfen<\/li>\n<li data-section-id=\"15qgtmh\" data-start=\"1805\" data-end=\"1826\">\u201eConnect\u201c klicken<\/li>\n<\/ul>\n<hr data-start=\"1828\" data-end=\"1831\" \/>\n<h3 data-section-id=\"5uyfc2\" data-start=\"1833\" data-end=\"1870\">Schritt 2: Custom Image ausw\u00e4hlen<\/h3>\n<p data-start=\"1872\" data-end=\"1923\">Im Bereich <strong data-start=\"1883\" data-end=\"1913\">Programming \u2192 Custom Image<\/strong> wechseln.<\/p>\n<hr data-start=\"1925\" data-end=\"1928\" \/>\n<h3 data-section-id=\"1oquzvo\" data-start=\"1930\" data-end=\"1962\">Schritt 3: ROM-Slots belegen<\/h3>\n<div class=\"no-scrollbar flex min-h-36 flex-nowrap gap-0.5 overflow-auto sm:gap-1 sm:overflow-hidden xl:min-h-44 mt-1 mb-5 [&amp;:not(:first-child)]:mt-4\">\n<div class=\"border-token-border-default relative w-32 shrink-0 overflow-hidden rounded-xl border-[0.5px] md:shrink max-h-64 sm:w-[calc((100%-0.5rem)\/3)] rounded-s-xl\">\n<div class=\"group\/search-image @container\/search-image relative rounded-[inherit] h-full w-full\"><span style=\"font-size: 16px;\">Jetzt legst du zwei Slots an:<\/span><\/div>\n<\/div>\n<\/div>\n<ul data-start=\"2037\" data-end=\"2101\">\n<li data-section-id=\"e8choq\" data-start=\"2037\" data-end=\"2066\"><strong data-start=\"2039\" data-end=\"2064\">Slot 0 \u2192 Original-ROM<\/strong><\/li>\n<li data-section-id=\"ul9715\" data-start=\"2067\" data-end=\"2101\"><strong data-start=\"2069\" data-end=\"2099\">Slot 1 \u2192 modifiziertes ROM<\/strong><\/li>\n<\/ul>\n<p data-start=\"2103\" data-end=\"2118\">Beide bekommen:<\/p>\n<ul data-start=\"2120\" data-end=\"2165\">\n<li data-section-id=\"ku9jh4\" data-start=\"2120\" data-end=\"2137\">gleiche Gr\u00f6\u00dfe<\/li>\n<li data-section-id=\"1cnqvjr\" data-start=\"2138\" data-end=\"2165\">gleiche Adresszuordnung<\/li>\n<\/ul>\n<hr data-start=\"2167\" data-end=\"2170\" \/>\n<h3 data-section-id=\"od6472\" data-start=\"2172\" data-end=\"2212\">Schritt 4: Umschaltung konfigurieren<\/h3>\n<p data-start=\"2214\" data-end=\"2245\">Jetzt kommt der spannende Teil.<\/p>\n<p data-start=\"2247\" data-end=\"2304\">Du definierst, <strong data-start=\"2262\" data-end=\"2303\">wie zwischen den ROMs gewechselt wird<\/strong>:<\/p>\n<ul data-start=\"2306\" data-end=\"2374\">\n<li data-section-id=\"q00u9v\" data-start=\"2306\" data-end=\"2329\">\u00fcber einen GPIO-Pin<\/li>\n<li data-section-id=\"bi7r5o\" data-start=\"2330\" data-end=\"2374\">oder eine Steuerleitung (z. B. Axx \/ CS)<\/li>\n<\/ul>\n<p data-start=\"2376\" data-end=\"2436\">\ud83d\udc49 Einfachste Variante:<br \/>\nEin Pin wird als \u201eSelect\u201c verwendet:<\/p>\n<ul data-start=\"2437\" data-end=\"2471\">\n<li data-section-id=\"5rozwa\" data-start=\"2437\" data-end=\"2453\">LOW \u2192 Slot 0<\/li>\n<li data-section-id=\"1y49swx\" data-start=\"2454\" data-end=\"2471\">HIGH \u2192 Slot 1<\/li>\n<\/ul>\n<hr data-start=\"2473\" data-end=\"2476\" \/>\n<h3 data-section-id=\"1ncvu9d\" data-start=\"2478\" data-end=\"2500\">Schritt 5: Flashen<\/h3>\n<ul data-start=\"2502\" data-end=\"2578\">\n<li data-section-id=\"15zgg8j\" data-start=\"2502\" data-end=\"2523\">\u201eProgram\u201c klicken<\/li>\n<li data-section-id=\"dazd98\" data-start=\"2524\" data-end=\"2578\">warten, bis \u201eErasing\u201c und \u201eProgramming\u201c durch sind<\/li>\n<\/ul>\n<p data-start=\"2580\" data-end=\"2590\">\ud83d\udc49 Fertig.<\/p>\n<hr data-start=\"2592\" data-end=\"2595\" \/>\n<h2 data-section-id=\"1fo2id6\" data-start=\"2597\" data-end=\"2621\">Einbau ins Zielsystem<\/h2>\n<p data-start=\"2623\" data-end=\"2678\">Jetzt wird das One ROM wie ein normales ROM eingesetzt:<\/p>\n<ul data-start=\"2680\" data-end=\"2745\">\n<li data-section-id=\"hyp3rw\" data-start=\"2680\" data-end=\"2705\">in den Sockel stecken<\/li>\n<li data-section-id=\"1llz4cf\" data-start=\"2706\" data-end=\"2745\">auf richtige Ausrichtung achten (!)<\/li>\n<\/ul>\n<p data-start=\"2747\" data-end=\"2779\">Falls du einen Umschalter nutzt:<\/p>\n<ul data-start=\"2781\" data-end=\"2856\">\n<li data-section-id=\"157btua\" data-start=\"2781\" data-end=\"2820\">Schalter zwischen GND und Signalpin<\/li>\n<li data-section-id=\"14cg7m2\" data-start=\"2821\" data-end=\"2856\">ggf. Pull-Up\/Pull-Down beachten<\/li>\n<\/ul>\n<hr data-start=\"2858\" data-end=\"2861\" \/>\n<h2 data-section-id=\"1x83231\" data-start=\"2863\" data-end=\"2874\">Testlauf<\/h2>\n<p data-start=\"2876\" data-end=\"2916\">Beim Einschalten kannst du jetzt testen:<\/p>\n<ul data-start=\"2918\" data-end=\"2990\">\n<li data-section-id=\"ethq5s\" data-start=\"2918\" data-end=\"2952\">Stellung 1 \u2192 Original-Firmware<\/li>\n<li data-section-id=\"1w7ijyx\" data-start=\"2953\" data-end=\"2990\">Stellung 2 \u2192 modifizierte Version<\/li>\n<\/ul>\n<p data-start=\"2992\" data-end=\"3090\">\ud83d\udc49 Das Umschalten funktioniert je nach System sogar im laufenden Betrieb \u2013 aber vorsichtig testen!<\/p>\n<hr data-start=\"3092\" data-end=\"3095\" \/>\n<h2 data-section-id=\"1cfcjm4\" data-start=\"3097\" data-end=\"3120\">Typische Anwendungen<\/h2>\n<p data-start=\"3122\" data-end=\"3157\">Dieses Setup ist extrem vielseitig:<\/p>\n<ul data-start=\"3159\" data-end=\"3283\">\n<li data-section-id=\"1del613\" data-start=\"3159\" data-end=\"3189\">Debug vs. Release-Firmware<\/li>\n<li data-section-id=\"13skjr8\" data-start=\"3190\" data-end=\"3225\">verschiedene Software-Versionen<\/li>\n<li data-section-id=\"16h94hu\" data-start=\"3226\" data-end=\"3245\">Sprachversionen<\/li>\n<li data-section-id=\"131lp0c\" data-start=\"3246\" data-end=\"3283\">Test- und Experimentierumgebungen<\/li>\n<\/ul>\n<hr data-start=\"3285\" data-end=\"3288\" \/>\n<h2 data-section-id=\"16n5p5t\" data-start=\"3290\" data-end=\"3307\">H\u00e4ufige Fehler<\/h2>\n<h3 data-section-id=\"aj64di\" data-start=\"3309\" data-end=\"3335\">\u274c System startet nicht<\/h3>\n<ul data-start=\"3336\" data-end=\"3401\">\n<li data-section-id=\"a0rk62\" data-start=\"3336\" data-end=\"3368\">falscher ROM-Typ eingestellt<\/li>\n<li data-section-id=\"ur8zyz\" data-start=\"3369\" data-end=\"3401\">Adressleitungen passen nicht<\/li>\n<\/ul>\n<h3 data-section-id=\"1o3y8pb\" data-start=\"3403\" data-end=\"3424\">\u274c falsche Inhalte<\/h3>\n<ul data-start=\"3425\" data-end=\"3483\">\n<li data-section-id=\"1wny8w\" data-start=\"3425\" data-end=\"3450\">ROM falsch zugeordnet<\/li>\n<li data-section-id=\"1qtjunc\" data-start=\"3451\" data-end=\"3483\">Image nicht korrekt erstellt<\/li>\n<\/ul>\n<h3 data-section-id=\"taqkfr\" data-start=\"3485\" data-end=\"3521\">\u274c Umschaltung funktioniert nicht<\/h3>\n<ul data-start=\"3522\" data-end=\"3570\">\n<li data-section-id=\"15vkeoq\" data-start=\"3522\" data-end=\"3546\">falscher Pin gew\u00e4hlt<\/li>\n<li data-section-id=\"xarqvz\" data-start=\"3547\" data-end=\"3570\">kein sauberer Pegel<\/li>\n<\/ul>\n<p data-start=\"3572\" data-end=\"3627\">\ud83d\udc49 Tipp: Erst mit nur einem ROM testen, dann erweitern.<\/p>\n<hr data-start=\"3629\" data-end=\"3632\" \/>\n<h2 data-section-id=\"o2isue\" data-start=\"3634\" data-end=\"3661\">Erfahrung aus der Praxis<\/h2>\n<p data-start=\"3663\" data-end=\"3720\">Gerade beim Experimentieren ist das ein riesiger Vorteil:<\/p>\n<p data-start=\"3722\" data-end=\"3729\">Fr\u00fcher:<\/p>\n<ul data-start=\"3730\" data-end=\"3794\">\n<li data-section-id=\"taqlgz\" data-start=\"3730\" data-end=\"3747\">EPROM brennen<\/li>\n<li data-section-id=\"1b28cc9\" data-start=\"3748\" data-end=\"3761\">einsetzen<\/li>\n<li data-section-id=\"nc9jp1\" data-start=\"3762\" data-end=\"3772\">testen<\/li>\n<li data-section-id=\"11oziuo\" data-start=\"3773\" data-end=\"3794\">wieder rausnehmen<\/li>\n<li data-section-id=\"11oziuo\" data-start=\"3773\" data-end=\"3794\">EPROM mit UV-L\u00f6schger\u00e4t l\u00f6schen<\/li>\n<\/ul>\n<p data-start=\"3796\" data-end=\"3802\">Heute:<\/p>\n<ul data-start=\"3803\" data-end=\"3848\">\n<li data-section-id=\"207cdp\" data-start=\"3803\" data-end=\"3825\">im Browser klicken<\/li>\n<li data-section-id=\"wfr2c3\" data-start=\"3826\" data-end=\"3837\">flashen<\/li>\n<li data-section-id=\"c2ttj7\" data-start=\"3838\" data-end=\"3848\">fertig<\/li>\n<\/ul>\n<p data-start=\"3850\" data-end=\"3900\">\ud83d\udc49 Das spart enorm Zeit \u2013 und schont die Hardware.<\/p>\n<hr data-start=\"3902\" data-end=\"3905\" \/>\n<h2 data-section-id=\"x8o1ad\" data-start=\"3907\" data-end=\"3915\">Fazit<\/h2>\n<p data-start=\"3917\" data-end=\"3982\">Dieses Beispiel zeigt sehr gut, warum One ROM so interessant ist:<\/p>\n<ul data-start=\"3984\" data-end=\"4086\">\n<li data-section-id=\"d7iwlh\" data-start=\"3984\" data-end=\"4023\">ersetzt mehrere EPROMs gleichzeitig<\/li>\n<li data-section-id=\"1koi3l\" data-start=\"4024\" data-end=\"4055\">erm\u00f6glicht schnelles Testen<\/li>\n<li data-section-id=\"3lgpdv\" data-start=\"4056\" data-end=\"4086\">reduziert Hardware-Aufwand<\/li>\n<\/ul>\n<p data-start=\"4088\" data-end=\"4144\">Und das alles mit einem kleinen Board und einem Browser.<\/p>\n<hr data-start=\"4146\" data-end=\"4149\" \/>\n<h2 data-section-id=\"p7qrot\" data-start=\"4151\" data-end=\"4162\">Ausblick<\/h2>\n<p data-start=\"4164\" data-end=\"4188\">M\u00f6gliche n\u00e4chste Themen:<\/p>\n<ul data-start=\"4190\" data-end=\"4348\">\n<li data-section-id=\"10hef26\" data-start=\"4190\" data-end=\"4229\">Mehr als zwei ROMs (Bank-Switching)<\/li>\n<li data-section-id=\"qfijxg\" data-start=\"4230\" data-end=\"4261\">komplexe Mapping-Strategien<\/li>\n<li data-section-id=\"1dp5ku2\" data-start=\"4262\" data-end=\"4294\">Timing-Probleme und L\u00f6sungen<\/li>\n<li data-section-id=\"1344odb\" data-start=\"4295\" data-end=\"4348\">konkrete Systeme (z. B. C64, Arcade-Boards, etc.)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>One ROM \u2013 Praxisbeispiel: Zwei Firmware-Versionen in einem Retro-System Nach den bisherigen Grundlagen und den Custom Images schauen wir uns diesmal ein konkretes Beispiel aus der Praxis an. \ud83d\udc49 Ziel: Zwei unterschiedliche ROM-Inhalte in einem Ger\u00e4t nutzen \u2013 umschaltbar per &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?p=5336\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5336","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5336"}],"version-history":[{"count":2,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5336\/revisions"}],"predecessor-version":[{"id":5338,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5336\/revisions\/5338"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}