POSIX支持基本概念OpenHarmony内核使用musllibc库以及自研接口,支持部分标准POSIX接口,开发者可基于POSIX标准接口开发内核之上的组件及应用。开发指导接口说明表1POSIX接口说明类别需要包含的头文件接口名描述processincludevoidabort(void);中止进程执行includevoidassert(scalarexpression);断言为假终止进程includevoidexit(intstatus);正常退出进程includeintpthreadconddestroy(pthreadcondtcond);销毁条件变量includein...
2021-07-21 18:31:43 1.3w浏览 0点赞 0回复 0收藏
标准系统内核Linux内核概述面向标准系统类设备(参考内存≥128MB),OpenHarmony选择Linux内核作为基础内核,可以对不同资源受限的设备产品配置出适合的OS内核,为上层提供基础的操作系统能力。Linux内核版本Linux内核版本分为稳定版本以及长期支持LTS(longtermsupport)版本。稳定版本大约每三个月发布一个新版本,包含最新硬件支持、性能改进以及bug修复等。其缺点是整体维护生命周期较短,产品软件不能得到长期稳定的支持。...
2021-07-21 18:29:10 1.4w浏览 0点赞 1回复 0收藏
CMSIS支持基本概念CMSIS是CortexMicrocontrollerSoftwareInterfaceStandard(Cortex微控制器软件接口标准)的缩写,是对于那些基于ARMCortex处理器的微控制器独立于供应商的硬件抽象层。它包含多个组件层,其中之一是RTOS层,该层定义了一套通用及标准化的RTOSAPI接口,减少了应用开发者对特定RTOS的依赖,方便用户软件的移植重用。该套API有2个版本,分别为版本1(CMSISRTOSv1)和版本2(CMSISRTOSv2),OpenHarmonyLiteOSM仅...
2021-07-21 18:25:24 1.4w浏览 0点赞 0回复 1收藏
基本数据结构双向链表基本概念双向链表是指含有往前和往后两个方向的链表,即每个结点中除存放下一个节点指针外,还增加一个指向前一个节点的指针。其头指针head是唯一确定的。从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点,这种数据结构形式使得双向链表在查找时更加方便,特别是大量数据的遍历。由于双向链表具有对称性,能方便地完成各种插入、删除等操作,但需要注意前后方向的操作。功能说...
2021-07-21 18:25:01 6299浏览 0点赞 0回复 0收藏
内核编码规范此规范基于业界通用的编程规范整理而成,请内核的开发人员遵守这样的编程风格。总体原则总体原则:清晰:代码应当易于理解、易于维护、易于重构,避免晦涩语法简洁:命名简短,函数紧凑高效:通过使用算法、编译器优化选项或硬件资源提高程序效率美观:代码风格合理、一致在大部分情况下,开发人员应当遵从以下规范,但也有一些例外场景。如修改第三方开源代码或大量使用开源代码接口下,应当与开源代码保持一致。请...
2021-07-21 18:24:40 9016浏览 0点赞 0回复 0收藏
Trace调测基本概念Trace调测旨在帮助开发者获取内核的运行流程,各个模块、任务的执行顺序,从而可以辅助开发者定位一些时序问题或者了解内核的代码运行过程。运行机制内核提供一套Hook框架,将Hook点预埋在各个模块的主要流程中,开发者通过注册的形式在自己所需的Hook点上注册回调函数,当内核运行至对应流程中会由内核主动调用Hook函数,将当前流程的关键数据传递给开发者。接口说明OpenHarmonyLiteOSM内核的Trace模块提供下...
2021-07-21 18:22:28 9260浏览 0点赞 0回复 0收藏
异常调测基本概念OpenHarmonyLiteOSM提供异常接管调测手段,帮助开发者定位分析问题。异常接管是操作系统对运行期间发生的异常情况进行处理的一系列动作,例如打印异常发生时异常类型、发生异常时的系统状态、当前函数的调用栈信息、CPU现场信息、任务调用堆栈等信息。运行机制栈帧用于保存函数调用过程中的函数参数、变量、返回值等信息。调用函数时,会创建子函数的栈帧,同时将函数入参、局部变量、寄存器入栈。栈帧从高地址...
2021-07-21 18:22:14 9936浏览 0点赞 0回复 0收藏
踩内存检测基础概念踩内存检测机制作为内核的可选功能,用于检测动态内存池的完整性。通过该机制,可以及时发现内存池是否发生了踩内存问题,并给出错误信息,便于及时发现系统问题,提高问题解决效率,降低问题定位成本。功能配置LOSCFGBASEMEMNODEINTEGRITYCHECK:开关宏,默认关闭;若打开这个功能,在targetconfig.h中将这个宏定义为1。开启这个功能,每次申请内存,会实时检测内存池的完整性。如果不开启该功能,也可以调...
2021-07-21 18:21:57 1.0w浏览 0点赞 0回复 0收藏
内存泄漏检测基础概念内存泄漏检测机制作为内核的可选功能,用于辅助定位动态内存泄漏问题。开启该功能,动态内存机制会自动记录申请内存时的函数调用关系(下文简称LR)。如果出现泄漏,就可以利用这些记录的信息,找到内存申请的地方,方便进一步确认。功能配置LOSCFGMEMLEAKCHECK:开关宏,默认关闭;若打开这个功能,在targetconfig.h中将这个宏定义为1。LOSCFGMEMRECORDLRCNT:记录的LR层数,默认3层;每层LR消耗sizeof(vo...
2021-07-21 18:21:47 9377浏览 0点赞 0回复 1收藏
内存信息统计基础概念内存信息包括内存池大小、内存使用量、剩余内存大小、最大空闲内存、内存水线、内存节点数统计、碎片率等。内存水线:即内存池的最大使用量,每次申请和释放时,都会更新水线值,实际业务可根据该值,优化内存池大小;碎片率:衡量内存池的碎片化程度,碎片率高表现为内存池剩余内存很多,但是最大空闲内存块很小,可以用公式(fragment100最大空闲内存块大小剩余内存大小)来度量;其他参数:通过调用接口...
2021-07-21 18:21:35 9207浏览 0点赞 0回复 0收藏
文件系统当前支持的文件系统有FATFS与LittleFS,支持的功能如下表所示:表1功能列表功能分类接口名描述FATFSLITTELFS文件操作open打开文件支持支持close关闭文件支持支持read读取文件内容支持支持write往文件写入内容支持支持lseek设置文件偏移位置支持支持unlink删除文件支持支持rename重命名文件支持支持fstat通过文件句柄获取文件信息支持支持stat通过文件路径名获取文件信息支持支持fsync文件内容刷入存储设备支持支持目录...
2021-07-21 18:21:24 1.1w浏览 0点赞 0回复 0收藏
LittleFS基本概念LittleFS主要用在微控制器和flash上,是一种嵌入式文件系统,具有如下3个特点:掉电恢复在写入时即使复位或者掉电也可以恢复到上一个正确的状态。擦写均衡有效延长flash的使用寿命。有限的RAMROM节省ROM和RAM空间。运行机制最经典的掉电保护方法有两种,一种是使用日志,一种是通过COW方式。lfs结合了两种方法,并优化了两种方案的缺点,提供了一套掉电保护策略日志方式具体步骤为:写入数据之前,先在日志区存...
2021-07-21 18:21:05 2.5w浏览 0点赞 0回复 1收藏
FAT基本概念FAT文件系统是FileAllocationTable(文件配置表)的简称,主要包括DBR区、FAT区、DATA区三个区域。其中,FAT区各个表项记录存储设备中对应簇的信息,包括簇是否被使用、文件下一个簇的编号、是否文件结尾等。FAT文件系统有FAT12、FAT16、FAT32等多种格式,其中,12、16、32表示对应格式中FAT表项的字节数。FAT文件系统支持多种介质,特别在可移动存储介质(U盘、SD卡、移动硬盘等)上广泛使用,使嵌入式设备和Window...
2021-07-21 18:20:45 8948浏览 0点赞 1回复 0收藏
基本概念CPU(中央处理器,CentralProcessingUnit)占用率分为系统CPU占用率和任务CPU占用率。系统CPU占用率(CPUPercent)是指周期时间内系统的CPU占用率,用于表示系统一段时间内的闲忙程度,也表示CPU的负载情况。系统CPU占用率的有效表示范围为0~100,其精度(可通过配置调整)为百分比。100表示系统满负荷运转。任务CPU占用率指单个任务的CPU占用率,用于表示单个任务在一段时间内的闲忙程度。任务CPU占用率的有效表示范...
2021-07-21 18:20:30 9263浏览 0点赞 0回复 0收藏
基本概念C++作为目前使用最广泛的编程语言之一,支持类、封装、重载等特性,是在C语言基础上开发的一种面向对象的编程语言。运行机制C++代码的识别主要由编译器支持,系统主要对全局对象进行构造函数调用,进行初始化操作。开发指导接口说明表1C++支持接口功能分类接口名描述使用C++特性的前置条件LOSCppSystemInitC++构造函数初始化开发流程使用C++特性之前,需要调用函数LOSCppSystemInit,实现C++构造函数初始化,其中被初始...
2021-07-21 18:20:13 7843浏览 0点赞 0回复 0收藏
软件定时器基本概念软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。定时精度与系统Tick时钟的周期有关。硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足用户需求,提供更多的定时器,OpenHarmonyLiteOSM内核提供软件定时器功能。软件定时器扩展了定时器的数量,允许创建更多的定时业务。软件定时器功能上支持:静态裁剪:能通过宏...
2021-07-21 18:19:59 9986浏览 0点赞 0回复 0收藏
软件定时器开发指导接口说明OpenHarmonyLiteOSM内核的软件定时器模块提供下面几种功能,接口详细信息可以查看API参考。表1软件定时器接口功能分类接口名描述创建、删除定时器LOSSwtmrCreate创建定时器LOSSwtmrDelete删除定时器启动、停止定时器LOSSwtmrStart启动定时器LOSSwtmrStop停止定时器获得软件定时器剩余Tick数LOSSwtmrTimeGet获得软件定时器剩余Tick数开发流程软件定时器的典型开发流程:配置软件定时器。确认配置项LOS...
2021-07-21 18:14:42 1.0w浏览 0点赞 0回复 0收藏
基本概念时间管理以系统时钟为基础,给应用程序提供所有和时间有关的服务。系统时钟是由定时器计数器产生的输出脉冲触发中断产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”。系统时钟也称为时标或者Tick。用户以秒、毫秒为单位计时,而操作系统以Tick为单位计时,当用户需要对系统进行操作时,例如任务挂起、延时等,此时需要时间管理模块对Tick和秒毫秒进行转换。OpenHarmonyLiteOSM内核时间管理模块提...
2021-07-21 18:14:27 8505浏览 0点赞 0回复 0收藏
信号量基本概念信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务间同步或共享资源的互斥访问。一个信号量的数据结构中,通常有一个计数值,用于对有效资源数的计数,表示剩下的可被使用的共享资源数,其值的含义分两种情况:0,表示该信号量当前不可获取,因此可能存在正在等待该信号量的任务。正值,表示该信号量当前可被获取。以同步为目的的信号量和以互斥为目的的信号量在使用上有如下不同:用作互斥时,初始...
2021-07-21 18:14:14 6781浏览 0点赞 0回复 0收藏
信号量开发指导接口说明功能分类接口名描述创建删除信号量LOSSemCreate创建信号量,返回信号量IDLOSBinarySemCreate创建二值信号量,其计数值最大为1LOSSemDelete删除指定的信号量申请释放信号量LOSSemPend申请指定的信号量,并设置超时时间LOSSemPost释放指定的信号量开发流程创建信号量LOSSemCreate,若要创建二值信号量则调用LOSBinarySemCreate。申请信号量LOSSemPend。释放信号量LOSSemPost。删除信号量LOSSemDelete。说明...
2021-07-21 18:14:03 9352浏览 0点赞 0回复 0收藏