同步操作将从 OpenHarmony/docs 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
The compilation and building subsystem is a building system based on Generate Ninja (GN) and Ninja. It supports on-demand configuration, tailoring, and assembly by component to customize desired products. The following figure shows the building process.
Parse the building commands: Parse the product name, building type (debug or release), specified compiler, and whether a component will be compiled independently.
NOTE: If the building type is debug, XTS will be involved in the building. If the building type is release, the symbol table and debugging information of the file generated after building will be removed.
Read the product configuration: Read the vendor/my_company/my_product.json file that contains the development board, kernel type, kernel version, and components to configure.
Run the gn gen command to generate the ninja file: Based on the parsed product configuration, add the selected components to build according to the corresponding building toolchain and configure global building options.
Use Ninja to start building: Build and link the components one by one.
For details about GN, see GN Quick Start Guide.
You need to create a directory for the development board. Taking the RTL8720 development board of Realtek for example, the device/realtek/rtl8720 directory must be created. To complete the building adaptation, perform the following steps:
Configure the toolchain and building options.
The ohos-clang toolchain is used by default. SoC vendors can also customize the configuration based on their development boards. The building-related variables in the building configuration file of the development board are described as follows:
kernel_type: kernel type used by the development board, for example, "liteos_a", "liteos_m", or "linux".
kernel_version: kernel version used for development, for example, "4.19".
board_cpu: CPU type of the development board, for example, "cortex-a7" or "riscv32".
board_arch: chip architecture of the development board, for example, "armv7-a" or "rv32imac".
board_toolchain: name of the customized building toolchain used by the development board, for example, "gcc-arm-none-eabi". If this variable is not specified, ohos-clang will be used by default.
board_toolchain_prefix: prefix of the building toolchain, for example, "gcc-arm-none-eabi".
board_toolchain_type: building toolchain type. Currently, GNU compiler collection (GCC) and clang are supported, for example, "gcc" or "clang".
board_cflags: building options of the .c file configured for the development board.
board_cxx_flags: building options of the .cpp file configured for the development board.
board_ld_flags: link options configured for the development board.
The corresponding config.gni file will be loaded based on the development board selected by the product. The variables in this file are globally visible to system components.
Taking the RTL8720 development board of Realtek as an example, the device/realtek/rtl8720/liteos_m/config.gni file is configured as follows:
# Kernel type, e.g. "linux", "liteos_a", "liteos_m".
kernel_type = "liteos_m"
# Kernel version.
kernel_version = "3.0.0"
# Board CPU type, e.g. "cortex-a7", "riscv32".
board_cpu = "real-m300"
# Board arch, e.g. "armv7-a", "rv32imac".
board_arch = ""
# Name of the toolchain that is used for system building
# E.g. gcc-arm-none-eabi, arm-linux-harmonyeabi-gcc, ohos-clang, riscv32-unknown-elf.
# Note: The "ohos-clang" toolchain is used by default. You can also customize the toolchain.
board_toolchain = "gcc-arm-none-eabi"
# Path where the toolchain is installed, which can be left blank if the installation path has been added to ~/.bashrc.
board_toolchain_path =
rebase_path("//prebuilts/gcc/linux-x86/arm/gcc-arm-none-eabi/bin",
root_build_dir)
# Prefix of the toolchain
board_toolchain_prefix = "gcc-arm-none-eabi-"
# Type of the toolchain
board_toolchain_type = "gcc"
# Building flags related to the board
board_cflags = []
board_cxx_flags = []
board_ld_flags = []
Edit the building script of the development board.
For a newly added development board, the BUILD.gn file that functions as the entry for building must be added to the board directory. Taking the RTL8720 development board of Realtek as an example, the content in the device/realtek/rtl8720/BUILD.gn file is as follows:
group("rtl8720") {
...
}
Build and debug the development board.
Run the hb set command in any directory to set the source code path and the product to build.
Run the hb build command in the development board directory to start the building.
Build and debug the product.
Write the development board and component information to the product configuration file. Fields in the configuration file are as follows:
Taking the Wi-Fi IoT module based on the RTL8720 development board as an example, the vendor/my_company/wifiiot/config.json file is as follows:
{
"product_name": "wifiiot", # Product name
"ohos_version": "OpenHarmony 1.0", # In-use OS version
"device_company": "realtek", # Name of the chip solution vendor
"board": "rtl8720", # Name of the development board
"kernel_type": "liteos_m", # Selected kernel type
"kernel_version": "3.0.0", # Selected kernel version
"subsystems": [
{
"subsystem": "kernel", # Selected subsystem
"components": [
{ "component": "liteos_m", "features":[] } # Selected component and its features
]
},
...
{
More subsystems and components
}
]
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。