之前学习LiteOS内核的基本结构和应用的时候,我们通过一张LiteOS内核系统的结构图了解到其基本结构。

其中,Huawei LiteOS基础内核包括不可裁剪的极小内核和可裁剪的其他模块。极小内核包含任务管理、内存管理、中断管理、异常管理和系统时钟。可裁剪的模块包括信号量、互斥锁、队列管理、事件管理、软件定时器等。 这些模块协同工作,使得LiteOS内核能够完成许多事情。同时,Huawei LiteOS支持 UP(单核)与 SMP(多核)模式,即支持在单核或者多核的环境上运行。本系列将着重围绕基础内核部分的开发进行学习。

在了解各模块的特点及用法之前,我们先来了解一下LiteOS内核的启动流程,以下是一张LiteOS启动的大致流程图。

对应于实际的操作,一般我们在把程序烧录到开发板中时,会首先复位,这样在启动过程中,开发板执行的第一个函数就是LiteOS内核中的Reset_Handler,这个函数位于targets目录下目标开发板的los_startup_gcc.S中,这同时也是kernel的启动文件,不同架构的开发板具有不同的启动程序,这里主要是针对单核和多核的不同而推出的。

Reset_Handler函数主要进行了以下工作:初始化了stack pointer,PC指针,中断向量表,系统时钟,最后调用C语言库中的main函数。部分该函数源代码如图所示,从这些汇编语言中可以看到对SP指针进行了初始化,包括设定栈指针,从flash拷贝向量到sram,把数据段从flash拷贝到sram等操作。

在最后一步调用而进入main函数之后会正式地进行LiteOS的初始化,main函数位于kernel/init/los_init.c中,LiteOS的初始化主要做了以下这些事

1.初始化任务模块,uart中断等其他模块

2.初始化内存系统,最大任务数量

3.初始化三种IPC(信号量,互斥锁,队列)

4.初始化中断

5.设定系统时钟相关

完成了LiteOS的初始化之后便可以开始任务调度了,即启动流程图的最后一项。至此,LiteOS内核的启动流程全部结束。任务模块有关的具体内容将在下一章中详细介绍。

注:程序中的相关接口函数可以在gitee上的LiteOS仓库找到.

LiteOS内核开发(一)相关推荐

  1. LiteOS内核开发(二)

    本章将介绍LiteOS内核中的任务管理模块 1. 基本概念 从系统上来说,任务是资源竞争的最小单元,可以使用或等待CPU的系统资源,独立运行.HUWEI LITEOS可以给用户提供多个任务,实现任务通 ...

  2. 一分钟带你了解Huawei LiteOS组件开发指南

    摘要:本文将基于Huawei LiteOS系统,从组件定义开始带你走进组件开发指南. 本文分享自华为云社区<一分钟带你了解Huawei LiteOS之组件开发指南>,作者: Lionlac ...

  3. LiteOS内核源码分析:静态内存Static Memory

    本文分享自华为云社区<LiteOS内核源码分析系列十二 静态内存Static Memory>,原文作者:zhushy . 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要包 ...

  4. LiteOS内核源码分析:动态内存之Bestfit分配算法

    本文分享自华为云社区<LiteOS内核源码分析系列十三 动态内存Bestfit分配算法>,原文作者:zhushy . 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要包括内 ...

  5. LiteOS内核源码分析:消息队列Queue

    本文分享自华为云社区<LiteOS内核源码分析系列十 消息队列Queue>,原文作者:zhushy . 队列(Queue)是一种常用于任务间通信的数据结构.任务能够从队列里面读取消息,当队 ...

  6. LiteOS内核源码分析:位操作模块

    摘要:本文带领大家一起剖析了LiteOS位操作模块的源代码,代码非常简单,参考官方示例程序代码,实际编译运行一下,加深理解. 本文分享自华为云社区<LiteOS内核源码分析系列五 LiteOS内 ...

  7. harmonyos2.0三大技术特点,科普干货|漫谈鸿蒙LiteOS-M与HUAWEI LiteOS内核的几大不同...

    摘要:鸿蒙和LiteOS的内核都是一样的名字,可它们究竟有什么不同呢?一起来对比一下文件吧! HarmonyOS系统 HarmonyOS是一款"面向未来".面向全场景(移动办公.运 ...

  8. LiteOS学习---开发环境初识

    背景介绍 记得电影<一代宗师中>,有这样一句话 也是时势使然,某为厂成了面子,欺负它就等于打了国人的脸,至于它担不担得起,另说. 早在2015年,华为就推出了这个LiteOS.如果问它和鸿 ...

  9. OpenHarmony内核开发

    总目录: 文档链接: https://mubucm.com/doc/2sINVHMg9Pm 密码: mkxb 本文幕布: 文档链接: https://www.mubucm.com/doc/4za3i_ ...

最新文章

  1. VS-code中的Postman替代品
  2. python中的utils模块_使用Python的package机制如何简化utils包设计详解
  3. ThinkPHP 模板循环语法
  4. 计算机上网络接口层,2016计算机专业知识:TCP/IP 各层功能
  5. 2017⇆2019,用了这款减肥App,我胖了30斤...
  6. HDFS进阶应用 配置 NFS 网关
  7. 计算机c语言报告册,计算机c语言实验报告.docx
  8. 思科模拟器之GNS3,GUI小凡的完美替代
  9. powershell_符号链接(symbolic)的创建/重新指向设定Target/与快捷方式的区别/符号链接的应用/onedrive任意文件(夹)同步问题/git管理和符号链接\辨识符号链接函数
  10. c语言 long double 输出格式,c++ 什么是`long double`的格式说明符
  11. cairo填充_用 cairo 实现跨平台图形
  12. android-759b1c是什么,[原创]hooker + jadx 动静结合内存漫游窥视某社交软件视频号功能的数据...
  13. 2021年美容师(高级)考试及美容师(高级)考试题
  14. 通达OA工作流程-使用方法
  15. 程序员成长之旅——同步IO和异步IO(五种IO模型)
  16. 商业地产数字化转型分析
  17. 新手利用C# 实现简单仿QQ登陆注册功能
  18. Linux下的进程PCB以及线程详解
  19. 基于STM32开发可燃气体智慧检测系统
  20. ThinkPHP5.0商城项目目录搭建(菜鸟)

热门文章

  1. 跳帧的计算机原理,光电鼠标基础知识浅解(22页)-原创力文档
  2. 云平台是什么意思 云服务平台有哪些【详细介绍】
  3. jabref java_一个开源的参考文献管理软件:JabRef
  4. java淘宝秒杀脚本(已自测)
  5. 各种情人节,程序员教你5个表白代码,牢牢主抓她的心
  6. STM32调试问题:无法读写 AT24C256 数据
  7. 每日涨停个股增量加入股票池,持续跟踪走势!股票量化分析工具QTYX-V2.6.5
  8. CISCO ASA5520 与SMTP问题
  9. 诺基亚的驱动力:研发与产业族群
  10. 太赫兹芯片是什么原理_太赫兹收发芯片、收发方法及其成像探测系统与流程