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

uC-OS2 V2.93 STM32L476 移植:系统移植篇

前言

  • 上一篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG STM32L476RG 的 裸机工程,并且下载了 uC-OS2 V2.93 的源码,接下来,开始系统移植

开发环境

  • win10 64位

  • Keil uVision5,MDK V5.36

  • uC-OS2 V2.93

  • 开发板:NUCLEO-L476RG ,MCU 为 STM32L476RG

  • STM32CubeMX 6.9.1,用于生成 STM32的裸机工程

uC-OS2 目录裁剪

  • 首先把 通过 Git 克隆的 uC-OS2 整个目录复制到 STM32 的工程下

在这里插入图片描述

  • 开始裁剪 uC-OS2 的代码,首先移除 其他平台的 Port 文件,只留下 uC-OS2\Ports\ARM-Cortex-M\ARMv7-M

  • 如果包含 uC-OS2 下 包含 .git 目录,也可以移除掉,当然也可以考虑 Git submodule 的管理

在这里插入图片描述

  • 移除不使用的 TLSTrace,则 uC-OS2 的代码目录如下:

在这里插入图片描述

添加 uC-OS2 到 Keil MDK5 工程

  • 当前使用 Keil MDK5 工程管理,添加 uC-OS2 Port Cfg 三个目录,分别对于 uC-OS2 目录下的三个目录,然后添加源文件,代码清单如下:

  • 注意不需要添加 ucos_ii.c,否则会引起编译重定义,查看这个文件,发现里面直接包含了 C 的源文件

  • 注意不添加 os_dbg_r.c,否则会跟 Port 下的 os_dgb.c 重定义

在这里插入图片描述

配置头文件的路径

  • 添加一下的路径到 Keil MDK5 工程

  • ..\uC-OS2\Source

  • ..\uC-OS2\Ports\ARM-Cortex-M\ARMv7-M\ARM

  • ..\uC-OS2\Cfg\Template

在这里插入图片描述

解决编译问题

  • 直接编译,发现有两个宏需要定义:CPU_CFG_KA_IPL_BOUNDARYCPU_CFG_NVIC_PRIO_BITS

  • 修改 uC-OS2\Cfg\Template\app_cfg.h,新增这两个【宏定义】,如下

#ifndef CPU_CFG_KA_IPL_BOUNDARY
#define CPU_CFG_KA_IPL_BOUNDARY             4u
#endif#ifndef CPU_CFG_NVIC_PRIO_BITS
#define CPU_CFG_NVIC_PRIO_BITS              4u
#endif

在这里插入图片描述

  • 经过以上的操作, uC-OS2 V2.93 在 STM32L476 上基本移植完成,接下来,可以创建几个任务,用于验证 uC-OS2 是否正常运行

小结

  • 本篇注意记录 uC-OS2 V2.93 基于 Keil MDK5 ,移植到 STM32L476 平台上的操作,主要是工程的搭建,代码添加到工程

  • 由于有了 Keil MDK5 的裸机工程,添加 uC-OS2 会比较的顺利,添加源文件,配置 uC-OS2 的头文件路径,定义所需的两个【宏定义】,就可以正常的编译通过

  • 接下来编写 用户的任务,让 uC-OS2 运行起来,并使用 【Debug】工程,调试 uC-OS2 ,熟悉 uC-OS2 的启动流程、任务切换、各个模块的工作流程

http://www.lryc.cn/news/105933.html

相关文章:

  • gitee修改代码提交操作步骤说明
  • 物联网|可变参数的使用技巧|不一样的点灯实验|访问外设的寄存器|操作寄存器实现点灯|硬件编程的基本流程-学习笔记(11)
  • 30. 利用linprog 解决 生产决策问题(matlab程序)
  • 一百三十九、Kettle——Linux安装Kettle8.2
  • react路由在layout中的监听
  • Java反射(三)
  • ansible-playbook roles编写lnmp剧本
  • 相机可用性变化监听AvailabilityCallback流程分析
  • 使用Python多线程实现生产者消费者模型
  • Notepad++工具通过正则表达式批量替换内容
  • 从零构建深度学习推理框架-3 手写算子relu
  • 想做上位机,学C#还是QT?
  • Ansible —— playbook 剧本
  • ARM寻址方式
  • 【JAVA】String ,StringBuffer 和 StringBuilder 三者有何联系?
  • 关于计数以及Index返回订单号升级版(控制字符长度,控制年月标记)
  • 【计算机网络】11、网桥(bridge)、集线器(hub)、交换机(switch)、路由器(router)、网关(gateway)
  • 第九篇-自我任务数据准备
  • 2023.8.1号论文阅读
  • webpack优化前端框架性能
  • Unity UGUI的Outline(描边)组件的介绍及使用
  • 爆改vue3 setup naiveui可编辑table
  • 功率放大器的种类有哪三种类型
  • HDFS 分布式存储 spark storm HBase
  • Vue3文字实现左右和上下滚动
  • Docker Sybase修改中文编码
  • 【SpringCloud Alibaba】(六)使用 Sentinel 实现服务限流与容错
  • mysql的主从复制
  • 【Golang 接口自动化03】 解析接口返回XML
  • Java+bcprov库实现对称和非对称加密算法