学堂
精培
企业培训
CTO训练营
鸿蒙社区
收藏本站
公众号矩阵
移动端
LV.5
社区明星
物联网嵌入式操作系统RTOS研发工作,学习与分享
私信
主帖 31
回帖 74
视频
提问 2
回答 1
资源 6
专栏 1
文中相关设备来源于51CTO鸿蒙技术社区【开发板漂流计划】OpenHarmonyLiteOSA内核文档之学习系统调用【开发板漂流计划】OpenHarmonyLiteOSA内核实现态与内核态的区分隔离,用户态程序不能直接访问内核资源,而系统调用则为用户态程序提供了一种访问内核资源、与内核进行交互的通道。如下图所示,用户程序通过调用SystemAPI(系统API,通常是系统提供的POSIX接口)进行内核资源访问与交互请求,POSIX接口内部会触发SVCSWI异常,完...
23h前 602浏览 2点赞 1回复 2收藏
鸿蒙轻内核M核源码分析系列十八Fault异常处理【本文正在参与优质创作者激励】Fault异常处理模块与OpenHarmonyLiteOSM内核芯片架构相关,提供对HardFault、MemManage、BusFault、UsageFault等各种故障异常处理。有关CortexM芯片相关的知识不在本文讨论,请自行参考《Cortex™M7DevicesGenericUserGuide》等官方资料。本文先简单介绍下Fault异常类型,向量表及其代码,异常处理C语言程序,然后详细分析下异常处理汇编函数实现代码...
3天前 1847浏览 6点赞 2回复 4收藏
鸿蒙轻内核M核源码分析系列十七(3)异常信息ExcInfo【本文正在参与优质创作者激励】ExcHook异常钩子模块是OpenHarmonyLiteOSM内核的一个可选组件,提供注册钩子函数LOSRegExcHook、解除注册钩子函数LOSUnRegExcHook等操作接口。发生系统时,支持保存异常上下文、任务信息、队列信息、中断寄存器状态、任务切换信息、内存分配等信息。由于异常钩子模块内容较多,我们分为几篇进行分析源码,分别介绍异常钩子函数的类型,如何注...
7天前 1450浏览 5点赞 2回复 3收藏
鸿蒙轻内核M核源码分析系列十七(2)异常钩子函数的注册操作【本文正在参与优质创作者激励】ExcHook异常钩子模块是OpenHarmonyLiteOSM内核的一个可选组件,提供注册钩子函数、解除注册钩子函数的核心API,支持保存异常上下文、任务信息、队列信息、中断寄存器状态、任务切换信息、内存分配信息等。由于异常钩子模块内容较多,我们分为几篇进行分析源码,包含如何调用钩子函数、如何注册如何调用,如何收集异常信息等。本篇介绍...
8天前 1067浏览 2点赞 0回复 2收藏
鸿蒙轻内核M核源码分析系列十七(1)异常钩子函数类型介绍【本文正在参与优质创作者激励】ExcHook异常钩子模块是OpenHarmonyLiteOSM内核的一个可选组件,提供注册钩子函数LOSRegExcHook、解除注册钩子函数LOSUnRegExcHook等操作接口。发生系统时,支持保存异常上下文、任务信息、队列信息、中断寄存器状态、任务切换信息、内存分配等信息。由于异常钩子模块内容较多,我们分为几篇进行分析源码,分别介绍异常钩子函数的类型,如...
9天前 1080浏览 4点赞 1回复 2收藏
鸿蒙轻内核M核源码分析系列十六MPU内存保护单元【本文正在参与优质创作者激励】MPU(MemoryProtectionUnit,内存保护单元)把内存映射为一系列内存区域,定义这些内存区域的维洲,大小,访问权限和内存熟悉信息。MPU支持对每个内存区域进行独立的属性设置,允许内存区域重,可以导出内存属性。有关MPU的详细信息可以参考官方资料站点,比如对应CortexM3的文档位置为:https:developerarmcomdocumentationdui0552acortexm3periphera...
2021-10-11 21:00:05 1593浏览 7点赞 2回复 4收藏
鸿蒙轻内核M核源码分析系列十三(续)消息队列QueueMail接口之前分析过队列(Queue)的源代码,了解了队列初始化、队列创建、删除、队列读取写入等操作。队列还提供了两个接口OsQueueMailAlloc和OsQueueMailFree。队列可以和一个静态内存池关联起来,一个任务从静态内存池申请内存块时,如果申请不到,会把该任务插入到队列的内存阻塞链表中,等有其他任务释放内存时,该任务会被分配内存块。接下来,详细看下这2个接口的源代码...
2021-09-16 21:01:23 2499浏览 7点赞 3回复 3收藏
一些芯片片内RAM大小无法满足要求,需要使用片外物理内存进行扩充。对于这样的多段非连续性内存,需要内存管理模块统一管理,应用使用内存接口时不需要关注内存分配属于哪块物理内存。OpenHarmonyLiteOSM内核支持多段非连续性内存区域,把多个非连续性内存逻辑上合一,用户不感知底层的多段非连续性内存区域。多段非连续性内存如下图所示:OpenHarmonyLiteOSM内核内存模块在支持非连续性内存时,把不连续的内存区域作为空闲内存...
2021-08-30 15:14:42 896浏览 1点赞 0回复 1收藏
鸿蒙轻内核M核源码分析系列七(补充)动态内存非连续内存区域一些芯片片内RAM大小无法满足要求,需要使用片外物理内存进行扩充。对于多段非连续性内存,需要内存管理模块统一管理,应用使用内存接口时不需要关注内存分配属于哪块物理内存,不感知多块内存。多段非连续性内存如下图所示:;memRegion++;regionCount++;}firstFreeNodeptrprevlastEndNode;returnret;}endif小结本文带领大家一起剖析了鸿蒙轻内核M核的动态内存如何支...
2021-08-19 20:13:33 2625浏览 0点赞 0回复 1收藏
1、基础概念内存泄漏检测机制作为内核的可选功能,用于辅助定位动态内存泄漏问题。开启该功能,动态内存机制会自动记录申请内存时的函数调用关系(下文简称LR)。如果出现泄漏,就可以利用这些记录的信息,找到内存申请的地方,方便进一步确认。2、功能配置LOSCFGMEMLEAKCHECK:开关宏,默认关闭;若打开这个功能,在targetconfigh中将这个宏定义为1。LOSCFGMEMRECORDLRCNT:记录的LR层数,默认3层;每层LR消耗sizeof(void)字节...
2021-08-05 08:53:53 1012浏览 3点赞 0回复 0收藏
内存调测方法旨在辅助定位动态内存相关问题,提供了基础的动态内存池信息统计手段,向用户呈现内存池水线、碎片率等信息;提供了内存泄漏检测手段,方便用户准确定位存在内存泄漏的代码行,也可以辅助分析系统各个模块内存的使用情况;提供了踩内存检测手段,可以辅助定位越界踩内存的场景。本文分析下内存信息统计。1、基础概念内存信息包括内存池大小、内存使用量、剩余内存大小、最大空闲内存、内存水线、内存节点数统计、碎...
2021-07-30 19:20:58 1271浏览 3点赞 0回复 1收藏
鸿蒙轻内核M核源码分析系列十五CPU使用率CPUPCPUP(CentralProcessingUnitPercentage,CPU占用率)分为系统CPU占用率和任务CPU占用率。用户通过系统级的CPU占用率,判断当前系统负载是否超出设计规格。通过系统中各个任务的CPU占用情况,判断各个任务的CPU占用率是否符合设计的预期。系统CPU占用率是指周期时间内系统的CPU占用率,用于表示系统一段时间内的闲忙程度,也表示CPU的负载情况。系统CPU占用率的有效表示范围为0~100...
2021-07-01 08:29:33 2838浏览 3点赞 3回复 2收藏
[toc](目录)记录如何解决errorwhileloadingsharedlibraries:libncursesso简单记录下在执行makemenuconfig过程中的下述报错:zhushyubuntu:openharmonykernelliteosa$makemenuconfighomezhushyopenharmonykernelliteosatoolsmenuconfigmconfhomezhushyopenharmonykernelliteosaKconfighomezhushyopenharmonykernelliteosatoolsmenuconfigmconf:errorwhileloadingsharedlibraries:libncursesso5:cannotopensharedobjectfile:Nosuc...
2021-06-24 09:33:49 1347浏览 4点赞 1回复 1收藏
鸿蒙轻内核A核源码分析系列二数据结构位图操作在进一步分析之前,本文我们先来熟悉下OpenHarmony鸿蒙轻内核提供的位操作模块,在互斥锁等模块对位操作有使用。位操作是指对二进制数的bit位进行操作。程序可以设置某一变量为状态字,状态字中的每一bit位(标志位)可以具有自定义的含义。本文中所涉及的源码,以OpenHarmonyLiteOSA内核为例,均可以在开源站点[https:giteecomopenharmonykernelliteosa](https:giteecomopenharmon...
2021-06-08 08:32:34 1737浏览 3点赞 2回复 1收藏
鸿蒙轻内核A核源码分析系列一数据结构双向循环链表在学习OpenHarmony鸿蒙轻内核源代码的时候,常常会遇到一些数据结构的使用。如果没有掌握它们的用法,会导致阅读源代码时很费解、很吃力。本文会给读者介绍源码中重要的数据结构,双向循环链表DoublyLinkedList。在讲解时,会结合数据结构相关绘图,培养读者们的数据结构的平面想象能力,帮助更好的学习和理解这些数据结构的用法。本文中所涉及的源码,以OpenHarmonyLiteOSA内...
2021-06-07 08:45:36 2520浏览 4点赞 2回复 4收藏
鸿蒙轻内核M核源码分析系列十四软件定时器Swtmr软件定时器(SoftwareTimer)是基于系统Tick时钟中断且由软件来模拟的定时器。当经过设定的Tick数后,会触发用户自定义的回调函数。硬件定时器受硬件的限制,数量上不足以满足用户的实际需求。鸿蒙轻内核提供了软件定时器功能可以提供更多的定时器,满足用户需求。本文通过分析鸿蒙轻内核定时器模块的源码,掌握定时器使用上的差异。本文中所涉及的源码,以OpenHarmonyLiteOSM内核...
2021-06-03 08:45:20 2181浏览 1点赞 1回复 2收藏
鸿蒙轻内核M核源码分析系列十三消息队列Queue队列(Queue)是一种常用于任务间通信的数据结构。任务能够从队列里面读取消息,当队列中的消息为空时,挂起读取任务;当队列中有新消息时,挂起的读取任务被唤醒并处理新消息。任务也能够往队列里写入消息,当队列已经写满消息时,挂起写入任务;当队列中有空闲消息节点时,挂起的写入任务被唤醒并写入消息。如果将读队列和写队列的超时时间设置为0,则不会挂起任务,接口会直接返...
2021-06-02 08:35:01 2582浏览 2点赞 1回复 1收藏
鸿蒙轻内核M核源码分析系列十二事件Event事件(Event)是一种任务间通信的机制,可用于任务间的同步。多任务环境下,任务之间往往需要同步操作,一个等待即是一个同步。事件可以提供一对多、多对多的同步操作。本文通过分析鸿蒙轻内核事件模块的源码,深入掌握事件的使用。本文中所涉及的源码,以OpenHarmonyLiteOSM内核为例,均可以在开源站点[https:giteecomopenharmonykernelliteosm](https:giteecomopenharmonykernelliteos...
2021-06-01 09:03:37 2614浏览 1点赞 1回复 1收藏
鸿蒙轻内核M核源码分析系列十一信号量Semaphore信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务间同步或共享资源的互斥访问。一个信号量的数据结构中,通常有一个计数值,用于对有效资源数的计数,表示剩下的可被使用的共享资源数。以同步为目的的信号量和以互斥为目的的信号量在使用上存在差异。本文通过分析鸿蒙轻内核信号量模块的源码,掌握信号量使用上的差异。本文中所涉及的源码,以OpenHarmonyLiteOSM内核...
2021-05-28 08:36:07 3053浏览 2点赞 2回复 2收藏
鸿蒙轻内核M核源码分析系列十软件定时器Swtmr软件定时器(SoftwareTimer)是基于系统Tick时钟中断且由软件来模拟的定时器。当经过设定的Tick数后,会触发用户自定义的回调函数。硬件定时器受硬件的限制,数量上不足以满足用户的实际需求。鸿蒙轻内核提供了软件定时器功能可以提供更多的定时器,满足用户需求。本文通过分析鸿蒙轻内核定时器模块的源码,掌握定时器使用上的差异。本文中所涉及的源码,以OpenHarmonyLiteOSM内核为...
2021-05-24 09:07:27 2823浏览 3点赞 1回复 3收藏