云服务器内容精选

  • 安装图形化配置解析工具 安装python 2.7/3.2+。 下面以python3.8为例介绍安装方法。 命令行方式安装: sudo apt-get install python3.8 源码包编译安装: 通过官网下载python源码包。 解压源码包。 参考如下命令完成解压,将压缩包名替换为实际下载的源码包名: tar -xf Python-3.8.5.tgz 检查依赖。 解压后进入到目录中,执行./configure命令以检查编译与安装python所需的依赖: cd Python-3.8.5./configure 如果没有报错就继续下一步操作,如果存在报错就根据提示安装依赖。 编译&安装python。 sudo makesudo make install 检查python版本并正确链接python命令。 python --version 如果显示的不是刚刚安装的python版本,则需要执行以下命令来正确链接python命令。 获取python目录,例如对于python 3.8.5,执行如下命令。 which python3.8 链接python命令到刚刚安装的python包。 将以下命令中的 "python3.8-path" 替换为 "which python3.8" 命令执行后的回显路径: cd /usr/bin && sudo rm python && sudo ln -s "python3.8-path" python 再次检查python版本。 python --version 安装pip包管理工具。 如果pip命令不存在,可以下载pip源码包进行安装。pip依赖setuptools,如果setuptools不存在,也需要安装。 命令行方式安装: sudo apt-get install python3-setuptools python3-pip -ysudo pip3 install --upgrade pip 源码包方式安装: 安装setuptools。 点击setuptools源代码包下载地址,可以参考下面的命令进行安装: sudo unzip setuptools-50.3.2.zipcd setuptoolssudo python setup.py install setuptools最新版本不支持python 2.7,如果使用python 2.7,请下载setuptools 45.0.0版本以支持python 2.7。 安装pip。 点击pip源代码包下载地址,可以参考下面的命令进行安装: sudo tar -xf pip-20.2.4.tar.gzcd pip-20.2.4sudo python setup.py install 安装kconfiglib库。 对于服务器可以联网的情况。 可以直接使用如下命令安装kconfiglib: sudo pip install kconfiglib 对于服务器不能联网的情况。 可以采用离线的方式安装。首先在其他能联网的环境上下载kconfiglib,可以下载kconfiglib的wheel文件kconfiglib-14.1.0-py2.py3-none-any.whl或源代码文件kconfiglib-14.1.0.tar.gz,这里以14.1.0版本为例。 wheel文件的安装,可以参考如下命令: sudo pip install kconfiglib-14.1.0-py2.py3-none-any.whl 源代码文件的安装,可以参考如下命令: sudo tar -zxvf kconfiglib-14.1.0.tar.gzcd kconfiglib-14.1.0sudo python setup.py install 父主题: 搭建Linux编译环境
  • Linux下编译流程 参照搭建Linux编译环境完成环境搭建后,即可按以下步骤完成编译。 下载Huawei LiteOS代码。 请下载完整的Huawei LiteOS代码,代码仓在gitee上,请选择master分支进行下载:LiteOS代码仓。 拷贝开发板配置文件为根目录.config文件。 根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config。 配置系统(可选)。 如果不希望使用系统的默认配置,可以在Huawei_LiteOS根目录下执行make menuconfig命令,在图形化配置界面中自行裁剪模块或修改配置。修改完保存菜单退出,其修改默认会保存到根目录下.config文件中。 清理工程。 在编译前,先在Huawei_LiteOS根目录下执行make clean命令删除以前编译出的二进制文件。 编译工程。 在Huawei_LiteOS根目录下执行make命令即可完成工程编译,编译结果会在屏幕上输出。 以Cloud_STM32F429IGTx_FIRE为例,生成的系统镜像文件、反汇编等文件保存在out/Cloud_STM32F429IGTx_FIRE目录中,库文件在out/Cloud_STM32F429IGTx_FIRE/lib目录中,中间文件在out/Cloud_STM32F429IGTx_FIRE/obj目录中。 如果只编译某个模块,而不是整个工程代码,在完成该模块的配置后,参考如下步骤完成编译。 导出LITEOSTOPDIR环境变量。 LITEOSTOPDIR变量表示Huawei LiteOS代码的保存路径,例如代码路径为“/usr1/mypc/Huawei_LiteOS”,则执行如下命令: export LITEOSTOPDIR=/usr1/mypc/Huawei_LiteOS 编译模块。 进入要编译的模块目录,执行make命令。 父主题: Linux下的编译
  • 配置&编译框架简介 Huawei LiteOS使用Kconfig文件配置系统,基于GCC/Makefile实现组件化编译。 不论是Linux下使用make menuconfig命令配置系统,还是Windows下使用Huawei LiteOS Studio进行图形化配置,Huawei LiteOS都会同时解析、展示根目录下的.config文件和tools/menuconfig/config.in文件(该文件包含了各个模块的Kconfig文件),同时在开发板的include文件夹下生成menuconfig.h。config.in文件由Kconfig语言(一种菜单配置语言)编写而成。config.in文件决定了要展示的配置项,.config文件决定了各个配置项的默认值。 Huawei LiteOS通过在根目录下执行make命令完成自动化编译整个工程。对于根目录下的Makefile文件,其中包含了config.mk,config.mk又包含了los_config.mk,而los_config.mk则包含了各个模块的Makefile和.config文件,从而定义了对整个工程的编译链接规则。 Huawei LiteOS目前支持Windows及Linux平台的配置&编译。 对于Windows平台,提供了Huawei LiteOS Studio图形化IDE,用户可直接在 Studio上完成配置&编译。 对于Linux平台,通过menuconfig进行组件化配置及裁剪后,执行make命令完成编译。
  • 安装编译器&构建器 安装GNU Arm Embedded Toolchain编译器。 下载编译器。 对于32位芯片架构,官方下载地址为:GNU Arm Embedded Toolchain编译器,建议使用2019-q4-major及以上版本。 对于64位芯片架构,官方下载地址为:64位GNU Arm Embedded Toolchain编译器,建议使用最新版本的aarch64-linux-gnu编译器。 解压编译器。 可以参考如下命令完成解压,将压缩包名替换为实际下载的软件包名: tar -xvf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2 解压后可以得到文件夹gcc-arm-none-eabi-9-2019-q4-major。 添加编译器的执行路径到环境变量。 以第二步解压的编译器为例,将gcc-arm-none-eabi-9-2019-q4-major/bin目录添加到环境变量中,可以编辑~/.bashrc文件,参考如下方法设置PATH环境变量: export PATH=$PATH:YOUR_PATH/gcc-arm-none-eabi-9-2019-q4-major/bin/ 然后执行以下命令使新设置的环境变量立即生效: source ~/.bashrc 升级GNU Make构建器到最新版。 通过官网下载最新Make构建器。 参考如下命令完成解压,将压缩包名替换为实际下载的软件包名: tar -xf make-4.3.tar.gz 检查依赖。 解压后进入到目录中,执行./configure命令以检查编译与安装Make构建器所需的依赖: cd make-4.3./configure 如果没有报错就继续下一步操作,如果存在报错就根据提示安装依赖。 编译&安装Make。 继续在当前目录下,参考如下命令完成Make构建器的编译与安装: sh build.shsudo makesudo make install 父主题: 搭建Linux编译环境
  • Huawei LiteOS开发工具介绍 Huawei LiteOS Studio是Huawei LiteOS提供的一款Windows下的图形化开发工具。它以Visual Studio Code的社区开源代码为基础,根据C语言编程特点、Huawei LiteOS嵌入式系统软件的业务场景开发的工具。它提供了代码编辑、组件配置、编译、烧录、调试等功能,可以对系统关键数据进行实时跟踪、保存与回放。关于这款工具的详细使用介绍,请访问LiteOS Studio官方网站。
  • 术语 术语名称 描述 物联网 顾名思义,物联网就是物物相连的互联网。 NB-IoT/LPWA NB-IoT是IoT领域一个新兴的技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网LPWAN,该项技术是目前华为公司最重要的物联网技术之一。 LiteOS SDK LiteOS SDK是Huawei LiteOS软件开发工具包(Software Development Kit),包括端云互通组件、FOTA、JS引擎、传感框架等内容。 南向设备 用于采集数据的嵌入式设备,比如STM32开发板,或者温湿度采集的传感器等。 北向应用 用于查看IoT云平台上南向设备上报数据或者给南向设备下发控制命令的手机APP或者PC端的应用程序。 设备profile 用于描述南向设备具有的能力以及上报的数据的格式的一组json格式文件,这些文件需要上传到IoT云平台上。 编解码插件 用于将南向设备上报的私有数据解析成设备profile描述的并且IoT云平台能够识别和存储的数据,以及将北向应用下发的命令编码成南向设备能够识别的数据格式的一组函数组成的jar文件。简而言之就是南向设备和云平台之间的一个数据转换的程序。 AT指令 AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。本文通过AT指令操作WIFI或者GSM模组。 端云互通组件 端云互通组件是华为物联网解决方案中,资源受限终端对接到 IoT云平台的重要组件。 华为云IoT 华为云IoT是面向运营商和企业/行业领域的统一开放云平台,支持SIM和非SIM场景的各种联接和联接管理,是华为公司面向IoT解决方案的关键平台部件。主要分为连接管理平台,设备管理平台和应用使能平台等多个部分,负责联通端侧设备与北向应用的核心产品。可以支撑千万级的海量物联网连接。 RESTful Web API REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。目前华为云IoT北向应用提供的就是这样一套规范性API。 LwM2M 轻量化机器对机器协议 CoAP 轻量级受限应用层协议 MQTT 消息队列遥测传输 DTLS 数据传输安全协议 FOTA 固件远程升级 UART 通用异步收发器(异步串行通信口) 编解码插件和设备profile是一对一的关系,即一个设备profile只能对应一个编解码插件。APP和编解码插件的关系是一对多的关系,即一个APP下面可以同时关联多个编解码插件。
  • 架构框图 图1 Huawei LiteOS架构框图 Huawei LiteOS支持多种芯片架构,如Cortex-M series、Cortex-R series、Cortex-A series等,可以快速移植到多种硬件平台。Huawei LiteOS也支持 UP(单核)与 SMP(多核)模式,即支持在单核或者多核的环境上运行。 除基础内核外,Huawei LiteOS还包含了丰富的组件,可帮助用户快速构建物联网相关领域的应用场景及实例,主要包含以下组成部分: 基础内核:包括不可裁剪的极小内核和可裁剪的其他模块。极小内核包含任务管理、内存管理、中断管理、异常管理和系统时钟。可裁剪的模块包括信号量、互斥锁、队列管理、事件管理、软件定时器等。 内核增强:在内核基础功能之上,进一步提供增强功能,包括C++支持、调测组件等。调测组件提供了强大的问题定位及调测能力,包括shell命令、Trace事件跟踪、获取CPU占用率、LMS等。 文件系统:提供一套轻量级的文件系统接口以支持文件系统的基本功能,包括vfs、ramfs、fatfs等。 系统库接口:提供一系列系统库接口以提升操作系统的可移植性及兼容性,包括Libc/Libm/POSIX以及CMSIS适配层接口。 网络协议栈:提供丰富的网络协议栈以支持多种网络功能,包括CoAP/LwM2M、MQTT等。 业务组件:构建于上述组件之上的一系列业务组件或框架,以支持更丰富的用户场景,包括OTA、GUI、AI、传感框架等。 IDE(Huawei LiteOS Studio):基于LiteOS操作系统定制开发的一款工具。它提供了界面化的代码编辑、编译、烧录、调试等功能。
  • 知识产权政策 定义 1.1 关联公司:是指就一个实体而言,该实体直接或间接控制的另一实体,或者,直接或间接控制该实体的另一实体,或者与该实体被某一实体共同控制的其他实体;这里的“控制”是指直接或间接拥有一个实体中多于50%份额的投票权或表决权或者以任何其他方式直接或间接控制该实体50%以上的具有该实体决策权的所有者权益。 1.2 遵从软件:是指由华为技术有限公司(后称“华为”)正式发布且未经过修改的Huawei LiteOS,或者虽经修改,但能通过认证测试的Huawei LiteOS。 1.3 认证测试:是指为了确保Huawei LiteOS与其一起使用的软件或硬件的兼容性和接口一致性而由华为开发的测试。认证测试套件及相关要求和指导将在Huawei LiteOS官网公布。 1.4 贡献:是指由任何人提交给Huawei LiteOS将其纳入或建议纳入Huawei LiteOS中的任何信息或资料,包括软件源代码,文档或相关材料。 1.5 贡献者:是指提交贡献给Huawei LiteOS的人。 1.6 您:是指任何个人,公司,合作企业,共同控股公司,有限合伙,协会,有限责任公司或企业或实体。 1.7 Huawei LiteOS:是指由华为主导开发、管理、并由华为在Huawei LiteOS官网上发布的可用于芯片,网关,智能家居,物联网领域的轻量开源操作系统项目。华为可能会对该软件不断进行更新。 1.8 承诺的专利权利要求:是指专利或专利申请的一个或多个权利要求,且满足如下条件:(i)由贡献者或其关联公司现在或将来拥有控制的,或其他有权许可且无需向无关联的第三方支付费用的,且(ii)会因接受者制造,使用,许诺销售,销售,进口或以其他方式转移贡献者提交给Huawei LiteOS的贡献单独或将该贡献与前述Huawei LiteOS的结合所必然且直接侵犯。 1.9 政策:是指本Huawei LiteOS知识产权政策。 1.10 接收者:是指接受本政策并享有本政策下许可的个人或法律实体。 1.11 承诺者:是指贡献者及其关联公司。 许可 Huawei LiteOS的代码将以BSD 3-Clause License,除非华为另选其他许可证 (“可适用的许可证”)。接收者可以访问 http://opensource.org/licenses/BSD-3-Clause查看该许可证的详细内容。 专利不诉承诺 3.1 在接收者遵守本政策的前提下,每个承诺者许诺不对任何接收者就其制造,使用,许诺销售,销售,进口或以其他方式转移遵从软件的行为发起指控,诉讼或其他法律程序指控其侵犯该承诺者的承诺专利权利主张。前述承诺不适用于因以下原因引起的侵犯承诺专利权利主张的指控:i. 由其他方提交的贡献;ii 承诺者贡献代码后其他人对该贡献的修改;iii 该贡献与硬件的结合或者与不属于贡献所针对的Huawei LiteOS的其他代码的结合;或者 iv 不属于遵从软件的软件。前述承诺也不适用于集成在个人便携产品(如手机,便携电脑,可穿戴设备等)中的遵从软件。 3.2 这是每个承诺者对接收者的个人承诺。 3.3 每个承诺者理解并同意专利不诉承诺是具有法律约束力且不可撤回的(根据第4条撤回的除外),而且对该承诺者、其继受者、受让方以及有权对第三方实施该承诺专利主张的任何独占被许可人都是有约束力的。 终止许可及专利不诉承诺的权利 在满足可适用许可证规定的前提下,如果贡献者或其关联公司向其他基于第3条享有专利不诉承诺权益且未根据本条终止的接收者发起指控,诉讼或其他法律程序,指控其制造,使用,许诺销售,销售,进口或者以其他形式转移遵从软件构成对其专利直接侵权或帮助侵权的,那么该接收者及其关联公司本政策下所有的许可以及专利不诉承诺将立即终止。 无其他权利 5.1 本政策并不授予接收者使用华为的贸易名称,商标,服务标记或产品名称的许可。 5.2 除本政策和可使用许可证明确约定外,没有其他明示或默示的专利,商标,版权或其他知识产权的许可授予接收者,不论是通过默示,放弃,禁止反言或其他形式。 无担保 除非适用法强制规定或者双方有明确书面约定, Huawei LiteOS, 遵从软件以及任何贡献均如是提供,无任何形式的担保,不论是明示还是默示,包括但不限于不侵权,适销性或满足特定目的的担保。 责任限制 除非适用法强制规定,在任何情况下,不论是基于侵权,合同或其他,华为及其关联公司或任何贡献者均不对其他贡献者,接收者或第三方因本政策或因使用或未能使用华为发布的Huawei LiteOS或者对Huawei LiteOS的任何贡献导致的损失,包括任何直接的,间接的,特别的,偶然的损失或者数据丢失等,即使该方已经被建议该种可能的损失。 可分离性 如果本政策内的任何条款被认定为无效,不可实施或者与适用法冲突,本政策中的其他条款继续有效。 修改 华为有权自行决定修改本政策。该修改后的政策从其在Huawei LiteOS官网上公布之日起生效,并仅适用于同时或此后发布的Huawei LiteOS软件版本。 适用法和争议解决 本政策适用中华人民共和国法律。任何因本政策引起或与本政策相关的纠纷应提交到北京中国国际经济贸易仲裁委员会。该仲裁裁决是终局的并对仲裁双方具有法律约束力。
  • 知识共享许可协议 您可以自由地: 分享 — 在任何媒介以任何形式复制、发行本文档。 演绎 — 修改、转换或以本文档为基础进行创作。 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 惟须遵守下列条件: 署名 — 您必须提供适当的证书,提供一个链接到许可证,并指示是否作出更改。您可以以任何合理的方式这样做,但不是以任何方式表明,许可方赞同您或您的使用。 非商业性使用 — 您不得将本文档用于商业目的。 相同方式共享 — 如果您的修改、转换,或以本文档为基础进行创作,仅得依本素材的授权条款来散布您的贡献作品。 没有附加限制 — 您不能增设法律条款或科技措施,来限制别人依授权条款本已许可的作为。 声明: 当您使用本素材中属于公众领域的元素,或当法律有例外或限制条款允许您的使用,则您不需要遵守本授权条款。 未提供保证。本授权条款未必能完全提供您预期用途所需要的所有许可。例如:形象权、隐私权、著作人格权等其他权利,可能限制您如何使用本素材。 为了方便用户理解,这是协议的概述。您可以访问网址https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode了解完整协议内容。
  • 宏 代码片段使用宏隔离时,统一通过#ifdef的方式,例如: #ifdef LOSCFG_XXX...#endif 定义宏时,要使用完备的括号,比如: #define SUM(a, b) a + b // 不符合本条要求#define SUM(a, b) ((a) + (b)) // 符合本条要求 但是也要避免滥用括号,比如单独的数字或标识符加括号毫无意义: #define SOME_CONST 100 // 单独的数字无需括号#define ANOTHER_CONST (-1) // 负数需要使用括号#define THE_CONST SOME_CONST // 单独的标识符无需括号 包含多条语句的函数式宏的实现语句必须放在do-while(0)中,例如: #define FOO(x) do { \ (void)printf("arg is %d\n", (x)); \ DoSomething((x)); \} while (0) 禁止宏调用参数中出现预编译指令。 宏定义不以分号结尾。
  • 注释 注释的内容要清楚、明了,含义准确,防止注释二义性。 在代码的功能、意图层次上进行注释,即注释解释代码难以直接表达的意图,而不是仅仅重复描述代码。 函数声明处注释描述函数功能、性能及用法,包括输入和输出参数、函数返回值、可重入的要求等;定义处详细描述函数功能和实现要点,如实现的简要步骤、实现的理由、设计约束等。 全局变量要有较详细的注释,包括对其功能、取值范围以及存取时注意事项等的说明。 避免在注释中使用缩写,除非是业界通用或子系统内标准化的缩写。 文件头部要进行注释,建议注释列出:版权说明、版本号、生成日期、作者姓名、功能说明、与其它文件的关系、修改日志等。 注释风格要统一,建议优先选择/* */的方式,注释符与注释内容之间要有1空格,单行、多行注释风格如下: /* 单行注释 */ /* * 多行注释 * 第二行 */ 注释应放在其代码上方或右方。 上方的注释,与代码行之间无空行,保持与代码一样的缩进。 右边的注释,与代码之间至少相隔1个空格。如果有多条右置注释,上下对齐会更加美观,比如: #define A_CONST 100 // 此处两行注释属于同类#define ANOTHER_CONST 200 // 可保持左侧对齐
  • C++源码编译找不到bits/c++config.h 原因:同步修改 los_config.mk 时,添加的 C++ 头文件路径缺失。 解决方案:继承LiteOS代码到自己工程时,确保编译环境和LiteOS编译环境一致,包含了C++的路径。用户可以在自己编译框架中包含C++编译器路径,具体请参考 LITEOS_COMPILER_CXX_PATH、LITEOS_CXXINCLUDE在compiler_gcc.mk中的定义。 父主题: C++常见问题
  • 软件定时器使用不规范,导致定时器无响应 原因: 使用LOS_SwtmrCreate创建定时器时,设置了入参定时器ID的初始值,而不管设置的ID号是否已经存在定时器,系统都会为新创建的定时器重新赋予一个合适ID。 后续如果通过设置的ID号使用该定时器,可能会出现两种情况: 该ID并没有对应的定时器,故无法通过该ID号使用定时器。 该ID存在相应的定时器,故通过该ID号使用的定时器并不是实际创建的定时器。 解决方案: 使用LOS_SwtmrCreate创建定时器时,不要指定定时器的ID,LiteOS系统会自动分配可以使用的ID号供定时器使用。 建议与总结: 在使用系统资源时,要明确使用方法,定时器、任务、信号量等都是通过系统提供的创建函数自行分配ID号,不要强占使用特定的ID号,否则会导致一些概率性问题。
  • C调用C++函数,函数符号找不到 原因:被调用的函数未遵循C的调用约定,导致函数符号编译时按C++的命名修饰规则编译,而在调用处按C的命令修饰规则编译,调用时就会找不到定义。 解决方案:请在函数定义和声明前添加如下C的调用约定: #ifdef __cplusplus#if __cplusplusextern "C" {#endif /* __cplusplus */#endif /* __cplusplus *//* code */...#ifdef __cplusplus#if __cplusplus}#endif /* __cplusplus */#endif /* __cplusplus */ C++调用C函数,也存在类似问题,请在声明前添加C的调用约定。 父主题: C++常见问题
  • 常用链接 Huawei LiteOS 官网:liteos.org Huawei LiteOS 论坛:https://bbs.huaweicloud.com/forum/forum-729-1.html Huawei LiteOS 开源代码:(码云)https://gitee.com/LiteOS/LiteOS;(github)https://github.com/LiteOS/LiteOS Huawei LiteOS 资料中文网:https://support.huaweicloud.com/LiteOS/index.html Huawei LiteOS 官方微信公众号