GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - QQxiaoming/quard_star_tutorial: This project aims to build an Embedded Linux System, in order to analyze the chip from the power-on execution of the first instruction to the entire system running, based on qemu simulator development board. 本项目旨在真正从0开始构建嵌入式linux系统,为了剖析芯片从上电开始执行第一条指令到整个系统运行,基于qemu定制模拟器开发板。

BranchesTags
Open more actions menu

Latest commit

 

History

673 Commits
673 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
build_rootfs
build_rootfs
 
 
busybox-1.33.2
busybox-1.33.2
 
 
dts
dts
 
 
linux-6.1.11
linux-6.1.11
 
 
lowlevelboot
lowlevelboot
 
 
mask_rom
mask_rom
 
 
opensbi-1.2
opensbi-1.2
 
 
qemu-8.0.0
qemu-8.0.0
 
 
quard_star_tools
quard_star_tools
 
 
target_driver_module
target_driver_module
 
 
target_root_app
target_root_app
 
 
target_root_script
target_root_script
 
 
target_user_app/qt_example
target_user_app/qt_example
 
 
trusted_domain
trusted_domain
 
 
tutorial
tutorial
 
 
u-boot-2023.04
u-boot-2023.04
 
 
update_tools
update_tools
 
 
.gitignore
.gitignore
 
 
.readthedocs.yaml
.readthedocs.yaml
 
 
CHANGELOG.md
CHANGELOG.md
 
 
DEVELOPNOTE.md
DEVELOPNOTE.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
README_zh_CN.md
README_zh_CN.md
 
 
build.sh
build.sh
 
 
config_tap.sh
config_tap.sh
 
 
config_vcan.sh
config_vcan.sh
 
 
docs
docs
 
 
kgdb.script
kgdb.script
 
 
run.bat
run.bat
 
 
run.sh
run.sh
 
 
update_tools.sh
update_tools.sh
 
 

Repository files navigation

Linux ci Windows ci Macos ci Android ci IOS ci Documentation Status CodeFactor GitHub tag (latest SemVer) GitHub All Releases GitHub stars GitHub forks Gitee stars Gitee forks discord

Building Embedded Linux System based on QEMU

English | 简体中文

Logo

video.webm

This project aims to build an Embedded Linux System, in order to analyze the chip from the power-on execution of the first instruction to the entire system running, based on a customized qemu simulator development board.

What is Quard Star?

Quard Star is the name of the hardware board that we simulate using qemu. It is a RISC-V processor with various peripherals and controllers. We will use this board to learn how to build and run an embedded Linux system from scratch.

Hardware Architecture

Hardware Architecture

Software Flow

Software Flow

Memory Distribution

Memory Distribution

Features

  • Customized qemu simulator with Quard Star board support
  • Low-level boot code and mask ROM
  • OpenSBI and U-Boot bootloader
  • Linux kernel and device tree
  • Busybox-based root filesystem
  • Qt-based graphical user interface
  • Trusted domain and secure boot
  • Debugging tools and scripts

Pre-requisites

To build and run this project, you will need the following tools:

  • gcc/g++
  • make/cmake
  • git
  • qemu
  • dtc
  • python3

You can install them using your package manager. For example, on Ubuntu 20.04, you can run:

sudo apt-get update
sudo apt install ninja-build pkg-config libglib2.0-dev libpixman-1-dev libgtk-3-dev libcap-ng-dev libattr1-dev libsdl2-dev device-tree-compiler bison flex gperf intltool mtd-utils libpulse-dev libalsa-ocaml-dev libsdl2-dev libslirp-dev libvirglrenderer-dev libsdl2-image-dev

Installation

To install this project, you can clone this repository using git:

git clone https://github.com/QQxiaoming/quard_star_tutorial.git

Then, you can run the build.sh script to compile the qemu simulator and other components:

cd quard_star_tutorial
./build.sh all all

This will generate the output directory with all the binaries and files needed to run the project.

Usage

To run the project, you can use the run.sh script:

./run.sh graphic

This will launch the qemu simulator with the Quard Star board and load the Linux system. You should see a graphical user interface on a new window.

You can also use some command-line options to customize your run. For example:

./run.sh nographic

For more details on how to use these options, please refer to the tutorial files.

Tutorial

This project comes with a series of tutorial files that explain each step of building and running an embedded Linux system based on QEMU. You can find them in the tutorial directory. They are available in Chinese languages.

The tutorial files cover the following topics:

  • Setting up the QEMU environment
  • Writing low-level boot code and mask ROM
  • Using OpenSBI and U-Boot bootloader
  • Compiling Linux kernel and device tree
  • Creating root filesystem and boot image
  • Developing graphical user interface with Qt
  • Implementing trusted domain and secure boot
  • Debugging with gdb and kgdb

You can also access the tutorial online on my blog or on read the docs.

Contributing

This project is open source and welcomes contributions from anyone who is interested in learning or teaching embedded Linux system development. If you want to contribute, please follow these steps:

  1. Fork this repository on GitHub.
  2. Create a new branch for your feature or bugfix.
  3. Make your changes and commit them with clear messages.
  4. Push your branch to your forked repository.
  5. Create a pull request from your branch to the main repository.
  6. Wait for review and feedback.

Please make sure your code follows the coding style and conventions of this project. Also, please write comments and documentation for your code.

License

This project uses some open source projects as components or references. I would like to thank and acknowledge their authors and contributors for their great work. so the newly added codes of each part respect the original project license. The rest of the original code open source license is BSD-3-Clause License. See the LICENSE file for more details.

Contact

If you have any questions, suggestions, or feedback about this project, please feel free to contact me at [email protected] or leave a comment on my blog.

Further Reading

If you want to read more about the development process and challenges of this project, you can check out my development note file DEVELOPNOTE.md. It contains some insights and tips on how I built and debugged this project.😎

Note: This project also has an experimental branch called next-kernel that uses the latest Linux kernel from linux-next. It is used to learn and test new features and functions. It might be unstable or incompatible with some components. You can switch to this branch using git checkout next-kernel if you are interested, but please be careful and report any issues or bugs you encounter.😉

Thanks

I would like to acknowledge AI tool (New Bing) for assisting me with writing part of this readme file.

Star History

Star History Chart

Donate

If you like this project, you can donate to the author to support the development of the project.

paypal alipay wechat
paypal alipay wechat

About

This project aims to build an Embedded Linux System, in order to analyze the chip from the power-on execution of the first instruction to the entire system running, based on qemu simulator development board. 本项目旨在真正从0开始构建嵌入式linux系统,为了剖析芯片从上电开始执行第一条指令到整个系统运行,基于qemu定制模拟器开发板。

quard-star-tutorial.rtfd.io

Topics

embedded-linuxqemuqemu-riscvriscvriscv-emulatorriscv-linuxriscv-simulatortutorials

Resources

Readme
License
Activity

Stars

458 stars

Watchers

12 watching

Forks

91 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.