Skip to content

bruceEeZhao/liteos-m-doc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

下载源码

https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/Readme.md

建议选择3.1

编译运行

安装docker环境

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/gettools-acquire.md

官方提供了docker镜像,镜像包含openharmony的编译环境和基础的qemu,但是该镜像中包含的qemu是不完整的,为了使用riscv的qemu我们需要对该镜像进行改造,

原始镜像下载

  1. 获取Docker镜像。

    docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
    
  2. 进入源码根目录执行如下命令,从而进入Docker构建环境。 ubuntu下执行:

    docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
    

镜像改造

  1. 安装网络工具

    apt install net-tools
    
  2. 下载qemu源码包

    cd /home/tools
    wget https://download.qemu.org/qemu-7.1.0.tar.xz
    
  3. 编译安装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镜像

docker save -o xxx.tar.xz  镜像名称:镜像tag

构建内核并运行

hb set

openharmony 提供了一些示例供用户使用,

图中ohemu下的选项是可以用qemu运行的示例,其他均为硬件开发版使用的示例

image-20230428144447399

但是,qemu中的示例也不是所有均可运行,这里只验证了qemu_small_system_demo,选择该选项

hb env

输入该命令可以查看当前的系统环境参数

# 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

hb build -f

使用该命令可以构建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

gdb调试

这里我们选择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

目录

kernel

1. liteos-m概述

2. liteos-m源码分析 - 内核初始化

3. liteos-m源码分析 - task

4. liteos-m源码分析 - memory

5.liteos-m源码分析 - schedule

6.liteos-m源码分析 - timer

7.liteos-m源码分析 - queue

8.liteos-m源码分析 - interrupt

9.liteos-m源码分析 - mutex

10.liteos-m源码分析 - 信号量

11.liteos-m源码分析 - event

network

1.liteos-m-network

file system

1.liteos-m-filesystem

测试

1.liteos-m-test

About

liteos-m 源码分析

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published