【普中Hi3861开发攻略--基于鸿蒙OS】-- 第 3 章 Hi3861介绍

 (1)实验平台:

普中Hi3861鸿蒙物联网WIFI套件https://item.taobao.com/item.htm?id=829136021914(2)资料下载:普中科技-各型号产品资料下载链接


        本章将向大家介绍 Hi3861 芯片及模组内部资源、功能、鸿蒙OS 操作系统等,通过本章的学习,让大家对 Hi3861 更加了解,为后面的学习做好铺垫。本章分为如下几部分内容:

 

3.1 初识 Hi3861

3.1.1 Hi3861 简介

3.1.2 Hi-07S 模组介绍

3.1.2.1 模组简介

3.1.2.2 模组外观尺寸

3.1.2.3 模组管脚说明

3.2 Hi3861 运行系统介绍

3.2.1 Hi3861 运行什么操作系统

3.2.2 OpenHarmony 和 HarmonyOS 关系

3.2.3 HarmonyOS 和 LiteOS 有什么关系

3.3 Hi3861 启动流程

3.3.1 Boot 介绍

3.3.2 LiteOS-M 启动流程介绍

3.3.3 用户应用的启动原理


3.1 初识 Hi3861

        在物联网(IoT)技术日新月异的今天,Hi3861 作为华为推出的一款专为物联网设备设计的低功耗、高集成度 WiFi SoC 芯片,正逐渐成为开发者们关注的焦点。本节将带您初步了解 Hi3861,包括其基本概念、主要特点以及它在物联网领域的重要性。

3.1.1 Hi3861 简介

        (1)Hi3861 概述

        Hi3861 是华为海思半导体有限公司针对物联网市场推出的一款高度集成的无线连接解决方案。该芯片集成了 WiFi(支持 802.11b/g/n 标准)和(在某些版本中可能还包括)蓝牙功能,以及一个高性能的 32 位微处理器核心,为物联网设备提供了强大的通信和处理能力。

        (2)主要特点

        1、低功耗设计:

        Hi3861 特别注重低功耗设计,非常适合电池供电的物联网设备。它采用了先进的电源管理技术和节能算法,确保设备在长时间运行下仍能保持较低的功耗,延长电池寿命。

        2、高集成度:

        该芯片集成了 WiFi 模块、处理器、内存和必要的硬件接口,大大减少了外部组件的需求,简化了系统设计的复杂度。这种高集成度不仅降低了成本,还提高了系统的可靠性和稳定性。

        3、强大的通信能力:

        支持 WiFi 802.11b/g/n 标准,提供高速、稳定的无线连接。这意味着Hi3861可以轻松接入家庭或企业网络,实现物联网设备与云端或其他设备的无缝通信。

        4、丰富的接口资源:

        提供 GPIO、I2C、SPI、UART 等多种接口,方便开发者将Hi3861 与各种传感器、执行器等外设进行连接和控制。这些接口资源为物联网设备的扩展提供了广阔的空间。

        5、易于开发:

        华为为 Hi3861 提供了丰富的开发工具和文档资源,包括SDK、示例代码等。这些资源有助于开发者快速上手,降低开发难度和成本。

        (3)应用场景

        Hi3861 凭借其低功耗、高集成度和强大的通信能力,在物联网领域有着广泛的应用前景。以下是一些典型的应用场景:

        智能家居:用于智能灯泡、智能插座、智能摄像头、智能门锁等设备的无线连接和控制。

        智能穿戴:如智能手表、健康监测手环等,通过 WiFi 实现数据同步和远程监控。

        工业物联网:在工业自动化、智能制造等领域,Hi3861 可用于实现设备的远程监控、数据采集和故障预警等功能。

        智慧城市:在智能交通、智能安防、环境监测等领域,Hi3861 可助力构建更加智能、高效的城市管理系统。

        Hi3861 作为华为在物联网领域的重要布局之一,以其出色的性能和广泛的应用场景,正逐步成为物联网设备开发者的首选芯片之一。通过深入了解Hi3861的特点和应用场景,相信您将能够更好地利用这款芯片,为我国物联网领域的发展贡献自己的力量。在接下来的章节中,我们将进一步探讨Hi3861 的硬件架构、编程入门等内容,帮助您更全面地掌握这款芯片的开发技能。

3.1.2 Hi-07S 模组介绍

3.1.2.1 模组简介

        Hi-07S 是由深圳市安信可科技有限公司开发的 Wi-Fi 模块。可广泛应用于智能家居、智能安防、智慧城市等物联网相关智能终端产品。

        Hi-07S 模块搭载 Hi3861V100 核心处理器芯片。该芯片是一款高度集成的2.4GHz 低功耗 SoC WiFi 芯片,集成了 IEEE 802.11b/g/n 基带和RF 电路,RF 电路包括功率放大器 PA、低噪声放大器 LNA、 RF balun、天线开关以及电源管理等模块;支持 20MHz 标准带宽和 5MHz/10MHz 窄带宽,提供最大72.2Mbit/s 物理层速率。芯片 WiFi 基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE 802.11 b/g/n协议的各种数据速率。

        Hi-07S 模块的 Hi3861V100 芯片同时集成高性能32bit 微处理器、硬件安全引擎以及丰富的外设接口,外设接口包括 SPI、UART、I2C、PWM、GPIO 和多路 ADC,同时支持高速 SDIO2.0 Slave 接口,最高时钟可达50MHz;芯片内置SRAM 和 Flash,可独立运行,并支持在 Flash 上运行程序。

        主要特性如下:

模块型号Hi-07S
封装SMD-22
尺寸17.0 * 16.0 * 3.2(±0.2)mm
天线形式外接IPEX天线
频谱范围2400~2483.5MHz
工作温度-40℃~85℃
存储环境-40℃~125℃, <90%RH
供电范围供电电压3.0V~3.6V,供电电流 >500mA
支持接口UART/SPI/I2C/GPIO/ADC/PWM/I2S/SDIO
串口波特率默认 115200
WiFi802.11b/g/n
安全性WFA WPA/WPA2 personal、WPS2.0

3.1.2.2 模组外观尺寸

        模组外观尺寸如下:

3.1.2.3 模组管脚说明

        模组管脚介绍:

        在后续程序设计中经常需要了解对应管脚功能。

3.2 Hi3861 运行系统介绍

3.2.1 Hi3861 运行什么操作系统

        Hi3861 内部运行的是 HarmonyOS 操作系统,具体来说是HarmonyOS 的LiteOS-M 内核。LiteOS-M 是 Huawei LiteOS 的一个分支,专为IoT 领域构建,主要面向没有 MMU(内存管理单元)的处理器。LiteOS-M 内核具备轻量级、低功耗、组件丰富、快速开发等关键能力,为开发者提供“一站式”完整软件平台。LiteOS-M 内核小巧,适合在资源受限的设备上运行,同时针对IoT 设备的特点优化了功耗管理,使设备在运行时更省电。

3.2.2 OpenHarmony 和 HarmonyOS 关系

        OpenHarmony 是由开放原子开源基金会孵化及运营的开源项目,旨在面向全场景、全连接、全智能时代,通过开源方式搭建一个智能终端设备操作系统的框架和平台。它具备分布式、组件化等特点,是一个“全领域、新一代、开源、开放”的操作系统。OpenHarmony 作为一个开源项目,得到了全球开发者的支持和贡献。其应用场景主要面向智能家居、物联网终端、智能穿戴等领域,通过提供统一的分布式服务管理(发现、同步、注册、调用)机制,支持跨设备的应用远程启动、远程调用等操作。

        HarmonyOS(鸿蒙操作系统)是华为基于开源项目OpenHarmony 开发的面向多种全场景智能设备的商用版本。它不仅包含了 OpenHarmony 的基础功能,还整合了华为自身的技术和创新,以提供更丰富的功能和更好的用户体验。

3.2.3 HarmonyOS 和 LiteOS 有什么关系

        ①定位与用途

        鸿蒙 OS:是华为研发的面向全场景的分布式操作系统,旨在实现人、设备、场景之间的有机联系,提供全场景的智能生活体验。鸿蒙OS 支持手机、平板、电视、智能汽车、可穿戴设备等多种终端设备。

        LiteOS:是华为针对物联网领域推出的轻量级操作系统,主要用于智能穿戴、智能家居、工业物联网等低功耗、低延时的物联网场景。LiteOS 具有轻量级、低功耗、高实时性等特点。

        ②技术架构与内核

        鸿蒙 OS:采用了分布式架构,支持多屏协同和分布式任务调度。鸿蒙OS的内核包括 Linux 内核和 LiteOS 内核,可以根据不同的设备和应用场景选择适合的内核。

        LiteOS:是鸿蒙 OS 中用于物联网设备的一个轻量级内核。LiteOS 内核小巧、高效,支持快速启动、低功耗、实时响应等特性。

        ③关系与联系

        包含与被包含:鸿蒙 OS 作为一个全场景的分布式操作系统,包含了LiteOS作为其物联网设备的一个内核选项。也就是说,鸿蒙 OS 可以基于LiteOS 内核来运行物联网设备上的应用。

        独立发展:虽然 LiteOS 是鸿蒙 OS 的一部分,但两者在技术上也有相对独立的发展路径。LiteOS 作为物联网操作系统,针对物联网设备的特点进行了专门的优化和设计;而鸿蒙 OS 则更注重于跨设备、跨场景的全场景智能体验。

3.3 Hi3861 启动流程

3.3.1 Boot 介绍

        Boot 是操作系统启动之前的软件,通用叫法是 bootloader,Hi3861 的boot分为 4 部分:RomBoot、FlashBoot、LoaderBoot、CommonBoot,如下所示:

        ● RomBoot 功能包括:加载 LoaderBoot 到 RAM,进一步利用LoaderBoot下载镜像到 Flash、烧写 EFUSE,校验并引导 FlashBoot。FlashBoot 分为AB 面,A 面校验成功直接启动,校验失败会去校验 B 面,B 面校验成功会修复A 面再引导启动,否则复位重启。

        ● FlashBoot 功能包括:升级固件,校验并引导固件。

        ● LoaderBoot 功能包括:下载镜像到 Flash,烧写EFUSE(例如:安全启动/Flash 加密相关密钥等)。

        ● CommonBoot 为 Flashboot 与 LoaderBoot 共用的功能模块。

3.3.2 LiteOS-M 启动流程介绍

        嵌入式处理器和操作系统都具有类似的结构启动流程也大体相似,从芯片上电开始 Boot 把控制权交给操作系统,Hi3861 从 Boot 跳转到操作系统代码如下:

hi_void boot_kernel(uintptr_t kaddr)
{
    __asm__ __volatile__("ecall"); /* switch U-MODE -> M-MODE */
    hi_void (*entry)(hi_void) = (hi_void*)(kaddr);
    entry();
}

        这部分是将该地址当函数作为跳转,因为 FlashBoot 和kernel,是两套代码程序,他们之间没有依赖引用关系,但是他们在一个地址空间,所以直接地址跳转,这也是从 Boot 到 kernel 通用的跳转方式。

        芯片启动是从中断向量表的复位中断处理程序开始,接着把数据从Flash复制到 RAM、清空 bss 数据段、初始化时钟、跳转到 main 函数。我们通过查看asm文件的 main 函数,文件位置在工程输出目标文件目录“D:\hi3861_hdu_iot_application\src\out\hispark_pegasus\wifiiot_hispark_pegasus\Hi3861_wifiiot_app.asm”中,可以看出其中调用的函数如下所示:

        从图中我们可得知调用的函数包括设置串口、校验版本号、配置板子、Kernel初始化、应用初始化和操作系统的调度运转。

        LOS_KernelInit 是负责初始化内核数据结构的,如下所示:

        主要函数有 OsMemSystemInit(内存初始化)、OsHwiInit(中断初始化)、OsTaskInit(任务初始化),这些过程主要目的是把内核相关的变量初始化,准备好全局信息,方便 API 函数去调用,API 函数调用必须在这些初始化完成后才可以。

        从 AppInit 开始脱离了 sdk,可以看到源代码了,源代码为app_main.c,如下所示:

        其中调用的函数包括获取 sdk 版本号,外设初始化,ipc 初始化,flash分区,WiFi 初始化,tcp/ip 初始化,然后跳转到了 OpenHarmony 特有的函数OHOS_Main。

        OHOS_Main 位于 ohos_main.c 中,主要完成 OpenHarmony 系统相关和用户应用相关的调用,里边主要函数是 OHOS_SystemInit,如下所示:

        在其中调用了用户自己写的应用任务相关代码,如下所示:

        从而实现了在 LOS_start 之前把任务列表填好,这样才能保证用户任务或定时等功能参与了系统调度。

3.3.3 用户应用的启动原理

        在 OHOS_SystemInit 函数中出现的函数 MODULE_INIT(run),就是调用最终调用用户程序的代码。这是个宏定义,展开的调用关系:\base\startup\bootstrap_lite\services\source\core_main.h 定义,从MODULE_CALL、MODULE_BEGIN 、MODULE_END,最终调用的地址是__zinitcall_##name##_start,MODULE_INIT(run)调用的函数地址是__zinitcall_run_start。

        通过查看 map 文件发现我们自己的应用程序文件就在.zinitcall.run2.init中,如下所示:

        从运行角度看,启动中调用到了应用程序 template,所谓位置为.zinitcall.run2.init,但我们在应用程序中的关联函数是SYS_RUN(template_demo),SYS_RUN 的展开关系如下所示:(ohos_init.h 文件

        最终即是 .zinitcall.run2.init,和程序运行时候的调用匹配在一起了。应用程序的调用关系就是编译链接阶段生成指定的段,初始化时调用指定段,这样实现了 LiteOS-M 的操作系统代码与应用程序代码的解耦。

        总结:通过对 map 文件和 asm 文件的分析从而得出Hi3861 芯片LiteOS-M的启动流程。总体过程就是最小硬件系统的配置完成后,LOS_KernelInit 负责初始化系统到一个合适的状态,AppInit 调用 OpenHarmony 和应用相关代码,最后LOS_Start 负责把操作系统运转起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值