0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UCOS2_STM32移植详细过程 (一)

黄工的嵌入式技术圈 ? 来源:黄工的嵌入式技术圈 ? 2020-04-07 11:49 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Ⅰ、概述

该文写针对初学?C/OS的朋友,基于以下平台来一步一步移植?C/OS嵌入式操作系统UCOS移植相关平台:

系统平台:?C/OS-II(最新V2.92版)

硬件平台:STM32F1(适合F1所以系列)

开发平台:Keil(MDK-ARM) V5

1.为什么是?C/OS-II?

原因在于?C/OS-II是一个比较成熟、稳定的系统,与?C/OS-III比较有些机制相对简单很多。当你掌握了?C/OS-II,?C/OS-III很容易就理解了。

2.为什么是STM32F1?

硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口uCOS-II\Ports下源文件)存在一定的差异性。

但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。

还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过?C/OS,问题都不是很大,只要用心,相信都会没问题。

3.为什么是MDK-ARMV5?

这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。

笔者将“UCOS移植详细过程”分为多篇文章来讲述,敬请关注。

关于本文的详情请往下看(微信请点击“阅读原文”查看内容链接内容)。

本着免费分享的原则,方便大家手机学习知识,定期在微信平台分享技术知识。如果你觉得分享的内容对你有用,又想了解更多相关的文章,请用微信搜索“EmbeddDeveloper”或者扫描下面二维码、关注,将有更多精彩内容等着你。

Ⅱ、关于?C/OS

?C/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。?C/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。

?C/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕?C/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。

https://yunpan.cn/cRU7gefa6gcma访问密码 8c7d

Ⅲ、准备工作

1.?C/OS软件工程包下载

?C/OS-II可以在Micrium官网下载(需要账号),也可以到我360云盘下载。

Micrium官网下载地址(需要账号):

https://www.micrium.com/download/micrium_stm32f107_ucos-ii

我360云盘下载地址(定期更新):

https://yunpan.cn/cRzcf8eSacEhE访问密码 1235

Micrium官网下载流程图:

2.ST标准外设库

Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。

ST官网下载地址(需要账号):

http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software.html?querycriteria=productId=SC961

我360云盘下载地址(定期更新):

https://yunpan.cn/cSaCpGejMSfr8访问密码 60ae

ST官网下载流程图:

3.MDK-ARM下载与安装

该环节我在我的其他文章中已经详细讲述过,请参考我的另外一篇文章:

http://blog.csdn.net/ybhuangfugui/article/details/51647893

Keil官网下载地址(需要账号):

https://www.keil.com/demo/eval/arm.htm

我360云盘下载地址(定期更新):

https://yunpan.cn/cPYaeY23RSsbb访问密码 9aba

Ⅳ、移植过程(文件描述与提取)

1.软件工程文件夹描述

从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。

EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。

uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。

uC-LIB:这个是Micrium官方的库,初学者这里也不使用。

uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。

2.提取工程中有用的文件

我们主要提取EvalBoards和uCOS-II下文件。


app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。

os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。

将这两个文件提取至我们自己新建工程app文件夹下。


Ports是与系统息息相关的端口配置文件。

Source这个不用说了,就是OS全部文件。

拷贝整个uCOS-II文件夹(里面)到我们工程。

3.提取ST标准外设库有用的文件

Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。

提取的文件过程我不在描述,最后我会提供下载链接供大家下载。

4.整合提取的文件

Micrium官网下载的文件 + ST下载标准外设库 + 提取整合

= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:


可以在我360云盘下载整合提取的文件:

https://yunpan.cn/cRz7TxwWex9Wc访问密码 70f4

Ⅴ、移植过程(新建工程及文件)

1.新建工程

新建Keil软件工程及其工程的配置这里就不在多说,可以参考我的另外一篇文章:

http://blog.csdn.net/ybhuangfugui/article/details/51510482

配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。

如下动画:

2.新建、修改文件

工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。

我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。

360云盘下载(新建工程、文件):

https://yunpan.cn/cRpHh6CTYQavV访问密码 cc34

Ⅵ、说明

当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。

以上总结仅供参考,若有不对之处,敬请谅解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2295

    文章

    11034

    浏览量

    365991
  • 移植
    +关注

    关注

    1

    文章

    401

    浏览量

    28748
  • 嵌入式操作系统

    关注

    1

    文章

    121

    浏览量

    31981
  • ucos2
    +关注

    关注

    0

    文章

    15

    浏览量

    3644
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植

    本教程将详细介绍如何将STM32微控制器与ESP8266Wi-Fi模块连接到机智云平台,实现温湿度数据的上传与继电器的远程控制。通过此过程,您将学会如何配置机智云平台,烧录ESP8266固件,
    的头像 发表于 07-15 18:54 ?179次阅读
    <b class='flag-5'>STM32</b>+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码<b class='flag-5'>移植</b>)

    移植 ZephyrRTOS 到思澈 SF32LB58 过程笔记

    为 ZephyrRTOS 增加 SoC 支持(2) 基础框架 N32L406 的移植还没有完成,最近又开坑做思澈 SF32LB58 的移植。原因是这个芯片带蓝牙和
    的头像 发表于 07-04 11:17 ?1033次阅读
    <b class='flag-5'>移植</b> ZephyrRTOS 到思澈 SF32LB58 <b class='flag-5'>过程</b>笔记 <b class='flag-5'>一</b>

    机智云配网教程第三期:单片机代码移植实战

    stm32f103c8t6,WiFi模块:ESP-01s,下载器:ST-LINK2.软件:keil5的工程文件模板,mcu代码包代码资源:未移植移植后(注:本文是基于
    的头像 发表于 07-01 17:32 ?241次阅读
    机智云配网教程第三期:单片机代码<b class='flag-5'>移植</b>实战

    STM32与机智云连接实现步骤与技巧(下篇):机智云代码移植与优化

    在《STM32与机智云连接实现步骤与技巧(上篇)》中,我们介绍了硬件连接和通信协议配置。本篇将重点讲解如何将机智云相关代码移植STM32,完成数据上传和设备控制。我们将介绍如何在STM32
    的头像 发表于 05-23 18:10 ?333次阅读
    <b class='flag-5'>STM32</b>与机智云连接实现步骤与技巧(下篇):机智云代码<b class='flag-5'>移植</b>与优化

    STM32G431移植FreeModbus

    STM32G431移植FreeModbus 的代码已通过验证,在WeActStudio的STM32G431CoreBoard上进行多次测试,均可正常读取寄存器数值。STM32G431C
    发表于 04-19 16:50 ?1次下载

    uCOS III v3.08.01 移植PC Dev C++ 免虚拟机移植WinXP,Win7,Win10,Win 11

    uCOS III v3.08.01 移植PC Dev C++ 免虚拟机移植WinXP,Win7,Win10,Win 11。32位系统64位系统都可以。 这里有源码和程序,欢迎下载测试
    发表于 04-15 20:14

    uCOS II v2.92 移植PC 免虚拟机移植WinXP,Win7,Win10,Win 11

    uCOS II v2.92 移植PC 免虚拟机移植WinXP,Win7,Win10,Win 11,32位系统64位系统都可以。
    发表于 04-13 22:46

    关于stm32,u8g2菜单之间切换(二)u8g2移植

    移植是基于stm32cubeide,oled屏是1306驱动128x64的。接口用iic软件模拟,hal库iic硬件貌似有bug。 1,先在网上下载u8g2包。 2,解压后找到源文件文
    的头像 发表于 03-04 09:52 ?1087次阅读
    关于<b class='flag-5'>stm32</b>,u8g<b class='flag-5'>2</b>菜单之间切换(二)u8g<b class='flag-5'>2</b>的<b class='flag-5'>移植</b>

    STM32WL55JC到STM32WLE5CC的LoRaWAN_FUOTA移植

    电子发烧友网站提供《从STM32WL55JC到STM32WLE5CC的LoRaWAN_FUOTA移植.pdf》资料免费下载
    发表于 01-15 15:24 ?1次下载
    从<b class='flag-5'>STM32</b>WL55JC到<b class='flag-5'>STM32</b>WLE5CC的LoRaWAN_FUOTA<b class='flag-5'>移植</b>

    外设移植 安信可Ai-WB2+FPM383C指纹

    https://bbs.ai-thinker.com/forum.php?mod=viewthreadfromuid=15918 这里主要说一下移植 FPM383C 指纹到 Ai-WB2 模块时遇到
    的头像 发表于 10-29 14:54 ?738次阅读
    外设<b class='flag-5'>移植</b> 安信可Ai-WB<b class='flag-5'>2</b>+FPM383C指纹

    基于机智云移植STM32L496G代码移植

    代码详解-机智云(gizwits.com)在移植过程中遇到的些问题,这里我将重构下,大致内容跟文档差不多,但是根据文档的操作,会产生
    的头像 发表于 09-20 08:05 ?1264次阅读
    基于机智云<b class='flag-5'>移植</b><b class='flag-5'>STM32</b>L496G代码<b class='flag-5'>移植</b>

    【GD32 MCU 移植教程】10、从STM32F030系列移植到GD32E230系列

    GD32E230 上,大体上来说工作量不大,移植后的效果也不错,GD32E230 相比 STM32F030 有不少功能的升级,主频也更高,能感觉到国产 MCU 直在
    的头像 发表于 09-07 10:24 ?1626次阅读
    【GD32 MCU <b class='flag-5'>移植</b>教程】10、从<b class='flag-5'>STM32</b>F030系列<b class='flag-5'>移植</b>到GD32E230系列

    【GD32 MCU 移植教程】9、从 STM32F10x 系列移植到 GD32F30x 系列

    对比、外设及性能对比以及从 STM32F10x 移植到 GD32F30x 的移植步骤,旨在让开发者能够快速从STM32F10x 移植到 GD
    的头像 发表于 09-07 09:57 ?2067次阅读
    【GD32 MCU <b class='flag-5'>移植</b>教程】9、从 <b class='flag-5'>STM32</b>F10x 系列<b class='flag-5'>移植</b>到 GD32F30x 系列

    【GD32 MCU 移植教程】8、从 STM32F4xx 系列移植到 GD32F4xx 系

    、外设及性能对比以及从 STM32F4xx 移植到 GD32F4xx 的移植步骤,旨在让开发者能够快速从STM32F4xx移植到 GD32F
    的头像 发表于 09-06 09:40 ?2745次阅读
    【GD32 MCU <b class='flag-5'>移植</b>教程】8、从 <b class='flag-5'>STM32</b>F4xx 系列<b class='flag-5'>移植</b>到 GD32F4xx 系

    基于STM32的E01和E01C驱动移植

    实验简介基于STM32F103C8T6的E01系列(nRF24L01P)和E01C系列(SI24R1)的EBYTE官网例程移植。EBYTE官网例程是基于STM8L151编写,本次实验的目的是将该例程
    的头像 发表于 08-30 12:35 ?929次阅读
    基于<b class='flag-5'>STM32</b>的E01和E01C驱动<b class='flag-5'>移植</b>