|
|
||
|---|---|---|
| .. | ||
| applications | ||
| drivers | ||
| picolib | ||
| root/boot/grub | ||
| .config | ||
| Kconfig | ||
| README.md | ||
| SConscript | ||
| SConstruct | ||
| dbg.sh | ||
| rtconfig.h | ||
| rtconfig.py | ||
| run.sh | ||
| x86_ram.lds | ||
README.md
RT-Thread for x86
Intro
This x86 BSP support both newlib & picolib, with toolchain available
- Newlib:
i686-atxhua-newlib-elf- - Picolibc:
i686-atxhua-picolib-elf-
Install Toolchain
To install toolchain run the following command:
- Newlib: sudo ../../tools/ci/toolchain.sh i686-atxhua-newlib-elf-gcc
- Picolibc: sudo ../../tools/ci/toolchain.sh i686-atxhua-picolib-elf-gcc
Configuration
Use menuconfig to select your preferred C library:
- Run
scons --menuconfig - Navigate to
X86 Features->C Library type - Select either
Newlib(default) orPicolibc
Building
After select the correct library in menuconfig, set the toolchain path and prefix:
Newlib
export RTT_EXEC_PATH=/opt/i686-atxhua-newlib-elf-gcc/bin
export RTT_CC_PREFIX=i686-atxhua-newlib-elf-
scons
Picolib
export RTT_EXEC_PATH=/opt/i686-atxhua-picolib-elf-gcc/bin
export RTT_CC_PREFIX=i686-atxhua-picolib-elf-
scons
Result ELF
Newlib
Memory region Used Size Region Size %age Used
i686-atxhua-newlib-elf-objcopy -O binary rtthread.elf rtthread.bin
i686-atxhua-newlib-elf-size rtthread.elf
text data bss dec hex filename
212900 3274 10844 227018 376ca rtthread.elf
scons: done building targets.
Picolib
Memory region Used Size Region Size %age Used
i686-atxhua-picolib-elf-objcopy -O binary rtthread.elf rtthread.bin
i686-atxhua-picolib-elf-size rtthread.elf
text data bss dec hex filename
174122 2568 10528 187218 2db52 rtthread.elf
scons: done building targets.
这是一份基础的RT-Thread针对x86的版本、移植,主要是能够在qemu中执行。以下说明主要针对Linux的环境,如果是Windows环境,请使用Env工具,同时请自行处理生成iso的方法。
编译
编译RT-Thread for x86版本,还需要一份支持newlib的工具链,可以通过以下地址获得:
- i386-unknown-elf_for_x86_64-pc-linux-gnu_latest.tar.bz2
- GCC 15.2.0 w/ Newlib 4.6.0.20260123: https://github.com/atxhua/i686-atxhua-newlib-elf/releases/download/15.2.0/i686-atxhua-newlib-elf-linux.tar.gz
- GCC 15.2.0 w/ Picolib 1.8.11: https://github.com/atxhua/i686-atxhua-picolib-elf/releases/download/15.2.0/i686-atxhua-picolib-elf-linux.tar.gz
下载后解压,然后配置RTT_EXEC_PATH & RTT_CC_PREFIX 变量
export RTT_EXEC_PATH='/path/to/i686-atxhua-newlib-elf-linux/bin'
export RTT_CC_PREFIX='i686-atxhua-newlib-elf-'
rtconfig.py
if CROSS_TOOL == 'gcc':
PLATFORM = 'gcc'
EXEC_PATH = os.getenv('RTT_EXEC_PATH') or 'E:/Program Files/CodeSourcery/Sourcery_CodeBench_Lite_for_IA32_ELF/bin'
if PLATFORM == 'gcc':
# toolchains
PREFIX = os.getenv('RTT_CC_PREFIX') or 'i386-unknown-elf-'
然后在x86 bsp目录下执行scons命令来编译:
scons
配置
RT-Thread for x86的版本也支持menuconfig的配置方式,在Linux下可以使用scons --menuconfig的方式进行配置。
因为menuconfig是一份字符界面的配置(Kconfig),在ubuntu下需要安装ncurses5的库
sudo apt install libncurses5-dev
运行
在ubuntu下运行,请确保你安装了qemu-system-i386,grub 以及 xorriso软件包:
sudo apt install qemu-system-x86 grub-common xorriso
然后使用qemu来模拟执行
$ qemu-system-i386 -M pc -kernel rtthread.elf -nographic
SeaBIOS (version 1.16.3-debian-1.16.3-2)
iPXE (https://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+06FCAE00+06F0AE00 CA00
Booting from ROM..
\ | /
- RT - Thread Operating System
/ | \ 5.3.0 build May 10 2026 21:25:36
2006 - 2024 Copyright by RT-Thread team
Floppy Inc : NEC765B controller Floppy Type : 2.88MB
[I/DBG] root filesystem mounted.
hello!
msh />
在qemu下可以按Ctrl-A + X退出qemu。