nbhkdz.com冰点文库

在ucos上移植stm32

时间:2013-08-02


1.准备材料
在 st 官网上下载最新的固件库(现在是 v3.5.0) ,地址为: http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32 f10x_stdperiph_lib.zip(地址仅为参考,以最新变更为准) 解压后目录如下:

在 ucos 官网上下载移植 stm32 移植版的 ucosii 代码,这个需要注册一下,下载地址为: http://micrium.com/download/uCOSII-ST-STM32F103ZE-SK.exe(以最新变更为准) 下载安装后目录如下:

2.创建工程文件(以 Template 为例)
创 建 一 个 文 件 夹 , 取 名 为 Template , 新 建 App,Bsp,Libraries,Project,Readme,uCos-II,Source insight 文件夹, 如图:

App:用于存放与应用程序有关的文件 Bsp:用于存放与硬件有关的驱动程序 Libraries:用于存放固件库和启动文件 Project:存放项目工程文件 Readme:存放一些说明性的文件 Source Insight:存放 Source insight 项目文件 uCOS-II:存放 uCOS 的相关文件。 接下来往各个文件夹下添加相应的文件(以下图的文件路径为例) :

(1)将 路 径 E:\Micrium\Software\EvalBoards\ST\STM32-SK\IAR\OS-Probe-LCD 下 的 app,app_cfg,includes,os_cfg 复制到 App 文件目录下,除 os_cfg 外其他三个文件中的内容可 以删除或在应用时更改。 (2)将路径 E:\Micrium\Software\EvalBoards\ST\STM32-SK\IAR\BSP 下的 bsp.c,bsp.h 复制到 Bsp 文件目录下,用户使用时可以根据项目需求重写或更改。 (3)在 Libraries 文件夹下新建 CMSIS 文件夹,并在 CMSIS 中新建 startup 文件夹,将路径 E:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries 下的 STM32F10x_StdPeriph_Driver 文件夹复制到 Libraries 中, 将路径 E:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下 的 core_cm3.c,core_cm3.h 、 路 径 E:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h 文 件 复 制 到 CMSIS 中 , 将 路 径 E:\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\start up\iar 下的 startup_stm32f10x_hd.s(根据 mcu 型号选择)复制到 startup 文件夹下,将路径 E:\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\EWARM 下 的 stm32f10x_flash.icf 复制到 startup 文件夹下。 (4)将路径 E:\Micrium\Software\uCOS-II 下的 Ports 和 Source 文件夹复制到 uCOS-II 文件夹 下(注意:将 Source 文件夹下的 ucos-ii.h 文件复制到 Prots 下) 。 至此文件复制的工作完成。

3.创建 IAR 项目文件

如上图新建一个 IAR 项目(选择 ARM,Empty project ) ,取名为 Template 并保存在 Project 目录下。

往项目工程下添加组,如下图,

添加如下项目列表中的文件(部分文件夹下有子目录,Output 文件是建立项目时自动添加 的) ,

文件夹展开后如下,

给各个文件夹添加文件, (1)将路径 E:\Template\App 下的文件添加到 Template 项目中的 App 文件下。 (2)将路径 E:\Template\Bsp 下的文件添加到 Template 项目的 Bsp 文件下。 (3)将 路 径 E:\Template\Libraries\CMSIS 和 E:\Template\Libraries\CMSIS\startup (stm32f10x_flash.icf 除外) 下的文件添加到 Template 项目的 CMSIS 文件下。 (4)将 路 径 E:\Template\Libraries\STM32F10x_StdPeriph_Driver\inc 下 的 文 件 添 加 到 STM32F10x_StdPeriph_Driver 下的 inc 文件夹下。 (5)将 路 径 E:\Template\Libraries\STM32F10x_StdPeriph_Driver\src 下 的 文 件 添 加 到 STM32F10x_StdPeriph_Driver 下的 src 文件夹下。

(6)将路径 E:\Template\uCOS-II\Source 下的文件添加到 uCOS-II 下的 core 文件夹下。 (7)将路径 E:\Template\uCOS-II\Ports 下的文件添加到 uCOS-II 下的 port 文件夹下。 (8)配置工程 选取芯片如图:

添加相应的包含目录和宏定义

该例的包含目录为 $PROJ_DIR$\..\App

$PROJ_DIR$\..\Bsp $PROJ_DIR$\..\Libraries\CMSIS $PROJ_DIR$\..\Libraries\STM32F10x_StdPeriph_Driver\inc $PROJ_DIR$\..\uCOS-II\Ports (注:$PROJ_DIR$\..\表示当前工程所在目录的上一级目录。例如 E:\Template\Project 表示当 前工程所在的目录,$PROJ_DIR$\..\则表示 E:\Template\。 ) 需要的宏定义 USE_STDPERIPH_DRIVE 表示使用固件库。 STM32F10X_HD 表示选择的芯片为大容量芯片 这两个宏定义也可以在 stm32f10x.h 中通过取消相关的注释来选择。个人认为直接在此添加 宏定义比较方便,建议使用这种方法。 (注: 前面的方框不要打勾,

如果打勾的话,安装目录下的一些标准头文件不能被包含,造成编译错误。 ) 配置链接文件如下图:

(注:白色方框内的路径需要根据链接文件所在的位置修改,本例使用是 $PROJ_DIR$\..\Libraries\CMSIS\startup\stm32f10x_flash.icf 配置仿真如下图(根据自己的编译器选择) :

至此工程项目创建并配置完成。 4.移植 由于我们要保留 2.86 版本的 uCOS-II 操作系统以方便后期升级 stm32 的固件库, 所以修改的 文 件 主 要 是 与 stm32 有 关 的 文 件 。 主 要 修 改 的 文 件 有 os_cfg.h,os_cpu.h,os_cpu_c.c,startup_stm32f10x_hd.s,stm32f10x_it.h,stm32f10x_it.c 。 移 植 开 始: (1)打开 os_cpu.h 文件,将函数声明中的 void OS_CPU_SysTickInit(void); void OS_CPU_SysTickClkFreq(void);(其中前一个函数调用了后一个函数) 注释掉,这两个函数主要用来配置系统的心跳时钟的,我们会自己编写,如下:

注:void OS_CPU_SysTickInit(void) 函数仅供参考。 (2)打开 os_cpu_c.c 文件,将跟 void OS_CPU_SysTickInit(void)相关的代码(包括一些宏定 义)注释掉:

代码块

相关宏定义 (3)修改 Startup_stm32f10x_hd.s(根据 mcu 的不同会有相应的变化,该例选择的是大容量 的芯片)只读属性为可读,打开该文件将该文件中的所有出现 PendSV_Handler 的地方替换 为 OS_CPU_PendSVHandler, 所有出现 SysTick_Handler 的地方替换为 OS_CPU_SysTickHandler。 之所以要修改这两个地方主要是因为我们一般的中断向量是 CMSIS 给的,而 uCOS-II 使用的 是自己写的,我们修改 CMSIS 的向量表来统一这两个向量可以避免修改更多与 uCOS-II 有关 的内容,从而降低出错几率(当然也可以修改 uCOS-II 中的中断向量来统一这两个向量,注 意要同时修改与这两个函数相关的一些函数声明及其函数代码) 。 这样, 中断服务函数 PendSV_Handler 在 os_cpu.h 中声明, os_cpu_a.asm 中有中断服务代 在 码,在 Startup_stm32f10x_hd.s 中有中断入口,匹配完成。 中断服务函数 SysTick_Handler 在 os_cpu.h 中声明,在 os_cpu_c.c 中有中断服务代码,在 Startup_stm32f10x_hd.s 中有中断入口地址,初始化函数在 Bsp 中编写(即上文说到的 void OS_CPU_SysTickInit(void) 函数)匹配也完成。由此两个中断函数就能正确的响应并执行。 (4)为 了 避 免 固 件 库 中 原 有 的 PendSV_Handler 和 SysTick_Handler 函 数 对 OS_CPU_PendSVHandler 和 OS_CPU_SysTickHandler 函数的影响,我们将 stm32f10x_it.h 和 stm32f10x_it.c 中与这两个中断有关的函数声明及代码注释掉,如下图:

(5)还要修改 os_cfg.h 中的 #define OS_APP_HOOKS_EN 0 /* Application-defined hooks are called from the uC/OS-II hooks*/ #define OS_ARG_CHK_EN 0 /*Enable (1) or Disable (0) argument checking */ #define OS_TMR_EN 0 /* Enable (1) or Disable (0) code generation for TIMERS */ 三个地方,这些功能我们暂时不用(所以不使能) ,要用的话要定义一些东西,这里不做介 绍,参见邵老师的书吧。 至 此 移 植 部 分 完 成 , 编 译 后 没 有 错 误 ( 记 得 写 心 跳 时 钟 的 初 始 化 函 数 void OS_SysTickInit(void)),如果有错误再仔细查阅一下相关的移植资料予以修正。

总结:移植的最主要的部分就是与两个中断服务函数相关的中断向量地址、中断服务函
数声明及代码、中断服务函数的初始化以及相关同文件的包含。搞清楚这些后,想怎么移植 就可以怎么移植啦!


实操性最强:uCOS-II移植到STM32上的详细步骤;.doc

实操性最强:uCOS-II移植STM32上的详细步骤; - 详细描述了uCOS-II移植STM32上的步骤,实操性极强,按照这个步骤,只需要稍微知道一点点MDK的操作方法,就能够...

在ucos上移植stm32.doc

在ucos上移植stm32 - 1.准备材料 在 st 官网上下载最新的固件库(

uCOSII移植到STM32的心得随笔.pdf

uCOSII移植STM32的心得随笔 - 本文是uc/os-II移植STM32的经验之谈,uc/os-II移植包括使用STM32固件库的移植和使用Keil自带设备库的移植,移植步骤都是经过好...

UCos-ii_在STM32上的移植详解_图文.pdf

UCos-ii_在STM32上的移植详解_信息与通信_工程科技_专业资料。 您的评论 发布评论 用户评价 关于移植的内容,不错 2018-06-30 14:52:48 ...

uCOS-III移植到STM32.pdf

uCOS-III移植STM32 - 以奋斗开发板作为硬件平台,将uCOS-III操作系统移植到开发板,工程只有一个用户任务,本文主要记录了自己在移植过程中步骤,共大家参考。...

ucosii在STM32上的移植详解.pdf

ucosii在stm32 上的移植详解虽然目前网上已经有不少关于 ucosii 在 stm32 上的移植版本,包括 micrium 也 有官方移植版本。 但这些版本具体是怎么移植出来的, 又...

第3讲 UCOSII在STM32F407上的移植_图文.ppt

第3讲 UCOSII在STM32F407上的移植 - 《手把手教你学STM32-UCOS》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司...

手把手教你移植uCOS-III到STM32.pdf

手把手教你移植uCOS-III到STM32_信息与通信_工程科技_专业资料。本人移植uCOS-III到STM32的全过程,无废话。 手把手教你移植 uCOS-III 到 STM32 作者:谭建裕 ...

UCOSII移植STM32笔记_图文.pdf

UCOSII移植STM32笔记 - UCOSII 移植 STM32 笔记 用到的资源是: A、ucosii_V2.92 B、ST 公司提供:STM32F10x 开发标准库 V3.5 版本 C、编...

Keil移植Ucosii到STM32F103.doc

二、 STM32F10x 标准库移植 1. 建立工程文件夹 STM32F10x_Ucosii_Keil 2. 建立子文件夹:CMSIS、STM32F10x_StdPeriph_Driver、Ucosii、Project。如下: 3. ...

ucos在STM32上的移植步骤.doc

ucos在STM32上的移植步骤 - 一、资料下载 1 、下载 uC/OS-II

使用IAR移植ucos到stm32的步骤.doc

使用IAR移植ucosstm32的步骤 - 芯片型号 stm32f103ve,

uCOS-II在STM32上的移植_图文.ppt

uCOS-II在STM32上的移植 - ?C/OS-II 的移植 8/17/20

Day Day Up笔记之uCOS-II+LwIP在STM32F107上移植_图文.pdf

Day Day Up 笔记之 uCOS-II+LwIP 在 STM32F107 上移植 笔者:adamwin Day Day Up 出品 Day Day Up 笔记之 uCOS-II+LwIP 在 STM32F107 上移植声明 XX ...

教你如何把UCos-ii_在STM32上的移植.pdf

教你如何把UCos-ii_在STM32上的移植 - 下载代码 stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它可以大大加速我们 开发 stm32。 首先从 st 公司的...

ucosii在stm32上的移植详解3.doc

ucosii在stm32上的移植详解3 - 移植详解 1 和 2 中主要讲了移植需要用到的基础知识, 本文则对具体 的移植过程进行介绍。 首先从 micrium 网站上下载官方移植...

STM32-uCOS移植_图文.pdf

STM32-uCOS移植 - uCOS 学习随笔 StepbyStep-2 Project: fira-mirosot-robot uCOS 学习随笔 StepbyStep-2 理解中...

ucos基于stm32上的移植.doc

ucos基于stm32上的移植 - ucos-ii 和 ucgui 基于 stm32 上的移植 uc/os-ii 移植笔记 os_cpu.h 与编译器相关的数据类型 typedef unsign...

在IAR中移植ucos到stm32.doc

在IAR中移植ucosstm32_信息与通信_工程科技_专业资料。这个系本人原创,保证100%通过,望大家多多支持.本人郑重声明盗用可耻! 我用的是 stm32f103ve 的板子和 ...

一步步教你uCOS-II在STM32的移植_图文.ppt

一步步教你uCOS-II在STM32移植_IT/计算机_专业资料。从0开始,一步步教你uCOS-II在STM32移植,最终实现系统的运行,很好用,是野火写的 ...