{"id":7360,"date":"2018-02-25T15:46:05","date_gmt":"2018-02-25T15:46:05","guid":{"rendered":"http:\/\/blog.bachi.net\/?p=7360"},"modified":"2018-05-30T18:39:39","modified_gmt":"2018-05-30T18:39:39","slug":"raspberry-pi-bootloader","status":"publish","type":"post","link":"https:\/\/blog.bachi.net\/?p=7360","title":{"rendered":"Raspberry Pi Bootloader"},"content":{"rendered":"<p><em>Der Raspberry Pi nutzt einen komplizierten mehrstufigen Startvorgang mit propriet\u00e4ren Blobs.<\/em><\/p>\n<p><em>Raspberry Pi boards require a closed-source binary to boot. I understand it this is handled by VideoCore IV GPU,  and so  far the Raspberry Pi foundation are not release source code for the bootloader, possibly due to legal reason (e.g. NDA to Broadcom).<\/em><\/p>\n<p><a href=\"https:\/\/raspberrypi.stackexchange.com\/questions\/10489\/how-does-raspberry-pi-boot\">How does Raspberry Pi boot?<\/a><br \/>\n<a href=\"https:\/\/raspberrypi.stackexchange.com\/questions\/10442\/what-is-the-boot-sequence\">What is the boot sequence?<\/a><br \/>\n<a href=\"https:\/\/docs.sel4.systems\/Hardware\/Rpi3.html\">Raspberry PI 3 Model B: SD card setup<\/a><\/p>\n<ul>\n<li>Raspberry Pi Bootloader <code>bootcode.bin<\/code> (Closed-Source, propriet\u00e4ren Firmware von Broadcom)<\/li>\n<li>Raspberry Pi Bootloader <code>rpi-open-firmware<\/code> (Open-Source)<\/li>\n<li>RPi U-Boot Bootloader<\/li>\n<\/ul>\n<ul>\n<li>BCM2835<\/li>\n<li>ArduCAM<\/li>\n<li>ODROID-W<\/li>\n<li>Hardkernel<\/li>\n<li>VideoCore IV GPU<\/li>\n<\/ul>\n<table>\n<tbody>\n<tr>\n<td>\n<p>Stage <\/p>\n<\/td>\n<td>\n<p>Filename <\/p>\n<\/td>\n<td>\n<p>Description <\/p>\n<\/td>\n<td>\n<p>Source <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>FSBL <\/p>\n<\/td>\n<td>\n<p>&#8211; <\/p>\n<\/td>\n<td>\n<p>Mounts SD and loads SSBL <\/p>\n<\/td>\n<td>\n<p>ROM <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>SSBL <\/p>\n<\/td>\n<td>\n<p>bootcode.bin <\/p>\n<\/td>\n<td>\n<p>Loads GPU firmware and boots GPU <\/p>\n<\/td>\n<td>\n<p><a class=\"https\" href=\"https:\/\/github.com\/raspberrypi\/firmware\/tree\/master\/boot\">https:\/\/github.com\/raspberrypi\/firmware\/tree\/master\/boot<\/a> <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>GPU firmware <\/p>\n<\/td>\n<td>\n<p>start.elf or recovery.elf <\/p>\n<\/td>\n<td>\n<p>Loads CPU bootloader and boots CPU <\/p>\n<\/td>\n<td>\n<p><a class=\"https\" href=\"https:\/\/github.com\/raspberrypi\/firmware\/tree\/master\/boot\">https:\/\/github.com\/raspberrypi\/firmware\/tree\/master\/boot<\/a> <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"3\">\n<p>User code Usually the Linux kernel, but could also be u-boot <\/p>\n<\/td>\n<td>\n<p>u-boot.bin <\/p>\n<\/td>\n<td>\n<p>u-boot <\/p>\n<\/td>\n<td>\n<p> You can either <a class=\"https\" href=\"https:\/\/sel4.systems\/Info\/Docs\/u-boot-working-rpi3-32bit-v2017.11.bin\">use our prebuilt U-boot which works<\/a>, or compile your own using the instructions above <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>config.txt<\/p>\n<\/td>\n<td>\n<p>u-boot parameters <\/p>\n<\/td>\n<td>\n<p>Add enable_uart=1 and kernel=u-boot.bin to the bottom of config.txt (Sample: <a class=\"http\" href=\"http:\/\/codepad.org\/ykVYFSyP\">http:\/\/codepad.org\/ykVYFSyP<\/a>) <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>uboot.env <\/p>\n<\/td>\n<td>\n<p>u-boot saved environment <\/p>\n<\/td>\n<td>\n<p>Generated by u-boot (default environment) bootcmd copied to bootcmd_orig bootcmd and bootdelay removed <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><\/h2>\n<p><a href=\"https:\/\/www.golem.de\/news\/bootcode-freie-firmware-fuer-raspberry-pi-startet-linux-kernel-1701-125606.html\">Freie Firmware f\u00fcr Raspberry Pi startet Linux-Kernel<\/a><br \/>\n<a href=\"https:\/\/hackaday.com\/2017\/01\/14\/blob-less-raspberry-pi-linux-is-a-step-closer\/\">Blob-less Raspberry Pi Linux Is A Step Closer<\/a><br \/>\n<a href=\"https:\/\/www.cnx-software.com\/2016\/07\/19\/raspberry-pi-bootloader-license-preludes-it-to-run-on-competing-broadcom-bcm283x-boards\/\">Raspberry Pi Bootloader License Precludes it to Run on Competing Broadcom BCM283x Boards<\/a><br \/>\n<a href=\"https:\/\/www.cnx-software.com\/2016\/05\/16\/preliminary-open-source-bootloader-for-raspberry-pi-boards-released\/\">Preliminary Open Source Bootloader for Raspberry Pi Boards Released<\/a><br \/>\n<a href=\"http:\/\/crna.cc\/\">Kristina Brooks: Blobless Linux on Raspberry Pi (rpi-open-firmware)<\/a><\/p>\n<h4>github<\/h4>\n<p><a href=\"https:\/\/github.com\/christinaa\/rpi-open-firmware\">github.com\/christinaa\/rpi-open-firmware<\/a>, Open source VPU side bootloader for Raspberry Pi<\/p>\n<h2>RPi U-Boot<\/h2>\n<p><a href=\"https:\/\/elinux.org\/RPi_U-Boot\">RPi U-Boot<\/a><br \/>\n<a href=\"https:\/\/raspberrypi.stackexchange.com\/questions\/74896\/u-boot-for-raspberry-pi-3\">u-boot for Raspberry Pi 3<\/a><br \/>\n<a href=\"https:\/\/blog.christophersmart.com\/2016\/10\/27\/building-and-booting-upstream-linux-and-u-boot-for-raspberry-pi-23-arm-boards\/\">Building and Booting Upstream Linux and U-Boot for Raspberry Pi 2\/3 ARM Boards<\/a>, With proprietary bootloader files <code>bootcode.bin, fixup.dat, start.elf<\/code><\/p>\n<p><a href=\"https:\/\/wiki.sel4.systems\/Hardware\/Rpi3\">seL4Wiki \/ Hardware \/ Rpi3<\/a><br \/>\n<a href=\"http:\/\/sel4.systems\/\">The seL4 Microkernel<\/a><\/p>\n<h2>Boot Process<\/h2>\n<p><a href=\"http:\/\/www.lions-wing.net\/maker\/raspberry-1\/boot.html\">The Linux Boot Process<\/a> (SysVinit vs. upstart vs. systemd)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Raspberry Pi nutzt einen komplizierten mehrstufigen Startvorgang mit propriet\u00e4ren Blobs. Raspberry Pi boards require a closed-source binary to boot. I understand it this is handled by VideoCore IV GPU, and so far the Raspberry Pi foundation are not release source code for the bootloader, possibly due to legal reason (e.g. NDA to Broadcom). How [&hellip;]<\/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-7360","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/7360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7360"}],"version-history":[{"count":15,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/7360\/revisions"}],"predecessor-version":[{"id":7888,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/7360\/revisions\/7888"}],"wp:attachment":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}