liteos ARM架构代码框架整体分析
1架构框架图支持的架构表ArchitectureSeriesARMCortex-M0Cortex-M3Cortex-M4Cortex-M7Cortex-A7Cortex-A9Cortex-A53ARM64RISC-V上面的架构不支持mips,后续我们的开发就要适配mips架构。3代码目录分析kernel 结构分析任务管理提供任务的创建、删除、延迟、挂起、恢复等功能以及锁定和解锁任务调度。支持任务按优先级高低的抢占调度以及同优先级时间片轮转调度。内存管理提供静态内存和动态内存两种算法支持内存申请、释放。目前支持的内存管理算法有固定大小的BOX算法、动态申请的bestfit算法和bestfit_little算法。提供内存统计、内存越界检测功能。硬件相关提供中断管理、异常管理、系统时钟等功能。中断管理提供中断的创建、删除、使能、禁止、请求位的清除功能。异常管理系统运行过程中发生异常后跳转到异常处理模块打印当前发生异常的函数调用栈信息或者保存当前系统状态。TickTick是操作系统调度的基本时间单位对应的时长由每秒Tick数决定由用户配置。IPC通信提供消息队列、事件、信号量和互斥锁功能。消息队列支持消息队列的创建、删除、发送和接收功能。事件支持读事件和写事件功能。信号量支持信号量的创建、删除、申请和释放功能。互斥锁支持互斥锁的创建、删除、申请和释放功能。软件定时器软件定时器提供了定时器的创建、删除、启动、停止功能。自旋锁多核场景下支持自旋锁的初始化、申请、释放功能。低功耗Run-stop即休眠唤醒是Huawei LiteOS提供的保存系统现场镜像以及从系统现场镜像中恢复运行的机制。TicklessTickless机制通过计算下一次有意义的时钟中断的时间来减少不必要的时钟中断从而降低系统功耗。打开Tickless功能后系统会在CPU空闲时启动Tickless机制。维测CPU占用率可以获取系统或者指定任务的CPU占用率。Trace事件跟踪实时获取事件发生的上下文并写入缓冲区。支持自定义缓冲区跟踪指定模块的事件开启/停止Trace清除/输出trace缓冲区数据等。LMS实时检测内存操作合法性LMS能够检测的内存问题包括缓冲区溢出buffer overflow释放后使用use after free多重释放double free和释放野指针wild pointer。ShellHuawei LiteOS Shell使用串口接收用户输入的命令通过命令的方式调用、执行相应的应用程序。Huawei LiteOS Shell支持常用的基本调试功能同时支持用户添加自定义命令。启动流程图地址结构图liteos 代码架构路径一级目录二级目录三级目录说明archarmcortex_a_rA核架构支持cortex_mM核架构支持arm64arm64架构支持cskycskyv2cskyv2架构支持riscvrvm32riscv架构支持buildLiteOS编译系统需要的配置及脚本compatcmsisliteos提供的CMSIS-RTOS 1.0和2.0接口componentsaiai(基于mindspore)算子库实现connectivityagent_tinyagent_tiny端云互通组件包括公共头文件、示例代码、客户端实现代码、操作系统适配层代码lwm2mlwm2m协议实现mqttMQTT开源协议实现nb_iotLiteOS NB-IoT APIfsdevfsdevfs文件系统fatfsfatfs文件系统kifskifs文件系统littlefslittlefs文件系统ramfsramfs文件系统spiffsspiffs文件系统vfs虚拟文件系统gui开源LittlevGL图形库language语言相关组件含lualibcjsonc语言json库log日志等级控制media媒体相关组件含libpng、openexif、opus、upup、netat_deviceAT设备适配层at_frameLiteOS AT框架APIifconfigifconfig shell命令实现los_iperf网络带宽测试工具lwip/lwip_portlwip驱动及OS适配代码lwip/lwip-2.1.2lwip协议实现lwip/ppp_portlwip协议ppp端口支持pcap网络抓包工具pingping shell命令实现salsocket通讯支持tftp_servertftp服务ota固件升级代码securitymbedtls/mbedtls_portmbed TLS的OS适配代码mbedtls/mbedtl-2.16.8mbed TLS协议实现opensslopenssl协议sensorhubincludesensor manager头文件srcsensor manager的源码实现utility解析工具含bidireference、curl、fastlz、freetype、harfbuzz、iconv、iniparser、json-c、jsoncpp、libxml2、sqlite、thttpd、tinyxml2demosagenttiny_lwm2mlwm2m协议 demoagenttiny_mqttmqtt 协议demoaiai的demodtls_serverdtls协议demofs文件系统demoguigui的demoipv6_clientIpv6协议demokernelapi供开发者测试LiteOS内核的demo示例代码includeAPI功能头文件存放目录language语言相关组件的demolmsLMS的demomedia媒体相关组件的demonbiot_without_atinyNB-IoT demosensorhubgyro基于sensorhub传感框架定时读取MPU6050陀螺仪原始数据的demotraceTrace的demoutility解析工具的demodoc此目录存放的是LiteOS的使用文档和API说明等文档driverbaseLiteOS驱动框架interruptLiteOS系统中断接口timerLiteOS系统定时器接口uartLiteOS系统串口接口includecomponents各个模块所依赖的头文件kernelbaseLiteOS基础内核代码包括任务、中断、软件定时器、队列、事件、信号量、互斥锁、tick等功能debugLiteOS内核调测代码包括队列、信号量、互斥锁及任务调度的调测includeLiteOS基础内核内部使用的头文件memLiteOS中的内存管理相关代码sched任务调度支持包括对多核的调度支持shellcmdLiteOS中与基础内核相关的shell命令包括memcheck、task、systeminfo、swtmr等extendedcppsupportC兼容适配层底层接口cpupCPU占用率统计接口includeextended目录所需的头文件lmsLMS实时检测内存操作合法性算法的库文件lowpower低功耗框架相关代码tracetrace事件跟踪用于实时记录系统运行轨迹includeLiteOS开源内核头文件initLiteOS内核初始化相关代码libhuawei_libcLiteOS自研libc库和适配的posix接口libcLiteOS适配的musl libc库libsec华为安全函数库zlib开源zlib库osdependsliteosLiteOS提供的部分OS适配接口shellsrc实现shell命令的代码支持基本调试功能includeshell头文件targetsbsp通用板级支持包CB2201CB2201ck802开发板的开发工程源码包Cloud_STM32F429IGTx_FIRE野火STM32F429ARM Cortex M4开发板的开发工程源码包GD32E103C_STARTGD32E103C_STARTARM Cortex M4开发板的开发工程源码包GD32F303RGT6_BearPiGD32F303RGT6_BearPiARM Cortex M4开发板的开发工程源码包GD32VF103V_EVALGD32VF103V_EVALriscv开发板的开发工程源码包HiFive1_Rev1_B01HiFive1_Rev1_B01riscv开发板的开发工程源码包qemu-virt-a53Coretex A53的qemu开发工程源码包realview-pbx-a9Coretex A9的qemu开发工程源码包STM32F072_NucleoSTM32F072_NucleoARM Cortex M0开发板的开发工程源码包STM32F103_FIRE_Arbitrary野火STM32F103ARM Cortex M3霸道开发板的开发工程源码包STM32F407_ATK_Explorer正点原子STM32F407ARM Cortex M4探索者开发板的开发工程源码包STM32F769IDISCOVERYSTM32F769IDISCOVERYARM Cortex M7开发板的开发工程源码包STM32L4R9I_DiscoverySTM32L4R9IDISCOVERYARM Cortex M4开发板的开发工程源码包STM32L073_NucleoSTM32L073_NucleoARM Cortex M0开发板的开发工程源码包STM32L431_BearPi小熊派STM32L431ARM Cortex M4开发板的开发工程源码包STM32L476_NB476深创客STM32L476ARM Cortex M4开发板的开发工程源码包STM32L496_NucleoSTM32L496 NUCLEO-144ARM Cortex M4开发板的开发工程源码包STM32L552_NucleoSTM32L552 NucleoARM Cortex M33开发板的开发工程源码包toolsbuildLiteOS支持的开发板编译配置文件menuconfigLiteOS编译所需的menuconfig脚本MakefileLiteOS Makefile.config开发板的配置文件如果用户不重新选择开发板默认为野火挑战者STM32F429开发板的配置文件