广告

OpenHarmony鸿蒙操作系统指南:Hi3861开发板LiteOS-M启动流程

2022-08-12 12:23:09 OpenAtom OpenHarmony 阅读:
OpenHarmony作为一款万物互联的操作系统,覆盖了从嵌入式实时物联网操作系统到移动操作系统的全覆盖,目前市面上的采用LiteOS-M的OpenHarmony开发板厂商有深开鸿、润和软件、小熊派,因为海思的SDK是以库文件的形式提供的,所以不同的Hi3861芯片开发板启动流程是一样的。
广告

OpenHarmony作为一款万物互联的操作系统,覆盖了从嵌入式实时物联网操作系统到移动操作系统的全覆盖,其中内核包括LiteOS-M,LiteOS-A和Linux。LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,主要面向没有MMU的处理器,架构如图1-1所示。

acb93d6e-19ea-11ed-ba43-dac502259ad0.png

图1-1 LiteOS-M架构图

广告

Hi3861是一款高度集成的2.4GHz SoC WiFi芯片,采用高性能 32bit 微处理器,最大工作频率 160MHz,内嵌 SRAM 352KB、ROM 288KB、Flash 2MB。目前市面上的采用LiteOS-M的OpenHarmony开发板厂商有深开鸿、润和软件、小熊派,因为海思的SDK是以库文件的形式提供的,所以不同的Hi3861芯片开发板启动流程是一样的。

Hi3861 Boot介绍

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

acc6ef40-19ea-11ed-ba43-dac502259ad0.png

图2-1 Hi3861 Boot启动流程

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

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

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

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

相关文件介绍

Hi3861的LiteOS-M代码是SDK中以库文件的形式提供的,虽然我们无法看到源代码,但这不代表我们分析不了启动流程,我们可以从分析map文件和asm这两个文件入手。这两个文件都是编译链接工具生成的,其中asm文件是汇编程序源文件,可以查看函数之间的调用关系,map文件里包括全局符号、函数地址及占用的空间和位置。map和asm文件主要作用是当开发板崩溃时用于分析其崩溃的原因,我们分析函数跳转关系时并不需要知道太多汇编,只需要知道基本的跳转语句和赋值语句即可,这两个文件位于out目录下和操作系统固件平级的目录,如图3-1。

acee326c-19ea-11ed-ba43-dac502259ad0.png

图3-1 Hi3861 asm和map文件位置图

一个编译完成的固件通常有以下几部分:

1) RO段包括只读代码段(code段/.text段)和常量段(RO Data段/.constdata段)。

2) RW段(.data段)指已被初始化成非0值的变量段。

3) ZI段(.bss段)指未被初始化或初始化为0的变量段。

我们源代码的函数和字符串常量都位于text段。

LiteOS-M启动流程介绍

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

acff7eb4-19ea-11ed-ba43-dac502259ad0.png

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

2) 芯片启动是从中断向量表的复位中断处理程序开始,接着把数据从Flash复制到RAM、清空bss数据段、初始化时钟、跳转到main函数。我们通过查看asm文件的main函数,可以看出其中调用的函数如图4-1所示,从图4-1 我们可得知调用的函数包括设置串口、校验版本号、配置板子、Kernel初始化、应用初始化和操作系统的调度运转,其中main函数位于liblitekernel_flash.a(main.o)文件中。

ad171a9c-19ea-11ed-ba43-dac502259ad0.png

图4-1 main函数调用关系

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

3) 从AppInit开始脱离了sdk,可以看到源代码了,AppInit函数位于libwifiiot_app.a(app_main.o)中,部分截图如图4-3,源代码为app_main.c,其中调用的函数包括获取sdk版本号,外设初始化,ipc初始化,flash分区,WiFi初始化,tcp/ip初始化,然后跳转到了OpenHarmony特有的函数OHOS_Main。

OHOS_Main位于libwifiiot_app.a(ohos_main.o)中,源代码为ohos_main.c,主要完成OpenHarmony系统相关和用户应用相关的调用,里边主要函数是OHOS_SystemInit,如图4-4,在其中调用了用户自己写的应用任务相关代码,如图4-5,从而实现了在LOS_start之前把任务列表填好,这样才能保证用户任务或定时等功能参与了系统调度。

ad369af2-19ea-11ed-ba43-dac502259ad0.png

图4-2 LOS_KernelInit函数调用关系

ad5894ea-19ea-11ed-ba43-dac502259ad0.png

图4-3 app_main函数调用关系

ad7d6626-19ea-11ed-ba43-dac502259ad0.png

图4-4 OHOS_Main函数调用关系

ad9bdd72-19ea-11ed-ba43-dac502259ad0.png

图4-5 OHOS_SystemInit函数调用关系

用户应用的启动原理

1) 在图4-5中出现的函数MODULE_INIT(run),就是调用最终调用用户程序的代码。这是一个宏定义,展开的调用关系 :asestartupootstrap_liteservicessourcecore_main.h定义,从MODULE_CALL、MODULE_BEGIN 、MODULE_END,最终调用的地址是__zinitcall_##name##_start,MODULE_INIT(run)调用的函数地址是__zinitcall_run_start。

通过查看链接文件得出__zinitcall_run_start包含.zinitcall.run0.init),如图5-1所示。

adb69c8e-19ea-11ed-ba43-dac502259ad0.png

图5-1 __zinitcall_run_start链接关系

查看map文件发现我们自己的应用程序文件就在.zinitcall.run2.init中,如图5-2所示。

adc9458c-19ea-11ed-ba43-dac502259ad0.png

图5-2 led_exapmle文件在map中的位置

2) 从运行角度看启动中调用到了应用程序led_exapmle,所谓位置为.zinitcall.run2.init,但我们在应用程序中的关联函数是SYS_RUN(LedExampleEntry),SYS_RUN的展开关系如图5-3所示,最终即是 zinitcall.run2.init,和程序运行时候的调用匹配在一起了。应用程序的调用关系就是编译链接阶段生成指定的段,初始化时调用指定段,这样实现了LiteOS-M的操作系统代码与应用程序代码的解耦。

adea5f60-19ea-11ed-ba43-dac502259ad0.png

图5-3 SYS_RUN的展开关系

总结

本文向大家讲述了在没有部分源代码的情况下,如何通过对map文件和asm文件的分析从而得出Hi3861芯片开发板LiteOS-M的启动流程。总体过程就是最小硬件系统的配置完成后,LOS_KernelInit负责初始化系统到一个合适的状态,AppInit调用OpenHarmony和应用相关代码,最后LOS_Start负责把操作系统运转起来。

  • 做家电的创维也造车了!天美汽车将改名为创维汽车 造车到底有多火,跨界也要赶上造车风口上?做手机的小米造车了,现在做家电的也要参加造车,家电巨头创维集团也造车了!这家电视领域的龙头企业,已正式成为造车新势力的一员。
  • iphone 13翻车到越南造新AirPods 3质量问题引发退换货 iphone 13系列质量翻车后,有不少AirPods 3 新用户也纷纷吐槽:首批 AirPods 3 中部分越南生产的耳机出现了毛边、有胶水溢出、电流声、划耳朵、盖子可以晃动等问题。
  • 华为鸿蒙HarmonyOS系统隐私安全问题(纯净模式、全球权威机构认证 还在担忧因为华为鸿蒙HarmonyOS是一个全新操作系统,所以个人隐私安全问题有什么可靠、哪些值得信任?
  • 小米一指连UWB技术是什么黑科技,手机实现厘米级定位和±3°角度 一指连是什么神操作昵?小米UWB技术与智能物联网ALOT有什么黑科技? 通过小米手机可以实现对智能设备的厘米级定位和±3°的角度测量精度,这种创新性的指向交互方式,这种创新引领科技
  • 网点异常罢工:多家快递公司出现无人派送;浙大阿里物流机器人小蛮 最近全国多地快递公司网点因异常出现无人派送;究竟是什么情况昵?圆通、中通、申通、百世等公司相继回应罢工传闻为不实消息? 网友:所谓的价格战是由各快递公司发起由加盟商买单,迄今为止还没有哪个部门来监管,罚款和降派费及面单费是各快递总部的稳定收入。至于加盟商的死活没人过问更不要说送货员了!
  • iPhone 13系列完整信息汇总:发布日期、售价、长续航和高刷新率(P 高刷新率和长续航一直都是果粉比较期待的升级,iPhone 13这次一起提升,对于果粉来说真的算是个惊喜了。不过结合近期的爆料来看,电池容量是全系都做了提升,但高刷似乎只有超大杯(iPhone13 Pro、iPhone13 Pro max)才有,其他的几款依然是60Hz的刷新率,当然价格上也要更贵一些。
  • 特斯拉CyberTruck电动皮卡还未发布上市,马斯克道出可能失败原因? 电动皮卡Cybertruck可以说是非常特别的一款车型,特斯拉的电动皮卡Cybertruck已经定型,量产也是快要来了。负责生产Cybertruck的德州超级工厂,依然保持着高效率的施工,Cybertruck的部分生产线已经在绿色幕墙的内部搭建好了,看起来年底实现量产已经没有什么问题。近日,马斯克坦白说出它会有失败的可能,让人惊讶不已!
  • 立讯精密和比亚迪可能获得苹果Apple Watch Series 6、iPad更多订 苹果最新发布得Apple Watch Series 6和Wi-Fi iPad系列将在哪里生产?哪些代工厂将获得更多订单?据悉,制造Apple Watch Series 6的立讯精密和新iPad的比亚迪将从中获利。
  • 揭秘人脸识别黑产:真人认证视频百元1套,“四件套”低至0.5元 315曝光了其中一家人脸识别厂商,其业务覆盖餐饮、鞋服、医药、汽车、快消、地产物业、美容美发、健身、教育教学、电子产品等多个行业。“人脸识别”热起源于2015,互联网金融的火爆推动此项技术飞速发展,应用“人脸识别”银行放款,主流支付工具“刷脸支付”走向落地。日常生活中公共安检系统、刷脸支付,刷脸乘车,刷脸签到……这些应用都在采集人脸信息,也快速形成了一系列产业链,但你想过自己的人脸信息或许会被盗用吗?
  • 华为TEDx大会王成录:2021新手机都搭载鸿蒙系统, 是不同设备的统 如今鸿蒙系统备受关注,大家都很期待,之所以受到这么多人的认可,主要是因为鸿蒙系统几乎可以适配所有的终端设备,让用户可以在电脑、平板、手机、手表等终端上实现互联,能把生态这方面做的很好的,目前只有在苹果中看到。我们知道,Android和IOS系统目前垄断着手机操作系统的市场,不管是手机开发者,还是周边智能生态系统的开发者,都离不开这两个手机操作系统。
  • 中国成为最大腕戴设备市场,引领全球增长 腕戴设备市场包含智能手表和手环产品。其中,智能手表市场在2024年前三季度全球出货量1.1亿台,同比下降3.8%;而中国智能手表市场出货量3,286万台,同比增长……
  • 截止2030年,全球蜂窝物联网连接收入将超过 260 亿美元 • 2023 年,全球蜂窝物联网连接数激增 24%,超过 33 亿,到 2030 年将突破 62 亿。 • 尽管中国在 2023 年以 23 亿的连接数规模占据全球蜂窝物联网连接总数的 70%,但其在全球连接收入中的份额仅为 36%。 • 到 2030 年,联网汽车、智能表计和智能零售这三大应用预计将合计占蜂窝物联网应用总市场份额的 60% 以上。 • 到 2030 年,5G 连接将在全球范围内超过 NB-IoT 连接,占物联网连接总收入的近 50%。
  • 为什么翻新机的价格在上涨? • 目前,iPhone在翻新市场中是最热门的商品,并将长期主导着翻新机的平均销售价格。 • 全球翻新机市场持续向高端化发展,其平均销售价格(ASP)现已超过新手机。 • 新兴市场是增长的最大驱动力,消费者对高端旗舰产品有着迫切需求。 • 由于市场固化和供应链的一些问题限制推高中国、东南亚和非洲等大市场的价格。 • 2024年,这些翻新机平均销售价格将首次超过新手机。
  • 2024三季度全球扫地机器人市场出货增长持续,卷势不减 从全球厂商竞争来看,三季度凭借多个新品发布,石头科技市场份额提升至16.4%,连续两季度排名全球第一……
  • AMOLED行业核心模具,精密金属掩膜版国产技术攻克核心瓶颈 AMOLED行业的关键模具FMM及Invar在市场中属于极其细分而品质又要求极高的赛道,传统企业打法在这两个产品上都难以适用。唯有对上下游有深度了解,并能够将产业链技术链条打通,才能够将近似于黑箱中的FMM及其原材料Invar长期受限的困局打破。
  • IDC:2024前三季度中国安全硬件市场规模同比下降2.9% IDC定义下的网络安全硬件市场分别由统一威胁管理 (UTM)、基于UTM平台的防火墙 (UTM Firewall) 、安全内容管理(SCM)、入侵检测与防御 (IDP)、虚拟专用网(VPN)和传统防火墙 (Traditional Firewall) 构成。
  • 预计1Q25 NAND Flash价格将出现超10%下滑 2025年第一季NAND Flash供货商将面临库存持续上升,订单需求下降等挑战,平均合约价恐季减10%至15%。
  • 山东大学团队在高精度存算芯片领域取得新进展 本研究通过设计闪存存算一体架构,有效提升了计算效率和精度,为解决复杂计算任务提供了重要技术支撑。
  • 加速资源整合将是本田与日产合并后的首要任务 日本两大全球汽车集团本田与日产于2024年12月23日宣布启动合并谈判,目标在2025年6月达成协议,三菱汽车也有望加入。若三家车厂顺利合并,当务之急将是整合各自的资源以节省开支,利用规模化生产降低成本,以及加快电动车相关计划......
  • 2024过去了,细数中国工业经济这一年 这一年的成绩单足够亮眼,但来之不易。
广告
广告
热门推荐
广告
广告
广告
广告
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了