基于RISC-V的QEMU + FreeRTOS开发环境构建

文章目录

    • QEMU
    • RISC-V toolchain
    • FreeRTOS
    • QEMU装载FreeRTOS

Ubuntu(22.04.1 LTS)中,基于RISC-V工具链,在QEMU上构建FreeRTOS,用以支持后续的仿真实验。

QEMU

下载相关依赖。

sudo apt-get install ninjia-build libglib2.0-dev libpixman-1-dev

下载编译QEMU。

wget https://download.qemu.org/qemu-7.1.0.tar.xz
tar xvJf qemu-7.1.0.tar.xz
cd qemu-7.1.0
./configure
make
sudo make install

RISC-V toolchain

下载相关依赖。

sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev gawk

下载编译RISC-V toolchain。

  • 尽量科学上网,不要换源,换源后可能下载失败。
  • 编译生成32位RISC-V工具链。
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain.git
cd riscv-gnu-toolchain
# 编译工具链 riscv32-unkonwn-elf-gcc
./configure --prefix=/opt/riscv32 --with-arch=rv32imc --with-abi=ilp32
make

配置环境变量

# 添加环境变量
vim ~/.bashrc
############
...
export PATH=/opt/riscv32/bin:$PATH
############
# 保存并更新环境
source ~/.bashrc

FreeRTOS

下载编译FreeRTOS。
FreeRTOS源码链接

  • 需要RISC-V工具链。
  • 需要将FreeRTOS中RISC-V-Qemu-virt_GCC文件夹下的Makefile文件的交叉编译链选项(CROSS)修改为riscv32-unknown-elf-。编译完成后在RISC-V-Qemu-virt_GCC/build中生成镜像文件RTOSDemo.axf
unzip FreeRTOSv202112.00.zip
cd FreeRTOSv202112.00/FreeRTOS/Demo/RISC-V-Qemu-virt_GCC
# 修改RISC-V-Qemu-virt_GCC Makefile
vim Makefile
############
CROSS = riscv32-unknown-elf-
...
############
# 编译生成FreeRTOS镜像
make

QEMU装载FreeRTOS

FreeRTOS装载

qemu-system-riscv32 -nographic -machine virt -net none \
  -chardev stdio,id=con,mux=on -serial chardev:con \
  -mon chardev=con,mode=readline -bios none \
  -smp 4 -kernel ./build/RTOSDemo.axf

输出

Hello FreeRTOS!
0: Tx: Transfer1
0: Rx: Blink1
0: Tx: Transfer2
0: Rx: Blink2
...

至此,基于RISC-V工具链,QEMU上的FreeRTOS实验平台构建完成。

你可能感兴趣的:(risc-v,嵌入式硬件,ubuntu,linux)