https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/Readme.md
建议选择3.1
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/gettools-acquire.md
官方提供了docker镜像,镜像包含openharmony的编译环境和基础的qemu,但是该镜像中包含的qemu是不完整的,为了使用riscv的qemu我们需要对该镜像进行改造,
-
获取Docker镜像。
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
-
进入源码根目录执行如下命令,从而进入Docker构建环境。 ubuntu下执行:
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
-
安装网络工具
apt install net-tools
-
下载qemu源码包
cd /home/tools wget https://download.qemu.org/qemu-7.1.0.tar.xz
-
编译安装qemu
tar -xvf qemu-7.1.0.tar.xz cd qemu-7.1.0 mkdir build cd build ../configure make -j8 make install
docker commit [容器id] 镜像名称:镜像tag
docker save -o xxx.tar.xz 镜像名称:镜像tag
openharmony 提供了一些示例供用户使用,
图中ohemu下的选项是可以用qemu运行的示例,其他均为硬件开发版使用的示例
但是,qemu中的示例也不是所有均可运行,这里只验证了qemu_small_system_demo,选择该选项
输入该命令可以查看当前的系统环境参数
# hb env
[OHOS INFO] root path: /home/openharmony
[OHOS INFO] board: arm_virt
[OHOS INFO] kernel: liteos_a
[OHOS INFO] product: qemu_small_system_demo
[OHOS INFO] product path: /home/openharmony/vendor/ohemu/qemu_small_system_demo
[OHOS INFO] device path: /home/openharmony/device/qemu/arm_virt/liteos_a
[OHOS INFO] device company: qemu
使用该命令可以构建kernel和qemu脚本
# ./qemu-run
该脚本实际还会调用 vendor 目录下的 qemu-run.sh
定义在该脚本的27行
real_cmd="${product_path}/qemu_run.sh"
# 例如 vendor/ohemu/qemu_small_system_demo/qemu_run.sh
如果产生错误,则可以注释掉上述两个脚本的 set -e
命令以查看具体的错误原因
# set -e
这里我们选择liteos-m在riscv ISA下进行编译,默认已经进入了docker环境
首先需要配置-g编译选项
cd device/qemu/riscv32_virt
vim liteos_m/config.gni
将 board_opt_flags
中的
board_opt_flags = []
编译选项修改为:
board_opt_flags = [ "-g" ]
保存并退出,
在hb set
时选择qemu_riscv_mini_system_demo
在OHOS根目录重新编译:
hb build -f
在一个窗口(窗口A)中输入命令:
./qemu-run -g
在另一个窗口(窗口B)中输入命令:
riscv32-unknown-elf-gdb out/riscv32_virt/qemu_riscv_mini_system_demo/OHOS_Image
(gdb) target remote 172.17.0.5:1234 // 这里的ip是窗口A的IP
(gdb) b main