Skill you need

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


You need these skillsets in order to join our development:

  1. Java coding skill
  2. Maven
  3. Netbeans
    1. Package project into an executable jar and run it by “java -jar xx.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
  4. 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.
  5. Gitlab
  6. 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
  7. 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 calculate, addition and substraction
      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
      3. Conditional branch
      4. Understand stack
      5. Call and return, understand frame point , 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 of all bytes in memory
      7. RISC-V interrupt and exception
      8. RISC-V paging and memory protection
      9. Floating Point
      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 type 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