Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
GCC和eclipse 环境搭建小结
发布于 2014-03-06 16:31:31 浏览:4394
订阅该版
初开始学习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 目录,以及工具目录, 英文系统的朋友可能会显示不正常。  2. 建立工程,选择CPU及BSP CPU 根据目标硬件选择,见文档一 BSP, 建议将先合适的BSP文件夹另拷一份放在BSP目录中, 然后针对你的目标板做修改。我用的魔笛开发板,所以 考了一个STM32F10X 的目录,改名为flute,然后在建立工程时BSP选择这个flute文件夹即可。 3. 修改工程 (1. 工程文件:这一步可做可不做。 RTT 的工程模板会将BSP目录中的文件考到workspace中,然后加入在工程里。另外还会将RTT的代码以链接的形式添加到工程。 如果希望各工程之间共享BSP中的文件,可以将workspace中的重复文件删除,然后添加一个BSP的链接进来,这样,workspace中只保留应用程序的代码。 步骤:在工程文件上点击右键,然后选 import, 选filesystem, 然后选 中你的BSP文件夹,  之后在advance里选择“Creat links in workspace”, 这样, 将会在工程里创建一个链接,但是不会把文件考到workspace里。  由于改变了BSP路径,不再和应用程序放在一直, 所以还需要改一下scons脚本才能正常编译。这里修改工程目录下的SconScript, 在脚本返回前添加一行 objs = objs + SConscript(RTT_ROOT + '/bsp/flute/SConscript', variant_dir='build/Bsp', duplicate=0)  (2. 配置工程路径 在eclipse的工程属性中, 有关于路径的设置,不想改系统路径的朋友可以在这里配置路径  4. 编译 见文档一,如果一切配置良好,大约会有如下画面  二, 配置openocd 1. 启动 启动openocd之前需要先装好Stlink 及其它等 link的驱动。这里装的是ST-utility Openocd是一个命令行程序,需要在CMD 中启动如下  其中-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 如下:  这四个命令分别是 停住 CPU, 下载程序,设置程序指针。 2. 启动GDB 在命令行中输入:arm-none-eabi-gdb.exe D: ttworkspace0led tthread-stm32.axf 前面为GDB命令,后边参数是可执行程序 然后输入:target remote localhost:3333 [attach]2231[/attach] 如果一切正常会见到如上图所示: 3. 调试 可调用n, c等 命令调试了。       
查看更多
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
ART-Pi2移植CMSIS-DAP(基于CherryUSB协议栈)
2
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
3
RT-Thread中的time溢出问题,时间戳溢出,解决方法
4
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
5
SystemView线程名字不显示
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
lizimu
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部