## LiteOS Code Entry The LiteOS entry is in the main.c file of a project. The basic process is as follows: ```c INT32 main(VOID) { BoardConfig(); HardwareInit(); PRINT_RELEASE("\n********Hello Huawei LiteOS********\n" "\nLiteOS Kernel Version : %s\n" "build data : %s %s\n\n" "**********************************\n", HW_LITEOS_KERNEL_VERSION_STRING, __DATE__, __TIME__); UINT32 ret = OsMain(); if (ret != LOS_OK) { return LOS_NOK; } OsStart(); return 0; } ``` Configure the memory end address using BoardConfig(), initialize the hardware using HardwareInit(), and print the version information of Huawei LiteOS. Execute OsMain() to initialize the Huawei LiteOS kernel and routines. A user task is created in the OsMain() function, and the task processing function is app_init(). Call OsStart() to start task scheduling. Huawei LiteOS starts to work properly. ## Description of the LiteOS Code Directory Structure Source code stored in each directory is as follows: | Level-1 Directory | Level-2 Directory | Level-3 Directory | Description | | ---------- | ------------------------ | --------------------- | ------------------------------------------------------------ | | arch | arm | cortex_a_r | Cortex-A architecture support | | | | cortex_m | Cortex-M architecture support | | | arm64 | | ARM64 architecture support | | build | | | Configuration and scripts required for building LiteOS | | compat | cmsis | | CMSIS-RTOS 1.0 and 2.0 APIs provided by LiteOS | | components | ai | | MindSpore-based AI operator library implementation | | | connectivity | agent_tiny | agent_tiny, which is a device-cloud interconnect componentcontaining the public header file, sample code, client implementation code, and OS adaptation layer code | | | | lwm2m | Implementation of the LwM2M protocol | | | | mqtt | Implementation of the MQTT open-source protocol | | | | nb_iot | LiteOS NB-IoT API | | | fs | | File systems, including vfs, spiffs, ramfs, littlefs, kifs, fatfs and devfs | | | gui | | Open-source LittlevGL graphics library | | | language | | Language-related components, including lua | | | lib | cjson | C language JSON library | | | log | | Log level control | | | media | | Media-related components, including Opus and libpng | | | net | at_device | AT device adaptation layer | | | | at_frame | LiteOS AT framework API | | | | lwip/lwip_port | lwIP driver and OS adaptation code | | | | lwip/lwip-2.1.2 | Implementation of the lwIP protocol | | | | lwip/ppp_port | Support for the PPP port of the lwIP protocol | | | | sal | Socket communication support | | | ota | | Firmware upgrade code | | | security | mbedtls/mbedtls_port | mbed TLS OS adaptation code | | | | mbedtls/mbedtl-2.16.8 | mbed TLS protocol implementation | | | sensorhub | include | Sensor manager header file | | | | src | Sensor manager source code implementation | | | utility | | Parsing tools, including bidireference, freetype, iconv, iniparser, json-c and libxml2 | | demos | agenttiny_lwm2m | | LwM2M protocol demo | | | agenttiny_mqtt | | MQTT protocol demo | | | ai | | AI demo | | | dtls_server | | DTLS protocol demo | | | fs | | File system demo | | | gui | | GUI demo | | | ipv6_client | | IPv6 protocol demo | | | kernel | api | Demo code example for developers to test the LiteOS kernel | | | | include | Directory of API function header files | | | language | | Language-related component demo | | | lms | | LMS demo | | | media | | Media-related component demo | | | nbiot_without_atiny | | NB-IoT demo | | | sensorhub | gyro | Demo for periodically reading the original data of the MPU6050 gyroscope based on the sensorhub sensor framework | | | trace | | Trace demo | | | utility | | Parser demo | | doc | | | LiteOS-related documents, such as the usage guide and API description | | include | | | Header files which each components module depends on | | kernel | base | | LiteOS basic kernel code, providing functions such as tasks, interrupts, software timers, queues, events, semaphores, mutex locks, and ticks | | | | debug | LiteOS kernel debugging code, including the debugging of queues, semaphores, mutexes, and task scheduling | | | | include | Header files internally used by the LiteOS basic kernel | | | | mem | Code related to memory management in LiteOS | | | | sched | Task scheduling, including multi-core scheduling | | | | shellcmd | Shell commands related to the basic kernel on LiteOS, including memcheck, task, systeminfo, and swtmr | | | extended | cppsupport | Bottom-layer APIs for the C++ compatible adaptation layer | | | | cpup | cpup | APIs for collecting statistics on CPU usage | | | | include | Header files required by the extended directory | | | | lms | Library file of LMS (used to check the validity of memory operations in real time) | | | | lowpower | Code related to the low-power framework | | | | trace | Event tracing, which is used to record the system running track in real time | | | include | | LiteOS open-source kernel header file | | | init | | LiteOS kernel initialization code | | lib | huawei_libc | | LiteOS Huawei-developed libc library and adapted POSIX API | | | libc | | The musl libc library for LiteOS adaptation | | | libsec | | Huawei security function library | | | zlib | | Open-source zlib library | | osdepends | liteos | | Some OS adaptation interfaces provided by LiteOS | | shell | | | Implementing the code of the shell command and supporting the basic debugging function | | targets | bsp | | General board support package | | | Cloud_STM32F429IGTx_FIRE | | Wildfire STM32F429 (ARM Cortex M4) development project source code package | | | qemu-virt-a53 | | QEMU development project source code package of Coretex-A53 | | | realview-pbx-a9 | | QEMU development project source code package of Coretex-A9 | | | STM32F072_Nucleo | | Source code package of the development project for the STM32F072_Nucleo (ARM Cortex-M0) development board | | | STM32F103_FIRE_Arbitrary | | Development project source code package of the Wildfire STM32F103 (ARM Cortex-M3) Hegemony development board | | | STM32F407_ATK_Explorer | | STM32F407 (ARM Cortex-M4) explorer board development project source code package | | | STM32F769IDISCOVERY | | Source code package of the development project for the STM32F769IDISCOVERY (ARM Cortex-M7) development board | | | STM32L4R9I_Discovery | | Source code package of the development project for the STM32L4R9IDISCOVERY (ARM Cortex-M4) development board | | | STM32L431_BearPi | | Source code package of the development project for BearPi STM32L431 (ARM Cortex-M4) development board | | | STM32L476_NB476 | | Source code package of the Shenzhen maker STM32L476 (ARM Cortex-M4) development board | | | STM32L496_Nucleo | | Source code package of the development project for the STM32L496 NUCLEO-144 (ARM Cortex-M4) development board | | tools | build | | Configuration file of the development board supported by LiteOS | | | menuconfig | | The menuconfig script required for building LiteOS | | Makefile | | | LiteOS Makefile | | .config | | | Configuration file of the development board. If you do not reselect a development board, the configuration file of the wildfire challenger STM32F429 development board is used by default. |