由于前几天芯来科技对鸿蒙LiteOS-M内核进行支持,在手上没有开发板的小伙伴,想要了解riscv和学习鸿蒙来说,也是十分的困难,所以我就打算做一下在qemu上运行鸿蒙的liteos-m内核,其行为和真实的硬件并无差别,这样在手上有硬件之后,能够快速的将程序下载到真机上。用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运行的二进制程序。
当前最新代码在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
首先找到编译好的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
屏蔽掉这里就可以了。
若想分析程序运行的逻辑,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内核。