Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Kernel
MDK搭建RT-Thread最小工程遇到的一些问题及其解决方案
发布于 2018-10-23 21:47:34 浏览:5225
订阅该版
[tocm] * 本帖最后由 Mculover666 于 2018-10-26 22:19 编辑 * 1.参考教程 参考[《Keil 下搭建 RT-Thread 最小系统工程]》](https://www.rt-thread.org/document/site/rtthread-tutorial/project/project/)这篇文档学习如何在MDK下搭建一个RT-Thread最小工程,教程写的很好,但是在最后部分稍微有点瑕疵,自己折腾了一下,补充分享~ 2.问题1 2.1.问题描述 ![1.png](/uploads/201810/26/221140f6nv27azbvn252ve.png) 2.2.问题分析 报错信息为.\Objects\project.axf: Error: L6218E: Undefined symbol $Super$$main (referred from components.o).,由此判断是components.c文件中$Super$$main出了问题,去文件中一探究竟,代码如下: ```#if defined (__CC_ARM) extern int $Super$main(void); /* re-define main function */ int $Sub$main(void) { rt_hw_interrupt_disable(); rtthread_startup(); return 0; }```这个用法将main函数拆分为子函数和主函数,在调用主main函数前先调用子main函数启动操作系统,所以应该是**main函数出了问题**。 2.3.解决方案 分析出main函数出了问题,检查工程发现是没有将main函数添加进去,添加进去重新编译即可。 3. 问题2 3.1.问题描述 根据教程中改动了rtconfig中的型号后,依然存在如图所示的问题: ![2.png](/uploads/201810/26/221140lwfn5uqy00lzmf8p.png) 3.2.问题分析 因为所有的配置都已配置完成,编译0error0warning,所以应该是调试配置出了问题,打开rt-thread源码中bsp目录下的工程对比了一下,发现只要是一改动器件型号仿真就会报错,最后发现**调试配置出错**,keil里没有默认自动更改调试配置,所以当重新选择器件型号的时候,debug设置会恢复默认,就会出现这个问题. ## 3.3.解决方案 默认Debug设置如图所示,可以看到其中还是ARMCM3的设置: ![3.png](/uploads/201810/26/221140q11vf72s1g2ss1c4.png) 将对应信息更改为红框中所示配置即可(**注意型号对应**): ![4.png](/uploads/201810/26/221140oz3ld3awjhm61l6q.png) 因为之前已经编译生成axf文件,所以可以直接进入Debug模式: ![5.png](/uploads/201810/26/221140ez8mo8fkkqrm9klt.png) ![6.png](/uploads/201810/26/221140fh2yagm2806xat09.png) 4.问题3 4.1.问题描述 教程中可能由于一些原因没有对应,之前添加启动文件选择**startup_stm32f103xe.s**,宏定义选择**STM32F103xE**,然而器件型号选择**STM32F103C8T6**,rtconfig.h中也选择为**STM32F103C8**,**文件和宏定义不对应**,在实际板级验证时难免会出现一些bug。 4.2.解决方案 工程建好后,如果要修改以适配不同型号硬件,可采取以下几点: - 启动文件 - MDK器件型号 - MDK宏定义 - rtconfig.h 注意这些之间**必须要匹配**,启动文件的宏定义一般是一样的,只要对应好rtconfig.h和MDK中器件型号选择即可,见如下代码: ```#if !defined (STM32F100xB) && !defined (STM32F100xE) && !defined (STM32F101x6) && \ !defined (STM32F101xB) && !defined (STM32F101xE) && !defined (STM32F101xG) && !defined (STM32F102x6) && !defined (STM32F102xB) && !defined (STM32F103x6) && \ !defined (STM32F103xB) && !defined (STM32F103xE) && !defined (STM32F103xG) && !defined (STM32F105xC) && !defined (STM32F107xC) /* #define STM32F100xB */ /*!< STM32F100C4, STM32F100R4, STM32F100C6, STM32F100R6, STM32F100C8, STM32F100R8, STM32F100V8, STM32F100CB, STM32F100RB and STM32F100VB */ /* #define STM32F100xE */ /*!< STM32F100RC, STM32F100VC, STM32F100ZC, STM32F100RD, STM32F100VD, STM32F100ZD, STM32F100RE, STM32F100VE and STM32F100ZE */ /* #define STM32F101x6 */ /*!< STM32F101C4, STM32F101R4, STM32F101T4, STM32F101C6, STM32F101R6 and STM32F101T6 Devices */ /* #define STM32F101xB */ /*!< STM32F101C8, STM32F101R8, STM32F101T8, STM32F101V8, STM32F101CB, STM32F101RB, STM32F101TB and STM32F101VB */ /* #define STM32F101xE */ /*!< STM32F101RC, STM32F101VC, STM32F101ZC, STM32F101RD, STM32F101VD, STM32F101ZD, STM32F101RE, STM32F101VE and STM32F101ZE */ /* #define STM32F101xG */ /*!< STM32F101RF, STM32F101VF, STM32F101ZF, STM32F101RG, STM32F101VG and STM32F101ZG */ /* #define STM32F102x6 */ /*!< STM32F102C4, STM32F102R4, STM32F102C6 and STM32F102R6 */ /* #define STM32F102xB */ /*!< STM32F102C8, STM32F102R8, STM32F102CB and STM32F102RB */ /* #define STM32F103x6 */ /*!< STM32F103C4, STM32F103R4, STM32F103T4, STM32F103C6, STM32F103R6 and STM32F103T6 */ /* #define STM32F103xB */ /*!< STM32F103C8, STM32F103R8, STM32F103T8, STM32F103V8, STM32F103CB, STM32F103RB, STM32F103TB and STM32F103VB */ /* #define STM32F103xE */ /*!< STM32F103RC, STM32F103VC, STM32F103ZC, STM32F103RD, STM32F103VD, STM32F103ZD, STM32F103RE, STM32F103VE and STM32F103ZE */ /* #define STM32F103xG */ /*!< STM32F103RF, STM32F103VF, STM32F103ZF, STM32F103RG, STM32F103VG and STM32F103ZG */ /* #define STM32F105xC */ /*!< STM32F105R8, STM32F105V8, STM32F105RB, STM32F105VB, STM32F105RC and STM32F105VC */ /* #define STM32F107xC */ /*!< STM32F107RB, STM32F107VB, STM32F107RC and STM32F107VC */ #endif``` 4.3.需要注意的地方 如果是采用MDK仿真,**在重新选择器件型号后debug配置会恢复默认**,所以要重新配置参数,并且确保参数中所带的型号要匹配。
查看更多
6
个回答
默认排序
按发布时间排序
yangjie
认证专家
2018-10-24
hello
看不到图哦
Mculover666
2018-10-25
这家伙很懒,什么也没写!
>看不到图哦 --- 帖子是用md写的,手机看格式会乱,电脑端查看正常
yangjie
认证专家
2018-10-26
hello
>帖子是用md写的,手机看格式会乱,电脑端查看正常 --- 看不到哦,图片应该在你本地,没有插入上传上来呢
yangjie
认证专家
2018-10-26
hello
>看不到哦,图片应该在你本地,没有插入上传上来呢 --- 没有呢
Mculover666
2018-10-26
这家伙很懒,什么也没写!
>没有呢 --- 谢谢提醒^_^,已改
风来吴山
2018-10-29
这家伙很懒,什么也没写!
不错不错
撰写答案
登录
注册新账号
关注者
0
被浏览
5.2k
关于作者
Mculover666
这家伙很懒,什么也没写!
提问
10
回答
14
被采纳
0
关注TA
发私信
相关问题
1
请教cpu使用率分析
2
选择FreeRTOS, 还是RT-Thread。
3
thread heap stack overflow ?
4
rtt消息队列delay问题
5
释放被删除线程的内存地方在哪里啊
6
请教:各线程结束后,释放其中的内存的连续性问题
7
STM32F103中断关于信号量、邮箱问题
8
RTT中的线程栈大小如何控制
9
关于线程由执行态变为挂起态的代码实现,,,
10
rt_malloc(rt_size_t size)内存分配函数最小分配尺寸问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RTduino物联网应用零基础入门
2
TinyUSB Demo运行教程
3
RT-Thread学习大礼包一键带走!
4
freemodbus从机调试说明
5
【1024】瑞萨 RA 系列 BSP 制作与适配最新版本的 Keil 、 RSC、固件,较新的 FSP
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
PWM
flash
packages_软件包
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
C++_cpp
at_device
本月问答贡献
张世争
8
个答案
2
次被采纳
用户名由3_15位
10
个答案
1
次被采纳
KunYi
4
个答案
1
次被采纳
踩姑娘的小蘑菇
2
个答案
1
次被采纳
bernard
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部