草帽王子 发表于 2021-5-18 15:15:22

嵌入式IoT[01]_在qemu上体验芯来RISC-V处理器运行鸿蒙LiteOS-M内核

本帖最后由 草帽王子 于 2021-5-18 15:14 编辑

在qemu上体验芯来RISC-V处理器运行鸿蒙LiteOS-M内核
1.本文概述
2.下载qemu
3.下载鸿蒙LiteOS-M
4.运行与测试
5.gdb调试


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然后下载交叉编译工具链
wgethttps://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   <span style="font-family: Tahoma; font-size: medium; background-color: rgb(255, 255, 255);">目录。</span>输入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内核。



页: [1]
查看完整版本: 嵌入式IoT[01]_在qemu上体验芯来RISC-V处理器运行鸿蒙LiteOS-M内核