当前位置: 首页 > news >正文

第二篇 STM32MP157-M4:LiteOS-M 源码下载与工程搭建

STM32MP157-M4:LiteOS-M 源码下载、裁剪与工程搭建

【高危前置提醒】LOSCFG_PLATFORM_HWI_LIMIT必须配置 160;TIM6 中断必须在LOS_KernelInit之前关闭(main.c 中HAL_NVIC_DisableIRQ(TIM6_IRQn)+ 清 pending + 停硬件计数器),初始化完成后用LOS_HwiCreate注册回来。

0 前言

LiteOS-M 是华为鸿蒙 OpenHarmony 的轻量级 RTOS 内核,专门面向 Cortex-M 等小资源 MCU。本工程基于OpenHarmony-v3.0-LTS独立内核仓库移植,通过os_config板级配置隔离层做到内核源码只读不修改,升级仅替换kernel_liteos_m/文件夹。

1 源码拉取

# 从 Gitee OpenHarmony 独立内核仓库下载gitclone https://gitee.com/openharmony/kernel_liteos_m.git-bOpenHarmony-v3.0-LTS

网络问题可直接从 Gitee 页面下载 ZIP 压缩包解压。

2 源码标准裁剪流程

裁剪原则:最小化保留 M4+STM32MP1 需要的内核代码,其余全部删除

2.1 删除顶层无用文件

移除 BUILD.gn、文档目录、测试套件、/targets/目录(v3.0-LTS 仅含 RISC-V 板级配置,无 STM32 支持——我们的os_config/就是替代品)。

2.2 精简架构目录

只保留kernel/arch/arm/cortex-m4/gcc,删除 m3/m33/m7/arm9/riscv 架构目录以及全部iar/编译器目录。

2.3 裁剪可选组件

直接删除/components/目录。后续需要网络、shell、文件系统等高级功能时再单独恢复对应子目录。

2.4 裁剪后最小内核结构

kernel_liteos_m/ ├── kernel/ │ ├── include/ # 内核头文件(los_config.h, los_task.h...) │ ├── src/ # 内核 C 源码(任务、信号量、队列...) │ └── arch/arm/cortex-m4/gcc/ │ ├── los_dispatch.S # 任务上下文切换汇编 │ ├── los_context.c # 任务栈初始化 │ ├── los_exc.S # 异常处理 │ ├── los_interrupt.c # 中断管理 │ └── los_timer.c # 系统节拍 └── kal/ ├── kal.c # 内核抽象层 └── cmsis/ # CMSIS-RTOS 适配层(可选编译)

3 工程文件拷贝规范

3.1 CMSIS / HAL 驱动

从 STM32CubeMP1 包拷贝到Drivers/

  • Drivers/CMSIS/Include→ CMSIS Core 头文件(cmsis_gcc.h,core_cm4.h等)
  • Drivers/CMSIS/Device/ST/STM32MP1xx/Include→ 芯片头文件(stm32mp1xx.h
  • Drivers/CMSIS/Device/ST/STM32MP1xx/Source/Templates/gccGCC 专用启动文件

⚠️ 过滤ll_开头的底层驱动文件——我们使用 HAL 库,不需要 LL 库。

3.2 BSP / SYSTEM 驱动

从正点原子或官方 SDK 拷贝:

  • LED、Key、UART 等 BSP 驱动 →Drivers/BSP/
  • sys、delay 等系统驱动 →Drivers/SYSTEM/
  • 修改头文件引用#include "xxx.h"改为纯文件名(不使用上层路径),配合 Makefile 的-I搜索路径

3.3 启动文件关键修改

GCC 版启动文件必须进行两处修改:

  1. 文件首行添加浮点声明:
.fpu fpv4-sp-d16 /* 开启 M4 硬件单精度浮点 */
  1. PendSV 向量指向 LiteOS 调度器:
/* 改前:PendSV_Handler → Default_Handler(bx lr 直接返回,调度器无效) */ .thumb_set PendSV_Handler,HalPendSV /* LiteOS 上下文切换入口 */

3.4 放置裁剪后内核

将裁剪完成的kernel_liteos_m/文件夹直接放入工程根目录。内核文件全部只读,后续升级只需替换整个文件夹。

4 完整工程目录

m4_liteos_project/ ├── os_config/ # 板级配置隔离层 │ ├── target_config.h # 系统时钟、堆区、RTOS 功能总开关 │ ├── los_builddef.h # 中断向量表对齐参数 │ └── los_printf.h # 内核打印宏封装 ├── Core/ │ ├── Inc/ # 头文件 │ ├── Src/ │ │ ├── main.c # 主程序 │ │ ├── system_stm32mp1xx.c # 系统初始化(时钟、VTOR) │ │ └── stm32mp1xx_it.c # 中断服务函数 │ └── Startup/ │ └── startup_stm32mp15xx.s # GCC 启动文件 ├── Drivers/ │ ├── CMSIS/ # CMSIS 核心 │ ├── STM32MP1xx_HAL_Driver/ # HAL 外设驱动 │ ├── BSP/ # 板级支持包(LED、Key...) │ └── SYSTEM/ # 系统驱动(delay、sys...) ├── kernel_liteos_m/ # LiteOS-M 内核(只读) ├── stm32mp157_m4.lds # 链接脚本 ├── Makefile # 编译脚本 ├── openocd/ # OpenOCD 板级配置 ├── flash-m4.bat # 一键烧录 └── m4_debug.gdb # GDB 调试脚本

5 移植核心硬性规则

所有芯片时钟、内存、RTOS 功能开关全部写在os_config/目录中。

禁止修改kernel_liteos_m/内部任意文件。Makefile 的-I搜索路径把os_config/放在第一优先级,编译器优先读取我们的配置文件而非内核默认值。

这样做的好处:内核升级时直接把旧的kernel_liteos_m/删掉、放进新版本即可,零适配成本。


⚠️ 本节踩坑速览

现象根因修复
编译大量unknown type name裁剪误删los_typedef.h/los_compiler.h/los_list.h基础头文件还原kernel/include/全部头文件
出现UNUSED宏编译报错内核宏定义与 HAL 库参数格式冲突修改los_compiler.h#define UNUSED(X) (void)(X)
cmsis_os2.h 提示找不到依赖原文件是软链接,裁剪后链接断开替换为 ARM 官方完整版cmsis_os2.h
内核初始化后注册 TIM6,上电直接死循环内核接管 VTOR 后默认HalHwiDefaultHandler接手未注册中断main.cLOS_KernelInit前关闭 TIM6,之后用LOS_HwiCreate注册
IRQ > 32 上电 HardFault默认g_hwiForm仅 32+16 槽,MP157 外设中断超量target_config.hLOSCFG_PLATFORM_HWI_LIMIT 160
编译时 LOSCFG_PLATFORM_HWI_LIMIT 不生效os_config/路径在 Makefile 的-I列表后置os_config/路径放在 INCLUDES 首行
http://www.jsqmd.com/news/1392235/

相关文章:

  • 显卡涨价潮下,8卡RTX5090算力服务器市场前景与技术解析(2026)
  • 告别多套键鼠:用 Input Leap 实现跨设备键鼠共享的 4 步速通指南
  • MP4 文件打不开了?untrunc 视频修复全流程指南
  • ComfyUI中文工作流合集实战指南:50+即用模板,带你零基础快速上手AI创作
  • 办事急用找不到?档案存放证明怎么开?认准**渠道,就能轻松开具! - 实时传讯
  • 2026 线上少儿欧美外教一对一选课指南|5 家主流平台实测对比,避开报课误区!
  • scrcpy 免费投屏完整指南:10 分钟让安卓手机秒变电脑大屏
  • 深圳多家奢侈品回收横向测评,同款香奈儿 CF 报价参差不齐,核心差异一次性讲清 - 拾闻观天地
  • 快速生成 OpenCore EFI:OpCore-Simplify 新手完整上手指南
  • 题解:瑞学堂 徐老师的阶乘计算器
  • 揭秘江阳建设集团网站背后的匠心独运与未来愿景
  • Cat-Catch 浏览器扩展全攻略:一个下午搞定网页媒体资源捕获与 M3U8 合并
  • 星空芯片获头部新能源车企定点,地平线与博泰车联合作迈入量产落地新阶段
  • DeepSeek flash/pro如何接入CodeX
  • 15万买50万级智驾?2026年,城市NOA如何成为买车“必选项”
  • 智谱清言排版word的终极痛点,被“AI 导出鸭”用一套底层逻辑彻底终结
  • 西宁专业企业网站建设深度解析:如何让本土品牌在数字时代突围重生
  • Demucs人声分离部署实战:从装到批量交付,8个避坑点一次讲透
  • 商城网站建设流程图:从0到1的完整揭秘,手把手教你避坑指南,新手必看的实战经验
  • ZOBO卓邦舞台音响设备本地服务常见问题解答(2026版) - 全域品牌推荐
  • 微泄漏密封试验仪口碑好选购指南:无损检测技术哪家更成熟? - 品牌推荐大师1
  • OpenCore EFI配置,如何从一整天缩到半小时?
  • 【博主精读版】计算机岗国考行测小模考0812|一道血型题,扒开了“细节判断“的遮羞布
  • 激光雷达扫描频率
  • 零基础用Pixelle-Video实现AI全自动短视频创作:从一句话主题到成品视频的完整实战指南
  • 揭秘甘肃省城乡建设厅网站背后的政策脉络与办事指南,助您轻松搞定房产与工程事宜
  • 声网母公司披露2026 Q2财报:连续7个季度GAAP盈利
  • 用于音频分类的梅尔频谱图图像数据集
  • 2026 年 8 月儋州房屋漏水科普:台风暴雨叠加回潮,房屋渗水维修怎么选 - 筑宅安
  • palera1n越狱工具从零到一全攻略:让A8至A11老设备重获新生的终极指南