Skip to content

cyberkaida/bootloaders-with-kaida

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bootloaders with Kaida!

Welcome to Bootloaders with Kaida! This is a free class on writing low level bootloader code and implementing secure boot. This is useful not only for people writing bootloaders, but also for people curious about how computers work or people who want to try low level development.

In this class you will learn about bootloaders, how secure boot is typically implemented and about how to research hardware and develop a bootloader!

To run easily this class has some expectations. If you don't feel confident in any of these areas, there are links to some resources that will help below!

Don't be afraid if you are not an expert in all these areas! The class material includes a lot of external links to help refresh your memory or learn more!

  • Familiarity with the C programming language12
    • Many bootloaders are written in C, so we will use C for our examples and exercises
    • You should know concepts such as pointers3, arrays4, functions5, heap6 and stack7 allocation
  • Some basic knowledge of assembly8
    • We will be writing some basic assembly to move values between registers9, set constants, etc
    • If you can write a for loop in assembly10 you will be OK!
    • If you are familiar with another architecture and not ARM, you will be OK!

The class is designed for the curious! You will find two kinds of links in the notes.

  • Inline links like this are for things you should read or understand for the material. You usually don't need to read the entire thing, but the link is to something you will probably need.
  • The other kind of link is a footnote like this11, these are things that will improve your knowledge or might be interesting, but are not required reading.

If you find something interesting please look through the footnotes or ask questions! Be curious and brave, these things are hard, there are no bad questions!

I have streamed most of the development of this class on my Twitch channel, if you wonder "how can anyone know this?" you can watch as I learned these things to put together this class and see the good and bad days.

This class has been a passion project for me, and I hope you make some supportive friends, learn something interesting and have fun!

  • 💜 サイバーカイダ

Let's go!

  1. ./01-prep-work
  2. ./02-running-code

Reference material

Some reference material to help you get started!

Footnotes

  1. Effective C - A book on C

  2. Essential C - An online C primer

  3. Pointers

  4. Arrays

  5. Functions

  6. Heap allocation

  7. Stack allocation

  8. ARM Assembler in Raspberry Pi - A guide to ARM assembly using the Raspberry Pi

  9. ARM Assembler in Raspberry Pi - Registers

  10. ARM Assembler in Raspberry Pi - Control Structures

  11. A footnote is for things you might be interested in but is not required to read!