Windows环境下ARM集成开发环境的搭建与使用

2023-11-14

Windows环境下能够使用Eclipse IDE for C/C++ Developers来搭建ARM开发环境

本文地址:http://blog.csdn.net/u011833609/article/details/30290655

安装过程例如以下:

1. 安装Java SE
网址:http://www.oracle.com/technetwork/java/javase/downloads/jre-7u3-download-1501631.html
下载这个文件:jre-7u3-windows-i586.exe
2. 安装Eclipse IDE for C/C++ Developers
网址:http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliossr2
下载这个文件:eclipse-cpp-helios-SR2-win32.zip 下载后解压到对应文件夹,不需安装,发送个快捷方式到桌面就可以。
3. 安装Eclipse下开发ARM的插件
网址:http://sourceforge.net/projects/gnuarmeclipse/files/Current Releases/0.5.3/
下载这个文件:org.eclipse.cdt.cross.arm.gnu_0.5.3.201007311800.zip
下载后解压,把plugins/org.eclipse.cdt.cross.arm.gnu_0.5.3.201007311800.jar文件放入安装Eclipse文件夹下的plugins文件夹里。
4. 安装arm-none-eabi-gcc编译器
网址:http://www.yagarto.de/download/yagarto/yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.html
请不要安装在路径有空格的文件夹!
下载并安装这个文件:yagarto-bu-2.21_gcc-4.6.2-c-c++_nl-1.19.0_gdb-7.3.1_eabi_20111119.exe
网址:http://www.yagarto.de/download/yagarto/yagarto-tools-20100703-setup.exe
下载并安装这个文件:yagarto-tools-20100703-setup.exe

原文地址:http://blog.sina.com.cn/s/blog_6c234ba901012zqm.html

用法例如以下:

1.指定一个project存放文件夹

Eclipse for ARM 是一个标准的窗体应用程序。能够单击程序button開始执行。打开后必须先指定一个project存放路径,如图5-11所看到的。




2.创建一个project

进入主界面后。选择"File→New→C Project"命令,Eclipse将打开一个标准对话框。输入希望新建project的名字并单击"Finish"button就可以创建一个新的project,建议对每一个新建project使用独立的目录。

3.新建一个MakeFile文件

在创建一个新的project后。选择"File→New→Other"命令。在弹出的对话框中的General下单击file。然后单击next;然后选择所要指定的project后,在文件名称文本框中输入文件名称MakeFile,单击"Finish"button。



4.新建一个脚本文件

选择"File →New→Other"命令,在弹出的对话框中的General下单击file。然后单击next;然后选择所要指定的project后,在文件名称文本框中输入文件名称s5pc100.init。单击"Finish"button。

5.新建一个连接脚本文件

选择"File→New→Other"命令,在弹出的对话框中的General下单击file 。然后单击next。然后选择所要指定的project后,在文件名称文本框中输入文件名称map.lds,单击"Finish"button。


6.新建一个汇编源文件


选择"File →New→Other"命令,在弹出的对话框中的General下单击file ,然后单击next;然后选择所要指定的project后。在文件名称文本框中输入文件名称start.s,单击"Finish"button。




5.4  编译project


(1)在汇编源文件(start.s)中输入汇编代码:


.equ   GPG3CON,   0xE03001C0  
.equ   GPG3DAT,   0xE03001C4  
 
.globl _start  
_start:  
        LDR         R0,=GPG3CON  
LDR         R1,=0X10  
        STR     R1,[R0]         @//写控制寄存器,IO引脚使能为输出  
LOOP:  
        LDR         R0,=GPG3DAT  
        MOV     R1,#0X02        @//点亮led1  
        STR     R1,[R0]  
        LDR     R2,=0XFFFFF     @//延时  
LOOP1:  
        SUB         R2,R2,#1  
        CMP     R2,#0  
        BNE     LOOP1  
        MOV     R1,#0X0         @//熄灭led1  
        STR     R1,[R0]  
        LDR     R2,=0XFFFFF     @//延时  
LOOP2:  
        SUB         R2,R2,#1  
        CMP     R2,#0  
        BNE     LOOP2  
        B       LOOP  
        .end  
(2)在map.lds中输入例如以下信息:
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")  
/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/  
OUTPUT_ARCH(arm)  
ENTRY(_start)  
SECTIONS  
{  
    . = 0x34000;  
    . = ALIGN(4);  
    .text      :  
    {  
        start.o(.text)  
        *(.text)  
    }  
    . = ALIGN(4);  
    .rodata :   
    { *(.rodata) }  
    . = ALIGN(4);  
    .data :   
    { *(.data) }  
    . = ALIGN(4);  
    .bss :  
     { *(.bss) }  
}  
(3)编写MakeFile文件编译规则。在MakeFile中输入例如以下信息:


all:start.s  
    arm-none-eabi-gcc-4.6.2 -O0 -g -c -o start.o start.s  
    arm-none-eabi-ld        start.o -Tmap.lds -o start.elf  
    arm-none-eabi-objcopy   -O binary -S start.elf start.bin  
arm-none-eabi-objdump   -D start.elf >start.dis    
(4)在s5pc100.init文件里输入例如以下信息:
target remote 127.0.0.1:3333  
monitor halt  
monitor arm mcr 15 0 1 0 0 0  
monitor step 0  
(5)保存,编译Project→Bulit All。


5.5  调试project


5.5.1  配置FS-JTAG 调试工具


如图5-12所看到的,在Target选项中选择s5pc100。然后在WorkDir 选项中选择自己的project文件夹(D:\program\led)。这里是笔者的当前环境,请读者依照自己的实际环境进行填写。


上述工作做完之后,单击Connectbutton后,该button会变为Disconnect,如图5-12所看到的,即表示已经连接目标板。

最后单击Telnetbutton(这一步能够跳过),将会弹出如图5-13所看到的,界面即表示已经连上目标板。
 

5.5.2  配置调试工具(1)

在Eclips的菜单中选择"Run→Debug Configurations"弹出如图5-14对话框。


 
选择Zyin Embedded debug(Native)选项,然后单击鼠标右键,在弹出的快捷菜单中选择"New"命令;在Main选项卡中的Project框中。单击"Browse"button选择ledproject。在C/C++ Application 中单击"Browse"button找到project文件夹下的led.elf文件,如图5-15所看到的。
 
在Debugger选项卡中的Main子选项卡中的GDB debugger的框中单击"Browse"button选择前面安装的arm-none-eabi-gdb.exe(这里选择自己的安装文件夹),在GDB Command file中选择自己project文件夹下的s5pc100.init文件,如图5-16所看到的。




在Command选项卡中输入例如以下内容。如图5-17所看到的。
load  
break _start  
c  


5.5.2  配置调试工具(2)

单击"Apply"button后。再单击"Debug"button開始调试执行,会出现调试主界面。如图5-18所看到的。



程序会在断点处停下。然后使用单步和全速等工具进行调试执行程序,单击全速执行,会出现LED1闪亮。

从图中能够看出一个大概的调试界面。如图5-19所看到的的button是和调试有关的,有单步,step over和step in方式。还有Eclipse自带的挂起、中断连接功能。以下简介一下各个窗体的用途。



如图5-20所看到的窗体是用来查看函数变量的,能够看到当前i,j的值。


如图5-21所看到的窗体是用来查看ARM寄存器的。从r0~r12通用寄存器的值能够被非常清楚的观察到,而且还可观察到 CPSR当前状态寄存器的值。


5.6  本章小结

本章主要介绍了怎样编写GNU-ARM汇编风格的程序,以及怎样基于S5PC100在Eclipse下进行调试,而且介绍了FS-JTAG的具体使用方法。本书后面章节的大部分实验都是基于这个环境的。工欲善其事。必先利其器,所以必须熟练掌握环境的使用。

原文地址:http://book.51cto.com/art/201210/359534.htm


转载于:https://www.cnblogs.com/gcczhongduan/p/5137558.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows环境下ARM集成开发环境的搭建与使用 的相关文章

  • SystemviewV3.3工具使用

    SystemviewV3 3工具使用 工具下载 移植 错误解决方式 使用方法 工具下载 Systemview下载地址 移植 以不带操作系统的移植方式为例 移植源码位于 工程加入以下文件 错误解决方式 keil下多重定义问题 Objects
  • 关于TP5多语言BUG的解决办法(直接上代码)

    按照手册配置 默认语言没有反应 跳转页面之后 也没有检测当前的语言 很尴尬 最大的bug在这里 1 请用下面代码覆盖 thinkPhp library think Lang php 里面的detect 自动检测语言方法 自动侦测设置获取语言
  • jQuery 获取当前节点的html包含当前节点的方法 --$(".test").prop("outerHTML");

    在开发过程中 jQuery html 是获取当前节点下的html代码 并不包含当前节点本身的代码 然后我们有时候确需要 找遍jQuery api文档也没有任何方法可以拿到 看到有的人通过parent html 如果当前元素没有兄弟元素还行
  • Python subplots() 使用说明

    plt subplots 官方教程 link 参数 matplotlib pyplot subplots nrows 1 ncols 1 sharex False sharey False squeeze True subplot kw N
  • 雅可比矩阵和Hessian矩阵

    Jacobian矩阵和Hessian矩阵 1 Jacobian 在向量分析中 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵 其行列式称为雅可比行列式 还有 在代数几何中 代数曲线的雅可比量表示雅可比簇 伴随该曲线的一个代数群 曲线可以嵌入其
  • Linux搭建测试环境详细步骤

    本文讲解如何在Linux CentOS下部署Java Web项目的步骤 环境准备 1 Linux系统 2 JDK 3 Tomcat 4 MySQL 工具下载 可从官网下载 已把安装工具存于百度网盘 链接 https pan baidu co
  • Jmeter:使用代理录制脚本

    目录 前言 介绍下各设置项 前言 当我们想要录制并回放特定应用程序或网站的交互时 使用JMeter的代理是一种常见且有效的方法 通过配置JMeter代理 它可以拦截并记录客户端与目标应用程序之间的HTTP或HTTPS通信 然后生成对应的测试
  • 如何重装Linux系统

    大家都知道我们平常所用的windows系统 可以很方便的重装系统 有U盘安装 还有光盘安装 那么我们在Linux下如何重装系统呢 其实和Windows下方法大同小异 如果你手上正好有个U盘的话 那就可以试试做一个USB Linux启动盘 它
  • javaee springMVC Map ModelMap ModelAndView el和jstl的使用

    pom依赖
  • ELK Stack 日志平台性能优化实践

    性能分析 服务器硬件Linux 1cpu4GRAM 假设每条日志250Byte 分析 logstash Linux 1cpu 4GRAM 每秒500条日志 去掉ruby每秒660条日志 去掉grok后每秒1000条数据 filebeat L
  • EduCoder_web实训作业--CSS从入门到精通——文本与字体样式

    大家注意了 由于这次好多代码都是分开的 为了方便我把每一关所有代码都发出来了 只要全选粘贴复制就可以了 第二关和第三关的答题区域都是最后一个文件夹 第一关 body 背景渐变 background webkit linear gradien
  • 50岁贷款投资的人,到底经历了什么?

    虽说 成功的投资者大多是孤独的 但是 在学习成长的过程中 参与交流讨论的好处还是很大的 一方面三人行必有我师 一方面通过他人的经验教训 深化自己的思考 前两天 看到这样一个提问 我的中国银行信用卡可以贷款2 6利率 三年还清 共贷15万 我
  • Python 模块 ddt 数据驱动测试

    简介 ddt 提供了一种方便的方法来实现数据驱动测试 Data Driven Testing 数据驱动测试是一种测试方法 通过将测试数据与测试逻辑分开 可以使用不同的数据集来运行相同的测试用例 这样可以提高测试的灵活性和可维护性 减少代码的
  • 为什么说快速排序是性能最好的排序算法?

    刚刚学习了排序这一章 看到了书中最后的一个总结表 心想从表上来看 堆排序不该是最好的排序算法么 不管最好 最坏还是平均情况 时间复杂度都是O nlogn 而且还不像快排和归并排序那样占空间 为什么说快速排序是最好的算法呢 其实经过实验 会发
  • 手把手带你利用苹果手机使用美区礼品卡升级ChatGPT Plus,轻松搞定!

    大家好 我是五竹 昨天用苹果手机尝试了一下 借助App Store 苹果应用商店 升级 Plus 成功了 一共升级了三个号 有两个一气呵成 轻松搞定 最后一个可能触发风控了 但第一时间反馈给了苹果客服 5分钟不到就解决了 不得不说别人家的客
  • 下载Visio2013镜像路径以及安装Visio2013软件

    下载Visio2013镜像路径以及安装Visio2013软件 下载镜像安装路径 https exmail qq com cgi bin ftnExs download k 5736333137c49bbd8e5ddf1c106407561d
  • Java进阶知识点5:服务端高并发的基石 - NIO与Reactor模式以及AIO与Proactor模式

    一 背景 要提升服务器的并发处理能力 通常有两大方向的思路 1 系统架构层面 比如负载均衡 多级缓存 单元化部署等等 2 单节点优化层面 比如修复代码级别的性能Bug JVM参数调优 IO优化等等 一般来说 系统架构的合理程度 决定了系统在
  • 在QGIS下开发python插件

    本文来自CSDN博客 转载请标明出处 http blog csdn net xiluoduyu 出于研究sextante代码的需要 抽空查了下QGIS下python插件的开发流程 具体的操作参考英文的PyQGIS 的开发帮助文档 QGIS是
  • 生成时间段内每一天

    String bigtimeStr 2019 07 01 String endtimeStr 2019 08 01 SimpleDateFormat sdf new SimpleDateFormat yyyy MM dd Date bigt
  • 使用sleuth实现微服务跟踪

    在微服务架构中 众多的微服务之间互相调用 如何清晰地记录服务的调用链路是一个需要解决的问题 同时 由于各种原因 跨进程的服务调用失败时 运维人员希望能够通过查看日志和查看服务之间的调用关系来定位问题 而Spring cloud sleuth

随机推荐

  • aix卷组故障维护

    author skatetime 2009 04 24 故障描述 4 20日早晨 发现日报没有正常发送 登录数据库备机查看原因 查看系统的log命令 errpt more 没有发现什么异常 不过发现有如下错误 F3931284 041005
  • 《动手学深度学习》(七) -- 边界框和锚框

    1 边界框 在目标检测中 我们通常使用边界框 bounding box 来描述对象的空间位置 边界框是矩形的 由矩形左上角的以及右下角的 x x x和 y y y坐标决定 另一种常用的边界框表示方法是边界框中心的
  • 在js中 String 转json

    第一种方式 使用js函数eval testJson eval testJson 是错误的转换方式 正确的转换方式需要加 testJson eval testJson eval 的速度非常快 但是他可以编译以及执行任何JavaScript程序
  • 人脸识别技术也被应用到了移动支付领域

    随着智能手机及互联网的发展 移动支付已经成为了目前我国增速最快的支付方式 在移动支付发展过程中 各种新型的支付方式层出不穷 如二维码支付 NFC支付等 近年来 伴随着人工智能 机器学习及传感器的逐步发展 生物识别技术也被应用到了移动支付领域
  • python提取邮件的附件,以excel为例

    配置邮箱 读取基本的邮件内容请参考 python读取并解析邮箱邮件 读取邮件主题 内容 时间 以excel为例 获取邮件 email value config imap server imap exmail qq com username
  • 变量的作用域和生命周期

    目录 作用域 局部变量的作用域 局部变量的生命周期 生命周期 全局变量的作用域 全局变量的生命周期 作用域 作用域是程序设计概念 一段程序代码中所用到的名字并不总是有效 可用的 而限定这个名字的可用性的范围就是其作用域 通俗来说就是它在哪里
  • 通用定时器part1:相关原理介绍

    2018 4 18 stm32 1 介绍 1 对于STM32f103rc而言 一共存在着8个定时器 有着4个16位通用定时器 2个16位高级定时器 2个16位基本定时器 2 1 高级定时器 1 16位 可以采用向上 向下或向上 下计数器模式
  • Shader的属性和语义

    属性 Shader 属性property就是Unity面板和shader的连接器 Properties Numbers and Sliders ExampleName Integer display name Integer 1 Examp
  • Redis学习:Redis缓存穿透和雪崩

    缓存穿透和雪崩 大规模的缓存击穿 两者的区别就是 缓存穿透是一个key缓存没数据 数据库也没有数据 请求全部打到数据库层面上 数据库也没数数据 无能为力 缓存层和数据库层都没有 真的是透了 雪崩先理解缓存击穿 就是很多请求一个key 这个k
  • obsidian配合hugo的使用,让markdown本地编辑软件与在线化无缝衔接

    下载安装 点击打开obsidian官方网站 下载并安装 安装地址为 C Users 当前账号 AppData Local Obsidian C Users 当前账号 AppData Local obsidian updater 创建新库 起
  • Elasticsearch 之 数据索引

    对于提供全文检索的工具来说 索引时一个关键的过程 只有通过索引操作 才能对数据进行分析存储 创建倒排索引 从而让使用者查询到相关的信息 本篇就ES的数据索引操作相关的内容展开 更多内容参考 Elasticsearch资料汇总 索引操作 最简
  • Are you running in a Servlet container that supports JSR-356

    最近使用websocke出现以下问题 No javax websocket server ServerContainer ServletContext attribute Are you running in a Servlet conta
  • Docker-compose安装mysql

    介绍 本系列文章主要介绍使用docker compose部署mysql nginx redis等中间件 前后分离微服务项目部署流程 不介绍docker安装以及基础命令 话不多说首先进入mysql安装教学 操作 首先创建个目录用来存放dock
  • unity让一个物体从上到下消失_Unity3D中隐藏与显示物体的一些操作

    在使用unity3d开发游戏的过程中 我们常常会遇到需要隐藏或者显示的操作 针对这一点 下面做了一些总结 一 设置Renderer状态 在游戏的开发中 所有能够被渲染的物体都包含有一个Renderer组件 使用它可以将物体渲染到屏幕上 那么
  • linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法

    最近一直忙于项目上的要求 在编写各种自动化安装的脚本 正好有一个需求是在之前的项目上编写过的 目前只需要拿来修改下即可 之前的shell脚本是在服务器上编写的 后来又已复制的方式存在在了电脑上 以txt文件的形式存放的 于是复制到了编辑工具
  • Spring知识点总结

    一 Spring框架介绍 Spring 是分层的 Java SE EE 应用 full stack 轻量级开源框架 以 IoC Inverse Of Control 反转控制 和 AOP Aspect Oriented Programmin
  • mybatis-mate相关配置

    Mybatis Mate 配置 mybatis mate cert grant 请添加微信wx153666购买授权 不白嫖从我做起 license SM hy2HGmqRZIw7NE5i1vKIiHOQLGXGymokyRCkR TYuNZ
  • html+jQuery自定义报告单

    html jQuery实现自定义报告单 功能 用户按需求自定义拼接生成报告单 支持打印功能 支持导出HTML CSS代码 截图 源码地址 customize report
  • java中byte和Byte详解

    写程序时 误把byte写作Byte 调试了许久 便将二者的区别及用法详细理解一遍 1 byte标题和Byte详解 byte是java的基本数据类型 存储整型数据 占据1个字节 8 bits 能够存储的数据范围是 128 127 Byte是j
  • Windows环境下ARM集成开发环境的搭建与使用

    Windows环境下能够使用Eclipse IDE for C C Developers来搭建ARM开发环境 本文地址 http blog csdn net u011833609 article details 30290655 安装过程例