1d6aed566Sopenharmony_ci### Qemu Arm Cortex-m55 mps3-an547 HOWTO
2d6aed566Sopenharmony_ci
3d6aed566Sopenharmony_ci#### 1. Brief introduction
4d6aed566Sopenharmony_ci`arm_mps3_an547/` subdirectory contains part of the OpenHarmony LiteOS demonstration support for Qemu Arm Cortex-m55 mps3-an547 Platform, here called *arm_mps3_an547*.
5d6aed566Sopenharmony_cicortex-m55 Virtual platform is a `qemu-system-arm` machine target that provides emulation
6d6aed566Sopenharmony_cifor a generic, arm-based board.
7d6aed566Sopenharmony_ci
8d6aed566Sopenharmony_ciIntroduced functionality adds support for Cortex-m55 (1 CPU with security extensions), 16MB memory virtual platform.
9d6aed566Sopenharmony_ci
10d6aed566Sopenharmony_ciNote: System memory size is hard-coded to 16MB.
11d6aed566Sopenharmony_ci
12d6aed566Sopenharmony_ci#### 2. Setting up environment
13d6aed566Sopenharmony_ci
14d6aed566Sopenharmony_ci[Setting up a development environment](https://gitee.com/openharmony/docs/blob/master/en/device-dev/quick-start/Readme-EN.md)
15d6aed566Sopenharmony_ci
16d6aed566Sopenharmony_ciCompiler install
17d6aed566Sopenharmony_ci
18d6aed566Sopenharmony_ci1.Command to install
19d6aed566Sopenharmony_ci
20d6aed566Sopenharmony_ciNote: Command to install toolchain without arm-none-eabi-gdb, gdb cannot be debugged.
21d6aed566Sopenharmony_ci
22d6aed566Sopenharmony_ci```
23d6aed566Sopenharmony_cisudo apt install gcc-arm-none-eabi
24d6aed566Sopenharmony_ci```
25d6aed566Sopenharmony_ci
26d6aed566Sopenharmony_ci2.The installation package to install
27d6aed566Sopenharmony_ci
28d6aed566Sopenharmony_ciNote: The MVE feature of cortex-m55 processor can only be supported by installing the cross tool chain launched after 2020. If you have already passed the command to install gcc-arm-none-eabi, can through the command: `sudo apt remove
29d6aed566Sopenharmony_cigcc-arm-none-eabi` after unloading, install again.
30d6aed566Sopenharmony_ci
31d6aed566Sopenharmony_ciDownload toolchain: [package](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)。
32d6aed566Sopenharmony_ci
33d6aed566Sopenharmony_ci```
34d6aed566Sopenharmony_cichmod 777 gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
35d6aed566Sopenharmony_citar -xvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 install_path
36d6aed566Sopenharmony_ci```
37d6aed566Sopenharmony_ci
38d6aed566Sopenharmony_ciAdd the installation path to the environment variable:
39d6aed566Sopenharmony_ci
40d6aed566Sopenharmony_ci```
41d6aed566Sopenharmony_civim ~/.bashrc
42d6aed566Sopenharmony_ci```
43d6aed566Sopenharmony_ci
44d6aed566Sopenharmony_ciAdd the following command line to the last line of ~/.bashrc:
45d6aed566Sopenharmony_ci
46d6aed566Sopenharmony_ci```
47d6aed566Sopenharmony_ciexport PATH=$PATH:install_path/gcc-arm-none-eabi-10.3-2021.10/bin
48d6aed566Sopenharmony_ci```
49d6aed566Sopenharmony_ci
50d6aed566Sopenharmony_ci#### 3. Code acquisition
51d6aed566Sopenharmony_ci
52d6aed566Sopenharmony_ci[Code acquisition](https://gitee.com/openharmony/docs/blob/HEAD/en/device-dev/get-code/sourcecode-acquire.md)
53d6aed566Sopenharmony_ci
54d6aed566Sopenharmony_ciNote: One can use `repo` to fetch code in a straightforward manner.
55d6aed566Sopenharmony_ci
56d6aed566Sopenharmony_ci#### 4. Building from sources
57d6aed566Sopenharmony_ci
58d6aed566Sopenharmony_ciIn the root directory of the obtained source code, run the following command:
59d6aed566Sopenharmony_ci
60d6aed566Sopenharmony_ci```
61d6aed566Sopenharmony_cihb set
62d6aed566Sopenharmony_ci```
63d6aed566Sopenharmony_ci
64d6aed566Sopenharmony_ciSelect `qemu_cm55_mini_system_demo` under **ohemu**.
65d6aed566Sopenharmony_ci
66d6aed566Sopenharmony_ciRun the following build command:
67d6aed566Sopenharmony_ci```
68d6aed566Sopenharmony_cihb build -f
69d6aed566Sopenharmony_ci```
70d6aed566Sopenharmony_ci
71d6aed566Sopenharmony_ciThis will build `OHOS_Image` for Qemu Cortex-m55 mps3-an547 machine.
72d6aed566Sopenharmony_ci
73d6aed566Sopenharmony_ci
74d6aed566Sopenharmony_ciAfter build is finished, the resulting image can be found in:
75d6aed566Sopenharmony_ci```
76d6aed566Sopenharmony_ciout/arm_mps3_an547/qemu_cm55_mini_system_demo/
77d6aed566Sopenharmony_ci```
78d6aed566Sopenharmony_ci#### 5. Running image in Qemu
79d6aed566Sopenharmony_ci
80d6aed566Sopenharmony_ciNote: The MVE feature of cortex-m55 processor can only be supported by installing QEMU version 6.2.0.
81d6aed566Sopenharmony_ci
82d6aed566Sopenharmony_cia) If not installed, please install `qemu-system-arm`
83d6aed566Sopenharmony_ciFor details, please refer to the HOWTO: [Qemu installation](https://gitee.com/openharmony/device_qemu/blob/HEAD/README.md)
84d6aed566Sopenharmony_ci
85d6aed566Sopenharmony_cib) Run
86d6aed566Sopenharmony_ci
87d6aed566Sopenharmony_ciRun the `./qemu-run --help` command. The following information is displayed:
88d6aed566Sopenharmony_ci
89d6aed566Sopenharmony_ci```
90d6aed566Sopenharmony_ciUsage: qemu-run [OPTION]...
91d6aed566Sopenharmony_ciRun a OHOS image in qemu according to the options.
92d6aed566Sopenharmony_ci
93d6aed566Sopenharmony_ci    Options:
94d6aed566Sopenharmony_ci
95d6aed566Sopenharmony_ci    -e, --exec file_name     kernel exec file name
96d6aed566Sopenharmony_ci    -g, --gdb                enable gdb for kernel
97d6aed566Sopenharmony_ci    -t, --test               test mode, exclusive with -g
98d6aed566Sopenharmony_ci    -h, --help               print help info
99d6aed566Sopenharmony_ci
100d6aed566Sopenharmony_ci    By default, the kernel exec file is: out/arm_mps3_an547/qemu_cm55_mini_system_demo/OHOS_Image.
101d6aed566Sopenharmony_ci```
102d6aed566Sopenharmony_ci
103d6aed566Sopenharmony_ci#### 6. gdb debug
104d6aed566Sopenharmony_ci
105d6aed566Sopenharmony_ci```
106d6aed566Sopenharmony_cicd device/qemu/arm_mps3_an547
107d6aed566Sopenharmony_civim liteos_m/config.gni
108d6aed566Sopenharmony_ci```
109d6aed566Sopenharmony_ci
110d6aed566Sopenharmony_ciIn the modified `board_opt_flags` compiler options:
111d6aed566Sopenharmony_ci
112d6aed566Sopenharmony_ci```
113d6aed566Sopenharmony_ciboard_opt_flags = []
114d6aed566Sopenharmony_ci```
115d6aed566Sopenharmony_cito:
116d6aed566Sopenharmony_ci
117d6aed566Sopenharmony_ci```
118d6aed566Sopenharmony_ciboard_opt_flags = [ "-g" ]
119d6aed566Sopenharmony_ci```
120d6aed566Sopenharmony_ci
121d6aed566Sopenharmony_ciSave and exit, recompile under OHOS root directory:
122d6aed566Sopenharmony_ci
123d6aed566Sopenharmony_ci```
124d6aed566Sopenharmony_cihb build -f
125d6aed566Sopenharmony_ci```
126d6aed566Sopenharmony_ci
127d6aed566Sopenharmony_ciIn a window to enter the command:
128d6aed566Sopenharmony_ci
129d6aed566Sopenharmony_ci```
130d6aed566Sopenharmony_ci./qemu-run -g
131d6aed566Sopenharmony_ci```
132d6aed566Sopenharmony_ci
133d6aed566Sopenharmony_ciIn another window to enter the command:
134d6aed566Sopenharmony_ci
135d6aed566Sopenharmony_ci```
136d6aed566Sopenharmony_ciarm-none-eabi-gdb out/arm_mps3_an547/qemu_cm55_mini_system_demo/OHOS_Image
137d6aed566Sopenharmony_ci(gdb) target remote localhost:1234
138d6aed566Sopenharmony_ci(gdb) b main
139d6aed566Sopenharmony_ci```
140d6aed566Sopenharmony_ci
141d6aed566Sopenharmony_ciMore GDB related debugging can refer to [GDB instruction manual](https://sourceware.org/gdb/current/onlinedocs/gdb).
142