LiteOS-移植篇

文章目录

    • @[toc]
    • 前言
      • 链接
      • 参考
    • 笔录草稿
    • 移植(2018)
      • 移植获取 (*Cortex-M 内核*)
      • 主要文件夹分析
      • 移植过程
        • 1. 拷贝文件
        • 2. 创建工程分组
        • 3. 添加头文件路径
        • 4. 兼容 C99 模式
        • 5. 内核配置与裁剪(非接管中断的stm32f103vct6)
        • 6. 屏蔽裸机中的两个中断
        • 7. 完善代码

前言

OpenHarmony来势汹汹,第一次开源,仅支持LiteOS-a,所以,在此有必要学习一下LiteOS。或许工作上用不上Harmony,但是,星星之火可以燎原,助力完善 lot 生态应该可以。那就从 MCU 开始吧,移植 LiteOS。

链接

  • LiteOS源码链接

  • 已经移植好的开发板

  • 常见问题

  • 华为开发者社区

  • 华为LiteOS官方教程

  • 我的源码

    • 包含 裸机源码
    • LiteOS 工程模板
    • 其它关于 LiteOS 的 demo 及 note

参考

  • 野火
  • 上面链接

笔录草稿

  • los_init.c中的大部分内容已经移到了los_config.c里面了,可以看那里面的内容
  • 使用软件定时器则必须要使用消息队列,否则不会使用软件定时器。

移植(2018)

  • 在移植的时候暂时不建议获取最新(不要使用202003)后推送的版本*)的版本默认只支持 GCC ,且 MDK 官方移植教程未出。所以只能在 github 获取源码来移植 LiteRTOS。(时间截止于 20200922

  • 移植方案分为两种:

    • 硬中断接管方案
    • 不接管中断方案
  • 由于硬中断接管方案移植难度比不接管中断方案大,所以,本次笔记记录不接管中断方案。

移植获取 (Cortex-M 内核

* RAM 大于 8K
* ROM 大于 20K
  • 裸机空工程
    • 能正常运行 main 函数
    • 本次移植基于 STM32F103VCT6
  • LiteOS 源码
    • 时间截止于 20200922 ,不推荐获取官方最新推送的源码,因为最新版本默认只支持 GCC ,且 MDK 官方移植教程未出。(可尝试获取最新版本+旧版本补全
    • 建议获取 2018 年左右推送的版本。
  • 本教程源码源于2018年版本,也会对比新版本做说明。

主要文件夹分析

官方代码导读 *该链接为最新版本的文件分析,与下面的会有所不同,具体按照实际下载版本导读 *

  • arch
    • arm
      • arm-m:M 核中断、调度、tick 相关代码
      • common:arm 核公用的 cmsis core 接口
  • components
    • cmsis:LiteOS 提供的 cmsis os 接口实现
  • kernel
    • base
      • core:LiteOS 基础内核代码文件,包括队列、task 调度、软 timer、时间片等功能
      • OM:与错误处理相关的文件
      • include:LiteOS 内核内部使用的头文件
      • ipc:LiteOS 中 ipc 通讯相关的代码文件,包括事件、信号量、消息队列、互斥量等
      • mem:LiteOS 中的内核内存管理的相关代码
      • misc:内存对齐功能以及毫秒级休眠 sleep 功能
    • include:LiteOS 开源内核头文件
    • extenden
      • ticless:低功耗框架代码

移植过程

1. 拷贝文件
  • 在工程路径上创建 LiteOS 文件夹
  • 拷贝 LiteOS 源码中的 arch、cmsisLiteOS 提供的 cmsis os 接口实现
    kernel 三个文件夹到 工程 LiteOS 文件夹中。
  • 拷贝 LiteOS源码下对应 demosOS_CONFIG 文件夹到上述路径。
    • OS_CONFIG 该文件夹主要配置文件,用于内核配置和裁剪。
  • 拷贝 keil 安装目录下的一个文件夹到工程 工程\Libraries\CMSIS
    • 安装路径目录下的一个文件夹,其参考路径为:

你可能感兴趣的:(liteos-mcu,嵌入式,内核)