LiteOS

【LiteOS】STM32F103-LiteOS移植教程(详细篇)

£可爱£侵袭症+ 提交于 2021-02-12 03:43:21
总览 本文基于STM32F103C8T6,详细讲述华为LiteOS的移植过程。开发工具是MDK5。LiteOS官方已经适配过cortex M系列内核的单片机,因此移植过程非常简单。 LiteOS有两种移植方案:OS接管中断和非接管中断方式。接管中断的方式,是由LiteOS创建很管理中断,需要修改stm32启动文件,移植比较复杂。STM32的中断管理做的很好,用不着由LiteOS管理中断,所以我们下边的移植方案,都是非接管中断的方式的。中断的使用,跟在裸机工程时是一样的。 在target_config.h 中将 LOSCFG_PLATFORM_HWI 宏定义为 NO,即为不接管中断方式。该值默认为NO 。 移植的主要步骤如下: 1、添加内核文件 2、配置头文件 3、移除systick和pendsv中断 4、修改target_config.h 5、重定向printf函数(一般在裸机工程中就会实现) 说明:内核运行过程中会通过串口打印一些错误信息。如果日志功能开启、而又没有重定向printf函数的话,则会导致日志打印出错,程序异常卡死。之前我就是没有重定向printf函数,结果出了莫名其妙的问题,程序异常卡死在创建任务的地方。 下边我们通过新建一个裸机工程,一步步讲解如何进行移植。以下是详细过程。 一、创建裸机工程 我们这次使用的是一个STM32F103C8T6的最小系统板

鸿蒙内核源码分析(事件控制篇) | 任务间一对多和多对多的同步方案 | 中文注解HarmonyOS源码 | v30.01

人盡茶涼 提交于 2021-02-08 17:42:28
百万汉字注解 >> 精读内核源码,中文注解分析, 深挖地基工程,大脑永久记忆,四大码仓每日同步更新 < Gitee | Github | CSDN | Coding > 百篇博客分析 >> 故事说内核,问答式导读,生活式比喻,表格化说明,图形化展示,多站点每日同步更新 < OSCHINA | CSDN | WeHarmony > 本篇说清楚事件(Event) 读本篇之前建议先读 鸿蒙内核源码分析(总目录) 其他篇. 官方概述 先看官方对事件的描述. 事件(Event)是一种任务间通信的机制,可用于任务间的同步。 多任务环境下,任务之间往往需要同步操作,一个等待即是一个同步。事件可以提供一对多、多对多的同步操作。 一对多同步模型:一个任务等待多个事件的触发。可以是任意一个事件发生时唤醒任务处理事件,也可以是几个事件都发生后才唤醒任务处理事件。 多对多同步模型:多个任务等待多个事件的触发。 鸿蒙提供的事件具有如下特点: 任务通过创建事件控制块来触发事件或等待事件。 事件间相互独立,内部实现为一个32位无符号整型,每一位标识一种事件类型。第25位不可用,因此最多可支持31种事件类型。 事件仅用于任务间的同步,不提供数据传输功能。 多次向事件控制块写入同一事件类型,在被清零前等效于只写入一次。 多个任务可以对同一事件进行读写操作。 支持事件读写超时机制。 再看事件图 注意图中提到了三个概念

在鸿蒙系统搭建一个操作系统的日志模块

梦想的初衷 提交于 2021-02-01 19:50:09
操作系统的日志模块,对整个系统其实并没有什么用处,但是对于开发者,这个功能模块是必不可少的。写程序是编码+调试的过程,调试可能占据着整个开发周期的大头。而日志调试法,也是用的最多的调试方法,所以一个好用可靠的日志子系统对操作系统来说是很重要的。 鸿蒙的日志系统的实现:log driver + log daemon + log api。 log driver是日志的仓库,所有用户进程通过log api向log driver写入日志数据,log daemon是日志守护进程,负责从log driver读取日志保存到文件中。 log api log api主要是供应用程序调用,向内核日志缓冲区写入日志数据。log api的源代码主要是下面两个文件。 code-1.0\base\hiviewdfx\interfaces\innerkits\hilog\hiview_log.h code-1.0\base\hiviewdfx\frameworks\hilog_lite\featured\hiview_log.c code-1.0\base\hiviewdfx\interfaces\innerkits\hilog\hiview_log.h // 日志定义了5个级别,优先级从低到高依次是:debug、info、warn、error、fatal。 typedef enum { /** Debug

鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班? | 中文注解HarmonyOS源码 | v22.01

牧云@^-^@ 提交于 2021-01-22 17:25:05
鸿蒙内核源码注释中文版 < Gitee仓 | CSDN仓 | Github仓 | Coding仓 > 精读内核源码,中文注解分析,深挖地基工程,构建底层网图,四大码仓每日同步更新 鸿蒙源码分析系列篇 < CSDN | OSCHINA | WeHarmony | 源动力 > 故事说内核,问答式导读,生活式比喻,表格化说明,图形化展示,主流站点每日同步更新 本篇通过拆解一段很简单的汇编代码来快速认识汇编,为读懂鸿蒙汇编打基础.系列篇后续将逐个剖析鸿蒙的汇编文件. 第一: 要认定汇编语言一定是简单的,没有高深的东西,无非就是数据的搬来搬去,运行时数据主要待在两个地方:内存和寄存器。寄存器是CPU内部存储器,离运算器最近,所以最快. 第二: 运行空间(栈空间)就是CPU打卡上班的地方,内核设计者规定谁请CPU上班由谁提供场地,用户程序提供的场地叫用户栈,敏感工作CPU要带回公司做,公司提供的场地叫内核栈,敏感工作叫系统调用,系统调用的本质理解是CPU要切换工作模式即切换办公场地。 第三:CPU的工作顺序是流水线的,它只认指令,而且只去一个地方(指向代码段的PC寄存器)拿指令运算消化。指令集是告诉外界我CPU能干什么活并提供对话指令,汇编语言是人和CPU能愉快沟通不拧巴的共识语言。一一对应了CPU指令,又能确保记性不好的人类能模块化的设计idea, 先看一段C编译成汇编代码再来说模块化。 /

鸿蒙 移植 树莓派(中)添加单板

老子叫甜甜 提交于 2021-01-22 10:47:27
目录: 1.1、修改menuconfig和Kconfig 1.2、修改make和Makefile文件 1.3、编译 1.4、源码下载地址 1、添加新单板 1.1、修改menuconfig和Kconfig 要在鸿蒙的源码中添加树莓派的开发板,得先分析鸿蒙的编译构建系统。menuconfig通过Kconfig配置文件,可以生成.config(kernel\liteos_a.config)文件,内核的编译配置项包含在这个文件中。 1.1.1、添加单板 进入源码/kernel/liteos_a/目录下执行 make menuconfig 会进入下图的界面,这个界面基于\kernel\liteos_a\Kconfig这个文件生成,而且这个文件还可以包含其它目录下的Kconfig。 包含其他目录下的Kconfig,比如: source "../../kernel/liteos_a/platform/Kconfig" #这个文件就是添加新开发板的Kconfig source "../../kernel/liteos_a/arch/Kconfig" ... 1.1.2、修改kernel\liteos_a\platform\Kconfig 打开"../../kernel/liteos_a/platform/Kconfig",仿照其他单板,添加树莓派配置项。 config PLATFORM 下添加:

鸿蒙内核源码分析(源码结构篇) | 关于内核这些问题你知道多少?

佐手、 提交于 2021-01-19 15:59:20
鸿蒙内核源码注释中文版 【 Gitee仓 | CSDN仓 | Github仓 | Coding仓 】 项目中文注解鸿蒙官方内核源码,图文并茂,详细阐述鸿蒙架构和代码设计细节.每个码农,学职生涯,都应精读一遍内核源码.精读内核源码最大的好处是:将孤立知识点织成一张高浓度,高密度底层网,对计算机底层体系化理解形成永久记忆,从此高屋建瓴分析/解决问题. 鸿蒙源码分析系列篇 【 CSDN | OSCHINA | WIKI 】 从 HarmonyOS 架构层视角整理成文, 并首创用生活场景讲故事的方式试图去解构内核,一窥究竟。 kernel_liteos_a_note: 鸿蒙内核源码注释中文版 -> 点击目录和文件查看源码的详细中文注解 可以肯定是以下问题在一行行的源码中都能找到答案 kernel_liteos_a_notekernelbasecorelos_bitmap.c -> -> 位图管理器有什么作用 ? 在内核常应用于哪些场景 ? los_process.c -> 鸿蒙内核源码分析(进程管理篇) -> 进程是内核的资源管理单元,它是如何管理 任务, 内存,文件的 ? 进程间是如何协作的 ? los_sortlink.c -> -> 排序链表的实现,它的应用场景是怎样的 ? los_swtmr.c -> -> 内核的定时器是如何实现和管理的 ? los_sys.c -> ->

#2020征文-开发板# 用鸿蒙开发AI应用(一)硬件篇

女生的网名这么多〃 提交于 2021-01-13 16:09:04
目录: 前言 开发板简介 产品特色及功能 产品参数 各个主板功能简介 Hi3516DV300 芯片手册 前言 鸿蒙2.0的系统刚开源出来,华为志在打造1+8+N万物互联的全场景智慧生活,不仅是国产操作系统之梦,一次开发多设备部署也戳中开发者的痛点。这次开源的主要是基于嵌入式实时场景的微内核版本,用于手机端的宏内核版本预计要到明年。 最近申请到了一块 HarmonyOS HiSpark AI Camera 开发板,我们来体验一下AI应用的开发。 开发板简介 Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP、业界最新的H.265视频压缩编码器,同时集成高性能NNIE引擎,使得Hi3516DV300在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。 产品特色及功能 主芯片Hi3516DV300 为海思Smart HD IP Camera SoC:双核Cortex-A7 @900MHz 处理器;集成新一代 ISP、业界最新的 H.265 视频压缩编码器,同 时集成高性能NNIE 引擎,1.0TOPS。 支持Linux OS、Lite OS、鸿蒙OS 多操作系统 一组DDRC,支持32bit/1GB 处理空间,最大数据速率1.8Gbps eMMC4.5,支持4bit/8GB 存储空间 外部扩展SD 存储接口,最大支持2TB SDXC 卡

华为云·云享专家李万龙: IoT 梦想,从0到1的实现

若如初见. 提交于 2020-12-31 11:39:20
摘要 :掀翻35岁IT人退役魔咒,站在巨人肩膀上,应用新技术,结合经验,整体方案优势,让IoT快速生花,这就是李万龙的最新感悟。 随着过去几年传感器和终端设备长足的发展,加上通讯连接在带宽和速度上的大幅提升,物联网 IoT 得到了前所未有的推进。5G的迅速崛起,IoT技术应用也呈现出前所未有的态势。 作为一个有着18年工作经验的“老”程序员,李万龙虽然一直从事软件工程方面的工作,但他心中一直有软硬件结合的梦想,尤其近几年物联网概念再一次风靡,他更是蠢蠢欲动。但既往的工作内容和经验都和嵌入式开发无关,对于物联网的相关开发,有点无从下手。 2019年4月一次偶然的机会,他看到华为云物联网平台提出的1+2+1战略。于是,李万龙抱着看一看的心态浏览着华为云物联网论坛。也正是这个无心的浏览,李万龙发现论坛正在举行“IoT在线训练营”活动,该活动主要介绍华为物联网+LiteOS+小熊派的技术学习。李万龙当时就激动了起来,这个线上培训有案例有老师,就是他梦寐以求的软硬结合的物联网场景。于是,他立马注册了账号报名参加活动,下单购买小熊派硬件设备,开启了他的物联网之路。 跨过零,走进物联网 毕竟是第一次接触物联网,李万龙在一开始除了物联网这个名词,其他的都不了解,设备端的开发都需要从零开始。李万龙表示,在学习的过程中,华为云老师准备的课程非常全面和干货。 李万龙从物联网的概念开始

打算把LWIP 2.0.3升级为2.1.2

放肆的年华 提交于 2020-12-28 18:46:47
20201226 周六晚 21点21分 一年前写过 《花了两个小时将lwip1.4.1 升级为2.0.3》 这次搞mqtt的tls,发现2.1.2 里面说无缝连接了TLS。并且目前版本的华为LITEOS也用了2.1.2 。 官网 2.1.2 是18年发布的,因此可以说明2.1.2 是靠谱的。不过还是应该把官方资料读一读。 http://savannah.nongnu.org/projects/lwip/ 来源: oschina 链接: https://my.oschina.net/u/4258325/blog/4863957

物联网操作系统华为超轻量LiteOS解读

会有一股神秘感。 提交于 2020-12-14 22:33:08
导读 物联网(IoT)作为拥有千亿级设备连接量的庞大市场,已经远超PC和移动手机市场体量。国内巨头在物联网平台已然较量了多个回合,而在此过程中,操作系统也被视为关键一环,经历了移动互联网时代,厂商开始对操作系统更加敏感,谁不想拥有Android或iOS在移动手机中的地位? 物联网终端设备开发遇到瓶颈 物联网经过这些年的发展,在终端设备开发中显现出诸多问题。 1、终端设备需要低成本、低功耗。由于多为小型便携产品,因而电池寿命和硬件成本就成了关键问题,降低芯片成本、提升电池续航能力成为当下发展瓶颈; 2、连接方式要求多样化。前代连接方式由于功耗和成本仍是问题,在即将到来的5G时代,设备亟需支持更多连接方式; 3、云端安全成为痛点。随着数据量的增大,部分或全部数据上传到云端进行处理已是必然趋势,随着数据泄露事件频发,社会关注度也越来越高,安全性成了不可忽视的问题。 总体来看,现在的物联网设备还不够智能,而这正是华为决定开发操作系统的原因。华为LiteOS运营总监林旅强告诉雷锋网(公众号:雷锋网)编辑,现在的物联网终端设备通常都是不智能的,因此也被称作哑终端。智能化后的设备不仅可以实现数据上传云平台,还要能够实现信息的改变、命令下发、动作执行,这也是华为操作系统要实现的功能。 从自用到开源:华为的布局思考 大部分开发者对华为LiteOS的认知是从2015年华为宣布开源LiteOS