Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3047126
  • 博文数量: 396
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4209
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-04 13:04
文章分类

全部博文(396)

文章存档

2022年(1)

2021年(2)

2020年(8)

2019年(24)

2018年(135)

2017年(158)

2016年(68)

我的朋友

分类: 嵌入式

2017-04-18 21:22:27


1. 因为eclipse是基于Java运行,所以在运行Eclipse之前,需要安装Java SE,对于Java SE,需要Java SE6 JRE系列的版本,可以在这个位置下载: Java SE 6

只下载安装JRE即可。

2. Eclipse运行平台:Eclipse Platform 3.6.2

Eclipse下载后解压到相应目录,不需安装,可自己创建个快捷方式。

3. CDT插件:CDT 7.0.2

插件下载后,解压。将features和plugins复制到Eclipse目录即可。

安装RT-Thread插件

请下载RT-Thread向导插件和配置插件:

并下载编译相关工具(包括GNU make.exe,python环境、scons工具等): 

请复制向导插件到eclipse/plugins目录。utils解压后,放到eclipse目录下。

更新记录:

  • 2012.01.31 配置器添加xml错误提示对话框;

使用RT-Thread插件

正确复制RT-Thread向导插件后,请在Preferences中选择RT-Thread的目录以及GNU GCC工具链目录,如下图所示: 

然后就可以开始使用RT-Thread向导插件了,在新建工程时,第一次可以在Others中找到RT-Thread Project,如下图所示:

点击Next,输入对应的工程名,例如LPC1768

点击Next,选择libcpu目录,针对LPC1768可以选择libcpu/arm/cortex-m3,如下图所示:

点击Next,选择RT-Thread的 BSP,请选择bsp/lpc176x,如下图所示:

然后点击Finish。

RT-Thread向导插件这个时候会开始从bsp/lpc176x目录中把这个目录下面的文件、子目录复制一份到新建的工程目录中。而RT-Thread的内核、组件等代码都采用虚拟链接的方式。

编译RT-Thread工程

点击工程的build按钮,eclipse就会自动编译工程了,如下图所示:

调试RT-Thread工程

注:当前还没有专门的插件用于调试RT-Thread工程,需要自行配置下。

调试stm32网络收音机开发板(stm32103ZE)

zylin是eclipse上的一款配合jlink使用的调试插件,这是一款开源调试插件,其官方网址为: 

第一步:在eclipse中安装zylin插件

启动eclipse后,打开菜单栏Help–>Install New Software对话框,输入

 

然后安装插件即可,如下所示

插件安装完成以后,eclipse会提示重启以使插件生效,重启即可。

第二步:调试选项配置

首先在eclipse左侧Project Explorer栏中点击待配置工程(这是因为eclipse中可以打开多个工程),这样该工程就为当前工程,然后点击工具栏debug按钮下的debug configurations项,或着点击 eclipse菜单栏 run—>debug configurations

则会打开如下所示对话框

按照图示操作,然后下一步,填入当前工程的axf/elf文件,然后勾选Application Console,如下图所示

然后切换到debugger选项卡,按下图填入gdb,GDB Command file栏不填。

然后切换到commander选项卡,如下所示

可以看到上图有上下两个编辑框,在上面的编辑框中填入(以stm32_103ZE芯片为例)

# connect to the J-Link gdb server
    target remote localhost:2331
# Enable flash download and flash breakpoints.
# Flash download and flash breakpoints are features of
# the J-Link software which require separate licenses 
# from SEGGER.
# Select flash device
    monitor flash device = STM32F103ZE
# Enable FlashDL and FlashBPs
    monitor flash download = 1
    monitor flash breakpoints = 1
# Clear all pendig breakpoints
    monitor clrbp
# Set gdb server to little endian
    monitor endian little
# Set JTAG speed to 5 kHz
    monitor speed 5
# Reset the target
    monitor reset
    monitor sleep 100
# Set JTAG speed in khz
    monitor speed auto
# Vector table placed in Flash
    monitor writeu32 0xE000ED08 = 0x00000000

在下面的编辑框中填入

monitor reg r13 = (0x00000000)
monitor reg pc = (0x00000004)
break ResetHandler
break main
continue

注:

  • 上面的脚本可以在这里找到参考脚本,根据您的芯片型号下载合适的压缩包,解压之后,其中prj目录中会有若干gdb文件。例如芯片型号为stm32103ze,则下载STM3210ETest,解压之后,里面有4个后缀为gdb的文件,分别是stm32_flash_jlink_1.gdb,stm32_flash_jlink_2.gdb,stm32_ram_jlink_1.gdb,stm32_ram_jlink_2.gdb。其中stm32_flash_jlink_1.gdb与stm32_flash_jlink_2.gdb用于调试flash中的程序。打开stm32_flash_jlink_1.gdb文件,将其中的内容复制到上面的编辑框中,将stm32_flash_jlink_2.gdb的内容复制到下面的编辑框中。
  • 这上下两个编辑框填入的内容实际就是通过gdb控制jlink的gdb server的脚本,关于他们的含义以及用法请参考jlink软件包Manuals目录下的《J-link gdb server user guide》文档。
  • 如果没有完全适合您的芯片的脚本,那么您需要适当修改上述脚本,对于stm32系列MCU,您只需要修改STM32F103ZE为您的MCU类型,对于其他型号的MCU配置,您需要查看《J-link gdb server user guide》文档。

到这里zylin的配置已经全部完毕,点击 Apply,保存配置。

第三步:烧录程序

在调试之前需要先烧录程序,为了在eclipse中烧录程序,我们可以配置一个脚本实现烧录。

将下面的内容保存成jlink_flash.txt,放在当前工程目录下

  h
  speed 4800
  exec device = STM32F103ZE
  loadbin rtthread.bin 0x8000000
  r
  g
  qc

注意:

  • 您需要根据自己的实际情况修改上述脚本,其中rtthread.bin待烧录固件,也可以使用hex文件,您还可以指定bin/hex的路径。
  • 如何编写这个脚本请参考《J-Link ARM User Guide》,在jlink安装路径下的 manual目录下提供。

然后配置eclipse外部工具,添加一个菜单项实现烧录。 点击eclipse菜单run–>external tools→external tools configurations.,如下图所示

做如下配置,请根据您的jlink软件实际安装路径配置。

点击Applay后关闭。这样在eclipse菜单run–>external tools下就可以看到新添加的jlink flash项。点击它就可以实现烧录。

第四步:启动调试

启动调试之前,首先我们需要先启动jlink软件包中的gdb server,请根据您的开发板上的调试器的连接方式,选择Jtag或者SWD。

注:如果您的jlink软件版本过低,可能不提供J-Link GDB Server via SWD软件,您需要升级jlink软件包,另,请不要使用jlink 4.42a,这个版本有bug。

这里以SWD为例,启动J-Link GDB Server via SWD软件,如下所示

然后按照下图点击eclipse工具栏debug按钮下的子项,如下所示。

eclipse会自动切换到调试试图,在线调试效果如下所示。

命令行gdb调试qemu(mini2440)

准备工作:

  1. 确保您已经安装了arm-gcc工具链
  2. 确保arm-gcc工具链路径已经添加至系统路径中。
  3. 编译工程生成axf文件,如果您没有使用scons来编译,那么请将生成的axf/elf文件保存至mini2440主目录下
  4. 下载qemu tools工具包,解压至任意目录中。点击这里下载tools.7z,然后双击运行creat_flash_bin.py,生成SDCARD文件,它用于仿真SD卡。

注意:上面生成的SDCARD文件是一个空文件(全是0x0),因此为了被rt-thread的fat文件系统正确识别,你首先需要格式化这个文件,至少有三种方法

  1. linux下使用mount loop挂载SDCARD,格式化为fat,向其中复制文件
  2. windows下使用WinHex工具格式化为FAT
  3. rtt中自带的elm fatfs组件支持格式化,在finsh中,使用mkfs(“elm”, “sd0”)命令来格式化SDCARD文件。

将下面保存成windows的批处理文件,例如命名为run.bat,然后放在mini2440主目录下

  @echo off
  @Rem 设置qemu的路径
  set qemu=F:\Project\tools
  @Rem 加入qemu路径到系统路径
  path %path%;%qemu%
  cd %~dp0
  @Rem 启动qemu到gdb模式,并且设置gdb的远程连接端口为1234.
  start qemu-system-arm.exe -s -S -M mini2440 -kernel rtthread-mini2440.axf -show-cursor -sd %qemu%\SDCARD -serial telnet:127.0.0.2:1200,server -serial file:virtualkbd -gdb tcp::1234
  @Rem 启动putty连接qemu
  start putty.exe telnet://127.0.0.2:1200/
  @Rem 启动一个cmd控制台窗口用于输入gdb命令
  start cmd
  

请注意,您需要修改上面的第三行set qemu=F:\Project\tools为您的qemu路径

点击这个bat文件,会弹出4个窗口,

  • qemu模拟的LCD窗口,标题栏上有[stop]字样
  • Putty窗口,程序正常运行后用做finsh控制台
  • qemu-systme-arm的标准输入/出窗口
  • 是cmd控制台窗口,并且已经进入mini2440目录

在cmd控制台窗口中执行arm-none-eabi-gdb启动gdb,然后使用gdb提供的target remote:1234连接qemu,然后输入c,运行程序,就可以看到运行效果了。

关于gdb的更多用法请参考gdb官方网站。

eclipse配合gdb调试qemu(mini2440)

请先参考上一小节,测试您的gdb是否可以调试qemu中运行的mini2440程序。

使用eclipse的rtt插件创建mini2440工程。

启动eclipse,在菜单栏run→Debug Configuration

按照下图所示配置gdb

配置完成之后,使用上一节提供的脚本启动qemu,然后点击eclipse 菜单栏,Run→Debug,就可以看到已经qemu正常工作了,可以设置断点,单步,查看变量。如下图所示

配置RT-Thread工程

类似Keil MDK,RT-Thread有专门的针对(基于)代码的图形化界面配置插件。

请在工程栏中选择rtconfig.h,然后鼠标右键从Other…中选择RT-Thread Configurator打开。打开后会出现RT-Thread的配置插件界面: 

RT-Thread的配置插件操作的是rtconfig.h头文件,它根据其中的XML规格的注释来提取可配置项,也可以在编辑器中直接修改rtconfig.h文件。插件的初始界面即编辑器的界面,在下面的标签页中还有一栏Configuration Wizard,切换到另外一页去:

从Configuration Wizard我们即可看到rtconfig.h中的可配置项,左边是名称,右边是值。可以在这个界面上进行修改,然后保存时,rtconfig.h头文件也相应的进行更新。

常见问题

须知(请先读我)

上面各个小节介绍的eclipse编译向导插件,配置插件,目前仅在svn上BSP目录下的lpc176x中提供完全的支持。如果您想要在某个BSP中测试eclipse的编译插件和配置插件,您只需要参考lpc176x下的Sconstruct文件和rtconfig.h做相应修改。

例如,按照上几节的介绍使用eclipse克隆bsp\stm32f40x工程为F:\RTOS\project\stm32f4,创建完成以后,编译,则可能遇到如下问题:

  Build of configuration scons for project stm32f4
  make all 
  scons --max-drift=1 --implicit-deps-unchanged
  scons: Reading SConscript files ...
  ImportError: No module named building:
    File "F:\RTOS\project\stm32f4\SConstruct", line 8:
      from building import *
  make: *** [all] Error 2

这里的提示信息非常明确,即stm32f4目录下的Sconstruct文件的第8行有问题,参考lpc176x目录下Sconstruct文件做修改。将Sconstruct相应部分修改为

  # RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')
  # sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
  # from building import *
  
  if os.getenv('RTT_ROOT'):
      RTT_ROOT = os.getenv('RTT_ROOT')
  else:
      RTT_ROOT = os.path.normpath(os.getcwd() + '/../..')
  sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
  from building import * 

说明:Sconstruct是一个python脚本,#号开始行为注释行。

遇到问题如何检查

如果遇到了使用问题请检查下:

  • 是否使用了正确的Java版本;
  • RT-Thread存放目录前缀是否包含中文路径?如果包含请先去掉;
  • 如果工程不能编译,请检查工程选项中的设置,如下图所示是正确的情况:

 请检查RTT_ROOT是否指向RT-Thread目录;

请检查PATH中是否包含utils的路径;RTT_ROOT是否指向RT-Thread目录;RTT_EXEC_PATH是否指向arm的GNU GCC工具链;

阅读(1686) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~