RISC-V MCU中文社区

在qemu上体验芯来RISC-V处理器运行鸿蒙LiteOS-M内核

发表于 2021-04-13 12:01:38
0
9074
3

在qemu上体验芯来RISC-V处理器运行鸿蒙LiteOS-M内核

1.本文概述

由于前几天芯来科技对鸿蒙LiteOS-M内核进行支持,在手上没有开发板的小伙伴,想要了解riscv和学习鸿蒙来说,也是十分的困难,所以我就打算做一下在qemu上运行鸿蒙的liteos-m内核,其行为和真实的硬件并无差别,这样在手上有硬件之后,能够快速的将程序下载到真机上。用qemu是研究软件,研究系统的非常好的工具,下面我实际演示一下具体的操作。

2.下载qemu

当前官方的qemu并未对芯来科技的soc进行集成,或许要等一段时间才能合并,目前我自己基于plct实验室的qemu版本编译了一个带有芯来RISC-V处理器的qemu。

https://github.com/plctlab/plct-qemu/tree/plct-nuclei-rebase

编译生成直接可以在Linux上的二进制程序已经上传,可以方便下载。

自己编译则需要

git clone https://github.com/plctlab/plct-qemu.git
cd plct-qemu
git checkout plct-nuclei-rebase
git submodule init
git submodule update

操作完成后,安装如下的工具

sudo apt-get install -y git build-essential pkg-config zlib1g-dev libglib2.0-0 libglib2.0-dev libsdl1.2-dev libpixman-1-dev libfdt-dev autoconf automake libtool librbd-dev libaio-dev flex bison make

还需要安装meson ninja

pip3 install meson ninja

然后在plct-qemu中新建一个build的目录。

../configure --prefix=your_path/linux_qemu --target-list=riscv32-softmmu,riscv64-softmmu && make -j8 && make install

其中your_path/linux_qemu表示的目录则是生成的可以在Linux运行的二进制程序。

3.下载鸿蒙LiteOS-M

当前最新代码在gitee上

https://gitee.com/riscv-mcu/kernel_liteos_m

首先下载代码

git clone git@gitee.com:riscv-mcu/kernel_liteos_m.git

然后下载交叉编译工具链

wget  https://www.nucleisys.com/upload/files/toochain/gcc/nuclei_riscv_newlibc_prebuilt_linux64_2020.08.tar.bz2

下载后解压至指定的文件夹,比如/opt目录。

修改/etc/profile文件,文末添加

PATH=$PATH:/opt/gcc/bin/

最后更新一下环境

source /etc/profile

接着进入kernel_liteos_m/targets/riscv_nuclei_gd32vf103_soc_gcc/GCC目录。输入make开始编译。



最后生成了Nuclei-rvstart-gd32vf103-soc.hex

4.运行与测试

首先找到编译好的qemu程序的位置

/home/bigmagic/linux_qemu/bin/qemu-system-riscv32 -M gd32vf103_rvstar -kernel build/Nuclei-rvstar-gd32vf103-soc.elf -serial stdio -nodefaults -nographic

此时可以看到程序的正常运行



注意,这里需要修改一下源代码由于实际代码中有按键的配置,qemu中目前不能使用实体按键,所以需要屏蔽。

kernel_liteos_m/targets/riscv_nuclei_gd32vf103_soc_gcc/Src/main.c


屏蔽掉这里就可以了。

5.gdb调试

若想分析程序运行的逻辑,gdb功能非常好用。

一个窗口输入

/home/bigmagic/linux_qemu/bin/qemu-system-riscv32 -M gd32vf103_rvstar -kernel build/Nuclei-rvstar-gd32vf103-soc.elf -serial stdio -nodefaults -nographic -s -S

另外一个窗口开启gdb

riscv-nuclei-elf-gdb build/Nuclei-rvstar-gd32vf103-soc.elf

依次输入

target remote localhost:1234
b main
c
list

更多gdb相关的调试可以查阅gdb的使用手册。



这样就能够愉快的玩qemu和riscv以及鸿蒙LiteOS-M内核。

喜欢3
用户评论
Bigmagic

Bigmagic 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板