基本概念

抢占式的调度机制;一共有32个优先级,
高优先级可以抢占低优先级,就是说优先级高的可以插队。
OpenHarmony内核的进程一共有32个优先级(0-31),用户进程可配置的优先级有22个(10-31),最高优先级为10,最低优先级为31。

用户的根进程由内核态创建,其他的都是根进程创建出来的。
image.png

  • Ready→Running:进程创建后进入就绪态,发生进程切换时,就绪列表中最高优先级的进程被执行,从而进入运行态。若此时该进程中已无其它线程处于就绪态,则该进程从就绪列表删除,只处于运行态;若此时该进程中还有其它线程处于就绪态,则该进程依旧在就绪队列,此时进程的就绪态和运行态共存。

队列中有两个进程,则高优先级的会处于就绪状态和运行状态两种状态。

主进程或所有线程运行结束后,则处于僵尸状态。

HDF驱动框架

按需求加载、按序加载,也就是按照优先级进行加载
HDF驱动编写
1、头文件的引入

  1. #include "hdf_device_desc.h" // HDF框架对驱动开放相关能力接口的头文件
  2. #include "hdf_log.h" // HDF 框架提供的日志接口头文件
  • 按序加载(需要驱动为默认加载) 配置文件中的priority(取值范围为整数0到200)是用来表示host和驱动的优先级,不同的host内的驱动,host的priority值越小,驱动加载优先级越高;同一个host内驱动的priority值越小,加载优先级越高。
  1. vendor # 产品解决方案厂商
  2. └── huawei # 产品解决方案厂商名称
  3. └── wifiiot # 产品名称
  4. ├── hals # 产品解决方案厂商OS适配
  5. ├── BUILD.gn # 产品编译脚本
  6. └── config.json # 产品配置文件

芯片移植关键步骤

OpenHarmony内核分析 - 图2

  1. device
  2. └── hisilicon # 芯片解决方案厂商名
  3. ├── common # 芯片解决方案开发板公共部分
  4. └── hispark_taurus # 开发板名称
  5. ├── BUILD.gn # 开发板编译入口
  6. ├── hals # 芯片解决方案厂商OS硬件适配
  7. ├── linux # linux版本
  8. └── config.gni # linux版本编译工具链和编译选项配置
  9. └── liteos_a # liteos-a版本
  10. └── config.gni # liteos_a版本编译工具链和编译选项配置

OpenHarmony Toolchain for Mini and Small System

Build System: ubuntu 18.04

Name Version How to Obtain
curl apt-get install curl -y
wget apt-get install wget -y
python3.8 apt-get install python3.8 -y
python3-pip apt-get install python3-pip -y
dosfstools apt-get install dosfstools -y
mtools apt-get install mtools -y
scons apt-get install scons -y
make apt-get install make -y
libffi-dev apt-get install libffi-dev -y
zip apt-get install zip -y
python3-distutils apt-get install python3-distutils -y
binutils apt-get install binutils -y
mtd-utils apt-get install mtd-utils -y
libc6-dev-x32 apt-get install libc6-dev-x32 -y
tzdata DEBIAN_FRONTEND=”noninteractive” TZ=”America/New_York” apt-get -y install tzdata
default-jre apt-get install default-jre -y
default-jdk apt-get install default-jdk -y
build-essential apt-get install build-essential
locales apt-get install locales
setuptools pip3 install —trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple
setuptools
kconfiglib pip3 install —trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple
kconfiglib
pycryptodome pip3 install —trusted-host mirrors.aliyun.com -i http://mirrors.aliyun.com/pypi/simple
pycryptodome
ecdsa pip3 install —trusted-host mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple
ecdsa
llvm 10.0.1-53907 https://repo.huaweicloud.com/harmonyos/compiler/clang/10.0.1-53907/linux/llvm.tar.gz
hc-gen 0.65 https://repo.huaweicloud.com/harmonyos/compiler/hc-gen/0.65/linux/hc-gen-0.65-linux.tar
gcc_riscv32 7.3.0 https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz
ninja 1.9.0 https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
gn 1717 https://repo.huaweicloud.com/harmonyos/compiler/gn/1717/linux/gn-linux-x86-1717.tar.gz
node v12.20.0 https://mirrors.huaweicloud.com/nodejs/v12.20.0/node-v12.20.0-linux-x64.tar.gz
hmos_app_packing_tool https://repo.huaweicloud.com/harmonyos/develop_tools/hmos_app_packing_tool.jar
hapsigntoolv2 https://repo.huaweicloud.com/harmonyos/develop_tools/hapsigntoolv2.jar
hb python3 -m pip install —user ohos-build