This post will describe the skill you need to join the development, I separate it into different sections by the project.


  1. Java coding skill
    1. Object oriented programming
    2. Maven
    3. How pom.xml work
    4. How work
    5. How gitlab CI/CD publish to
  2. Netbeans
    1. Package project into an executable jar and run it by “java -jar xxx.jar”
    2. Learn how to use Apache Commons Library
      1. Common-cli
      2. Common-io
      3. Checkout all libraries in and try to understand what are they
  3. Git
    1. Know how to clone/commit/add/push
    2. Try to create a project in GitLab, clone it, add some files, and push them back.
    3. If fork another project, how to get update from original repo
  4. Gitlab
    1. Learn basic usage, such as view commit, checkout older version
    2. Learn how our CI/CD work
  5. Antlr and
    1. Run the examples in the first few chapters
    2. Create a maven project and let it compile the grammar for you
    3. Learn how to use our antlr plugin and and
  6. RISC-V computer architecture
    1. Understand what is it
    2. Try to write some assembly code and
    3. Build RISC-V toolchain
    4. Run it
      1. Do simple maths calculations, addition and subtraction
      2. Jump , use below commands to compile program
        1. GCC
        2. GAS
          1. Understand RISC-V official syntax and AT&T syntax
          2. Inline assembly
        3. LD
          1. Learn how linker script work
      3. Conditional branch
      4. Understand stack
      5. Call and return, understand frame pointer , write a simple program that main() -> func1() -> func2() , tell me show RISC-V distinguish the frame area among func1() and func2()
      6. Load and Store, write a simple program that sum all bytes in memory
      7. RISC-V interrupt and exception, make sure know what registers controlling the interrupt
      8. RISC-V paging and memory protection , do address translate by hand
      9. Floating Point
        1. IEEE 754, learn how to encode and decode by hand
        2. What RISC-V instruction can do floating point operations, write some examples
      10. Virtio
    5. Read the Unprivileged spec
    6. Try to read the Privileged Spec, as an undergraduate student, you won’t be able to practice it, just read as much as you can


  1. Prepare all the above skillsets
  2. Learn how to encode and decode RISC-V instruction by hand
    1. Understand how many different types of instruction
    2. Handwriting encode and decode instructions
  3. Learn how to write Makefile
    1. Create a simple Makefile yourself
    2. Understand our Makefile and
  4. Learn GCC toolchain
    1. GCC
    2. LD
    3. Objdump
    4. Readelf
    5. Autotools

Operating System

  1. Bootloader
  2. ABI
  3. Standard C library, newlib
  4. Linker script
  5. Executable Format
  6. Dwarf
  7. Interrupt
  8. File System
  9. Kernel Structure
    1. Paging
    2. Task state structure
    3. Memory protection
    4. I/O


  1. Verilog
  2. Pipeline design