You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

309 lines
6.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# LiteOS
# 一、环境安装
### 1. 安装docker环境
[docker加载镜像下载]
链接: https://pan.baidu.com/s/1GVossI98riHL2xEzo7HmMQ?pwd=we75 提取码: we75
```console
$ cd docker_package
$ sudo dpkg -i containerd.io_1.5.11-1_amd64.deb
$ sudo dpkg -i docker-ce-cli_20.10.14_3-0_ubuntu-focal_amd64.deb
$ sudo dpkg -i docker-ce_20.10.14_3-0_ubuntu-focal_amd64.deb
```
docker加载liteos-env镜像
```console
$ cd docker_images
$ sudo docker load -i openharmony-v31.tar
```
### 2. 下载源代码
[LiteOS v3.1](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fharmonyos%2Fos%2F3.1-Release%2Fcode-v3.1-Release.tar.gz)
### 3. 将用户添加到docker用户组
```console
$ sudo groupadd docker
$ sudo gpasswd -a $USER docker
$ newgrp docker
$ ./run_docker.sh
```
### 4.编译liteos-a内核和应用
编译 hb set 使用上下方向键盘选择"qemu_small_system_demo"
hb build编译
```console
root@62deba27a240:/home/openharmony# hb set
root@62deba27a240:/home/openharmony# hb build -f
```
运行
```console
root@62deba27a240:/home/openharmony# ./qemu-run -f
```
等待内核在qemu下加载完成回车进入OHOS shell
如果无法进入请检查out目录下是否存在smallmmc.img不存在请复制smallmmc.img到out目录下
并重新编译执行
```console
root@62deba27a240:/home/openharmony# ./qemu-run -f
Redo making flash.img...
Start making flash.img...
1+0 records in
1+0 records out
67108864 bytes (67 MB, 64 MiB) copied, 0.498911 s, 135 MB/s
2191+1 records in
2191+1 records out
1122100 bytes (1.1 MB, 1.1 MiB) copied, 0.0123126 s, 91.1 MB/s
0+1 records in
0+1 records out
89 bytes copied, 0.000333672 s, 267 kB/s
9818+1 records in
9818+1 records out
5027048 bytes (5.0 MB, 4.8 MiB) copied, 0.0291576 s, 172 MB/s
63+1 records in
63+1 records out
32492 bytes (32 kB, 32 KiB) copied, 0.000204982 s, 159 MB/s
Success making flash.img...
Enter to start qemu[y/n]:Waiting VNC connection on: 5920 ...(Ctrl-C exit)
******************Welcome******************
Processor : Cortex-A7
Run Mode : UP
GIC Rev : GICv2
build time : Nov 15 2022 11:40:20
Kernel : Huawei LiteOS 2.0.0.37/debug
*******************************************
main core booting up...
cpu 0 entering scheduler
mem dev init ...
DevMmzRegister...
Date:Nov 15 2022.
Time:11:40:19.
net init ...
[ERR]virtio-mmio ID=1 device not found
[ERR]add virtio-mmio net device failed
************************************************************
DeviceManagerStart start ...
[CfiFlashInit]CFI flash init start ...
[CfiFlashInit]CFI flash init end ...
[CfiFlashInit]CFI flash init start ...
DeviceManagerStart end ...
OsMountRootfs start ...
OsMountRootfs end ...
virtual_serial_init start ...
virtual_serial_init end ...
system_console_init start ...
system_console_init end ...
OsUserInitProcess start ...
OsUserInitProcess end ...
[ERR]Failed to find block driver /dev/mmcblk0
[ERR]Failed to find block driver /dev/mmcblk1
hilog ringbuffer full, drop 19 line(s) log
hilog ringbuffer full, drop 7 line(s) log
hilog ringbuffer full, drop 2 line(s) log
Set log level : 3
Default log level: 3
[ERR]Unsupported API tcgetpgrp
01-01 00:00:00.081 2 4 D 02500/devmgr_service: DevmgrServiceUpdateStatus host:storage_host 2 device:HDF_PLATFORM_CFI_0 0 status:1
...............
01-01 00:00:26.001 7 29 I 01800/Samgr: Goto next boot step return code:-9
01-01 00:00:26.002 7 14 I 00000/(null): [appspawn] HOS_SystemInit is called!
01-01 00:00:26.003 7 14 I 00000/(null): [appspawn] main, entering wait.
```
回车之后进入OHOS shell
```console
OHOS:/$ cd bin
OHOS:/bin$
```
测试结束
Ctrl-A + x 退出Qemu模拟环境
# 二、命令行调试liteOS
### 1、安装`gdb-multiarch`工具包(docker 容器中安装)
```shell
$ apt install gdb-multiarch
```
### 2、修改`debug.config`文件
```shell
$ cd ./vendor/ohemu/qemu_small_system_demo/kernel_configs
$ vim debug.config
```
`LOSCFG_CC_STACKPROTECTOR_ALL=y` 修改为:
```shell
# LOSCFG_CC_STACKPROTECTOR_ALL is not set
LOSCFG_COMPILE_DEBUG=y
```
### 3、重新编译项目
保存并退出在OHOS根目录重新编译:
```shell
$ hb build -f
```
### 4、debug LiteOS
在一个窗口中输入命令:
```shell
$ ./qemu-run -g
```
在另一个窗口中输入命令:
```shell
$ docker exec -it ohos /bin/bash
$ gdb-multiarch out/arm_virt/qemu_small_system_demo/OHOS_Image
(gdb) target remote localhost:1234
(gdb) b main
Breakpoint 1 at 0x4005110c: file ../../../kernel/liteos_a/kernel/common/main.c, line 36.
(gdb) c
Continuing.
Breakpoint 1, main () at ../../../kernel/liteos_a/kernel/common/main.c:36
36 {
(gdb) l
31
32 #include "los_config.h"
33 #include "los_sched_pri.h"
34
35 LITE_OS_SEC_TEXT_INIT INT32 main(VOID)
36 {
37 UINT32 ret = OsMain();
38 if (ret != LOS_OK) {
39 return (INT32)LOS_NOK;
40 }
(gdb) q
```
* gdb 调试常用代码
1、 b (break) :设置断点
2、 r (run): 运行程序
3、 bt (backtrace): 显示程序栈
4、 Print : 打印变量
5、 c (continue): 继续运行程序,直到下一个断点停止
6、 n (next) : 单步运行程序,不进入函数
7、 l (list) : 查看当前代码显示当前后10行
8、 edit (+function): 查看函数代码
9、 S (step) : 进入函数执行代码
10、 Q(Quit)退出gdb
11、 Info b : 查看断点信息
# 三、VSCode调试liteOS
### 1、安装VScode
```shel
$ sudo apt install code
```
### 2、安装VScode 插件
![截图 2023-06-02 13-03-44](fig/截图 2023-06-02 13-03-44.png)
### 3、连接docker
选择CONTAINERS目录下openharmony:v3.1...右键选择附加VScode
![截图 2023-06-02 13-07-32](fig/截图 2023-06-02 13-07-32.png)
### 4、给docker安装VScode插件
* 注意插件一定要安装在docker容器中
![截图 2023-06-02 13-14-19](fig/截图 2023-06-02 13-14-19.png)
### 5、配置launch.json文件
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "debug liteOS",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/out/arm_virt/qemu_small_system_demo/OHOS_Image",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"miDebuggerServerAddress": "localhost:1234",
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "pretty printing",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"logging": {
"engineLogging": true,
"programOutput": true,
},
}
]
}
```
### 6、新建终端
运行
```shell
./qemu-run -g
```
### 7、vscode debug
点击debug