.json files to configure HarmonyOS build
.json files are required by python build scripts for system components configuration. What is the reason for that? Is there a way to generate those files from some human readable format? Why is this a preferred way of configuring the system's build?
Kernel configuration options
Why do kernel configuration options exist if most of them cannot be turned off? For instance, one can't disable FS_VFS_, COMPAT_POSIX, COMPAT_BSD otherwise the kernel won't build due to strong dependencies. It seems that there are cross dependencies between separate modules inside of the kernel code. For example, low-level memory management uses file system code. There is no clear isolation between some kernel components which makes it nearly impossible to exclude them from the build. Is that a mistake in design and should be changed or options that disable components crucial for the kernel build should be statically enabled without possibility to change?
Third party libraries
Why third party libraries, such as musl or nuttx, are outside of the kernel directory if:
a) They are not vanilla versions and are modified or include kernel headers directly.
b) Paths to those directories are either hard coded in the liteos build ("../../") or are kept as symbolic links in the liteos tree (musl). Why multiple ways of including those libs into the kernel?
Kernel build depends strongly on vendor directory, that resides outside of the kernel. In some cases, such as wifiiot target, kernel files are stored in vendor. Generic drivers such as ARM UART PL011 include chip specific files from vendor. Generic kernel code depends on platform specific, HiSilicon files and functions. What is the reason of keeping vendor directory outside of the kernel if it
a) contains liteos kernel code
b) is required for the kernel to build
c) cannot be re-used due to dependency on liteos
Behavior when build fails
Why failed build continues until the end and when retrying build removes previously created files? Is there a way to not rebuild everything from scratch when the build fails and gets re-started after solving the problem in the source code?
What is the real meaning of liteos_a and liteos_m ?
Is A for application processors and M for microcontrollers? If so, why there seems to be liteos_riscv as a parallel kernel type used interchangeably with liteos_m in the build system?
Harmony liteos_m vs LiteOS
We can see that Harmony liteos contains files, function names, etc. no longer present in gitee LiteOS. In the latter one, the change was applied in the following commit: https://gitee.com/LiteOS/LiteOS/commit/f74e444138a4d811c2a8d606a252070de176267a
Is there a reason for Harmony liteos to keep the old code base?
我们可以看到，Harmony lieos中包含的文件、函数名等，不再存在于gite LiteOS中。在后一种系统中，有如下提交https://gitee.com/LiteOS/LiteOS/commit/f74e444138a4d811c2a8d606a252070de176267a
What is the goal of keeping drivers directory in the HarmonyOS root directory? Are those drivers supposed to be used in the kernel or it is an unfortunate name for the userspace components?
Many files in the HarmonyOS tree has "executable" attribute. Why?
Libraries in binary form
We forcefully link with libraries in binary form such as libhi35xx_bsp.a. Because of that there is no way to disable some drivers as their init functions are called from the library in the binary form which then fails to link due to lack of related symbols. Why do we link with libraries in binary form if we have a source code for them?
What are platforms in platform/Kconfig
The description refers to "Boards" but it the macro definition it looks more like SoC. Which one is it?
Sign in to comment