版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论1引言本章学习目标理解嵌入式系统的基本概念熟悉嵌入式系统的特点与优势了解嵌入式系统的组成与结构2初步认识嵌入式操作系统把握嵌入式系统的发展趋势第1章HarmonyOS简介301020304051.1嵌入式系统概述1.2嵌入式系统的特点与优势1.3嵌入式系统的组成与结构1.4嵌入式操作系统简介1.5编写嵌入式操作系统的方法CONTENTS1.1.1
嵌入式系统的定义
嵌入式系统:
定义:嵌入式系统这一术语在科技领域中被频繁提及,它是以应用为中心,以现代计算机技术为基础,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)灵活裁剪软硬件模块的专用计算机系统。嵌入式系统强调满足用户的特定需求,其设计初衷就是让用户在使用时,只需要打开电源即可直接享用其功能,无须进行复杂的二次开发或仅需要进行少量的配置操作。4以应用为中心软硬件可裁剪面向特定功能专用计算机系统1.1.1
嵌入式系统的定义5硬件部分嵌入式处理器存储器外设接口软件部分嵌入式操作系统应用程序
嵌入式系统组成:
嵌入式处理器:嵌入式系统的核心,负责执行程序指令,处理数据,控制外设等。存储器:用于存储程序和数据,确保嵌入式系统在断电后仍能保留必要的信息。外设接口:负责连接各种外部设备,如传感器、执行器等,实现嵌入式系统与外部世界的交互。软件部分:负责实现嵌入式系统的各种功能。1.1.1
嵌入式系统的定义6
嵌入式系统的核心特点:
嵌入式系统的特点在于其专用性和实时性。专用性,专用性意味着嵌入式系统是为特定应用而设计的,因此其软硬件都可以根据应用需求进行裁剪和优化。实时性,实时性则要求嵌入式系统能够在规定的时间内完成特定任务,这对于一些需要快速响应的应用来说至关重要。。1.1.2
嵌入式系统的应用领域7消费电子,在消费电子领域,嵌入式系统已经成为各种智能设备的核心。智能手机、平板电脑、数字相机、电视机顶盒等设备都采用了嵌入式处理器和操作系统。这些设备通过嵌入式系统实现了拍照、录像、上网、娱乐等多种功能。工业控制,在工业控制领域,嵌入式系统被广泛应用于各种工业设备和流程的控制和监测中。工厂自动化、机器人控制、电力监控等应用都离不开嵌入式系统的支持。汽车电子,在汽车电子领域,嵌入式系统已经成为现代汽车的重要组成部分。发动机控制、车身电子、车载娱乐系统等都采用了嵌入式设计。医疗设备医疗设备,在医疗设备领域,嵌入式系统也发挥着重要作用。血糖仪、心电图仪、医疗成像设备等医疗设备都采用了嵌入式设计。嵌入式系统通过高精度的测量和数据处理,提高了医疗诊断的准确性和效率。航空航天,在航空航天领域,嵌入式系统的应用更是至关重要。飞行控制、导航、通信等关键系统都采用了嵌入式设计。嵌入式系统需要满足高可靠性、抗干扰性和严格的安全性要求,确保飞行器的安全和稳定运行。此外,嵌入式系统还广泛应用于智能家居、能源管理、物联网、安防监控、教育等领域。1.1.3
嵌入式系统的发展历程嵌入式系统的发展历程大致可以分为以下几个阶段。8萌芽阶段20世纪70年代之前单芯片控制器功能相对单一发展阶段70年代—80年代末微处理器引入控制能力增强成熟阶段80年代末—90年代后嵌入式OS出现模块化提升网络化阶段90年代末至今互联网/物联网融合远程监控与互联
在网络化阶段,嵌入式系统的发展也面临着一些新的挑战和机遇。一方面,随着网络技术的不断发展,嵌入式系统的安全性和可靠性问题日益凸显。如何保障嵌入式系统的网络安全和数据安全,成为了一个亟待解决的问题。另一方面,随着物联网技术的快速发展和普及,嵌入式系统在智能家居、智慧城市等领域的应用前景也越来越广阔。这些领域的应用需求为嵌入式系统的发展提供了新的动力和机遇。1.1.4嵌入式系统的发展趋势9技术发展趋势应用拓展趋势•人工智能与机器学习的整合•处理能力的增强•能源效率的提升•模块化和集成化•实时性和可靠性的提高•物理安全与量子安全性的增强•对生态可持续性的关注•物联网的深度融合•自动驾驶和智能交通的兴起•医疗健康和可穿戴设备的普及•航空航天和国防领域的持续发展•新型技术的融合应用1001020304051.1嵌入式系统概述1.2嵌入式系统的特点与优势1.3嵌入式系统的组成与结构1.4嵌入式操作系统简介1.5编写嵌入式操作系统的方法CONTENTS1.2.1功能特定性11面向特定应用:嵌入式系统中的CPU是专门为特定应用设计的,具有低功耗、体积小、集成度高等特点。这些特点使得嵌入式系统能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于整个系统设计趋于小型化。专用性强:嵌入式系统的优势在于其个性化很强,其中的软件系统和硬件的结合非常紧密。一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中,也需要根据系统硬件的变化和增减不断进行修改。同时,针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合。任务明确:嵌入式系统通常针对某一特定的功能或任务进行设计,如控制机器、处理数据或提供用户界面等。这种功能特定性使得嵌入式系统能够在特定的应用场景中发挥最佳性能。嵌入式系统是以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应于应用系统对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。功能特定性是嵌入式系统最显著的特点之一。1.2.2规模可变性12:硬件规模可变:嵌入式系统的硬件可以根据具体需求进行裁剪和扩展。例如,在资源有限的系统中,可以选择低功耗、小体积的处理器和存储器;而在需要高性能的系统中,则可以选择更强大的处理器和更大的存储空间。软件规模可变:嵌入式系统的软件也可以根据需求进行裁剪和扩展。开发者可以根据具体应用的功能需求,选择适当的操作系统、中间件和应用软件。这种灵活性使得嵌入式系统能够适应不同规模和复杂度的应用场景。可裁剪性:嵌入式系统的硬件和软件都必须具备高度可定制性。这种可裁剪性使得嵌入式系统能够根据不同的应用需求进行灵活配置,从而满足各种特定场景下的性能要求。嵌入式系统的另一个重要特点是其规模可变性。这主要体现在以下几个方面:1.2.3实时性与稳定性13
实时性和稳定性是嵌入式系统的重要特点之一,也是其在实际应用中发挥关键作用的关键因素。都在嵌入式系统中有着广泛的应用前景。实时性:
实时性是指嵌入式系统能够在规定的时间内对外部事件或请求做出响应的能力。这种能力对于需要快速响应的控制系统来说至关重要。
嵌入式系统通常通过采用实时操作系统(RTOS)来实现实时性。RTOS能够确保任务按照预定的优先级和时间片进行调度和执行,从而满足系统的实时性要求。稳定性:
稳定性是指嵌入式系统能够在长时间运行过程中保持性能稳定、不崩溃的能力。这种能力对于需要持续运行的嵌入式系统来说至关重要。
嵌入式系统的稳定性通常通过采用可靠的硬件和软件设计、严格的质量控制和测试来保证。此外,嵌入式系统还可以采用冗余设计、故障检测和恢复机制等技术手段来提高系统的稳定性。1.2.4操作系统内核小14资源有限:嵌入式系统通常应用于小型电子装置中,这些装置的系统资源相对有限。因此,嵌入式操作系统需要设计得更为紧凑和高效,以适应这种资源受限的环境。功能精简:嵌入式操作系统的内核通常只包含最基本的系统服务和功能,如任务调度、内存管理、中断处理等。这些功能被精简到最小程度,以减少对系统资源的占用和消耗。高效性:尽管嵌入式操作系统的内核较小,但它们仍然需要高效地管理系统资源,以确保系统的性能和稳定性。因此,嵌入式操作系统通常采用高效的算法和数据结构来实现其内核功能。可裁剪性:嵌入式操作系统的内核具有高度的可裁剪性,开发者可以根据具体需求选择需要的功能模块,并对其进行裁剪和扩展。这种灵活性使得嵌入式操作系统能够适应不同规模和复杂度的应用场景。嵌入式操作系统的内核通常比传统的操作系统小得多,这是嵌入式系统的一个重要特点。1.2.5专门的开发工具和开发环境15交叉开发环境:嵌入式系统的开发环境通常称为交叉开发环境,主要由宿主机和目标机以及它们之间的连接构成。宿主机用于嵌入式系统开发的计算机,可以是PC或工作站;而目标机则是嵌入式软件的实际运行环境。开发者在宿主机上编写代码、编译、链接、定位后生成可执行二进制代码,然后通过物理连接或逻辑连接下载到目标机上运行。硬件开发工具:嵌入式系统的硬件开发工具包括各种电路板设计软件、可编程逻辑器件开发软件以及集成开发工具。这些工具为开发者提供了方便、高效的硬件设计和调试手段。软件开发工具:嵌入式系统的软件开发工具包括各种编辑器、编译器、汇编器、链接器、调试器和下载工具等。这些工具支持多种编程语言,并提供了丰富的库函数和驱动程序,使得开发者能够更加方便地进行软件开发和调试。调试方式:嵌入式系统的调试方式通常采用交叉调试(crossdebugging)方式。调试器运行于宿主机上,被调试程序运行于目标机上。调试器通过某种方式控制目标机上被调试程序的运行方式,并能查看和修改目标机上的内存、寄存器以及被调试程序中的变量。这种调试方式使得开发者能够在不干扰目标机正常运行的情况下进行调试和分析。嵌入式系统的开发需要专门的开发工具和开发环境来支持。这些工具和环境对于提高开发效率、降低开发成本以及保证系统的质量和稳定性具有重要意义。1601020304051.1嵌入式系统概述1.2嵌入式系统的特点与优势1.3嵌入式系统的组成与结构1.4嵌入式操作系统简介1.5编写嵌入式操作系统的方法CONTENTS1.3.1硬件层17硬件层是嵌入式系统的物理基础,主要包括嵌入式处理器、存储器、外设器件等。嵌入式处理器:嵌入式处理器是嵌入式系统的核心,负责执行指令、处理数据和控制整个系统运行。
常见类型:
(1)MCU:体积小、功耗低、集成度高。
(2)DSP:适合数字信号处理。
(3)MPU:计算能力强、接口丰富。
(4)SoC:高度集成、低功耗、高性能存储器:存储器用于存储数据和指令。
(1)RAM:易失性,临时存储
(2)ROM:非易失性,存储固定数据
(3)Flash:容量大,常用于数据存储和固件升级
外设器件:外设器件用于与外部世界交互。
(1)输入设备:键盘、触摸屏等
(2)输出设备:显示器、扬声器等
(3)通信接口:串口、USB、以太网口等
(4)传感器和执行器:温湿度检测、电机控制等1.3.2中间层18中间层是嵌入式系统中位于硬件层和软件层之间的桥梁,它负责将硬件层的功能抽象化,为软件层提供统一的接口。中间层主要包括硬件抽象层(HAL)和设备驱动程序等。硬件抽象层(HAL):硬件抽象层是一种将硬件功能抽象化的技术,它为软件层提供了一个统一的、与硬件无关的接口。
主要包括:设备寄存器抽象、中断处理抽象、设备初始化与配置。设备驱动程序:设备驱动程序是嵌入式系统中用于控制和管理硬件设备的软件,它负责将硬件设备的具体功能抽象为软件层可以调用的接口。
主要包括:设备初始化、设备操作接口、中断处理、错误处理。1.3.3软件层19软件层是嵌入式系统中用于实现特定功能的软件部分,主要包括嵌入式操作系统和应用程序等。嵌入式操作系统:嵌入式操作系统是嵌入式系统中用于管理硬件资源和软件资源的系统软件。它提供了任务调度、内存管理、文件系统、网络通信等功能,为应用程序提供了一个稳定、可靠的运行环境。
特点:实时性、可裁剪性、可移植性、资源受限。应用程序:应用程序是嵌入式系统中用于实现特定功能的软件。它通常根据用户需求进行设计和开发,并运行在嵌入式操作系统之上。
应用程序可以包括控制程序、数据处理程序、用户界面程序和网络通信程序。1.3.4
应用层20应用层是嵌入式系统中与被控对象相关的控制功能部分。它通常根据具体应用领域的需求进行设计和实现,用于实现系统的特定功能。控制算法:控制算法是应用层中用于实现对被控对象进行控制的算法。常见的控制算法包括PID控制、模糊控制、神经网络控制等。数据处理算法:数据处理算法是应用层中用于处理和分析数据的算法。常见的数据处理算法包括滤波算法、变换算法、聚类算法等。人机交互界面。人机交互界面:人机交互界面是应用层中用于与用户进行交互的界面。它通常包括显示屏、键盘、触摸屏等设备,用于显示信息、接收用户输入等。网络通信协议:网络通信协议是应用层中用于与其他设备或网络进行通信的协议。常见的网络通信协议包括TCP/IP、蓝牙协议、ZigBee协议等。2101020304051.1嵌入式系统概述1.2嵌入式系统的特点与优势1.3嵌入式系统的组成与结构1.4嵌入式操作系统简介1.5编写嵌入式操作系统的方法CONTENTS1.4.1嵌入式操作系统的分类22嵌入式操作系统可以根据其应用领域、功能特性、商业性质等进行分类。以下是一些常见的分类方式。按应用领域分类
工业控制类嵌入式操作系统:如μC/OS-Ⅱ、FreeRTOS等。
通信类嵌入式操作系统:如Symbian、WindowsMobile等。
消费类嵌入式操作系统:如Android、iOS等。挥最佳性能。按功能特性分类
实时嵌入式操作系统(RTOS):如VxWorks、QNX等。
非实时嵌入式操作系统:如嵌入式Linux、eCos等。按商业性质分类
商用嵌入式操作系统:如WindowsCE、VxWorks等。
开源嵌入式操作系统:如Linux、FreeRTOS等1.4.2主流嵌入式操作系统概述23以下是几种主流嵌入式操作系统的概述VxWorks:VxWorks是美国WindRiver公司开发的一种高性能实时操作系统(RTOS),具有良好的实时性和可靠性,常用于航空航天、工业控制、通信设备等领域。WindowsCE:WindowsCE是微软公司推出的嵌入式操作系统,具有较好的图形界面支持和应用开发环境,常用于消费电子、工业设备和便携式终端等领域。Linux:Linux是一种开源操作系统,具有良好的稳定性、灵活性和可扩展性。嵌入式Linux被广泛应用于网络设备、智能终端、工业控制等领域。鸿蒙操作系统:鸿蒙操作系统支持手机、平板、智能穿戴、智慧屏等多种终端设备运行,实现了设备间的极速发现、极速连接、硬件互助与资源共享。鸿蒙操作系统采用了微内核设计,提高了系统的安全性和稳定性,同时支持第三方开发者的应用开发和设备开发。作为华为自研的操作系统,鸿蒙操作系统的发布标志着中国在操作系统领域取得了突破性进展。2401020304051.1嵌入式系统概述1.2嵌入式系统的特点与优势1.3嵌入式系统的组成与结构1.4嵌入式操作系统简介1.5编写嵌入式操作系统的方法CONTENTS1.5.1嵌入式操作系统的开发流程25需求分析:在开发嵌入式操作系统之前,首先需要进行需求分析。这一步骤的目标是明确系统的功能性和非功能性需求。系统设计:在明确了需求之后,接下来是系统设计阶段。系统设计的主要任务是根据需求分析的结果,设计操作系统的体系架构,并确定软件和硬件的功能划分。编码实现:在这一阶段,开发人员需要根据设计文档,编写操作系统的源代码。编码实现的过程中,需要遵循良好的编程规范,确保代码的可读性、可维护性和可扩展性。系统集成:系统集成的主要任务是将操作系统的各个模块进行组合和集成,形成一个完整的操作系统系统。系统测试:系统测试的主要任务是对操作系统进行全面的测试,以确保其满足需求规格说明书中的要求。测试的内容包括功能测试、性能测试、稳定性测试、安全性测试等。系统发布:系统发布的主要任务是将操作系统交付给用户或潜在用户,并提供必要的技术支持和售后服务。1.5.2嵌入式操作系统的测试与测试方法26调试方法软件模拟器:软件模拟器是一种常用的调试工具。它通过在宿主机上模拟目标机的指令系统和操作系统环境,运行和调试嵌入式操作系统的源代码。软件模拟器可以模拟目标机的内存、处理器、外设等硬件资源,以及操作系统的系统调用和中断处理等机制。通过软件模拟器,开发人员可以在宿主机上进行代码调试和测试,而无需实际的硬件环境。ROM监控器:ROM监控器通常包括宿主机端的调试器和目标机端的监控程序两部分。调试器负责提供调试界面和调试命令,而监控程序则负责在目标机上运行并捕获调试信息。ROM仿真器:ROM仿真器的优点是可以直接对目标机上的应用程序进行调试,且可以模拟目标机上ROM芯片的行为。但是,由于ROM仿真器需要与目标机上的ROM芯片进行连接,因此在实际应用中可能会受到一定的限制。在线仿真器:在线仿真器(ICE)是一种高级的调试工具。它通过替代目标机上的CPU或处理器芯片,实现对目标机上应用程序的实时调试。在线仿真器可以支持软件断点和硬件断点,以及实时跟踪和内存查看等功能。片上调试:片上调试是一种内置于目标机CPU芯片内的调试功能。它将CPU的工作模式分为正常模式和调试模式,通过特定的调试接口和调试命令实现对目标机上应用程序的调试。1.5.2嵌入式操作系统的测试与测试方法27测试方法单元测试:单元测试是对操作系统中的单个模块或函数进行测试的方法。通过编写测试用例和测试数据,对模块或函数进行独立的测试,以验证其功能和性能是否满足要求。集成测试:集成测试是对操作系统中的多个模块或函数进行组合和集成后进行的测试。通过模拟实际的应用场景和操作流程,对操作系统进行全面的测试,以验证其功能和性能是否满足要求。系统测试:系统测试是对整个操作系统进行的全面测试。通过模拟实际的应用场景和操作流程,对操作系统进行全面的功能和性能测试,以验证其是否满足需求规格说明书中的要求。压力测试:压力测试是对操作系统进行高负载和高压力环境下的测试。通过模拟大量的任务和数据输入,对操作系统的性能和稳定性进行测试,以验证其是否能够承受高负载和高压力的环境。安全性测试:安全性测试是对操作系统的安全性进行测试的方法。通过模拟各种恶意攻击和非法访问,对操作系统的安全性进行测试,以验证其是否能够抵御各种安全威胁和攻击。性能测试:通过模拟实际的应用场景和操作流程,对操作系统的响应时间、吞吐量、资源利用率等性能指标进行测试,以验证其是否满足性能要求。回归测试:对修改或升级后的操作系统进行全面的测试,以验证其是否仍然满足需求规格说明书中的要求。第2章海思Hi3861硬件基础<code/:>PHPHTML5引言本章学习目标了解华为海思Hi3861芯片功能熟悉Hi3861内部模块设计方法及功能掌握GPIO引脚复用掌握中断系统的原理及使用30第2章海思Hi3861硬件基础2.1Hi3861简介2.2存储器空间映射2.3输入/输出端口312.4中断系统2.1.1功能描述Hi3861V100支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。Hi3861V100WiFi基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE802.11b/g/n协议的各种数据速率。芯片内置SRAM和Flash,可独立运行,并支持在Flash上运行程序。Hi3861V100支持HuaweiLiteOS和第三方组件,并配套提供开放、易用的开发和调试运行环境。Hi3861V100的主要功能特点:32(1)32位高能效RISC-V指令集架构(一种基于精简指令集(RISC)原则的开源指令集架构)CPU,最大工作频率为160MHz。(2)内置352KB的SRAM以及2MB的Flash。(3)多种外设接口支持:15个通用输入/输出(GeneralPurposeInput/Output,GPIO)接口;7路模数转换器(AnalogtoDigtalConverter,ADC)输入;6路脉宽调制(PulseWidthModulation,PWM)输出;3个通用异步收发器(UniversalAsynchronousReceiverandTransmitter,UART)接口;2个串行外设接口(SynchronousPeripheralInterface,SPI);2个内部集成电路(TheInterIntegratedCircuit,I2C)接口;1个内部集成电路音频(Inter-ICSound,I2S)接口;1个安全数字输入输出(SecureDigitalInput/Output,SDIO)接口;2.1.1功能描述
以Hi3861为核心处理器,根据需求,通过外围电路进行扩展,可实现相应的功能板。该板通过USBTypeC供电并实现程序烧录功能,支持UART、GPIO的USB接口和支持I2C总线、SPI总线、UART、GPIO的RJ12接口。另外还有外置风扇与蜂鸣器各一个。功能板原理图如下图所示。332.1.2引脚功能Hi3861V100的封装是QFN32(方形扁平无引脚封装),下图是其引脚图。各引脚按功能可分为电源、使能、输入输出、地等,其中输入输出可作为通用输入输出,还可经过配置实现特定的功能,如UART、PWM、I2C等。342.1.3电源电源是向电子设备提供功率的装置,也称电源供应器,它提供计算机中所有部件所需要的电能。电源功率的大小,电流和电压是否稳定,将直接影响计算机的工作性能和使用寿命。Hi3861V100有多个电源管脚,每个电源管脚都具有不同的功能,其管脚功能如表所示。352.1.3电源362.1.3电源最常用的管脚及功能如下:(1)使能:PMU_PWRONPMU_PWRON脚用于管脚使能,高电平使能,低电平失能。(2)输入输出:IOIO2/IO6/IO8为硬件配置字,不可上拉,若模组上电瞬间IO2/IO6/IO8为高电平,则模组不进入正常工作模式。IO3/IO4为UART0调试串口,用于固件烧录。IO11/IO12为UART2业务串口,用于收发AT指令、与主板通讯。表2-2简要介绍了各引脚及其特定功能。(3)地:GND管脚GND管脚(接地)和电源管脚配合使用,为整个系统提供稳定的电源。372.1.4内部系统功能1.复位系统复位一般分为四种:外部RST复位,软件复位,掉电复位/上电复位,看门狗复位。复位模块根据输入控制信号产生各模块的复位信号,支持整个芯片全局复位和各个模块的单独复位。复位信号异步生效,同步撤离。复位控制的输入信号分为:全局复位控制、单独模块复位控制。芯片可以使用的复位控制方式如下表所示。382.1.4内部系统功能2.时钟时钟信号主要由晶振提供,晶振又叫晶体振荡器,从名字可以看出,它注定一生都要不停的震荡,为整个系统提供基准时钟信号。可以说晶振就是整个体统的“心脏”。时钟管理模块对芯片时钟输入、生成、控制进行统一的管理,其功能包括:时钟输入的管理和控制、时钟分频和控制、各模块工作时钟的生成。时钟管理模块主体包括:PLL频率控制、时钟分频和时钟源选择控制、时钟门控管理。392.1.5时钟参考设计1.晶体输入模式在使用外部晶体时,电路结构如图所示。40其中,外部Crystal电气特性的要求如下表所示。2.1.5时钟参考设计其中:CL:Crystal内部的负载电容。Rr:Crystal内部的等效电阻。Rr×CL×CL<9000可以满足起振要求。Q=Wl/Rr,Q值是品质因数,太小会影响频率稳定。晶振的负载电容公式=[(Cd*Cg)/(Cd+Cg)]+Cic+
C式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+
C(PCB上电容)经验值为3pf至5pf。412.1.5时钟参考设计2.参考时钟频率选择可支持24MHz、40MHz参考时钟频率。参考时钟频率的选择通过GPIO02的硬件配置字进行判断,上电时通过读取GPIO02高低电平选择内部分频系数。频率选择管脚参考电路图如图所示。422.1.5时钟参考设计3.RTC时钟Hi386LV100芯片需要外部提供32.768kHzRTC时钟,用于低功耗处理。Hi3861V100/Hi3881V100不支持外部RTC低功耗应用。32.768kHzRTC有源时钟和无源时钟的电气特性要求如下表所示。432.1.5时钟参考设计RTC参考电路设计如图所示,上图为有源晶振的参考设计,VCC供电电平为VDDIO;下图为无源晶体的参考设计。442.1.5时钟参考设计4.时钟分配正常工作时主要时钟分配如下表所示。452.1.6电源参考设计1.电源管理任何电子设备都需要供电,Hi3861的电源分别为5V和3.3V这两个标准,由type-c接口提供5V电压,使用B1117N低压差稳压器将5V电压降至3.3V电压,从而满足系统内所需电源。5V转3.3V原理图如图所示。462.1.6电源参考设计2.系统工作模式Work
:正常工作状态,所有电源供电均打开,完成正常的WiFi收发等业务。LightSleep:浅睡模式为可快速恢复业务收发的睡眠模式,关闭收发时钟以降低功耗。此时CPU配置为WFI(WaitForInterrupt)模式,等待中断唤醒后恢复收发,Flash、IO保持供电(VDDIO),SDIO由软件控制是否掉电,可通过SDIO唤醒系统(SDIO中断);SoC系统可选晶体或PLL时钟,时钟频率和外设的通信速率有关。DeepSleep:深睡模式会关闭大部分业务使用电源以降低功耗。保留GPIO、RTC、外置TSF(TimingSynchronizationFunction)模块,可从深睡中唤醒,系统重新上电,等待CPU启动恢复业务收发。此时Flash关闭供电,IO保持供电。该模式下SDIO可软件配置保留电源,可通过SDIO唤醒系统(SDIO配置为非Sleep模式),RAM可配置为RETENTION。UltraDeepSleep:超深睡模式为最低功耗模式。此时芯片关闭了大部分电源以降低功耗,RAM(RandomAccessMemory)均掉电。支持芯片管脚GPIO3/5/7/14唤醒系统,通过唤醒管脚可唤醒系统。Shutdown:关机模式,芯片通过PMU_PWRON管脚拉低之后进入Shutdown模式。当PMU_PWRON管脚拉高后退出Shutdowm模式,进入到Work模式。472.1.6电源参考设计3.电源规格Hi3861V100&Hi3861LV100&Hi3881V100需要的外部电源包括:电池电源VBAT、IO电源VDDIO。芯片内部主要集成了BUCK和多个低压差线性稳压器(LDO):BUCK:作为一个中间的电源平面给多个LDO提供电源;LDO:分为给数字提供电源的LDO和低噪音LDO;PMU内部有一个BUCK提供1.3V电源。推荐工作条件如下表所示。1P3电源的产生方式有两种:一种是通过内部DC-DC产生、一种是通过内部LDO方式产生。482.1.6电源参考设计4.VBAT电源芯片包含两个VBAT电源输入管脚:VDD_PMU_VBAT1:提供BUCK的输入电压。VDD_PMU_VBAT2:提供PALDO的输入电压。VBAT支持2.3~3.6V输入,VBAT电源可以由外部PMU芯片或者外部BUCK电路生成提供。TX功率输出功率需满足:2.3V相对3.3V同等EVM情况下,输出功率会变化,变化幅度根据不同目标功率和速率会有不同。以11n_MCS7_HT20为例,常温下当3.3V下目标功率为15dBm时,电压降低到2.3V左右输出会降低1~1.5dB左右。492.1.6电源参考设计5.VBAT参考电路VBAT给芯片提供工作电源,VDD_PMU_VBAT1和VDD_PMU_VBAT2每个输入管脚各放一个电容用于储能滤波。参考电路如图所示,VBAT电源设计如表所示。502.1.6电源参考设计6.VBAT输入电源要求芯片输入电源要求如下:要求电源噪声峰峰值在
3%以内。选择合适的电感和输出滤波电容,能够更有效抑制纹波和谐波干扰。512.1.6电源参考设计7.VDDIO电源芯片包含两个VDDIO电源输入管脚:VDDIO1、VDDIO2支持1.8V/VBAT电压,电源纹波≤50mV,推荐设计建议如表所示,参考电路图如图所示。推荐1.8V/VBAT电压由外部BUCK电路或者LDO电路生成。522.1.6电源参考设计8.内部电源滤波电路内部电源中的VDD_PMU_CLDO、VDD_WL_RF_VCO_1P2需要外接滤波电容,推荐设计建议如表所示,参考电路图如图所示。532.1.6电源参考设计9.RFLDO1RFLDO1电源由芯片管脚VDD_PMU_RFLDO1输出,输出滤波电容1μF。RFLDO1给两个管脚供电,分别是VDD_WL_RF_LNA_1P2和VDD_WL_RF_TRX_1P2,推荐设计建议如表所示,参考电路如图所示。542.1.6电源参考设计10.BUCK/LDO电源芯片包含2个1P3电源输入管脚:VDD_BUCK_1P3、VDD_PUM_1P3该1P3电源可以由内部BUCK生成或由内部LDO电源提供,BUCK电源设计建议如表所示。552.1.6电源参考设计内部BUCK由VDD_PMU_VBAT1提供输入电压,由PMU_BUCK_LX输出开关信号,因此需要外接电感和输出电容。内置BUCK参考电路如图所示,LDO电源设计建议如表所示。562.1.6电源参考设计11.PA供电外部提供给VDD_WL_RF_PA2G_3P3供电,可与VBAT电源接在一起,设计建议如表所示,参考电路如图所示。572.1.7注意事项PMU_PWRON为上电使能管脚,该管脚上电必须要晚于VBAT和VDDIO1ms以后上电。建议在PMU_PWRON保留RC延时电路。R=100KΩ,C=100nF。PMW_PWRON由HOST控制,正常情况下HOST启动的时间远远>1ms,对应的R、C可以预留不上电。在内部LDO模式输出下VDD_BUCK_1P3的滤波电容必须≥2.2μF,如果电容焊接不良或者电容太小会导致软件异常报错。58第2章海思Hi3861硬件基础2.2存储器空间映射2.1Hi3861简介2.3输入/输出端口592.4中断系统2.2存储器空间映射“映射”这个词,就是建立种一一对应关系,在这里主要是指硬盘上文件的位置与进程逻辑地址空间中一块大小相同的区域之间的一一对应。这种对应关系纯属是逻辑上的概念,物理上是不存在的,原因是进程的逻辑地址空间本身就是不存在的。在内存映射的过程中,并没有实际的数据拷贝,文件没有被载入内存,只是逻辑上被放入了内存。重映射时地址映射关系如图所示。60第2章海思Hi3861硬件基础2.3输入/输出端口2.1Hi3861简介2.2存储器空间映射612.4中断系统2.3输入/输出端口VIL(InputLowVoltage)为低电平输入电压。VIH(Inputhighvoltage)为高电平输入电压。VOL(Outputlowvoltage)为低电平输出电压。VOH(Outputhighvoltage)为高电平输出电压。要保证后级逻辑电路能够正常识别前级的高电平,则前级的高电平输出最小值VOHmin必须大于后级输入高电平要求的最小值VIHmin。同样,要保证后级逻辑电路能够正常识别前级的低电平,则前级的低电平输出最大值VOLmax必须小于后级输入低电平要求的最大值VILmax。IO口电气参数如下:(单位:V)622.3输入/输出端口GPIO复用就是可以将具有复用功能的引脚的功能进行重新配置。在GPIO复用表中可以看出每个引脚的功能与用法,在GPIO使用时可以对照表中功能进行配置。GPIO_02对应模组IO2,IO口的用法参见下表。63第2章海思Hi3861硬件基础2.4中断系统2.1Hi3861简介2.3输入/输出端口642.2存储器空间映射2.4.1中断分配芯片支持向量模式和直接模式的中断方式,支持边沿和电平两种中断触发方式。支持优先级可编程,优先级配置寄存器(共3bit)可配置8级的优先级。中断向量包括:
CPU的内部标准中断:中断编号0~25(中断编号是系统为每个中断源分配的代号,用于标识不同的中断请求来源。这些编号在计算机系统中起着关键作用,允许CPU区分并响应来自不同设备或事件的中断请求。)。CPU外部的非标准中断:所支持的非标准中断编号如下表所示。652.4.1中断分配662.4.2中断结构671.NMI中断NMI(Non-MaskableInterrupt)中断用于控制软件和逻辑对EFUSE特定区域的烧写,由寄存器触发,通过写TEE_NMI_INT[tee_nmi_int]为1触发NMI中断。TEE_NMI_INT[tee_nmi_int]不会自动清零,在触发中断后需要将该值写回0。在触发NMI中断后CPU会告知EFUSE控制逻辑此时CPU处于NMI中断模式,仅在此状态下才可以烧写EFUSE的特定区域。2.4.2中断结构682.软中断软中断为通过配置寄存器触发中断的中断触发方式,包含4个可以通过写寄存器触发的中断(软中断0~软中断3)。软中断0~软中断3的触发方式相同,以使用软中断0为例,配置步骤如下:(1)写SOFT_INT_EN[soft_int0_en]为1,打开软中断0的使能。(2)写SOFT_INT_SET[soft_int0_set]为1,将软中断0置位。此寄存器为自清零寄存器,写1后自动回零,写0无效。(3)软件进入软中断0处理程序,此时可读取SOFT_INT_STS[soft_int0_sts]查询中断状态:0:无中断。1:有中断。(4)写SOFT_INT_CLR[soft_int0_clr]为1,清除软中断0。此寄存器为自清零寄存器,写1后自动回零,写0无效。2.4.3中断寄存器69中断系统寄存器概览如表所示,通过设置寄存器的值可实现对应中断寄存器功能。2.4.4寄存器描述701.SOFT_INT_ENSOFT_INT_EN为软中断使能寄存器。绝对地址为:0x50000280,总复位值为0x0000。2.4.4寄存器描述712.SOFT_INT_SETSOFT_INT_SET为软中断置位寄存器。绝对地址为:0x50000284,总复位值为0x0000。2.4.4寄存器描述723.SOFT_INT_STSSOFT_INT_STS为软中断状态查询寄存器。绝对地址为:0x5000028C,总复位值为0x0000。2.4.5RTC73RTC的功能是从预置的数据开始递减直至0,产生中断。RTC的初始数据、工作模式、中断方式均可以通过寄存器配置,且RTC可以独立进行时钟使能,以及灵活指定时钟间隔。芯片中有4个相同且可独立配置的RTC。RTC具有以下功能特点:4个32bit可独立配置的RTC单元;支持自由模式和周期模式;每个RTC单元可以独立进行使能;每个RTC均配置有独立的中断;支持锁定当前的计数值。RTC工作时钟频率可选择32KHz或晶体时钟(40/24MHz)。RTC支持自由模式和周期模式,每个RTC均可单独配置:在自由模式下,定时器从0xFFFF_FFFF递减计数到0;在周期模式下,计数器从寄存器TIMERx_LOADCOUNT(x=1~4)的值计数到0。注意:为了避免不同步问题,在进行设置TIMER3_LOADCOUNT、TIMER4_LOADCOUNT之前必须将RTC关闭。在配置RTC模式为自由模式工作之前,必须设置TIMER3_LOADCOUNT、TIMER4_LOADCOUNT的所有有效位都为1。2.4.6寄存器概览742.4.7寄存器描述751.TIMER1_LOADCOUNTTIMER1_LOADCOUNT为定时器1的初始值寄存器。绝对地址为:0x000,总复位值为0x0000_0000。2.TIMER1_CURRENTVALUETIMER1_CURRENTVALUE为定时器1的当前值寄存器。绝对地址为:0x004,总复位值为0x0000_0000。2.4.7寄存器描述763.TIMER1_CONTROLREGTIMER1_CONTROLREG为定时器1的控制寄存器。绝对地址为:0x008,总复位值为0x0000_0000。2.4.7寄存器描述774.TIMER1_EOITIMER1_EOI为定时器1的清中断寄存器。绝对地址为:0x00C,总复位值为0x0000_0000。5.TIMER1_INTSTATUSTIMER1_INTSTATUS为定时器1的中断状态寄存器。绝对地址为:0x010,总复位值为0x0000_0000。2.4.7寄存器描述786.TIMER2_LOADCOUNTTIMER2_LOADCOUNT为定时器2的初始值寄存器。绝对地址为:0x014,总复位值为0x0000_0000。7.TIMER2_CURRENTVALUETIMER2_CURRENTVALUE为定时器2的当前值寄存器。绝对地址为:0x018,总复位值为0x0000_0000。2.4.7寄存器描述798.TIMER2_CONTROLREGTIMER2_CONTROLREG为定时器2的控制寄存器。绝对地址为:0x01C,总复位值为0x0000_0000。2.4.7寄存器描述809.TIMER2_EOITIMER2_EOI为定时器2的清中断寄存器。绝对地址为:0x020,总复位值为0x0000_0000。10.TIMER2_INTSTATUSTIMER2_INTSTATUS为定时器2的中断状态寄存器。绝对地址为:0x024,总复位值为0x0000_0000。2.4.7寄存器描述8111.TIMER3_LOADCOUNTTIMER3_LOADCOUNT为定时器3的初始值寄存器。绝对地址为:0x028,总复位值为0x0000_0000。12.TIMER3_CURRENTVALUETIMER3_CURRENTVALUE为定时器3的当前值寄存器。绝对地址为:0x02C,总复位值为0x0000_0000。2.4.7寄存器描述8213.TIMER3_CONTROLREGTIMER3_CONTROLREG为定时器3的控制寄存器。绝对地址为:0x030,总复位值为0x0000_0000。2.4.7寄存器描述8314.TIMER3_EOITIMER3_EOI为定时器3的清中断寄存器。绝对地址为:0x034,总复位值为0x0000_0000。15.TIMER3_INTSTATUSTIMER3_INTSTATUS为定时器3的中断状态寄存器。绝对地址为:0x038,总复位值为0x0000_0000。2.4.7寄存器描述8416.IMER4_LOADCOUNTTIMER4_LOADCOUNT为定时器4的初始值寄存器。绝对地址为:0x03C,总复位值为0x0000_0000。17.TIMER4_CURRENTVALUETIMER4_CURRENTVALUE为定时器4的当前值寄存器。绝对地址为:0x040,总复位值为0x0000_0000。2.4.7寄存器描述8518.TIMER4_EOITIMER4_EOI为定时器4的清中断寄存器。绝对地址为:0x048,总复位值为0x0000_0000。19.TIMER4_INTSTATUSTIMER4_INTSTATUS为定时器4的中断状态寄存器。绝对地址为:0x04C,总复位值为0x0000_0000。2.4.7寄存器描述8620.TIMERS_INTSTATUSTIMERS_INTSTATUS为定时器中断状态寄存器。绝对地址为:0x0A0,总复位值为0x0000_0000。2.4.7寄存器描述8721.TIMERS_EOITIMERS_EOI为定时器清中断寄存器。绝对地址为:0x0A4,总复位值为0x0000_0000。谢谢观看!第3章开发环境搭建引言本章学习目标了解关于OpenHarmony相关的背景知识熟悉下载和安装OpenHarmony开发环境90第3章开发环境搭建91Nunnim.Fusc013.1OpenHarmony简介Nuncviverraimperdietenim.Fusc023.2Openharmony环境搭建CONTENTS3.1OpenHarmony简介华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备以及场景有机地联系在一起。OpenHarmony是由开放原子开源基金会(OpenAtomFoundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。LiteOS是华为面向loT领域,构建的轻量级物联网操作系统,遵循BSD-3开源许可协议。可广泛应用于智能家居、个人穿戴、车联网、城市公共服务、制造业等领域。其架构如图所示。923.1OpenHarmony简介93低功耗框架:LiteOS是轻量级的物联网操作系统,最小内核尺寸仅6KB。具备快速启动、低功耗等优势。OpenCPU架构:专为LiteOS小内核架构设计,满足硬件资源首先要求。比如LPWA场景下的水表、气表、车检器等,通过MCU和通信模组二合一的OpenCPU架构,显著降低终端体积和终端成本。安全性设计:构建低功耗安全传输机制,支持双向认证、FOTA固件差分升级,DTLS/STLS+等,构建低功耗安全传输机制。端云互通组件:LiteOSSDK端互通组件是终端对接到IOT云平台的重要组成,集成了LwM2M、CoAP、MQTT、LwIP等全套IOT互联互通协议栈,大大减少开发周期,快速如云。SOTA远程升级:SOTA远程升级,通过差分方式降低升级包尺寸,更能适应低带宽网络环境和电池供电环境。经过特别优化差分合并算法,对RAM资源要求更少,满足海量低资源的升级诉求。LiteOS具有以下特点:94Nunnim.Fusc023.1OpenHarmony简介Nuncviverraimperdietenim.Fusc013.2Openharmony环境搭建CONTENTS3.2.1开发环境简介95OpenHarmony环境搭建有两种方式一种是Windows版本,一种是Linux版本。因为Windows开发环境对于读者更加具有普遍性,接受更加方便快捷,我们在这里只介绍Windows版本。Windows系统开发环境,主要包含VisualStudioCode,DevEcoDeviceTool,Hi3861OpenharmonySDK,DevTools_Hi3861。VSCode全称是VisualStudioCode,它是一款免费开源的现代化轻量级代码编辑器,有Windows、Linux和macOS版本。VSCode官方下载地址:。3.2.2VisualStudioCode安装96
下面我们来介绍如何安装VSCode:首先,我们先在官方下载地址下载好VSCode的安装程序。如图3.2所示。然后在弹出框中授权安装许可,如图3.3所示。图3.2
VSCode下载图3.3
VScode开始安装3.2.2VisualStudioCode安装97下一步选择以下这些选项,如图3.4所示。最后直接进行安装即可,如图3.5所示。图3.4
安装注意事项图3.5
安装成功3.2.2VisualStudioCode安装98安装以后我们进入到如下界面,如图3.6所示。因为刚进入的界面还是英文界面,我们选择可以将VSCode汉化的插件,点击左边栏目里的扩展,搜索Chinese显示了如下插件,如图3.7所示。图3.7
汉化插件图3.6
VSCode主界面3.2.2VisualStudioCode安装99安装完成以后,安装插件,如图3.8所示,选择右下角的changelanguageandRestart,然后我们就可以进入如下界面如图3.9。图3.8
安装插件图3.9
汉化成功3.2.2VisualStudioCode安装100我们在使用VSCode时需要安装如下几个插件:3.2.3DevEcoDeviceTool安装101HUAWEIDevEcoDeviceTool(以下简称DevEcoDeviceTool)是OpenHarmony面向智能设备开发者提供的一站式集成开发环境,支持OpenHarmony的组件按需定制,支持代码编辑、编译、烧录和调试等功能,支持C/C++语言,以插件的形式部署在VisualStudioCode上。以下是官方下载网址:/cn/develop/ide。选择下载Windows版本即可,运行安装程序进入到安装界面。选择默认安装路径即可,其中需要我们安装Python3.8版本或者是Python3.9版本,我们选择自定义安装,程序会自动下载安装包到指定路径下。如图3.10~图3.13所示。图3.10
开始安装DevEcoDeviceTool图3.11
接受许可证协议3.2.3DevEcoDeviceTool安装102图3.13下载Python图3.12
选择安装目录3.2.3DevEcoDeviceTool安装103在图3.14界面中选择AddPython3.8toPATH这样会自动将Python加入到环境变量中。再点击InstallNow即可下载。安装完DevEcoDeviceTool以后我们打开VSCode我们就可以看到左侧栏里有如图3.15的图标,这代表我们已经成功安装。注意运行DevEcoDeviceTool时需要依赖CodeLLDB这个插件,需要将其下载,如图3.16。图3.14
配置Python图3.15
安装DevEcoDeviceTool成功图3.16
安装CodeLLDB3.2.3DevEcoDeviceTool安装104确认将插件安装成功以后,我们需要下载Hi3861OpenharmonySDK并进行解压,下载网址:/HiSpark/hi3861_hdu_iot_application。注意:由于windows自身限制,路径不能超过260个字符,在git下载和解压Hi3861SDK代码时尽量放在磁盘根目录下,防止导致的编译错误问题。进入到下载界面后点击克隆/下载,最后解压即可。解压完成后我们需要下载开发工具DevTools_Hi3861V100_v1.0,下载地址:DevTools_Hi3861V100_v1.0-master3.2.4导入工程105如图3.17所示,打开VSCode,打开DevEcoDeviceTool主页,单击“导入工程”按钮。在导入工程弹窗中选择hi3861_hdu_iot_application-master目录,如图3.18所示。图3.17
选择导入工程图3.18
选择hi3861_hdu_iot_application-master3.2.4导入工程106SOC选择HI3861,单击“导入”按钮,如图3.19所示。完成工程导入后我们需要准备配置开发工具,进入VSCode,点击左侧栏目中的DevEco,选择工程配置,选择compiler_bin_path,如图3.20所示,选择下载好的编译工具,如图3.21所示。图3.19
导入工程图3.20
工程配置图3.21
选择编译工具3.2.4导入工程107将build.gn中的features中内容改成:“//vendor/hqyj/fs_hi3861/demo:demo”。找到此文件夹下的build.gn打开,并选择删去一行代码的注释以运行此代码,如图3.23,图3.24所示。图3.23
找到build.gn图3.24
打开build.gn3.2.4导入工程108通过rebulid编译此代码,如图3.25,图3.26所示。图3.25
重编译图3.26
编译成功3.2.4导入工程109
编译成功,以上工作完毕以后,我们进行代码烧录的工作。用Type-C数据线将开发板与电脑进行连接,我们在网上下载CH341SER这个文件,下载地址:/download/CH341SER_LINUX_ZIP.html。安装软件即可。接下来我们选择烧录代码,点击upload_port,选择Hi3861开发板,如图3.27所示。图3.27
upload_port3.2.4导入工程110以上步骤完成后,我们打开Hi3861开发板的电源,然后进行烧录程序,如图3.28所示。完成以上步骤后,点击upload进行程序上传如图3.29所示:图3.28
打开电源图3.29
上传代码3.2.4导入工程111下载UartAssistV5.0.10,下载地址:/cn/download/UartAssist.html,并安装。打开串口调试助手,选择打开,如图3.30所示。然后依次按下开发板的复位键以及用户按键,可以看到串口调试株洲的数据日志有如下输出,表示程序烧录成功,如图3.31所示。图3.30
打开调试图3.31
运行成功ThankYou第4章OpenHarmony操作系统基础引言本章学习目标了解关于OpenHarmony内核相关的知识熟悉OpenHarmony任务管理机制以及内存管理114Nuncviverraimperdietenim.Fusc014.1内核概述Nuncviverraimperdietenim.Fusc024.2中断管理Nuncviverraimperdietenim.Fusc034.3任务管理Nuncviverraimperdietenim.Fusc044.4内存管理CONTENTSNuncviverraimperdietenim.Fusc054.5内存通信机制1164.1.1内核简介
用户最常见到并与之交互的操作系统界面,其实只是操作系统最外面的一层。操作系统最重要的任务,包括管理硬件设备,分配系统资源等,我们称之为操作系统内在最重要的核心功能。而实现这些核心功能的操作系统模块,业界一般称之为操作系统“内核”。
操作系统是位于应用和硬件之间的系统软件,向上提供易用的程序接口和运行环境,向下管理硬件资源。内核位于操作系统的下层,为操作系统上层的程序框架提供硬件资源的并发管理。
业界的内核有很多,但无论是什么内核,基本上有几个最重要的组成单元是每个内核均要具备的,分别是:负责持久化数据,并让应用程序能够方便的访问持久化数据的“文件系统”。负责管理进程地址空间的“内存管理”。负责管理多个进程的“进程管理”或者“任务管理”。负责本机操作系统和另外一个设备上操作系统通信的“网络”。
4.1.1内核简介117OpenHarmony采用了多内核结构,支持Linux和LiteOS,开发者可按不同产品规格进行选择使用。Linux和LiteOS均具备上述组成单元,只是实现方式有所不同。多个内核通过KAL(KernelAbstractionLayer)模块,向上提供统一的标准接口。内核子系统位于OpenHarmony下层。需要特别注意的是,由于OpenHarmony面向多种设备类型,这些设备有着不同的CPU能力,存储大小等。为了更好的适配这些不同的设备类型,内核子系统支持针对不同资源等级的设备选用适合的OS内核,内核抽象层(KAL,KernelAbstractLayer)通过屏蔽内核间差异,对上层提供基础的内核能力。OpenHarmony针对不同量级的系统,使用了不同形态的内核。轻量系统、小型系统可以选用LiteOS;小型系统和标准系统可以选用Linux。4.1.2LiteOS-M118OpenHarmonyLiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,LiteOS-M架构图如图所示。4.1.3LiteOS-A119OpenHarmony轻量级内核是基于IoT领域轻量级物联网操作系统HuaweiLiteOS内核演进发展的新一代内核,包含LiteOS-M和LiteOS-A两类内核。LiteOS-M内核主要应用于轻量系统,面向的MCU一般是百K级内存,可支持MPU隔离,业界类似的内核有FreeRTOS或ThreadX等;LiteOS-A内核主要应用于小型系统,面向设备一般是M级内存,可支持MMU隔离,业界类似的内核有Zircon或Darwin等。为适应IoT产业的高速发展,OpenHarmony轻量级内核不断优化和扩展,能够带给开发者友好的开发体验和统一开放的生态系统能力。OpenHarmonyLiteOS-A内核架构图如图所示。4.1.4CPU体系架构支持120CPU体系架构分为通用架构定义和特定架构定义两层,通用架构定义层为所有体系架构都需要支持和实现的接口,特定架构定义层为特定体系架构所特有的部分。在新增一个体系架构的时候,必须需要实现通用架构定义层,如果该体系架构还有特有的功能,可以在特定架构定义层来实现。LiteOS-M已经支持ARMCortex-M3、ARMCortex-M4、ARMCortex-M7、ARMCortex-M33、RISC-V等主流架构。4.1.5运行机制121在开发板配置文件target_config.h配置系统时钟、每秒Tick数,可以对任务、内存、IPC、异常处理模块进行裁剪配置。系统启动时,根据配置进行指定模块的初始化。内核启动流程包含外设初始化、系统时钟配置、内核初始化、操作系统启动等,详见下图。4.1.6目录1224.1.6目录123Nuncviverraimperdietenim.Fusc014.1内核概述Nuncviverraimperdietenim.Fusc024.2中断管理Nuncviverraimperdietenim.Fusc034.3任务管理Nuncviverraimperdietenim.Fusc044.4内存管理CONTENTSNuncviverraimperdietenim.Fusc054.5内存通信机制4.2.1接口说明125如表所示,osSemaphoreGetName()
函数用于获取信号量对象的名称。函数参数
semaphore_id
为信号量ID,通过该ID明确要获取名称的目标信号量对象。若函数执行成功,将返回以
null
结尾的信号量名称字符串;若获取操作失败,则返回
NULL。该函数依赖于
//third_party/cmsis/CMSIS/RTOS2/Include/cmsis_os2.h
头文件,使用时需确保此头文件已正确引入,以保障函数的正常调用及功能实现。
4.2.1接口说明126如表所示,osSemaphoreAcquire()
函数用于获取信号量令牌,若当前没有可用令牌,函数将根据
timeout
参数设置的超时时间等待。其中,semaphore_id
参数为信号量ID,用于指定要操作的目标信号量;timeout
取值为
CMSIS_RTOS_TimeOutValue或0。函数执行后将返回指示其执行状态的状态码,通过状态码可判断获取操作是否成功、是否存在参数错误或其他异常情况。该函数依赖
//third_party/cmsis/CMSIS/RTOS2/Include/cmsis_os2.h
头文件,实际使用时需确保引入此头文件,以保障函数的正常调用与功能实现。4.2.2实验流程127
使用场景:当有中断请求产生时,CPU暂停当前的任务,转而去响应外设请求。用户通过中断申请,注册中断处理程序,可以指定CPU响应中断请求时所执行的具体操作。代码如下:unsigned
int
g_timer_cnt_cb
=
0;unsigned
int
tmp
=
0;unsigned
int
uvIntSave;//
定时器计数,到达后触发中断函数//
Timer
count,
trigger
interrupt
function
upon
arrivalvoid
timer2_isr_trigger(unsigned
char
id,
unsigned
int
period){
unsigned
int
temp;
unsigned
short
reg_val;
reg_val
=
0;
hi_reg_read16(TIMER_REGISTER,
reg_val);
//
读取定时器2寄存器//
Read
Timer
2
Register
reg_val
|=
(1
<<
SHIFT_BYTE);
//
寄存器赋值//
register
assignment
hi_reg_write16(TIMER_REGISTER,
reg_val);
//
写入寄存器
//
Write
register
hi_reg_write32(TIMER_BASE_ADDRESS
+
id
*
TIMER_OFFSET
+
TEST_TIMER_CONTROLREG,
0);
//
取消使能
hi_reg_write32(TIMER_BASE_ADDRESS
+
id
*
TIMER_OFFSET
+
TEST_TIMER_LOADCOUNT,
period);
//
设置间隔初始值
4.2.2实验流程128
/*
*
时钟模式:
32bit
[bit
1
设置为
1]
*
时钟滴答
1/1
时钟频率
[bit
3
设置为
0,
bit
2
设置为
0]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19868.1-2026基于试验焊接材料的工艺评定
- 2026腰痛病考试试卷及答案
- 脚轮制作工复测竞赛考核试卷含答案
- 冷藏工安全风险水平考核试卷含答案
- 塑料玩具制作工安全教育竞赛考核试卷含答案
- 品牌资产评价师安全应急模拟考核试卷含答案
- 水泥混凝土制品养护工标准化评优考核试卷含答案
- 模具工岗中应急测评考核试卷含答案
- 酵母制备工岗前评优考核试卷含答案
- 意匠纹版工岗前技能掌握考核试卷含答案
- 2026秋川教版(新教材)小学信息技术四年级上册(全册)教学设计(附目录p124)
- 2026新修订离婚协议书范文
- 2026-2030中国羧甲基纤维素市场供需调查及竞争格局研究报告
- 7.1 集体生活成就我课件(共27张)+内嵌视频
- 铁路集团综合管理岗社会招聘笔试参考题库 含答案
- 2026年河北工人技师考评(环境噪声监测工)自测试题及答案
- 宠物毛发护理技巧
- DB32-T 5388-2026 电动车充电基础设施建设技术规程 第2部分:电动汽车
- 2026年人工智能赋能机械设计的新路径
- 2026年新疆新业国有资产经营集团有限责任公司校园招聘笔试备考题库及答案解析
- 寺庙消防安全培训
评论
0/150
提交评论