UCOS2_STM32F1移植详细过程(一)
Ⅰ、概述
该文写针对初学µ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-ARM V5?
这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如: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官网下载地址(需要账号):
我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在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。
以上总结仅供参考,若有不对之处,敬请谅解。
Ⅶ、最后
关注微信,回复“更多内容”,将获得更多内容(如:UCOS实例等,不断更新中......)。
如果你喜欢我分享的内容,你又想了解更多相关内容,请关注文章开头的微信公众号,新内容持续更新中,后期将会有更多精彩内容出现。
UCOS2_STM32F1移植详细过程(一)的更多相关文章
- UCOS2_STM32F1移植详细过程
源:UCOS2_STM32F1移植详细过程(三) UCOS2_STM32移植过程.系统内核.事件描述(汇总)
- UCOS2_STM32F1移植详细过程(四)
Ⅰ.概述 上一篇文章是讲述uC/OS-II Ports下面os_cpu_a.asm.os_cpu_c.c和os_cpu.h文件底层端口代码的移植(修改)和说明,接着上一篇文章来讲述关于UCOS移植应用 ...
- UCOS2_STM32F1移植详细过程(三)
Ⅰ.概述 上一篇文章是讲述ST芯片相关的配置和OS裁剪相关的配置,接着上一篇文章来讲述关于UCOS的移植,该文主要针对uC/OS-II Ports下面os_cpu_a.asm.os_cpu_c.c和o ...
- UCOS2_STM32F1移植详细过程(二)
Ⅰ.概述 打开上一篇文章新建的工程,是提取的ST标准库里面源代码文件和UCOS工程包源代码文件.下载过的朋友可能会知道,直接编译那个工程会有大片的错误和警告,原因在于那个工程是没有经过修改源代码的工程 ...
- UCOS2_STM32移植详细过程(汇总)
Ⅰ.概述 笔者发现一个问题,很多初学者,甚至很多工作一两年的人,他们有一种依赖的思想,就是希望从别处获取的软件代码不做任何修改,直接可以运行或者使用.笔者想说,实践才是检验真理的关键,实践才是掌握知识 ...
- android wifi驱动移植详细过程
转自:http://bbs.imp3.net/thread-10558924-1-1.html 对于刚入手android没多久的人来说,android wifi 驱动的移植确实还是有难度的,不过参考了 ...
- STM32F0xx_EXIT中断配置详细过程
Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...
- STM32F0xx_ADC采集电压配置详细过程
前言 关于ADC这一块的功能基本上也算是CortexM芯片的标配了.ST的每一块芯片都有这个功能,只是说因型号不同,通道数.位数等有所不同.STM8的芯片大多数都是10的,也就是说分辨率可达到:参考电 ...
- Linux系统CentOS6.2版本下安装JDK7详细过程
Linux系统CentOS6.2版本下安装JDK7详细过程 分类: Linux 2014-08-25 09:17 1933人阅读 评论(0) 收藏 举报 前言: java 是一种可以撰写 ...
随机推荐
- php 分享两种给图片加水印的方法
本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...
- Android——Gallery 图片拖动效果
1.XML文件 <?xml version="1.0" encoding="utf-8"?><Gallery xmlns:android=&q ...
- Java中List转数组,必须带个参数
public static void main(String[] args) { List<String> lst = new ArrayList(); lst.add("赵云 ...
- [译]使用AES 256以达到SSL/TLS安全最大化
原文链接:https://luxsci.com/blog/256-bit-aes-encryption-for-ssl-and-tls-maximal-security.html 原文发表时间:201 ...
- java 中byte[] 数组的合并
因工作的需要,在从事 .Net 的开发中接触到了 Java, 虽然在大学的时候学过一段Java 编程,但并没有在实际的工作中使用过, Java 和 .Net的C#语法很相似,都是面向对象的,感觉在语法 ...
- Mysql-5.7.10启动失败 。
Mysql-5.7.10在免安装后启动服务失败. 查看日志得到如下: 2016-02-19T03:41:05.557095Z 0 [Warning] TIMESTAMP with implicit D ...
- Android基础总结(6)——内容提供器
前面学习的数据持久化技术包括文件存储.SharedPreferences存储以及数据库存储技术保存的数据都只能被当前应用程序所访问.虽然文件存储和SharedPreferences存储中提供了MODE ...
- 重拾qt
最近公司又接了一个煤矿的项目,要写个小程序摘取数据,我是公司唯一c++程序员,本来搞ios搞好好的,现在又得重拾半年没摸得qt了.呵呵...呵呵呵. 这里只记录这次小程序的一些小的总结吧.. 1.中文 ...
- WWF3追踪功能<WWF第六篇>
WWF工作流提供了Tracking跟踪功能来对工作流实例及其所包含的活动在运行时的状态进行跟踪,以便用户在需要时可以通过这些历史信息进行分析.WWF的Tracking跟踪功能是通过"SqlT ...
- SQL表自连接用法
一个表与自身进行连接,称为自连接 问题的提出:一个网友提出这样一个SQL题目,说自己想了很久没解决,我一看,这不是很简单吗 可是自己在查询分析器调试了半天原来问题并不是那不简单 有一个学生表,里面 ...