完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
一、准备工作
1、 uCOS- II源码下载 uCOS- II的源码可以在Micrium 官网上下载,所以我们可以直接下载移植好的工程来用。下载地址为: https://www.micrium.com/downloadcenter/download-results/?searchterm=mi-stmicroelectronics-stm32f7xx&supported=true 由于在Micrium 官网上的基于STM32F7的 uCOS- II的源码没有MDK版本的,因此我们需要下载如下图所示的两个版本的 uCOS- II的源码。 2、移植目标 开发板: STM32F76IGT6 编译软件:MDK5 移植版本: uCOS- II V2.92.12 二、建工程 具体建HAL库模板工程的步骤这里不再详细叙述。这里我直接采用已经建好的HAL库函数模板进行移植。 1、建立相应文件夹 我们在工程目录下新建 UCOSII 文件夹,如下图所示: 然后将我们下载的 Micrium 官方移植工程中的 uC-CPU、 uC-LIB 和 uCOS-II 这三个文件夹复制到刚刚新建的UCOSII文件夹中。官方文件路径为: Micrium_STM32746G-EVAL2_OS2MicriumSoftware。如下图所示: 复制结果如下图所示: 然后在UCOSII文件夹中再新建两个文件夹:uCOS-BSP 和uCOS-CONFIG。结果如下图所示: 三、向建好的文件夹中添加文件 1、向 uCOS-BSP 中添加文件 复制 Micrium官方移植好的工程中的相关文件到 uCOS-BSP 文件夹下, 官方文件路径为:MicriumExamplesSTSTM32746G-EVAL2os2bspinclude中的bsp.h文件; MicriumExamplesSTSTM32746G-EVAL2os2bspsource中的bsp.c和cpu_bsp.c文件。结果如下图所示: 2、向 uCOS-CONFIG 中添加文件 复制 Micrium 官方移植好的工程中的相关文件到uCOS-CONFIG 文件夹下,官方文件路径为:MicriumExamplesSTSTM32746G-EVAL2os2中文件app_cfg.h、app_hooks.c、cpu_cfg.h、lib_cfg.h和os_cfg.h。结果如下图所示: 除了上图中的文件之外,uCOS-CONFIG 文件夹下还需要新建一个“includes.h”的头文件。includes.h文件的内容如下: #ifndef __INCLUDES_H__#define __INCLUDES_H__#include 将目录Micrium_STM3240G-EVAL_OS2MicriumSoftwareuC-CPUARM-Cortex-M4下的文件夹RealView复制到目录uC-CPUARM-Cortex-M4下,结果如下图所示: 4、向 uC-LIB 中添加文件 将目录Micrium_STM3240G-EVAL_OS2MicriumSoftwareuC-LIBPortsARM-Cortex-M4下的文件夹RealView复制到目录uC-LIBPortsARM-Cortex-M4下,结果如下图所示: 5、向 uCOS-II 中添加文件 将目录Micrium_STM3240G-EVAL_OS2MicriumSoftwareuCOS-IIPortsARM-Cortex-M4Generic下的文件夹RealView复制到目录uCOS-IIPortsARM-Cortex-MARMv7-M下,结果如下图所示: 四、向工程中添加分组 在我们已经准备好了所需要的文件后,我们还需要将这些文件添加到工程中去,添加结果如下图所示: 添加相应的头文件路径,结果如下图所示: 五、修改文件 1、修改 bsp.c 和 bsp.h 文件 bsp.c 是 Micrium 公司编写的一些底层驱动函数,这里我们只需要其中的一个函数:BSP_CPU_ClkFreq(), 其他的就可以删除掉了,最终的 bsp.c 文件如下: #define BSP_MODULE#include #ifndef BSP_PRESENT #define BSP_PRESENT /************************************************************************** * EXTERNS **************************************************************************/ #ifdef BSP_MODULE #define BSP_EXT #else #define BSP_EXT extern #endif /******************************************************************************* * INCLUDE FILES *********************************************************************************/ #include UCOSII 任务切换是需要 PendSV 中断服务函数的, Micrium 官方移植工程中用汇编语言实现了 PendSV 中断服务函数,但是中断函数的名字被改了,这里我们需要将其改回来,打开os_cpu_a.asm 文件,将其中的所有 OS_CPU_PendSVHandler 改为 PendSV_Handler,改完后如下图所示(只展示了部分)。 3、修改 sys.h文件 将 sys.h 文 件 中 的 宏 SYSTEM_SUPPORT_OS 定 义 为 1 以 支 持 UCOS , 将SYSTEM_SUPPORT_OS 定义为 1 。如下图所示: 4、修改 startup_stm32f767xx.s 文件 Cortex-M7 内核有个 Lazy Stacking 的功能, 如果使用 FPU 功能的话就需要关闭这个功能,我们要在 startup_stm32f767xx.s 中关闭这个功能,添加如下代码到下图红框所示位置: IF {FPU} != "SoftVFP"; Enable Floating Point Support at reset for FPULDR.W R0, =0xE000ED88 ; Load address of CPACR registerLDR R1, [R0] ; Read value at CPACRORR R1, R1, #(0xF <<20) ; Set bits 20-23 to enable CP10 and CP11 coprocessors; Write back the modified CPACR valueSTR R1, [R0] ; Wait for store to completeDSB; Disable automatic FP register content; Disable lazy context switchLDR.W R0, =0xE000EF34 ; Load address to FPCCR registerLDR R1, [R0]AND R1, R1, #(0x3FFFFFFF) ; Clear the LSPEN and ASPEN bitsSTR R1, [R0]ISB ; Reset pipeline now the FPU is enabledENDIF 5、开启FPU 因为 STM32F767 有浮点运算单元 FPU, 而且支持双精度浮点。 那么我们移植完 UCOS II以后就要测试一下是否支持双精度浮点运算, 因此要开启 FPU。将文件 stm32f767xx.h 中的宏__FPU_PRESENT 为 1 即打开 FPU, 如下图所示, 默认情况下 HAL 库是打开了 FPU 的。 6、修改os_cpu_c.c文件 在上一步修改完成之后编译文件,显示如下错误: 于是将函数OS_CPU_FP_Reg_Push屏蔽掉,如图所示: 得到如下编译结果: 到这里移植就完成了! 由于本人水平有限,如有错误之处,欢迎批评指正!希望能与各位大神多多交流,共同进步! |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1848浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
610浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
504浏览 3评论
508浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
489浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 17:47 , Processed in 0.494202 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号