目录
第一篇基 本 原 理
第1章OpenHarmony概述
1.1初识OpenHarmony
1.1.1OpenHarmony背景
1.1.2OpenHarmony版本
1.2OpenHarmony架构
1.2.1技术特性
1.2.2系统类型
1.2.3详细特征
1.3内核、南向与北向开发
1.4OpenHarmony内核子系统
1.5LiteOSM内核
1.5.1LiteOSM概述
1.5.2LiteOSM架构
1.5.3LiteOSM接口
1.5.4LiteOSM功能模块
1.6编程实践一: 开发环境构建
1.6.1安装WSL2
1.6.2安装Ubuntu及其必要工具
1.6.3使用Linux常用命令
1.6.4VS Code的安装使用
1.6.5实践与思考
第2章OpenHarmony硬件与仿真
2.1RISCV架构
2.1.1RISCV计算机
2.1.2RISCV系统结构
2.1.3RISCV SoC系统
2.1.4RISCV仿真
2.2RISCV CPU
2.2.1RISCV指令集
2.2.2RISCV寄存器
2.3RISCV virt虚拟系统
2.4编译、链接与调试
2.4.1编译
2.4.2链接
2.4.3构建
2.4.4Makefile
2.4.5调试
2.4.6ELF文件结构
2.5Qemu与OpenHarmony仿真运行
2.5.1Qemu命令的使用
2.5.2编译、运行与调试
2.6编程实践二: 源码、编译与仿真环境搭建
2.6.1下载内核源码
2.6.2安装工具链GCC
2.6.3安装QEMU RISCV
2.6.4编译运行内核
2.6.5内核源码的修改
2.6.6Linux中调试内核
2.6.7VS Code中调试内核
2.6.8实践与思考
第二篇系统启动、任务管理与进程间通信
第3章OpenHarmony启动
3.1内核启动与系统初始化阶段
3.2主程序阶段
3.3内核初始化阶段
3.4用户程序初始化与任务调度
3.5编程实践三: 启动分析
3.5.1跟踪调试los_start.S
3.5.2跟踪调试main()函数
第4章OpenHarmony任务管理
4.1任务创建
4.1.1任务数据结构
4.1.2任务创建过程
4.2任务初始化与运行
4.2.1任务初始化
4.2.2任务运行
4.2.3任务启动
4.3编程实践四: 任务创建
4.3.1API编程
4.3.2源码分析
第5章OpenHarmony任务调度
5.1任务上下文切换
5.1.1上下文定义
5.1.2上下文切换
5.2任务调度
5.2.1任务初始化
5.2.2启动任务内核
5.2.3启动任务调度
5.3编程实践五: 任务调度
5.3.1API编程
5.3.2源码分析
5.3.3内核实现
第6章OpenHarmony进程同步
6.1信号量与生产者消费者模型
6.1.1信号量
6.1.2互斥锁
6.1.3生产者消费者模型
6.2编程实践六: 信号量与互斥锁分析与使用
6.2.1API编程
6.2.2源码分析
6.2.3内核实现
第7章OpenHarmony进程间通信
7.1消息队列
7.2编程实践七: 消息队列与管道
7.2.1API编程
7.2.2源码分析
7.2.3内核实现
第三篇内存、中断与文件系统管理
第8章OpenHarmony内存管理实验
8.1静态内存管理
8.2动态内存管理
8.2.1Buddy伙伴系统
8.2.2动态内存管理
8.2.3内存分配与释放
8.2.4动态内存管理接口
8.2.5动态内存使用流程
8.3编程实践八: 内存管理
8.3.1API编程
8.3.2源码分析
8.3.3内核实现
第9章OpenHarmony芯片与中断管理
9.1芯片抽象
9.1.1芯片常量
9.1.2公共常量
9.2中断管理
9.2.1中断系统
9.2.2OpenHarmony中断接口
9.2.3OpenHarmony中断处理流程
9.2.4RISCV中断
9.3编程实践九: 中断管理
9.3.1API编程
9.3.2源码分析
9.3.3内核实现
第10章OpenHarmony文件系统
10.1文件系统
10.1.1VFS文件系统
10.1.2FAT文件系统
10.2文件系统操作
10.2.1FAT32文件系统制作
10.2.2挂载与卸载
10.3编程实践十: 文件系统操作
10.3.1API编程
10.3.2源码分析
10.3.3内核实现
第四篇轻量系统构建
第11章OpenHarmony RISCV virt轻量系统安装
11.1预备工具
11.1.1安装Ubuntu及VS Code
11.1.2准备命令工具
11.1.3注册码云gitee账号及SSH公钥
11.1.4安装配置git客户端
11.2获取源码及工具链
11.2.1通过repo获取源码
11.2.2下载工具链
11.3安装编译构建工具hb
11.3.1安装hb命令
11.3.2检查hb命令
11.3.3使用hb命令
11.4编程实践十一: 构建RISCV virt系统
11.4.1设置hb并构建目标
11.4.2常见错误处理
第12章Ninja与GN构建技术
12.1Ninja技术与GN概述
12.1.1Ninja与GN工具安装与构建
12.1.2Ninja
12.1.3GN
12.2GN文件语法规则
12.3构建过程与工具链
12.3.1构建配置
12.3.2构建目标
12.3.3CONFIGS与CONFIG
12.3.4工具链
12.4编程实践十二: GN构建
12.4.1simple_build概述
12.4.2.gn文件
12.4.3build/BUILDCONFIG.gn文件
12.4.4build/toolchain/BUILD.gn文件
12.4.5build/BUILD.gn文件
12.4.6BUILD.gn文件
第13章OpenHarmony编译子系统
13.1OpenHarmony编译构建框架
13.1.1编译构建概述
13.1.2编译子系统架构
13.1.3目录结构
13.2OpenHarmony配置规则
13.2.1产品配置规则
13.2.2子系统配置规则
13.2.3部件配置
13.2.4模块配置
13.2.5芯片解决方案
13.3hb配置参数及其解析
13.3.1参数结构
13.3.2参数文件的位置
13.3.3参数文件示例
13.4编程实践十三: 编译构建过程
13.4.1编译构建流程
13.4.2hb set的运行
13.4.3hb主程序及初始化
13.4.4hb构建模块接口分析
13.4.5hb构建模块ohos_build分析
参考文献
