首页 > 代码库 > STM32+eclipse+Linux下开发

STM32+eclipse+Linux下开发

转载自:http://www.cnblogs.com/amanlikethis/p/3803736.html,

只是按照自己环境修改了一些东西而已

  • 安装软件

    • 安装eclipse IDE for C/C++ developers(自行安装)

    • 安装插件ilg.gnuarmeclipse.repository-2.12.1-201604190915.zip

    • 安装JLink驱动(可以使用beb包安装JLink_Linux_V600i_x86_64.deb)

  • 安装插件ilg.gnuarmeclipse.repository-2.12.1-201604190915.zip

    • 打开Eclipse->help->install new software


    • 技术分享技术分享

    • 技术分享技术分享不勾选这项会快一些

  • 使用JLink的命令行下载程序

    • 使用这个命令进入JLink的命令形式,$JLinkExe -device STM32F103ZE -Speed 4000 -IF JTAG -JTAGConf -1,-1 

      • 后面的参数(可以在JLink命令形式中设置):

        • -device STM32F103ZE    选择设备

        • -Speed 4000                     选择JLink速度

        • -IF JTAG                           选择接口(JTAG,SWD)

        • -JTAGConf -1,-1               (忘记了哈哈)

      1. J-Link>h
      2. 停止运行
      3. J-Link>connect
      4. 连接设备    
      5. J-Link>loadbin filename(根据当前目录)  0x08000000
      6. 加载程序
      7. J-Link>g
      8. 运行  
      9. J-Link>qc
      10. 退出

    • 不过我的必须重启才可以运行(不知到为什么)

  • 使用Eclipse下载

    • 建立下载脚本(就是几句JLink命令了)

      •  在工程目录写下led,jlink文件,内容如下

        1.  connect
        2.  loadbin 要下在文件(包括路经) 0x08000000                                                                                        
        3.  r
        4.  g
        5.  qc

    • 打开eclipse->run->external tools configurations

      • 技术分享技术分享

      • 可以看见led,jlink作为一个参数脚本文件(-CommanderScript ./led.jlink)

      • 其实也就是在运行JLinkExe时出来一些设置之外要运行的命令,其实就是用命令行下载时我们自己敲的JLink指令。

      •  loadbin 要下在文件(相对于${workspace_loc:/led}的路经) 0x08000000  可以通过修改这里,修改我们要下载的文件。

  • 使用命令行调试

    • 启动JLinkGDBServer

      • $ JLinkGDBServer -device STM32F103ZE -speed 4000 -IF JTAG

      • 有些版本的JLink驱动直接$ JLinkGDBServer就可以了

    • 使用arm-none-linux-gdb调试

      • #gedit ~/.gdbinit

        • set auto-load safe-path /

        • 在当前用户目录下创建.gdbinit文件

        • 笔者的当前用户是root,所以在root目录下创建.gdbinit初始化文件

      • 在工程文件夹下的Debug目录中创建.gdbinit文件

        1. target remote :2331
        2. set mem inaccessible-by-default   off
        3. monitor speed auto
        4. monitor endian little
        5. monitor reset
        6. monitor flash device = STM32F103ZE
        7. monitor flash breakpoints = 1
        8. monitor flash download = 1
        9. load
        10. monitor reg sp = (0x08000000)
        11. monitor reg pc = (0x08000004)
        12. break ResetHandler
        13. break main
        14. continue


        • 需要说明的是:由于当前版本的Jlink驱动不支持STM32F103VET6,所以选择STM32F103ZE来代替。

      • 在另一份终端中输入arm-none-eabi-gdb 文件名.elf   进行调试

        • 技术分享技术分享

  • eclipse调试

    • 还是先设置JLinkGdbServer

      • 打开eclipse->run->external tools configurations

      • 技术分享技术分享

      • 其实和命令行一样,就是在启动/usr/bin/JLinkGDBServer时传入参数-device STM32F103ZE -speed 4000 -IF JTAG

      • 点击运行

        • 技术分享技术分享

        • 和终端输出一样,其实这就是eclipse将终端集成进来了而已

    • 配置Eclipse调试选项

      • Debugger->Run-->Debug Configurations-->GDB Hardware Debugging -->Debugger

        • Startup

        • 在Initialization Commands中输入检测参数

        • 技术分享技术分享

  1. monitor flash device = STM32F103ZE  
  2. monitor flash download = 1    
  3. monitor flash breakpoints = 1    
  4. monitor clrbp    monitor endian little    
  5. monitor speed 5    monitor reset    
  6. monitor sleep 100    
  7. monitor speed auto    
  8. monitor writeu32 0xE000ED08 = 0x00000000

        • 再在Run Commands中输入命令    

  1. monitor reg r13 = (0x08000000)
  2. monitor reg pc =  (0x08000004)
  3. break ResetHandler
  4. break main
  5. continue
        • 技术分享技术分享
      • 点击运行就行了
      • 技术分享技术分享


STM32+eclipse+Linux下开发