自4月底开始,鸿蒙2.0系统便迎来公测,6月2日将举行鸿蒙操作系统以及华为全场景新品发布会,届时会正式推出鸿蒙OS稳定版。
针对华为发布的鸿蒙系统,网上评论褒贬不一,有吹捧的,有无脑黑的。
在这里一口君就不做评价了,但是有2点:
废话不多说,让我们一起搭建一个鸿蒙的运行环境,来一窥神秘的鸿蒙。
HarmonyOS鸿蒙操作系统,是面向万物互联时代的全场景分布式操作系统。OpenHarmony在传统的单设备系统能力的基础上,创造性地提出了基于同一套系统能力、适配多种终端形态的理念,支持多种终端设备上运行,第一个版本支持128K~128M设备上运行,目前已发布2.0版本。
基于鸿蒙开发的方式有两个方向:面向应用开发
(应用层)和面向设备开发
(内核层、驱动子系统)。
本文将基于使用鸿蒙操作系统的子内核LiteOS做设备开发,带领大家一步步揭开鸿蒙的神秘面纱,看看它到底像不像网传的那么牛掰。
Huawei LiteOS 是华为自研、开源的物联网实时操作系统,ARM、RISC-V等主流的CPU架构,以轻量级低功耗,快速启动,互联互通,安全等关键能力,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。
LiteOS既可以作为一款RTOS运行在资源受限的MCU上,也可以作为HarmonyOS的子内核运行在资源丰富的SOC平台上。根据硬件的资源情况,LiteOS又可以分为LiteOS-A(内存≥1M) 和LiteOS-M(内存≥128KB)。
OpenHarmony LiteOS-A内核是基于Huawei LiteOS内核演进发展的新一代内核,是面向IoT领域构建的轻量级物联网操作系统。新增了丰富的内核机制、更加全面的POSIX标准接口以及统一驱动框架HDF(OpenHarmony Driver Foundation)等,为设备厂商提供了更统一的接入方式,为OpenHarmony的应用开发者提供了更友好的开发体验。
OpenHarmony LiteOS-A内核架构图
OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点,其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等,分为硬件相关层以及硬件无关层,硬件相关层提供统一的HAL(Hardware Abstraction Layer)接口,提升硬件易适配性,不同编译工具链和芯片架构的组合分类,满足AIoT类型丰富的硬件和编译工具链的拓展。
OpenHarmony LiteOS-M内核架构图
这里我们选择LiteOS-A,在QEMU上运行(不用硬件开发板,只需要一台电脑,方便你验证),通过一步步搭建起基本的开发环境,让你也体验一把鸿蒙开发的乐趣!
下面列出的内容,就是我们需要准备的工具,这是一套基于windows搭建的开发环境,点击它们你可以直接下载,也可以通过后台回复LiteOS
,获取完整工具链的压缩包。东西有点多,请耐心操作。
关于ARM GCC
、 GNU Make
、中文语言包
,链接跳转的是一段脚本语言,直接复制到桌面建一个文本文件粘贴进里面,然后保存退出,将.txt后缀改成.bat,点击运行即可完成安装(如果你觉得麻烦,可以在后台获取完整的工具链)。
下载好所有工具以后,我们就可以配置开发环境了。
安装前请注意:当前HUAWEI LiteOS Studio
当前只提供Windows 10 64 位操作系统上的安装版本,如果你的系统是32位或者其他系统,可能无法安装IDE。
双击HUAWEI-LiteOS-Studio-Setup-x64-X.XX.X.exe
,依照屏幕提示,安装HUAWEI LiteOS Studio
集成开发环境。
接受许可协议
需要阅读并接受许可协议,才可以继续安装。选中我接受协议(A)
,点击下一步
。
选择目标位置
使用默认,或者设置程序的安装位置,点击下一步
。
选择快捷方式
推荐全部勾选,在桌面上使用快捷方式,或在资源管理器文件夹内右键菜单,均可以快速打开程序HUAWEI LiteOS Studio
。点击下一步
。
安装准备就绪
点击安装
按钮执行安装即可。
安装完成后,界面如下:
可选:HUAWEI LiteOS Studio
不提供常用工具、常用扩展的预置,需要用户自行下载,如用户本地已安装,可忽略此步骤。但这里有已点要注意,IDE是基于VsCode开发的,滞后通用型的VsCode版本,因此许多组件可能无法正常使用,你需要下载对应VsCode版本的组件才能正常安装。
一般使用新建工程功能下载SDK,需要git for windows
工具的支持。根据上文提供的连接下载git,并按安装向导完成最新版git for windows
的安装。通常我们需要安装git,用于更新SDK和对版本进行管理控制。
开源LiteOS
工程使用ARM GCC
编译器进行编译,需要安装编译器软件。 下载bat文件以后,点击运行,软件将默认保存到C:\Users\<UserName>\.huawei-liteos-studio\tools\arm-none-eabi
目录。
注意:本文提供的下载程序下载GNU Arm Embedded Toolchain
,是基于官网提供的bat程序,需要先安装git for windows
工具,并加入环境变量。
开源LiteOS
工程使用Makefile
文件组织编译和链接程序,需要安装GNU Make
工具。下载bat文件以后,点击运行,软件将默认保存到C:\Users\<UserName>\.huawei-liteos-studio\tools\build
目录。
注意:本文提供的下载程序下载GNU Make
,是基于官网提供的bat程序,需要先安装git for windows
工具,并加入环境变量。
如果开发板使用JLink
仿真器,则根据情况安装JLink
软件。从上文提供的导航链接下载,并按安装向导完成最新版JLink
的安装。建议将JLink.exe
所在目录加入PATH
环境变量(虽然我们这里基于QEMU运行LiteOS,但保不齐你以后用开发板做开发,所以还是要安装好)。
安装中文语言包扩展vscode-language-pack-zh-hans
,可以获得更好的交互体验。HUAWEI LiteOS Studio
默认不预置中文语言包,因此界面默认显示为英文,需要自行安装。
下载bat文件以后,点击运行,软件将默认保存到C:\Users\<UserName>\.huawei-liteos-studio\extensions\extension-collections
目录。
在IDE 活动栏中,打开扩展
视图,点击更多操作...
,在弹出的菜单中选择从 VSIX 安装
,然后指定扩展文件的路径,即可完成安装。
注意:通过本文提供的下载程序下载中文语言包
,需要先安装git for windows
工具,并加入环境变量。
中文语言包使能:
步骤 1 安装完成后,通过点击菜单栏中的查看
->命令面板
调出命令输入界面
步骤 2 在命令输入框中输入Configure Display Language
,回车,选择需要切换的语言(en
、zh-cn
等),弹出重启IDE完成配置的提示窗口,点击重启,即可完成语言切换
Qemu是一套由FabriceBellard编写的以GPL许可证的模拟处理器,在GNU/Linux平台上使用广泛,也支持在X86环境上运行。有关Qemu的介绍可参考其github社区内容。HUAWEI LiteOS Stduio
使用Qemu的realview-pbx-a9
开发板来模拟运行LiteOS开源工程。本文主要介绍Windows下如何基于Qemu运行LiteOS。
由于我们使用QEMU来运行LiteOS-A,所以必须安装这个软件。从上文提供的导航链接下载它,并按照安装向导完成最新版QEMU
的安装。建议将QEMU所在bin目录加入PATH
环境变量。
这一部分将基于HUAWEI LiteOS Stduio
和QEMU
来演示如何新建工程、编译、烧录、串口调试、GDB
图形化单步调测等功能。
关于如何创建工程,HUAWEI LiteOS文档中心给出了丰富的教程,这里为了方便大家一口气学会,就再赘述一遍,省去大家重新打开网页的功夫。
注意:当本地已有工程/源码时,无需再新建工程,直接进入下一步打开工程
。
先点击左侧的Liteos studio
图标
,弹出侧边栏,通过点击新建工程
图标
,打开新建工程界面。在使用HUAWEI LiteOS Studio
新建realview-pbx-a9
工程时,需要联网,确保可以访问开源LiteOS。如果联网需要代理,请提前配置好代理,否则新建工程会失败。配置代理方法参考官网文档中心的常见问题章节。同时,需要确保本地已安装git for windows
工具。
步骤 1 在工程名称
中填入自定义的工程名
步骤 2 在工程目录
中填入或选择工程存储路径,路径名中不要包含中文、空格、特殊字符等
步骤 3 选择SDK版本号,当前QEMU工程被维护在https://gitee.com/
,支持最新版本master
分支
步骤 4 在开发板信息表点选开发板所在行,目前默认提供STM32F429IG
、STM32F769NI
、STM32L431RC
、STM32F103ZE
、STM32F072RB
、STM32F407ZG
、realview-pbx-a9
七种开发板
点击确认
按钮,后台将下载并保存所选目标板的SDK,等待下载完成后会在一个新窗口中自动打开新建的工程。按照图示填写工程信息,选择QEMU虚拟开发板。
步骤 1 点击工具栏上的工程设置图标
,打开工程配置界面
步骤 2 点击目标板
,选取当前工程对应的开发板,,点击确认按钮
进行保存
如需对LiteOS开放可配置的组件与属性进行使能,而不是仅使用默认的配置,用户可以点击工程配置界面上的组件配置
,在左侧的选择组件
中点击想要使能或修改的组件,在右侧的组件属性
栏勾选需要使能的组件,或更改组件属性值,点击确认按钮
保存。。
步骤 1 点击工程配置界面上的编译器
步骤 2 编译器类型
选择arm-none-eabi
步骤 3 编译器目录
需要自行下载GNU Arm Embedded Toolchain编译交叉工具链
,已提供默认路径。通过本站提供的自动下载程序,arm-none-eabi
编译器就会安装到该路径下。用户也可自行指定安装目录,点击图标
设置为arm-none-eabi-gcc.exe
所在路径
步骤 4 Make构建器
需要我们自行下载Make.exe构建工具
,已提供默认路径。通过本文提供的自动下载程序,Make.exe构建工具
就会安装到该路径下。用户也可自行指定安装目录,点击图标设置为make.exe
所在路径
步骤 5 Makefile脚本
路径已填入默认值,也可以自行更改。在工程根目录
下的Makefile
文件上点击右键->设置为Makefile文件
,或点击图标进行自定义设置,也可使用按钮自动搜索脚本文件
步骤 6 Make参数
已填入默认值,也可自行修改
步骤 7 配置好后点击确认按钮
进行保存
步骤 8 点击工具栏上的编译图标
开始编译,也可以点击重新构建图标
进行清理和重新编译
编译成功的截图示例如下:
清理编译输出的截图示例如下:
点击编译按钮,执行编译,编译成功截图如下:
进入烧录器
界面,烧录方式
选择Simulator
,烧录器目录
选择qemu-system-arm.exe
所在目录,烧录文件
选择out/realview-pbx-a9
目录下的Huawei_LiteOS.bin
文件,界面配置示例截图如下:
点击烧录按钮
,仿真开启成功后进入交互界面,截图如下(在IDE下方的终端面板):
如果没有成功运行,请检查是否安装好QEMU,并把其目录添加到环境变量中,同时检查是否编译成功,有无生成bin文件。
进入调试器
界面,调试器
选择Simulator
,调试器目录
选择qemu-system-arm.exe
所在目录,GDB目录选择arm-none-eabi-gdb.exe
可执行文件路径
选择out/realview-pbx-a9
目录下的Huawei_LiteOS.elf
文件,界面配置示例截图如下:
点击debug按钮
,执行qemu
仿真,仿真开启成功后进入交互界面,截图如下:
注意:这里烧录进QEMU仿真,和进行debug运行,并不能够同步执行,也就是说不可以同步调试,因为烧录进QEMU的是bin文件,而仿真使用的是elf文件。
到这里,你已经从成功将鸿蒙内核LiteOS-A运行起来了!
文中用到的所有安装包,可以关注公众号:一口Linux,
后台回复LiteOS
,获取。
文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99
文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效
文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是
文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件
文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件
文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码
文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware
文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停
文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待
文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析
文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code
文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象