UCOSIII在STM32F4xx上的移植

发布者:创意火舞最新更新时间:2019-04-23 来源: eefocus关键字:UCOSIII  STM32F4xx  移植 手机看文章 扫描二维码
随时随地手机看文章

一、准备好UCOSIII的源码


    ①通过UCOSIII官方下载:https://www.micrium.com/,进入官方网站后点击,找到Browse by MCU Manufacturer下对应的STM这一栏,选择对应的型号

这里点击STN32F4xx进去选择自己需要的下载即可

    ②提供一份我已经下载好的UCOSIII源码:链接:https://pan.baidu.com/s/1hqDpzDigy1kg3ZaftQBJhQ 密码:1e5d


二、UCOSIII移植


    ①准备好需要移植的工程,在工程文件夹里新建一个UCOIII文件夹,然后将UCOSIII源码里的uC_CPU、uC_LIB、UCOS_III文件复制到新建的这个文件夹中。


     

还需要在UCOSIII文件夹中再新建两个文件夹:UCOSIII_BSP,UCOSIII_CONFIG,上图所示,已经建好了。


②向UCOSIII_CONFIG添加文件,路径是:UCOSIII 3.04MicriumSoftwareEvalBoardsSTSTM32F429II-SKuCOS-III,添加的文件如图所示:

③向UCOSIII_CONFIG添加文件,路径是:UCOSIII 3.04MicriumSoftwareEvalBoardsSTSTM32F429II-SKBSP

④打开工程文件,向工程中添加分组,需要添加的分组文件夹如下       

       

⑤文件夹添加好后,再向各文件夹添加源文件


1、BSP添加路径:UCOSIIIUCOS_BSP里的bsp.c添加进去,添加后如下图所示:

2、CPU添加路径:UCOSIIIUCOS_CPU里的cpu_core.c添加进去,并继续进入目录ARM-Cortex-M4RealView选择cpu_a.samcpu_c.c两个文件,添加后如下图所示:

3、LIB添加路径UCOS-III-LEDUCOSIIIuC-LIB里的


,继续点击PortsARM-Cortex-M4RealView,选择All file,添加lib_mem_a.asm文件,添加后如下图所示:

4、CORE添加路径:UCOS-III-LEDUCOSIIIuCOS-IIISource,添加所有文件,添加后如下图所示:

5、PORT添加路径:UCOS-III-LEDUCOSIIIuCOS-IIIPortsARM-Cortex-M4GenericRealView,选择All file,添加所有文件,添加后如下图所示:



6、CONFIG添加路径:UCOS-III-LEDUCOSIIIUCOS_CONFIG选择All file,添加所有文件



----------------------------------------------------------------------------------------------------------------------------------


注意,此时部分文件会带有一把钥匙,代表不能修改,修改方法:返回工程文件,右键点击UCOSIII文件,选择属性,把只读去掉即可进入工程中对其修改


----------------------------------------------------------------------------------------------------------------------------------


⑥添加相关头文件路径


⑦修改bsp.c和bsp.h文件,这里直接下载已经修改好的文件


⑧修改os_cpu_a.asm汇编文件,这里直接下载已经修改好的文件


⑨修改os_cpu_c.c文件,这个主要是修改堆栈函数,这里直接下载已经修改好的文件


⑩修改os_cfg_app.h文件,系统裁剪和内核有关的,这里直接下载已经修改好的文件


文件下载链接:https://pan.baidu.com/s/1reVWUDq_iPfzxf1vTzMisg 密码:sdfb


此时编译一下,会出现以下问题


1、PendSV_Handler是做上下文切换的,重复定义,而STM32F4xx_it.c只是给的一个框架,屏蔽掉即可


2、搜索到是os_cpu_c.c里面的堆栈函数,由于在汇编文件已经定义,所以这里屏蔽掉即可

十一、修改sys.h,这里要使用支持UCOSIII的SYSTEM文件夹


编译后出现的问题: 中断服务函数重复定义,同样,STM32F4xx_it.c里的屏蔽掉即可



十二、最后在主函数创建任务进行测试,注意在os_cpu_c.c中添加#include "includes.h"   //添加头文件


 


(1)、创建一个start_task任务,Start任务用来创建其他任务。


(2)、创建一个led0_task任务,用来控制LED0的亮灭。


(3)、创建一个led1_task任务,用来控制LED1的亮灭。


(4)、创建一个float_task任务,用来测试浮点计算。


这里直接复制main.c进行测试,下载链接:https://pan.baidu.com/s/1reVWUDq_iPfzxf1vTzMisg 密码:sdfb


----------------------------------------------------------------------------------------------------------------------------------------------------


如何移植不同版本的UCOS系统?


只需要将源码的UCOSIIIuCOS-III下的Source文件夹,直接替换掉移植好后的Source,比如我把3.03版本的Source文件夹复制替换掉移植好工程里的UCOSIIIuCOS-III下的Source文件夹编译即可,这样就将原来的版本替换成3.03的版本了。


关键字:UCOSIII  STM32F4xx  移植 引用地址:UCOSIII在STM32F4xx上的移植

上一篇:STM32的独立看门狗(IWDG)
下一篇:STM32Cube的串口配置与使用

推荐阅读最新更新时间:2024-11-12 18:19

ucgui在stm32上的移植
在MDK环境下将3.90版本的UCGUI移植到STM32下了,为了方便大家,特写此移植方法,大家可以借鉴(有错误之处,望大家指点出来共同讨论!) 移植步骤: 第一步:首先,得把你的TFT底层驱动写好,既在裸机下,可以正常显示。 第二步:加入UCGUI程序包。 第三步:配置LCDConf.h GUIConf.h GUITouchConf.h(由于我的液晶不带触摸功能,此配置在此不讲。) 配置LCDConf.h文件如下: #ifndef LCDCONF_H #define LCDCONF_H #define LCD_XSIZE (160) //配置TFT的水平分辨率 #define LCD_Y
[单片机]
S5PV210(TQ210)学习笔记——内核移植与文件系统构建
由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习。 内核移植其实很简单,因为内核是linus率领的linux内核开发团队开发并维护的,我们只需要跟我们的平台交叉编译一下即可使用,但是,内核移植也不简单,因为内核移植起见出现任何问题都可能会被卡住,因为内核代码非常庞大,我们无法通读内核代码,下面是我移植期间遇到的各种悲催的问题和解决方案,首先是必备的开发环境: a) Linux内核代码,版本3.8.3 b) S5PV210开发板(我的是TQ210) c) HOST环境是WIN7(64位)下安装的Ubuntu虚拟机(12.10) 一 内核编译 从
[单片机]
S5PV210(TQ210)学习笔记——内核<font color='red'>移植</font>与文件系统构建
移植u-boot-2010.03 --- 内核烧写到NandFlash
在成功编译u-boot后,可以把uboot烧写到NandFlash中,这样在每次开机后u-boot会自动运行,接下来就是要完成它的主要使命了---启动linux内核。可以使用tftp服务下载内核,并直接在内存中运行,但最重要的流程还是要烧写到NandFlash中,以免掉电后丢失。 这里我移植的u-boot还有个bug,就是nand erase 100000 500000 命令总是提示完成90%,导致我写入内核时,无法从NandFlash启动内核。这里做一个标记,日后发现解决方法后补充。先用ok6410自带的sd卡uboot烧写我编译的uboot和uImage实现。 1,通过SD卡启动方式,启动u-boot(飞凌公司提供的m
[单片机]
uboot在s3c2440上的移植(3)
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 5)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上Nand Flash的支持)。 目前u-boot中还没有对2440上Nand Flash的支持,也就是说要想u-boot从Nand Flash上启动得自己去实现了。 首先,在include/configs/my2440.h头文件中定义Nand要用到的宏和寄存器,如下: #gedit in
[单片机]
uboot在s3c2440上的<font color='red'>移植</font>(3)
一文了解移植3.4.2的Kernel到JZ2440
本文将介绍如何移植linux-3.4.2内核到JZ2440开发板上的全过程,使用的交叉编译工具版本为 arm-linux-gcc-4.3.2.tar.bz2 下面来一步一步介绍如何移植。 由于kernel的启动参数是由Uboot传递的,关键的参数有 R0=0 R1=Mach-Type R2=Tag参数地址 其中,Mach-Type为内核支持板子的硬件型号,tag参数为Uboot存放传递给Kernel参数的内存地址。 内核启动时,根据传入的Mach-Type参数选择对应的板级初始化函数来初始化,然后解析tag参数,设置相应系统状态值,装载驱动程序,最后挂载根文件系统。 1. 编译内核 修改根目录下面的Make
[单片机]
u-boot移植(友善smart210开发板)
U-boot 源代码下载: ftp://ftp.denx.de/pub/u-boot/ 启动过程分析:1.小于8Kb的程序:IROM从nand读8K数据到ISRAM中运行; 2.大于8kb程序(主要指u-boot):IROM从nand读前8k数据到SRAM中主要做两件事: 第一:初始化DRAM; 第二:将剩下的代码搬运到DRAM运行。 3.在DRAM中就可以引导系统启动了。 BL0:IROM,出厂已固化代码 BL1:ISRAM的前16kb,u-boot-spl.bin BL2:ISRAM的后80kb,u-boot.bin ISRAM是内置内存,不用初始化就可以使用; DRAM是外接内存,需要初始化才能使用。 uboot有两种模
[单片机]
06-S3C2440学习之移植2012u-boot到S3C2440(分析过程)
一、简单分析Uboot的过程 1.到官网下载u-boot-2012.04.01.tar.bz2 2.建立sourceinsight工程 a、解压并在E:colin weidongshantransplant_u-boot-2012.04.01u-boot-2012.04.01建立SI b、添加文件到SI工程 2.1、点击 Add All ,选中“Include top level sub-directories”和“Recursively add lower sub-directories”点击“OK” 2.2、选中“Board”目录,点击“Remove Tree”,去掉总个目
[单片机]
06-S3C2440学习之<font color='red'>移植</font>2012u-boot到S3C2440(分析过程)
STM32F4xx位带操作
正点原子的例程里面有关这方面的讲解是关于STM32F10X系列的。对于比较新的STM32F40x系列,位带操作实现的方法其实差不多,只是地址发生了改变而已。 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF) 5)+(bitnum 2)) #define MEM_ADDR(addr) *((volatile unsigned long *)(addr)) #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum)) //F4XX
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved