carvenl 发表于 2021-5-12 13:05:17

GCC编译RTOS2无法进入操作系统

CubeMX生成的makefile工程,用VScode+GCC编译,OpenOCD调试,加入RTOS2的源码后,编译成功,但是进不去任务
osKernelInitialize ();
        osThreadNew(&main_thread,NULL,NULL);
        osKernelStart();调试发现osKernelStart()后会继续往下走,没有进入main_thread这个任务,osKernelStart()返回的status是ok

然后又用MDK把同样的代码导入进去,只把stm32和rots的两个.s文件从arm版换成gcc版,然后注释掉三个中断函数
void SVC_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);(GCC如果注释这三个的话,osKernelInitialize ()时会直接跑飞)

其他代码不变,MDK编译后就顺利运行,可以进入任务,不知道什么原因

另外GCC下有调试这个系统的工具吗,OpenOCD貌似只支持FreeRTOS

eric2013 发表于 2021-5-12 15:47:27

1、应该是没有移植好,后面我试试。
2、VisualGDB支持RTX5及其调试组件展示,用的GCC
https://visualgdb.com/tutorials/arm/keil/rtx/

snakeemail 发表于 2021-5-12 20:32:02

能看到栈信息吗?单步看,是到了那一步飞的?然后看下是什么fault类型。

yklstudent 发表于 2021-5-12 21:05:34

eric2013 发表于 2021-5-12 15:47
1、应该是没有移植好,后面我试试。
2、VisualGDB支持RTX5及其调试组件展示,用的GCC
https://visualgdb. ...

大佬啥时候讲讲怎么搭建VSC+GCC平台,开发调试STM32啊

carvenl 发表于 2021-5-12 23:33:01

eric2013 发表于 2021-5-12 15:47
1、应该是没有移植好,后面我试试。
2、VisualGDB支持RTX5及其调试组件展示,用的GCC
https://visualgdb. ...

感谢回复,同样的代码,用MDK就可以进任务,用GCC就进不去。不知道是不是漏掉了什么宏定义。

我直接把工程放上来了,stm32f411,就是cubeMX生成的,很简单,可以直接make,但在osKernelStart()之后没有并进入任务,而是继续向下。

用MDK的话,需要在stm32f4xx_it.c里去掉SVC,Systick,PendSV这三个中断函数,不然会冲突,然后把stm32和rtos的两个.s文件从GCC换成ARM的,其余代码不变,就可以直接编译,顺利运行,正常进入任务。

附件好像发不上来,发网盘吧
链接:https://pan.baidu.com/s/1RZq1gFhOjH69B3lR0YFcag
提取码:tc57

carvenl 发表于 2021-5-12 23:42:51

snakeemail 发表于 2021-5-12 20:32
能看到栈信息吗?单步看,是到了那一步飞的?然后看下是什么fault类型。

在MDK里SVC_Handler() PendSV_Handler()SysTick_Handler()这三个会和RTOS冲突,得去掉

GCC里如果没有这三个函数,就会跑飞

最后一步是在这里,然后就进入无限循环






加上就可以正常跑了,但还是进不去任务


carvenl 发表于 2021-5-12 23:46:30

yklstudent 发表于 2021-5-12 21:05
大佬啥时候讲讲怎么搭建VSC+GCC平台,开发调试STM32啊

其实很简单,装个arm-none-eabi-gcc,再装个mingw就可以编译了,要调试的话装个openocd,不用再装别的。
工程我上面已经发了,可以直接make。

eric2013 发表于 2021-5-13 09:10:15

carvenl 发表于 2021-5-12 23:33
感谢回复,同样的代码,用MDK就可以进任务,用GCC就进不去。不知道是不是漏掉了什么宏定义。

我直接把 ...

回头我在Embedded Studio的GCC上试试。

carvenl 发表于 2021-5-29 10:38:56

问题找到了,用make编译irq_cm4f.S时需要加上以下参数,否则不会编译这个文件
-x assembler-with-cpp

madao1234 发表于 2022-11-28 14:35:13

楼主,可不可以再提供下工程源码,上面的连接失效了! 谢谢 79166877@qq.com
页: [1]
查看完整版本: GCC编译RTOS2无法进入操作系统