2024年HarmonyOS鸿蒙最新鸿蒙来啦!快速入门OpenHarmony的LiteOS微内核,你不看看吗?(1),HarmonyOS鸿蒙面试题整理

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


img
img

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

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

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

例如:

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

ifeq ($(LOSCFG_DRIVERS_USB), y)
LOCAL_SRCS += $(CORE_SRC)/usb_dynamic.c
$(CORE_SRC)/usb_parse.c
$(CORE_SRC)/usb_error.c
$(CORE_SRC)/usb_handle_request.c
$(CORE_SRC)/usb_util.c
$(CORE_SRC)/usb_lookup.c
$(CONTROLLER_HOST_SRC)/usb_controller.c
$(QUIRK_SRC)/usb_quirk.c
$(CORE_SRC)/usb_device.c
$(CORE_SRC)/usb_process.c
$(CORE_SRC)/usb_hub.c
$(CORE_SRC)/usb_request.c
$(CORE_SRC)/usb_transfer.c
$(CORE_SRC)/usb_dev.c
$(CORE_SRC)/usb_mbuf.c
$(CORE_SRC)/usb_generic.c
$(CORE_SRC)/usb_if.c
endif

这里生成目标文件是如何链接的内核中,这个时候我们就要开始分析config.mk的作用了:

7、顶层目录下的config.mk文件主要完成如下功能的配置:

1、确定生成可执行文件过程中需要的各种工具,如编译器(arm-linux-gcc)、连接器(arm-linux-ld)、反汇编器(arm-linux-objdump
2、确定CPU、板相关的配置文件,存在于各个目录下的config.mk
3、确定编译、链接、转换等过程的操作选项
4、根据步骤3确定的编译连接选项生成需要的文件
kernel_liteos_a/Makefile:

$(LD) $(LITEOS_LDFLAGS) $(LITEOS_TABLES_LDFLAGS) ( L I T E O S D Y N L D F L A G S ) − M a p = (LITEOS_DYNLDFLAGS) -Map= (LITEOSDYNLDFLAGS)Map=(OUT)/$@.map -o ( O U T ) / (OUT)/ (OUT)/@ --start-group $(LITEOS_LIBDEP) --end-group

kernel_liteos_a\config.mk:

############### this is a makefile that you can config it ###############
-include $(LITEOSTOPDIR)/tools/build/mk/los_config.mk

LITEOS_LIBDEP := $(LITEOS_BASELIB)

目录:kernel_liteos_a\tools\build\mk\los_config.mk

############################# Platform Option Begin#################################
include ( L I T E O S T O P D I R ) / p l a t f o r m / b s p . m k . . . i f e q ( (LITEOSTOPDIR)/platform/bsp.mk ... ifeq ( (LITEOSTOPDIR)/platform/bsp.mk...ifeq((LOSCFG_DRIVERS_USB), y)
LITEOS_BASELIB += -lusb_base
LIB_SUBDIRS += $(LITEOSTOPDIR)/bsd/dev/usb
LITEOS_USB_INCLUDE += -I ( L I T E O S T O P D I R ) / b s d / d e v / u s b i f e q ( (LITEOSTOPDIR)/bsd/dev/usb ifeq ( (LITEOSTOPDIR)/bsd/dev/usbifeq((LOSCFG_USB_DEBUG), y)
LITEOS_CMACRO += -DLOSCFG_USB_DEBUG
endif
endif

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

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

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

很难做到真正的技术提升。**

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

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值