1d6aed566Sopenharmony_ci# Qemu Arm Cortex-m55 mps3-an547 教程
2d6aed566Sopenharmony_ci
3d6aed566Sopenharmony_ci## 1. 简介
4d6aed566Sopenharmony_ci`arm_mps3_an547/` 子目录包含部分Qemu arm cortex-m55虚拟化平台验证的OpenHarmony kernel\_liteos\_m的代码,目录名为*arm_mps3_an547*。
5d6aed566Sopenharmony_ciArm Cortex-m55 虚拟化平台是一个 `qemu-system-arm` 的目标设备,通过它来模拟一个通用的、基于arm cortex-m55架构的单板。
6d6aed566Sopenharmony_ci
7d6aed566Sopenharmony_ci这次模拟的配置是:arm cortex-m55架构,1个CPU,16M内存。
8d6aed566Sopenharmony_ci
9d6aed566Sopenharmony_ci提示: 系统内存硬编码为16MB。
10d6aed566Sopenharmony_ci
11d6aed566Sopenharmony_ci## 2. 环境搭建
12d6aed566Sopenharmony_ci
13d6aed566Sopenharmony_ci[环境搭建](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/Readme-CN.md)
14d6aed566Sopenharmony_ci
15d6aed566Sopenharmony_ci编译器安装
16d6aed566Sopenharmony_ci
17d6aed566Sopenharmony_ci1.命令安装
18d6aed566Sopenharmony_ci
19d6aed566Sopenharmony_ci提示:命令安装的工具链无 arm-none-eabi-gdb,无法进行gdb调试
20d6aed566Sopenharmony_ci
21d6aed566Sopenharmony_ci```
22d6aed566Sopenharmony_cisudo apt install gcc-arm-none-eabi
23d6aed566Sopenharmony_ci```
24d6aed566Sopenharmony_ci
25d6aed566Sopenharmony_ci2.安装包安装
26d6aed566Sopenharmony_ci
27d6aed566Sopenharmony_ci提示:安装2020年后推出的交叉工具链才能支持cortex-m55处理器的MVE特性。如果已经通过命令安装了gcc-arm-none-eabi, 可以通过命令:`sudo apt remove gcc-arm-none-eabi` 卸载之后,再进行安装。
28d6aed566Sopenharmony_ci
29d6aed566Sopenharmony_ci下载工具链[安装包](https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2)。
30d6aed566Sopenharmony_ci
31d6aed566Sopenharmony_ci```
32d6aed566Sopenharmony_cichmod 777 gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
33d6aed566Sopenharmony_citar -xvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 install_path
34d6aed566Sopenharmony_ci```
35d6aed566Sopenharmony_ci
36d6aed566Sopenharmony_ci将安装路径添加到环境变量中:
37d6aed566Sopenharmony_ci
38d6aed566Sopenharmony_ci```
39d6aed566Sopenharmony_civim ~/.bashrc
40d6aed566Sopenharmony_ci```
41d6aed566Sopenharmony_ci
42d6aed566Sopenharmony_ci在~/.bashrc最末尾加入:
43d6aed566Sopenharmony_ci
44d6aed566Sopenharmony_ci```
45d6aed566Sopenharmony_ciexport PATH=$PATH:install_path/gcc-arm-none-eabi-10.3-2021.10/bin
46d6aed566Sopenharmony_ci```
47d6aed566Sopenharmony_ci
48d6aed566Sopenharmony_ci## 3. 获取源码
49d6aed566Sopenharmony_ci
50d6aed566Sopenharmony_ci[代码获取](https://gitee.com/openharmony/docs/blob/HEAD/zh-cn/device-dev/get-code/sourcecode-acquire.md)
51d6aed566Sopenharmony_ci
52d6aed566Sopenharmony_ci提示: 可以使用 `repo` 命令来获取源码。
53d6aed566Sopenharmony_ci
54d6aed566Sopenharmony_ci## 4. 源码构建
55d6aed566Sopenharmony_ci
56d6aed566Sopenharmony_ci在已经获取的源码根目录,请输入:
57d6aed566Sopenharmony_ci
58d6aed566Sopenharmony_ci```
59d6aed566Sopenharmony_cihb set
60d6aed566Sopenharmony_ci```
61d6aed566Sopenharmony_ci
62d6aed566Sopenharmony_ci选择ohemu下的`qemu_cm55_mini_system_demo`选项。
63d6aed566Sopenharmony_ci
64d6aed566Sopenharmony_ci
65d6aed566Sopenharmony_ci然后执行构建命令如下:
66d6aed566Sopenharmony_ci```
67d6aed566Sopenharmony_cihb build -f
68d6aed566Sopenharmony_ci```
69d6aed566Sopenharmony_ci
70d6aed566Sopenharmony_ci这个命令构建会产生 `OHOS_Image` 的镜像文件。
71d6aed566Sopenharmony_ci
72d6aed566Sopenharmony_ci在构建完成之后,对应的镜像文件在如下目录:
73d6aed566Sopenharmony_ci```
74d6aed566Sopenharmony_ciout/arm_mps3_an547/qemu_cm55_mini_system_demo/
75d6aed566Sopenharmony_ci```
76d6aed566Sopenharmony_ci## 5. 在Qemu中运行镜像
77d6aed566Sopenharmony_ci
78d6aed566Sopenharmony_ci提示:安装6.2.0版本的qemu才能支持cortex-m55处理器的MVE特性。
79d6aed566Sopenharmony_ci
80d6aed566Sopenharmony_cia) 如果没有安装 `qemu-system-arm` ,安装请参考链接:[Qemu安装指导](https://gitee.com/openharmony/device_qemu/blob/HEAD/README_zh.md)
81d6aed566Sopenharmony_ci
82d6aed566Sopenharmony_cib) 运行
83d6aed566Sopenharmony_ci
84d6aed566Sopenharmony_ci执行`./qemu-run --help`提示如下:
85d6aed566Sopenharmony_ci
86d6aed566Sopenharmony_ci```
87d6aed566Sopenharmony_ciUsage: qemu-run [OPTION]...
88d6aed566Sopenharmony_ciRun a OHOS image in qemu according to the options.
89d6aed566Sopenharmony_ci
90d6aed566Sopenharmony_ci    Options:
91d6aed566Sopenharmony_ci
92d6aed566Sopenharmony_ci    -e, --exec file_name     kernel exec file name
93d6aed566Sopenharmony_ci    -g, --gdb                enable gdb for kernel
94d6aed566Sopenharmony_ci    -t, --test               test mode, exclusive with -g
95d6aed566Sopenharmony_ci    -h, --help               print help info
96d6aed566Sopenharmony_ci
97d6aed566Sopenharmony_ci    By default, the kernel exec file is: out/arm_mps3_an547/qemu_cm55_mini_system_demo/OHOS_Image.
98d6aed566Sopenharmony_ci```
99d6aed566Sopenharmony_ci
100d6aed566Sopenharmony_ci## 6. gdb调试
101d6aed566Sopenharmony_ci
102d6aed566Sopenharmony_ci```
103d6aed566Sopenharmony_cicd device/qemu/arm_mps3_an547
104d6aed566Sopenharmony_civim liteos_m/config.gni
105d6aed566Sopenharmony_ci```
106d6aed566Sopenharmony_ci
107d6aed566Sopenharmony_ci将 `board_opt_flags` 中的
108d6aed566Sopenharmony_ci
109d6aed566Sopenharmony_ci```
110d6aed566Sopenharmony_ciboard_opt_flags = []
111d6aed566Sopenharmony_ci```
112d6aed566Sopenharmony_ci
113d6aed566Sopenharmony_ci编译选项修改为:
114d6aed566Sopenharmony_ci
115d6aed566Sopenharmony_ci```
116d6aed566Sopenharmony_ciboard_opt_flags = [ "-g" ]
117d6aed566Sopenharmony_ci```
118d6aed566Sopenharmony_ci
119d6aed566Sopenharmony_ci保存并退出,在OHOS根目录重新编译:
120d6aed566Sopenharmony_ci
121d6aed566Sopenharmony_ci```
122d6aed566Sopenharmony_cihb build -f
123d6aed566Sopenharmony_ci```
124d6aed566Sopenharmony_ci
125d6aed566Sopenharmony_ci在一个窗口中输入命令:
126d6aed566Sopenharmony_ci
127d6aed566Sopenharmony_ci```
128d6aed566Sopenharmony_ci./qemu-run -g
129d6aed566Sopenharmony_ci```
130d6aed566Sopenharmony_ci
131d6aed566Sopenharmony_ci在另一个窗口中输入命令:
132d6aed566Sopenharmony_ci
133d6aed566Sopenharmony_ci```
134d6aed566Sopenharmony_ciarm-none-eabi-gdb out/arm_mps3_an547/qemu_cm55_mini_system_demo/OHOS_Image
135d6aed566Sopenharmony_ci(gdb) target remote localhost:1234
136d6aed566Sopenharmony_ci(gdb) b main
137d6aed566Sopenharmony_ci```
138d6aed566Sopenharmony_ci
139d6aed566Sopenharmony_ci更多gdb相关的调试可以查阅:[gdb指导手册](https://sourceware.org/gdb/current/onlinedocs/gdb)。
140