|
|
@@ -58,6 +58,41 @@ Embedded libc, a libc library adapted for embedded systems and bare metal enviro
|
|
|
|
|
|
# Quick Start
|
|
|
|
|
|
+## mlibc Library Compilation
|
|
|
+
|
|
|
+### Development Environment
|
|
|
+
|
|
|
+For simple C library compilation, the development environment is relatively straightforward; make and the appropriate toolchain are sufficient.
|
|
|
+
|
|
|
+> make + toolchain
|
|
|
+
|
|
|
+### Compilation Steps
|
|
|
+
|
|
|
+1. Configure the environment variables corresponding to the toolchain
|
|
|
+(Please refer to the detailed steps in the "QEMU-Bare Metal Development" section below)
|
|
|
+
|
|
|
+**Compile the C library**
|
|
|
+
|
|
|
+1. Navigate to the `mlibc` folder, open the command line, and use make to compile the static library.
|
|
|
+
|
|
|
+```
|
|
|
+# Here, we use the ARM architecture static library as an example
|
|
|
+make mlibc ARCH=arm
|
|
|
+```
|
|
|
+
|
|
|
+2. A static library named `libmlibc.a` will be generated in the `mlibc/build/arm` directory. To integrate it with the toolchain, you can rename the file to `libc.a` for use.
|
|
|
+
|
|
|
+**Compile crt0**
|
|
|
+
|
|
|
+1. Navigate to the `mlibc` folder, open the command line, and use make to compile crt0.
|
|
|
+
|
|
|
+```
|
|
|
+# Here, we use the ARM architecture crt0 as an example
|
|
|
+make crt0 ARCH=arm
|
|
|
+```
|
|
|
+
|
|
|
+2. The generated file will be located in `mlibc/build/$(ARCH)/crtobj`, named `crt0.o`.
|
|
|
+
|
|
|
## Mlibc Development/Test Environment Setup
|
|
|
|
|
|
### Running RT-Thread on QEMU
|
|
|
@@ -66,9 +101,9 @@ Embedded libc, a libc library adapted for embedded systems and bare metal enviro
|
|
|
|
|
|
Tutorial for setting up the environment on Windows:
|
|
|
|
|
|
-https://github.com/RT-Thread/rt-thread/blob/master/documentation/quick-start/quick_start_qemu/quick_start_qemu_windows.md
|
|
|
+**Note**: The original RT-Thread documentation link is outdated. Please refer to the official RT-Thread website (https://www.rt-thread.org/) or repository (https://github.com/RT-Thread/rt-thread) for the latest documentation on setting up the development environment.
|
|
|
|
|
|
-By following this tutorial, you can run RT-Thread in a Windows environment.
|
|
|
+By following the official tutorials, you can run RT-Thread in a Windows environment.
|
|
|
|
|
|
### vexpress-a9 + RT-Thread
|
|
|
|
|
|
@@ -88,13 +123,27 @@ Navigate to the `rt-thread\bsp\qemu-vexpress-a9` folder, open **env**, and enter
|
|
|
- system packages
|
|
|
- Select the sixth option from the bottom: `mlibc: Embedded libc, especially for RISC-V`
|
|
|
|
|
|
-After finishing, you can exit the configuration page and enter **scons -j12** in the command line to compile.
|
|
|
+After finishing the menuconfig, you need to download the mlibc package before compiling:
|
|
|
+
|
|
|
+```bash
|
|
|
+# Load the RT-Thread environment
|
|
|
+. ~/.env/env.sh
|
|
|
+
|
|
|
+# Update packages to download mlibc
|
|
|
+pkgs --update
|
|
|
+```
|
|
|
+
|
|
|
+This will download mlibc to `bsp/qemu-vexpress-a9/packages/mlibc-latest`.
|
|
|
+
|
|
|
+Then you can enter **scons -j12** in the command line to compile.
|
|
|
+
|
|
|
+**Note**: There are known compilation issues with vexpress-a9 + RT-Thread integration. This may be due to compatibility issues with the current RT-Thread version. Please refer to the RT-Thread repository for updates.
|
|
|
|
|
|
### Spark + RT-Thread
|
|
|
|
|
|
#### Development Environment
|
|
|
|
|
|
-For those unsure where to download the source code, you can refer to the above Windows environment setup tutorial.
|
|
|
+For those unsure where to download the source code, you can refer to the official RT-Thread documentation.
|
|
|
|
|
|
Navigate to the `rt-thread\bsp\stm32\stm32f407-rt-spark` directory, then open **env** and enter **menuconfig** in the command line to enter the configuration interface.
|
|
|
|
|
|
@@ -120,6 +169,18 @@ Navigate to the `rt-thread\bsp\stm32\stm32f407-rt-spark` directory, then open **
|
|
|
- system packages
|
|
|
- Select the sixth option from the bottom: mlibc: Embedded libc, especially for RISC-V
|
|
|
|
|
|
+After finishing the menuconfig, you need to download the mlibc package before compiling:
|
|
|
+
|
|
|
+```bash
|
|
|
+# Load the RT-Thread environment
|
|
|
+. ~/.env/env.sh
|
|
|
+
|
|
|
+# Update packages to download mlibc
|
|
|
+pkgs --update
|
|
|
+```
|
|
|
+
|
|
|
+This will download mlibc to the packages directory.
|
|
|
+
|
|
|
### QEMU-Bare Metal Development
|
|
|
|
|
|
#### Development Environment
|
|
|
@@ -151,71 +212,38 @@ source ~/.bashrc
|
|
|
|
|
|
**Windows:** Open PowerShell and replace `YOUR_PATH_TO_TOOLCHAIN` with the corresponding path of your toolchain.
|
|
|
```
|
|
|
-[System.Environment]::SetEnvironmentVariable("YOUR_PATH_TO_TOOLCHAIN", "YOUR_PATH_TO_TOOLCHAIN", "User")
|
|
|
+[System.Environment]::SetEnvironmentVariable("MLIBC_TOOLCHAIN", "YOUR_PATH_TO_TOOLCHAIN", "User")
|
|
|
```
|
|
|
**\#**:After the configuration is completed, you need to restart the terminal for the changes to take effect.
|
|
|
|
|
|
-2. Navigate to the `mlibc/helloworld/qemu/{qemu-device}` folder and open the command line.
|
|
|
+2. Navigate to the `mlibc` root folder and open the command line.
|
|
|
|
|
|
```
|
|
|
# Here, we use qemu-vexpress-a9 as an example
|
|
|
-make QEMU_BOARD=qemu-vexpress-a9 ARCH=arm
|
|
|
+make qemu-hello QEMU_BOARD=qemu-vexpress-a9 ARCH=arm
|
|
|
```
|
|
|
|
|
|
-After executing the command, an executable file named qemu-vexpress-a9.elf will be generated in the `mlibc/helloworld/qemu/qemu-vexpress-a9` folder.
|
|
|
+After executing the command, an executable file named qemu-vexpress-a9.elf will be generated in the `mlibc/build/arm/qemu/qemu-vexpress-a9` folder.
|
|
|
|
|
|
-3. Run the script `qemu.bat` in the corresponding folder.
|
|
|
+3. Run the script `qemu.bat` in the corresponding folder under `mlibc/helloworld/qemu/{qemu-device}`.
|
|
|
|
|
|
```
|
|
|
+# Navigate to the qemu device folder
|
|
|
+cd helloworld/qemu/qemu-vexpress-a9
|
|
|
+
|
|
|
# Enter the following command in the command line
|
|
|
qemu.bat
|
|
|
```
|
|
|
|
|
|
Information for each virtual environment is as follows:
|
|
|
|
|
|
-| Filename | Virtual Device | Switch Command |
|
|
|
-| ----------------- | -------------- | -------------------------------------- |
|
|
|
-| qemu-vexpress-a9 | vexpress-a9 | make QEMU_BOARD=qemu-vexpress-a9 ARCH=arm |
|
|
|
-| qemu-mps3-an536 | mps3-an536 | make QEMU_BOARD=qemu-mps3-an536 ARCH=arm |
|
|
|
-| qemu-virt-aarch64 | virt-aarch64 | make QEMU_BOARD=qemu-virt-aarch64 ARCH=aarch64 |
|
|
|
-| qemu-virt-riscv32 | virt-riscv32 | make QEMU_BOARD=qemu-virt-riscv32 ARCH=riscv32 |
|
|
|
-| qemu-virt-riscv64 | virt-riscv64 | make QEMU_BOARD=qemu-virt-riscv64 ARCH=riscv64 |
|
|
|
-
|
|
|
-
|
|
|
-## mlibc Library Compilation
|
|
|
-
|
|
|
-#### Development Environment
|
|
|
-
|
|
|
-For simple C library compilation, the development environment is relatively straightforward; make and the appropriate toolchain are sufficient.
|
|
|
-
|
|
|
-> make + toolchain
|
|
|
-
|
|
|
-#### Compilation Steps
|
|
|
-
|
|
|
-1. Configure the environment variables corresponding to the toolchain
|
|
|
-:Please refer to the detailed steps in the previous section)
|
|
|
-
|
|
|
-**Compile the C library**
|
|
|
-
|
|
|
-1. Navigate to the `mlibc` folder, open the command line, and use make to compile the static library.
|
|
|
-
|
|
|
-```
|
|
|
-# Here, we use the ARM architecture static library as an example
|
|
|
-make mlibc ARCH=arm
|
|
|
-```
|
|
|
-
|
|
|
-2. A static library named `libmlibc.a` will be generated in the `mlibc/build/arm` directory. To integrate it with the toolchain, you can rename the file to `libc.a` for use.
|
|
|
-
|
|
|
-**Compile crt0**
|
|
|
-
|
|
|
-1. Navigate to the `mlibc` folder, open the command line, and use make to compile crt0.
|
|
|
-
|
|
|
-```
|
|
|
-# Here, we use the ARM architecture crt0 as an example
|
|
|
-make crt0 ARCH=arm
|
|
|
-```
|
|
|
-
|
|
|
-2. The generated file will be located in `mlibc/build/$(ARCH)/crtobj`, named `crt0.o`.
|
|
|
+| Filename | Virtual Device | Build Command |
|
|
|
+| ----------------- | -------------- | --------------------------------------------------- |
|
|
|
+| qemu-vexpress-a9 | vexpress-a9 | make qemu-hello QEMU_BOARD=qemu-vexpress-a9 ARCH=arm |
|
|
|
+| qemu-mps3-an536 | mps3-an536 | make qemu-hello QEMU_BOARD=qemu-mps3-an536 ARCH=arm |
|
|
|
+| qemu-virt-aarch64 | virt-aarch64 | make qemu-hello QEMU_BOARD=qemu-virt-aarch64 ARCH=aarch64 |
|
|
|
+| qemu-virt-riscv32 | virt-riscv32 | make qemu-hello QEMU_BOARD=qemu-virt-riscv32 ARCH=riscv32 |
|
|
|
+| qemu-virt-riscv64 | virt-riscv64 | make qemu-hello QEMU_BOARD=qemu-virt-riscv64 ARCH=riscv64 |
|
|
|
|
|
|
# License Agreement
|
|
|
|