2024年最新鸿蒙来啦!快速入门OpenHarmony的LiteOS微内核,你不看看吗?(1),flutter页面跳转数据丢失

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

3、LiteOS的目录介绍

我们以Cortex-A系列处理器内核为例:kernel_liteos_a

可以看到有12目录、4个文件。

  • 目录的作用
名称描述
apps用户态的init和shell应用程序。
arch体系架构的目录,如arm等。
bsdfreebsd相关的驱动和适配层模块代码引入,例如USB等。
compat内核posix接口的兼容。
fs文件系统模块,主要来源于NuttX开源项目。
kernel进程、内存、IPC等模块。
lib内核的lib库。
net网络模块,主要来源于lwip开源项目。
platform支持不同的芯片平台代码,如Hi3516DV300等。
security安全特性相关的代码,包括进程权限管理和虚拟id映射管理。
syscall系统调用。
tools构建工具及相关配置和代码。
  • 文件的作用
名称描述
Makefile存储了源码文件构建目标文件的规则,具体是否按着规则去执行还要看配置变量。
Kconfig配置变量
config.mk主要进行编译选项的设置、编译工具的定义、编译时包含的文件、编译的链接地址。
build.sh编译脚本

4、LiteOS 中Make体系

顶层 Makefile 在编译时是入口点,从整体上组织所有的 Makefile 文件,并定义终极目标,在这里还定义了与平台无关的很多核心变量与一些很重要的 make目标。顶层 Makefile 位于内核源码的根目录,下面我们分析顶层 Makefile 的主要工作。

用户在内核目录中键入make menuconfig之后 ,工作流程如下 :

  1. 顶 层 Makefile调用解析顶层Kconfig文件,获得待配置条目;
  2. 判断是否有已配置好的.config文件,如果有则导入;
  3. 用户在配置好后,将配置结果存入配置文件。

Linux类似LiteOSMake体系顶层 makefile会通过读取配置文件,递归编译内核代码树的相关目录。
/kernel_liteos_a/Makefile

make menuconfig

export CONFIG_=LOSCFG_
MENUCONFIG_PATH = $(LITEOSTOPDIR)/tools/menuconfig
KCONFIG_FILE_PATH = $(LITEOSTOPDIR)/Kconfig

5、LiteOS 中Kconfig的配置

无论在什么平台上,软件配置是用户接触程序的第一步,我们这里是内核配置,那么入口就是Kconfig文件。

5.1、顶层Kconfig

通过顶层的Kconfig我们可以看见内核所以支持的功能,类似说明书一样,等待你去打开功能。
例如:

kernel_liteos_a/Kconfig

//包含其他的Kconfig
source “…/…/vendor/hisi/hi35xx/platform/hiedmac/Kconfig”
source “…/…/kernel/liteos_a/bsd/dev/usb/Kconfig”
source “…/…/drivers/hdf/lite/Kconfig”

config USB_DEBUG
bool “Enable USB Debug”
default n
depends on SHELL && DRIVERS_USB && DEBUG_VERSION
help
Answer Y to enable LiteOS support usb debug.
use shell command to open the specified debug level print.

config MEM_DEBUG
bool “Enable MEM Debug”
default n
depends on DEBUG_VERSION
help
Answer Y to enable LiteOS support mem debug.

通过source加载其他的Kconfig例如加载USB相关配置

kernel_liteos_a/bsd/dev/usb/Kconfig:

config DRIVERS_USB
bool “Enable USB”
default y
depends on DRIVERS && COMPAT_BSD
help
Answer Y to enable LiteOS support usb.

config DRIVERS_USB_HOST_DRIVER
bool “Enable USB HCD”
default y
depends on DRIVERS_USB && DRIVERS
help
Answer Y to enable LiteOS to support usb host controller driver.

5.2、具体板级的deconfig文件

可配置说明书有了,我们也不能每次都重新配置一遍把,这个时候就有板级默认配置。

目前LiteOS中Cortex-A系列处理器内核为例:kernel_liteos_a适配的开发板:hi3518hi3516,并提供了已经配置好的.config,下来我们以hi3518为例子对其进行分析。
源文件为:tools/build/config/hi3516dv300_release.config
[图片上传失败…(image-5e5f6e-1600494723897)]

通过该文件我们可以知道内核配置包括了些什么?
CPU、开发板、文件系统、驱动程序和调试等大量的待配置信息。

Automatically generated file; DO NOT EDIT.

Huawei LiteOS Configuration

Compiler

Platform

Extra Configurations

Kernel

Lib

Compat

FileSystem

Net

Debug

Driver

LOSCFG_DRIVERS=y
LOSCFG_DRIVERS_USB=y
LOSCFG_DRIVERS_USB_HOST_DRIVER=y

LOSCFG_DRIVERS_USB_HOST_EHCI is not set

LOSCFG_DRIVERS_USB_HOST_XHCI=y
LOSCFG_DRIVERS_USB_DEVICE_CLASS_DRIVERS=y

后面我们就将以LOSCFG_DRIVERS_USB为切入点分析源码,但在这之前,我们配置有了,下来就是编译了。

6、编译

kernel_liteos_a/bsd/dev/usb/Makefile
最后编译时候,会根据.config编译相关的源代码:

例如下面这些代码都将会进行编译,生成了目标文件usb_bask

include $(LITEOSTOPDIR)/config.mk

MODULE_NAME := usb_base

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值