学习
实践
活动
工具
TVP
写文章

liteos 异常接管(十五)

1 概述 1.1 基本概念 异常接管是操作系统对在运行期间发生异常的情况进行处理的一系列动作,譬如打印异常发生时当前函数调用栈信息、 cpu现场信息、任务的堆栈情况等。 异常接管作为一种调测手段,可以在系统发生异常时提供给用户有用的异常信息,譬如异常的类型、发生异常时系统的状态等,方便用户定位分析问题。 Huawei LiteOS异常接管,在系统发生异常时的处理动作是显示异常发生时正在运行的任务信息(包括任务名、任务号、堆栈大小等),以及cpu现场等信息。 2 开发指导 2.1 功能 异常接管为用户提供以下几种异常类型: 异常名称 描述 值 OS_EXCEPT_UNDEF_INSTR 未定义的指令异常 1 OS_EXCEPT_SWI 软中断异常 2 OS_EXCEPT_PREFETCH_ABORT 预指取指令异常 3 OS_EXCEPT_DATA_ABORT 数据中止异常 4 OS_EXCEPT_FIQ FIQ异常 5 2.2 开发流程 异常接管一般的定位步骤如下: 打开编译器编译后生成的.asm

54620

liteos简介(一)

在Hi3559A中,liteos是用于Cortex-A53,用于处理MPP 媒体业务逻辑的; ? Huawei LiteOS基础内核是最精简的Huawei LiteOS操作系统代码,包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器、异常管理等操作系统基础组件,可以单独运行 Huawei LiteOS Kernel 的优势 高实时性,高稳定性。 超小内核,基础内核体积可以裁剪至不到10K。 低功耗。 支持动态加载、分散加载。 支持功能静态裁剪。 异常接管 异常接管是指在系统运行过程中发生异常后,跳转到异常处理信息的钩子函数,打印当前发生异常函数调用栈信息,或者保存当前系统状态的一系列动作。 Huawei LiteOS异常接管,会在异常后打印发生异常的任务ID号、栈大小,以及LR、PC等寄存器信息; 动态加载 动态加载是一种软件加载链接技术,不对组成程序的目标文件进行一次性链接加载,等到程序要运行时才进行链接加载

1.4K10
  • 广告
    关闭

    2022腾讯全球数字生态大会

    11月30-12月1日,邀您一起“数实创新,产业共进”!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    liteos队列

    Huawei LiteOS中使用队列数据结构实现任务异步通信工作,具有如下特性: 消息以先进先出方式排队,支持异步读写工作方式。 读队列和写队列都支持超时机制。 开发指导 3.1 功能 Huawei LiteOS中Message消息处理模块提供了以下功能。 功能分类 接口名 描述 创建消息队列 LOS_QueueCreate 创建一个消息队列。 鉴于LOS_QueueWrite和LOS_QueueRead这组接口实际操作的是数据地址,用户必须保证调用LOS_QueueRead获取到的指针所指向内存区域在读队列期间没有被异常修改或释放,否则可能会导致不可预知的后果

    32820

    liteos事件(六)

    Huawei LiteOS的事件仅用于任务间的同步,不提供数据传输功能。 Huawei LiteOS提供的事件具有如下特点: 事件不与任务相关联,事件相互独立,一个32位的变量,用于标识该任务发生的事件类型,其中每一位表示一种事件类型(0表示该事件类型未发生、 1表示该事件类型已经发生 3.2 功能 Huawei LiteOS系统中的事件模块为用户提供下面几个接口。

    66930

    tp6基于whoops的异常接管(漂亮的界面)

    8910

    liteos动态加载(十三)

    Huawei LiteOS提供支持OBJ目标文件和SO共享目标文件的动态加载机制。 ? SAMPLE_OUT = . include $(LITEOSTOPDIR)/config.mk RM = -rm -rf LITEOS_LIBDEPS := --start-group $(LITEOS_LIBDEP -o $ (SAMPLE_OUT)/sample ./$@ $(LITEOS_LIBDEPS) $(LITEOS_TABLES_LDFLAGS) $(OBJCOPY) -O binary $(SAMPLE_OUT LiteOS# call 0x8030f241 test_0 Huawei LiteOS# 卸载一个模块 Shell命令: mclose Huawei LiteOS# mclose 0x80391928 Huawei LiteOS# 3.

    94730

    liteos分散加载(十四)

    2.2 功能 Huawei LiteOS系统中的分散加载模块为用户提供如下接口。 注意事项 分散加载第一阶段拷贝过少或者拷贝偏移地址没有根据存储介质的差异进行对齐都会导致系统异常,因此使用时要按照编译最后给出的大小进行uboot加载镜像。 用户需保证提取的库文件列表是支持关键业务运行的超集,否则会导致分散加载第一阶段中的代码访问到第二阶段中的代码或数据,从而导致系统异常。 分散加载进指令异常。 通过查看系统异常时pc的位置是否超出分散加载第一阶段的范围,如果是则应该是第一阶段库文件列表涵盖不全,导致有符号未被归拢到第一阶段的代码、数据段中,需要结合系统镜像反汇编文件定位到异常pc所在函数名,找到该函数定义所在的库

    52710

    liteos互斥锁(七)

    Huawei LiteOS提供的互斥锁具有如下特点: 通过优先级继承算法,解决优先级翻转问题。 1.3 开发指导 1.3.1 使用场景 互斥锁可以提供任务之间的互斥机制,用来防止两个任务在同一时刻访问相同的共享资源 1.3.2 功能 Huawei LiteOS 系统中的互斥锁模块为用户提供下面几种功能 Huawei LiteOS作为实时操作系统需要保证任务调度的实时性,尽量避免任务的长时间阻塞,因此在获得互斥锁之后,应该尽快释放互斥锁。

    36030

    liteos MMU(十八)

    Huawei LiteOS的MMU有两个方面的作用: 提供硬件机制的内存cache/nocache属性的控制接口。 提供硬件机制的内存访问权限控制接口。 2. 访问该段内存时会检查访问权限,若权限不正确则会触发异常,起到保护该段内存数据的作用。 2.2 功能 Huawei LiteOS中MMU模块为用户提供以下接口: 功能分类 接口名 描述 内存访问权限控制 LOS_MMUParamSet 修改指定地址段的内存cache状态、buffer状态、 系统进入异常,说明将该内存设置为“只读”成功。 步骤3 注释掉2中的写操作,而是直接调用接口将读写权限重新修改为可读可写。 系统不进入异常,说明将该内存设置为“可读可写”成功。

    52730

    liteos任务(二)

    Huawei LiteOS的任务模块可以给用户提供多个任务,实现了任务之间的切换和通信,帮助用户管理业务程序流程。这样用户可以将更多的精力投入到业务功能的实现中。 Huawei LiteOS是一个支持多任务的操作系统。在Huawei LiteOS中,一个任务表示一个线程。 Huawei LiteOS中的任务是抢占式调度机制,同时支持时间片轮转调度方式。 Huawei LiteOS的任务一共有32个优先级(0-31),最高优先级为0,最低优先级为31。 2 任务相关概念 2.1 任务状态 Huawei LiteOS系统中的每一任务都有多种运行状态。 3 运作机制 Huawei LiteOS任务管理模块提供任务创建、任务延时、任务挂起和任务恢复、锁任务调度和解锁任务调度、根据任务控制块查询任务ID、根据ID查询任务控制块信息功能。 4.2 功能 Huawei LiteOS 系统中的任务管理模块为用户提供下面几种功能。

    52120

    liteos内存(三)

    Huawei LiteOS的内存管理分为静态内存管理和动态内存管理,提供内存初始化、分配、释放等功能。 动态内存:在动态内存池中分配用户指定大小的内存块。 优点:按需分配。 2.1.2 功能 Huawei LiteOS系统中的动态内存管理模块为用户提供下面几种功能,具体的API详见接口手册。 2.1.4 平台差异性 无 2.2 编程实例 2.2.1 实例描述 Huawei LiteOS运行期间,用户需要频繁的使用内存资源,而内存资源有限,必须确保将有限的内存资源分配给急需的程序,同时释放不用的内存 通过Huawei LiteOS内存管理模块可以保证高效、正确的申请、释放内存。 本实例执行以下步骤: 初始化一个动态内存池。 在动态内存池中申请一个内存块。 使用这块内存块存放一个数据。 3.2 功能 Huawei LiteOS的静态内存管理主要为用户提供以下功能。

    54220

    liteos错误处理(十一)

    如果OS上报的错误是致命错误,系统会进行异常流程接管,从而可以保存现场以便定位问题。 通过错误处理,我们可以把用户在程序中的非法输入进行控制和提示,以防程序崩 溃。 1.2 运作机制 错误处理是一种机制,用于处理异常状况。通过错误处理,我们可以将用户在程序中的非法输入进行控制和提示,以防程序崩溃。当程序出现异常错误的时候,会显示相应的错误码用于提示用户。

    34330

    liteos信号量(八)

    2.2 功能 Huawei LiteOS 系统中的信号量模块为用户提供下面几种功能。

    52350

    liteos双向链表(十二)

    开发指导 2.1 功能 Huawei LiteOS系统中的双向链表模块为用户提供下面几个接口。

    34440

    liteos 中断机制(四)

    Huawei LiteOS的中断支持: 中断初始化。 中断创建。 开/关中断。 恢复中断。 中断使能。 中断屏蔽。 Huawei LiteOS的中断机制支持中断共享。 Huawei LiteOS中所有的中断源优先级相同,不支持中断嵌套或抢占。 中断处理程序:当外设产生中断请求后, CPU暂停当前的任务,转而响应中断申请,即执行中断处理程序。 1.3 运作机制 Huawei LiteOS的中断机制支持中断共享: 中断共享的实现依赖于链表,对应每一个中断号创建一个链表,链表节点中包含注册的中断处理函数和函数入参。 Huawei LiteOS的中断机制支持中断底半部: 中断底半部的实现基于workqueue,在中断处理程序中将工作分为顶半部和底半部,底半部处理程序与work关联,并挂载到合法workqueue上。 2.2 功能 Huawei LiteOS 系统中的中断模块为用户提供下面几种功能。

    49920

    liteos软件定时器(十)

    硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足用户需求,提供更多的定时器, Huawei LiteOS操作系统提供软件定时器功能。 定时器模式 Huawei LiteOS的软件定时器提供二类定时器机制: 第一类是单次触发定时器,这类定时器在启动后只会触发一次定时器事件,然后定时器自动删除。 2.2 功能 Huawei LiteOS系统中的软件定时器模块为用户提供下面几种功能,下面具体的API详见软件定时器对外接口手册。

    70440

    LiteOS内核教程06 | 内存管理

    LiteOS内核的内存管理 1.1. LiteOS 动态内存管理在最佳适配算法的基础上加入了 SLAB 机制,用于分配固定大小的内存块,进而减小产生内存碎片的可能性。 LiteOS 内存管理中的 SLAB 机制支持可配置的 SLAB CLASS 数目及每个 CLASS 的最大空间。 动态内存管理API Huawei LiteOS 系统中的内存管理模块管理系统的内存资源,主要提供内存的初始化、分配以及释放功能。 相关的接口定义在osal.c中,基于LiteOS的接口实现在 liteos_imp.c文件中: 接口名 功能描述 osal_malloc 按字节申请分配动态内存空间 osal_free 释放已经分配的动态内存空间

    53620

    LiteOS内核教程02 | Hello World

    SDK和LiteOS的关系 Huawei IoT link SDK 的底层拥有OS适配层,可以适配Linux、MacOS、LiteOS,以及其它第三方OS(需要自行适配),本教程中所使用的SDK底层所适配的 OS是LiteOS。 This is LiteOS! BearPi IoT Develop Board Powerd by Huawei LiteOS! Please wait for system init! 6.

    53420

    LiteOS内核教程03 | 任务管理

    LiteOS内核的任务管理 Huawei LiteOS 内核提供任务的创建、删除、延迟、挂起、恢复等功能,以及锁定和解锁任务调度,支持任务按优先级高低的抢占调度及同优先级时间片轮转调度。 1.1. 任务 在 LiteOS 中,一个任务就是一个线程,多个任务按照优先级进行抢占式调度,达到多个任务“同时”运行的目的。 1.2. Huawei LiteOS 的任务一共有 32 个优先级 (0-31),最高优先级为 0,最低优先级为 31。 因为是LiteOS的内核是抢占式调度内核,所以: 高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。 1.5. 任务相关的接口定义在osal.c中,基于LiteOS的接口实现在 liteos_imp.c文件中: 接口名 功能描述 osal_task_create 创建任务 osal_task_kill 删除任务(

    57920

    liteos C++支持(十七)

    long)&__init_array_end__,NO_SCATTER); 调用C库函数 在C++中调用C程序的函数,注意在声明该函数的时候增加如下语句: extern "C" 3 注意事项 Huawei LiteOS 暂不支持C++异常机制、 RTTI。 Huawei LiteOS中, C++暂不支持I/O字符流、 I/O文件流等相关操作。 4 编程实例 4.1 实例描述 在代码初始化中,进行C++ 构造函数初始化,进而让程序可以使用C++特性。

    57630

    扫码关注腾讯云开发者

    领取腾讯云代金券