Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
GCC和eclipse 环境搭建小结
发布于 2014-03-06 16:31:31 浏览:4363
订阅该版
初开始学习RTT, 花了两天时间,参考了一堆文档,终于把eclipse开发环境搞定了, 特发一帖做些总结。 环境:windows7 64 位,英文系统 软件: eclipse indigo 3.7.2 [http://www.eclipse.org/downloads/packag ... /indigosr2](http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers-includes-incubating-components/indigosr2) CDT 8.0.2 [http://www.eclipse.org/cdt/downloads.php](http://www.eclipse.org/cdt/downloads.php) GCC arm Tool [https://launchpad.net/gcc-arm-embedded](https://launchpad.net/gcc-arm-embedded) Openocd 0.7 [http://www.freddiechopin.info/en/downlo ... /4-openocd](http://www.freddiechopin.info/en/download/category/4-openocd) STlink utility V3.3 Scons v2.3 RTT 1.2 硬件: jiezhi320的魔笛F1 V2.3 CPU :STM32F103ZE ST-Link 参考文档: [http://www.rt-thread.org/dokuwiki/doku. ... 3%E8%AF%95](http://www.rt-thread.org/dokuwiki/doku.php?id=%E9%85%8D%E7%BD%AEeclipse%E9%9B%86%E6%88%90%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83_%E7%BC%96%E8%AF%91_%E8%B0%83%E8%AF%95) [http://hertaville.com/2012/05/28/gcc-ar ... discovery/](http://hertaville.com/2012/05/28/gcc-arm-toolchain-stm32f0discovery/) 此文很详细 概述: 一般的集成开发环境集成了编辑,编译,链接,下载,调试等全部软件,如MDK, 而打造一个自己的开发环境 ,就需要选择这些工具软件并把它们 “组装”起来工作。 以下是各部部分软件选择 编辑器略。 编译工具链可以选择CodeSourcery 或者Gcc-arm,这里选择GCC—ARM, 据说对M4内核支持更好(见文档二)。 Openocd 0.7: 是一个调试代理(?),是gcc的调试器GDB和ST-link驱动之间的中介 STlink utility: 提供了ST-link的驱动,同时 也提供了另外一个功能类似openocd的调试代理,但是只支持st-link Scons: RTT推荐的建造工具,相当于make 最后用Eclipse 把这些东西攒在一块儿,同时eclipse提供了图形化的GDB界面 安装: 所有程序要么直接安装,要么解压缩到一个目录中, 其中所有路径不能有空格 Eclipse: 直接解压缩,可以参照文档一。 CDT: 用eclipse->help->install new software , 之后利用已下载的安装包安装,或者从网站直接下载安装。参照文档二 GCC arm Tool :直接安装(EXE)或者解压缩(ZIP)到工具目录 Openocd 0.7 解压缩到工具目录,选择合适的版本(32OR64)将路径添加到系统路径 STlink utility 直接安装, Scons 需要先安装python2, 这里选择python 2.7.6, 装好以后好像和我已经装的python3 没有冲突(系统默认python3), 因为我主要使用python3, python2只给scons用,所以不改系统路径转而将C:Python27scons-2.3.0script scons.bat 中第23行改为“C:Python27python "%scriptname%" %* ”, 即路径直接设为python2 然后是各部分设置 一, eclipse中新建工程 1. 参考文档一,需要先设定RTT 目录,以及工具目录, 英文系统的朋友可能会显示不正常。 ![eclipse_GDB_main.PNG](/uploads/5695_57ef3bc5fb85eaba3b7b6a7d7867e89e.png) 2. 建立工程,选择CPU及BSP CPU 根据目标硬件选择,见文档一 BSP, 建议将先合适的BSP文件夹另拷一份放在BSP目录中, 然后针对你的目标板做修改。我用的魔笛开发板,所以 考了一个STM32F10X 的目录,改名为flute,然后在建立工程时BSP选择这个flute文件夹即可。 3. 修改工程 (1. 工程文件:这一步可做可不做。 RTT 的工程模板会将BSP目录中的文件考到workspace中,然后加入在工程里。另外还会将RTT的代码以链接的形式添加到工程。 如果希望各工程之间共享BSP中的文件,可以将workspace中的重复文件删除,然后添加一个BSP的链接进来,这样,workspace中只保留应用程序的代码。 步骤:在工程文件上点击右键,然后选 import, 选filesystem, 然后选 中你的BSP文件夹, ![eclipse_GDB_debugger.PNG](/uploads/5695_a690e657b4b067bbd7b3a556bed2ee2d.png) 之后在advance里选择“Creat links in workspace”, 这样, 将会在工程里创建一个链接,但是不会把文件考到workspace里。 ![eclipse_GDB_startup.PNG](/uploads/5695_a4ebf5fb4687acd610105934f0b2670f.png) 由于改变了BSP路径,不再和应用程序放在一直, 所以还需要改一下scons脚本才能正常编译。这里修改工程目录下的SconScript, 在脚本返回前添加一行 objs = objs + SConscript(RTT_ROOT + '/bsp/flute/SConscript', variant_dir='build/Bsp', duplicate=0) ![scons.PNG](/uploads/5695_f4c9deea148c2b16dfbaa5a3a775b685.png) (2. 配置工程路径 在eclipse的工程属性中, 有关于路径的设置,不想改系统路径的朋友可以在这里配置路径 ![debug.PNG](/uploads/5695_147b0e8639c94e2fa95d9ab2f641623c.png) 4. 编译 见文档一,如果一切配置良好,大约会有如下画面 ![eclipse_debug_ram.PNG](/uploads/5695_4ec7d174766d6660e003446baa8ada47.png) 二, 配置openocd 1. 启动 启动openocd之前需要先装好Stlink 及其它等 link的驱动。这里装的是ST-utility Openocd是一个命令行程序,需要在CMD 中启动如下 ![codeInRam.PNG](/uploads/5695_7800bf92cea6137f21ee71bef7c25060.png) 其中-f d: ttFluteflute.cfg 是为openocd指定一个配置脚本,本例中硬件非常简单,所以 这个脚本只有如下两行,详细的配置可以参阅openocd里自带的文档以及众多配置脚本例子 source [find interface/stlink-v2.cfg] source [find target/stm32f1x_stlink.cfg] 如果你看到最后一行的信息,breakpoints以及watchpoints之类,说明openocd已经与硬件连接上。 2. openocd测试 用telnet连接本地4444端口,可连上openocd, 试着敲如下命令,reset halt, reg pc, reg sp , mdw 0x20000000等,如果结果正常,说明openocd工作良好 三, GDB 调试 1. 下载程序: 在上文telnet中, 依次输入 reset halt flash write_image d:/............(本地可执行文件) reg pc 0x08000000 如下: ![openocdtest.PNG](/uploads/5695_14740dcf89b2e1cac68cc0886ad73bcc.png) 这四个命令分别是 停住 CPU, 下载程序,设置程序指针。 2. 启动GDB 在命令行中输入:arm-none-eabi-gdb.exe D: ttworkspace0led tthread-stm32.axf 前面为GDB命令,后边参数是可执行程序 然后输入:target remote localhost:3333 [attach]2231[/attach] 如果一切正常会见到如上图所示: 3. 调试 可调用n, c等 命令调试了。 ![eclipse_RTT_Folder.PNG](https://oss-club.rt-thread.org/uploads/5695_3fe314d0c80bdf9a5c5ca39f88827975.png) ![importfilesytem.PNG](https://oss-club.rt-thread.org/uploads/5695_9a23353d0f16d444b67c95cd26410f07.png) ![creatlink.PNG](https://oss-club.rt-thread.org/uploads/5695_b7ba8c380831756d5a9b0468ecb52c32.png) ![eclipse_path.PNG](https://oss-club.rt-thread.org/uploads/5695_5efc53260f561c8944d140664ade3b56.png) ![build.PNG](https://oss-club.rt-thread.org/uploads/5695_a8bab4a3f6ea2008b8a52f23206a05aa.png) ![startopocd.PNG](https://oss-club.rt-thread.org/uploads/5695_cd62a071f49d25771800bd05a43a991c.png) ![GDBStart.PNG](https://oss-club.rt-thread.org/uploads/5695_199533c1c1445972e601e52a08a740ab.png)
查看更多
5
个回答
默认排序
按发布时间排序
Hlhcom
2014-03-06
这家伙很懒,什么也没写!
四, 配置eclipse 调试器 1. Eclipse中新建调试 在debug configuration中的GDB hardware Debugging中新建一个调试项目: 2. 配置调试选项如下 [attachment=-5] [attachment=-4] [attachment=-3] 各项配置其实就是重复刚才在命令行界面中的命令,大家根据自己的情况 自行配置 即可。 3. 调试。。。。。。。。。。 [attachment=-2] 五, Ram中调试 如果程序较小,可以在片内Ram中调试。前面的截图也都是这样调试的。 片内Ram调试要更改的地方: 1. 打开工程文件夹中的stm32_rom.ld, 另存为stm32_ram.ld, 更改其中MEMORY 段内容如下: MEMORY { CODE (rx) : ORIGIN = 0x20000000, LENGTH = 32k /* 32KB ram */ DATA (rw) : ORIGIN = 0x20008000, LENGTH = 32k /* 32K sram */ } 2. 工程目录中的rtconfig.py 56行左右,改最后的参数为 -T stm32_ram.ld 54行左右,添加一个宏定义,-D VECT_TAB_SRAM', 这个宏名字参见board.c中NVIC_Configuration函数。有些地方 这个宏写为VECT_TAB_RAM' CFLAGS = DEVICE + ' -D VECT_TAB_SRAM' 3. 在eclipse的调试启动项中加入 monitor reg pc 0x20000000 monitor reg sp 0x20008160 [attachment=-1] 这个加得并不规范,这个数字应该是存在程序首地址的值 ,本例中为0x20000000,openocd中可以用mdw 0x20000000读到这个值,但是我不知道怎么能写脚本实现这个一读一写的功能,看了半天文档也没试成功,只好直接写数字了。在keil中这个实现的非常简单: FUNC void Setup (void) { SP = _RDWORD(0x20000000); // Setup Stack Pointer PC = _RDWORD(0x20000004); // Setup Program Counter _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register } 这三行分别设置了SP, PC,中断映射,openocd应该写类似的脚本,目前我还不会:),请熟悉TLC的高人指教下。 调试时可见代码段在RAM 内 [attach]0[/attach]
Hlhcom
2014-03-06
这家伙很懒,什么也没写!
我写文档的功力不够,以上为大家提供一点线索,还有未尽细节可能需要大家自行摸索一下 [s:154] 魔笛这个版有片外RAM,理论上应该可以在片外RAM里调试,我今天尝试了一下没有成功,连程序都没下进去,还是那个openocd的脚本没搞定。这个只能以后再试了。
lujun723
2014-03-07
这家伙很懒,什么也没写!
windows下的还好说,linux下的很费劲啊,哈哈,最后还是用mdk了,不想在工具上花费太多时间,有scons就够了
乱雪丶
2019-04-16
这家伙很懒,什么也没写!
这些网页链接我怎么都打不开{:2_28:}
撰写答案
登录
注册新账号
关注者
0
被浏览
4.4k
关于作者
Hlhcom
这家伙很懒,什么也没写!
提问
1
回答
4
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
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
env中添加lvgl软件包后,keil编译包--c99错误
2
【NXP-MCXA153】 定时器驱动移植
3
GD32F450 看门狗驱动适配
4
【NXP-MCXA153】看门狗驱动移植
5
RT-Thread Studio V2.2.9 Release Note
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
10
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部