CentOS6.8_X86_64 Eclipse IDE STM32开发环境的搭建

1) 编译STM32源代码的gcc-arm编译器是32位的(我用的gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2),交叉编译 执行时需要需要32位的glibc库, CentOS安装光盘中有相应的库,下面的命令可以安装
    # rpm -ivh glibc-2.12-1.192.el6.i686.rpm  nss-softokn-freebl-3.14.3-23.el6_7.i686.rpm

   或: yum install  glibc.i686   ---nss-softokn

2) eclipse luna和CDT都是从eclipse官方网站下载的64位版本,
    eclipse luna本来有CDT插件了, 但是安装的不完全,缺少安装armgun插件需要的依赖组件
     所以重新安装CDT插件(cdt-8.6.0.zip),安装全部能够安装的组件

     wget http://mirrors.neusoft.edu.cn/eclipse/tools/cdt/releases/8.6/cdt-8.6.0.zip

    然后在eclipse的help菜单中安装

   help->install new software...->

3) 安装支持STM32开发的插件armgun插件ilg.gnuarmeclipse.repository-2.12.1-201604190915.zip,插件内置STM32F1x的工程模板,使用了ST提供的V3.5固件库
    插件安装后,新建C项目时, 就可以选择相应的模板了
    值得一提的是,尽管模板使用了ST官方的V3.5固件库, 但是启动文件和Keil MDK 的启动文件是不同的,armgun插件的启动文件更多地使用了的C语言代码来实现程序的启动,基本未用汇编
    代码中程序的真正入口为 _start, 位于_startup.c文件中, main函数在_start中被调用
    _start在哪里被调用呢?  
    -------- 在exception_handlers.c文件中, Reset_Handler将调用_start, 在非nake模式(调试版本)下, 直接调用_start(), 在Release版本下,嵌入汇编跳转到_start
   Reset_Handler又是在哪里被调用呢?
    ------  文件vectors_stm32f0xx.c中提供了一个中断向量表:pHandler g_pfnVectors[], 摘录部分代码如下, Reset_Handler正是位于终端向量表中的复位向量:
   ************************************************************************************************************
    __attribute__ ((section(".isr_vector"),used))
    pHandler g_pfnVectors[] =
      {
      // Core Level - CM0
          (pHandler) &_estack, // The initial stack pointer
          Reset_Handler, // The reset handler

          NMI_Handler, // The NMI handler
  *******************************************************************************************************


    ------  在连接脚本 mem.ld 给出了存储器资源的配置
    ------  在连接脚本 sections.ld 给出了代码中各种section的链接位置
            在非nake模式(支持在线调试调试, GDB估计会先行提供一段启动代码)下,程序入口被指定为ENTRY(_start)
        在Release版本中(nake), 连接脚本section当中, Reset_Handler向量被放在 .after_vectors 代码段的第一项, 以下为摘录的SECTIONS配置片段
    *******************************************************************************************************************************
    SECTIONS
    {
        /*
         * For Cortex-M devices, the beginning of the startup code is stored in
         * the .isr_vector section, which goes to FLASH.
         */
        .isr_vector : ALIGN(4)
        {
        FILL(0xFF)
        
        __vectors_start = ABSOLUTE(.) ;
        __vectors_start__ = ABSOLUTE(.) ; /* STM specific definition */
        KEEP(*(.isr_vector))         /* Interrupt vectors */ ===============这里就算上面中断向量表的安装位置===========
        
            KEEP(*(.cfmconfig))            /* Freescale configuration words */   
                 
        /*
         * This section is here for convenience, to store the
         * startup code at the beginning of the flash area, hoping that
         * this will increase the readability of the listing.
         */
        *(.after_vectors .after_vectors.*)    /* Startup code and ISR */

        } >FLASH
    
      *******************************************************************************************************************************

4) zylincdt-3005ca1是一个嵌入式开发插件(zylincdt-3005ca1.zip), 负责与嵌入式gdbserver沟通, 插件安装时需要先解压,然后使用eclipse 的local直接定位到目录com.zylin.cdt.updatesite进行安装
     ***其实
    (1)CDT插件已经自带了用于嵌入式调试的组建 GDB Hardware Debugging的组建,可以支持嵌入式调试了
      (2)ilg.gnuarmeclipse.repository-2.12.1-201604190915.zip插件中也携带了更好的GDB OPENOCD Debugging 用于与OPENOCD作为gdbserver配合进行调试
      (2)ilg.gnuarmeclipse.repository-2.12.1-201604190915.zip插件中还携带了更好的GDB Segger J-link Debugging 用于与Segger J-link server作为gdbserver配合进行调试

5) Openocd编译安装,向下指挥J-link下载器的工作,向上提供4444端口与telnet沟通或者与gdb程序沟通
    https://github.com/corecode/openocd-swd 增加了补丁, 支持SWD方式下载器
     程序在线调试时,它实际上就是一个gdbserver的角色(因为嵌入式开发中, 如果是不带嵌入式linux的系统, 那就没有对应的gdbserver)

----------------------------------------------------------安装与测试

#!/bin/sh

rpm -ivh telnet-0.17-48.el6.x86_64.rpm
rpm -ivh libusb1-devel-1.0.9-0.7.rc1.el6.x86_64.rpm
tar -zxvf openocd-0.10.0.tgz
cd openocd-0.10.0
./configure  --enable-jlink
make
make install


openocd -f /usr/local/share/openocd/scripts/interface/jlink.cfg  -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg


#使用telnet连接到openocd, 执行命令
#gdb调试器就是通过4444端口向openocd发送控制命令的

tenet 127.0.0.1 4444

>halt
>flash write image erase stm32_.hex  # 变成操作
>reset

-------------------------------------------------------------


6) org.eclipse.cdt.embsysregview_update_site.zip是一个用于在线调试查看MCU内部IO寄存器的插件, 在线调试时可以查看并修改寄存器的值

    在eclipse->window->show view->other->debug->embsys registers中打开窗口
    窗口左上角的按钮可以选择芯片类型---------------------就像keil 51中查看/修改端口寄存器的功能

7) 创建工程向导中,高级设置,可以指定工具链的位置, 也可以在工程属性中去设置, 过程如下:
    1> 新建工程: new->C Project->Excuteable->STM32Fxxx C/C++ Project       //根据你的芯片型号选择对应的工程模板就可以了
    2> 环境变量设置: 鼠标右击工程节点->Properties->c/c++ Build->Evironment     //修改PATH环境变量, 添加指向交叉编译器gcc-arm-none-eabi-5_4-2016q3-20160926-linux的bin目录位置
    3> 是指makefile的命令解释器(工程模板自动生成的解释器,找不到,无法编译): 鼠标右击工程节点->Properties->c/c++ Build->Builder settins, 去掉Use default build command勾,填写make,使用主机自带的make
    4> 编译: 鼠标右击工程节点->Build Project 就完成了工程编译    
    --使用c++工程向导生成的工程向导,生成工程, Build Project是灰色的, 不能编译, 不知道啥原因
    5)调试: 鼠标右击工程节点->Properties->Debug As->Debug Configrations->GDB openOCD Debugging->new 新建一个调试配置项, 系统已经帮你配置好了默认的openOCD命令参数了, 除非你了解个参数意义,否则建议不要动  

对于STM32F1xx芯片, 使用如下命令启动:  不过我在虚拟机下启动失败!    在飞虚拟机下成功!(CentOS6.8_x64)

在openocd  -f /usr/local/share/openocd/scripts/interface/jlink.cfg -f /usr/local/share/openocd/scripts/target/stm32f1x.cfg

 我在https://www.segger.com/downloads/jlink/jlink-5.0.12.x86_64.rpm

下载rpm安装包, 安装后, 虚拟机player->可移动设备->segger jlink 连接后, jlink-OB将从windows断开,被虚拟机centos接管

执行: JLinkGDBServer -select USB -device STM32F103C8 -if SWD -speed 1000 -noir

命令行参数是从windows下jlink debug server 图形界面上抄的, 运行结果如下:

SEGGER J-Link GDB Server V5.00l Command Line Version

JLinkARM.dll V5.00l (DLL compiled Aug  7 2015 15:47:21)

-----GDB Server start settings-----
GDBInit file:                  none
GDB Server Listening port:     2331
SWO raw output listening port: 2332
Terminal I/O port:             2333
Accept remote connection:      yes
Generate logfile:              off
Verify download:               off
Init regs on start:            off
Silent mode:                   off
Single run mode:               off
Target connection timeout:     0 ms
------J-Link related settings------
J-Link Host interface:         USB
J-Link script:                 none
J-Link settings file:          none
------Target related settings------
Target device:                 STM32F103C8
Target interface:              SWD
Target interface speed:        1000kHz
Target endian:                 little

Connecting to J-Link...
J-Link is connected.
Firmware: J-Link ARM-OB STM32 compiled Aug 22 2012 19:52:04
Hardware: V7.00
S/N: 20090928
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
Checking target voltage...
Target voltage: 3.30 V
Listening on TCP/IP port 2331
Connecting to target...Connected to target
Waiting for GDB connection...
 

使用telnet 127.0.0.1 2331 可以连接

********* 可以用JLinkExe.只能烧写二进制 .bin文件。用的是loadbin指令

 

**** arm-none-eabi-gdb 是32位系统, 需要安装一个依赖包如下, 这个我搞了好久才找到原因

# yum install ncurses-libs.i686

配图说明,  为了避免麻烦, 我在终端窗口始终运行一个GDBserver'

JLinkGDBServer -select USB -device STM32F103C8 -if SWD -speed 1000 -noir

debug配置中, 就不用再启动JLinkGDBServer了:

 


      
     

注意RAM application 打勾, 表示在内存中调试程序 (DEBUG 版本)


  

### 回答1: centos-6.8-x86_64-bin-dvd1是CentOS操作系统的一个版本,并且适用于64位的x86架构。这个版本是以DVD的形式提供的,可以通过下载的方式获得。 CentOS是一种开源的操作系统,是基于Red Hat Enterprise Linux(RHEL)的一个免费替代品。它提供了一个稳定、安全和可靠的操作环境,广泛应用于服务器和企业级环境中。 为了下载centos-6.8-x86_64-bin-dvd1,可以参考以下步骤: 1. 打开CentOS官方网站(http://www.centos.org)。 2. 导航到“Downloads”(下载)页面。 3. 在页面上找到centos-6.8-x86_64-bin-dvd1下载选项。 4. 点击下载链接以开始下载。 5. 下载完成后,您可以使用适当的软件或工具将下载的ISO文件刻录到DVD上,以创建可启动的安装介质。 6. 现在,您就可以使用该DVD来安装CentOS 6.8版本,并体验它所提供的功能和特性。 需要注意的是,CentOS 6在2020年11月30日之后不再受到官方支持。因此,如果您对操作系统的安全性和稳定性有更高的要求,建议考虑使用最新版本的CentOS或者其他类似的操作系统。 总结起来,centos-6.8-x86_64-bin-dvd1是一个CentOS 6.8版本的下载文件。通过将该ISO文件刻录到DVD上,您可以安装这个操作系统并使用其提供的功能和特性。 ### 回答2: CentOS-6.8-x86_64-bin-dvd1是CentOS Linux操作系统的一个版本,这个版本适用于64位的x86架构。下载这个版本的镜像文件,可以通过官方网站或者镜像站点进行。 CentOS是一个开源的Linux操作系统,具有稳定性和安全性的特点,因此被广泛用于服务器环境和企业级应用。CentOS-6.8-x86_64-bin-dvd1是CentOS 6.8版本的其中一个发布版本,适用于使用64x86架构的计算机。 下载这个版本的镜像文件可以完成以下步骤: 1. 打开CentOS官方网站或镜像站点,在下载页面找到CentOS-6.8-x86_64-bin-dvd1版本的下载链接。 2. 点击下载链接,选择一个合适的镜像站点进行下载。通常会提供多个镜像站点,选择离自己所在地区近且速度较快的镜像站点。 3. 等待下载完成。镜像文件的大小较大,下载时间可能会比较长,具体时间取决于网速和镜像站点的负载情况。 4. 下载完成后,可以使用光盘刻录软件将镜像文件刻录到DVD光盘上,或者使用虚拟光驱软件挂载镜像文件。 5. 刻录或挂载完成后,便可以将DVD光盘插入计算机,或者在虚拟光驱软件中打开文件。通过启动计算机时选择光驱启动,或者在虚拟机软件中设置虚拟光驱启动,即可开始安装CentOS-6.8-x86_64-bin-dvd1版本。 下载CentOS-6.8-x86_64-bin-dvd1版本是获取CentOS Linux操作系统的一种方式,通过正确的下载和安装,便可以在计算机上使用这个稳定且强大的操作系统。 ### 回答3: CentOS-6.8-x86_64-bin-dvd1 是CentOS官方提供的一种操作系统安装镜像。在下载该镜像时,您可以按照以下步骤进行操作: 1. 打开您的网络浏览器,并访问CentOS官方网站(https://www.centos.org)。 2. 在网站的首页上找到"Downloads"或类似的选项,并点击进入下载页面。 3. 在下载页面中,找到"CentOS 6"的版本,然后找到"CentOS-6.8-x86_64-bin-DVD1.iso"安装镜像文件。 4. 单击该镜像文件的下载链接,将会弹出一个保存文件的对话框。 5. 浏览您希望保存该镜像文件的文件夹,然后点击"保存"按钮启动下载过程。 6. 等待下载完成。下载时间将取决于您的网络连接速度。 7. 下载完成后,在您选择的文件夹中会出现一个名为"CentOS-6.8-x86_64-bin-DVD1.iso"的文件,这就是您所下载的CentOS安装镜像。 下载完成后,您可以将该镜像刻录到DVD光盘上,或者使用虚拟机软件来安装CentOS系统。请注意,安装操作系统涉及到系统配置和分区等复杂操作,请确保您具备相关知识或者咨询专业人士的指导,以避免不可逆的损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值