ARM下裸机开发环境大全 arm 开发环境
----------------------------------------------------------------------
裸机是一种通俗的讲法,就是指ARM设备上没有任何现成的程序来支持你的开发的软件运行。它是相对设备上有在操作系统的情况运行可执行程序而言的。
这两种程序有很大区别。在操作系统环境下,基本上跟桌面程序开发没有太多区别,而裸机程序需要自己初始化硬件环境来运行。因为必须有一小段汇编写的引导代码来初始化,并且直接操作硬件。
裸机程序一般采用少量汇编加C语言来编译(理论上C++可以了,但比较少)主要用来ARM汇编,硬件控制教学。硬件验证和驱动开发。
大型的程序bootloader,实时操作系统uCOS/Nclues严格讲也是裸机程序。
而且ARM的CPU的都有JTAG的在线硬件调试接口,通过JTAG硬件调试器,可以直接运行和单步调试裸机程序
二.裸机开发流程.
-------------------------------------------------------------------
编码-->编译-->调试-->下载
1.编码采用文本编辑器或相应IDE均可
2.编译器目前主要是两大类
armcc (ARM出品的编译器)
arm-linux-gcc (GNU ARM-Linux编译器,在非EABI的编译器还分为arm-elf-gcc和arm-linux-gcc的区别现在基本不分了。)
arm-linux-gcc 编译出来的可执行文件格式是ELF,除了常见的TEXT段,BSS/DATA段外,还有会有一些调试段..而armcc编译出来的格式是AXF。但AXF本质是仍然是ELF格式,只不过加一些特殊的调试段。
3.调试方法
如果用JTAG在线硬件调试的那种单步调试.有两种接口。一种是ARM公司的RDI接口,另外一种硬件调试器虚拟的gdb接口。这个要使用ELF/或AXF格式
但很多程序会用直接让程序输出信息到串口方式进行调试。这种速度比较快,可以理解是广义上的调试。这个阶段要使用BIN格式。
4.下载
下载是指把可执行的BIN文件下载到开发板上的Flash之中。让其完全脱离调试环境完全独立运行。
如果一个空板,即Flash中没有任何程序。这时需要一些特殊下载方式。比用JTAG烧录工具下载到Flash之中。有一些CPU还有一些特殊的下载方式。比如S3C6410支持SD卡启动。可以把下载的文件放在SD卡上,由SD卡里的BOOTLOADER来下载。
还有一些CPU内部带有ROM自行启动一个小程序,然后通过USB下载程序。比如JZ4740。
如果Flash上烧录有bootloader,它往往自带有烧录功能。可以通过TFTP/USB/串口方式从PC机下载到设备上。
可执行文件格式
Elf
Linux下标准可执行结构.还有一种out是早期的较为简单的可执行文件格式。但是在新版本里out就是ELF格式。
BIN
bin文件是由ELF转化而来,专门用下载到设备。相对于ELF它有两个变化。第一BIN只有基本的text/bss/data段,没有调试信息。第二。因为bin要下载到设备的。里面各段的地址是按相应地址对齐烧录的。因为两段之间很可能补一些空间的0空间。
ELF转换为BIN用arm-linux-objcopy以下语句把elf_name转换成bin_name。
arm-linux-objcopy -O binary -S elf_namebin_name
HEX:
HEX主要是把BIN内容转换成相应的ASCII的文本格式,并且每一行都带下载地址。
HEX文件都是由记录(RECORD)组成的。在HEX文件里面,每一行代表一个记录。记录的基本格式为:
+---------------------------------------------------------------+
|RECORD| RECLEN |LOAD| RECTYPE | INFO or DATA | CHKSUM |
|MARK ':' || OFFSET ||||
+---------------------------------------------------------------+
|1-byte| 1-byte | 2-byte | 1-byte|n-byte| 1-byte |
+---------------------------------------------------------------+
关于HEX/BIN区别,参见
http://blog.ednchina.com/wwh_nuaa/74736/message.aspx
不同产家的HEX格式有细微的差别,比如MOTO的HEX格式称为S-Record格式,Intel格式称为 Intel-HEX ,两者的差别参见
http://blog.chinaunix.net/u1/58640/showart_1864111.html
http://www.upsdn.net/html/2004-12/95.html
多用于可编程器的的离线下载或者单片机程序的下载。ARM开发不常用。
三.裸机开发环境.
---------------------------------------------------------------------------
常见的裸机开发环境
3.1 ADS开发环境 并口。
1.HOST操作系统: Windows
2.编译器 : armcc
3.IDE: ADS
4.适用CPU :ARM7/ARM9
5.HOST硬件接口:并口JTAG调试板
6.调试软件:AXD+H-Jtag
特点:硬件调试成本比较低,但是调试和下载速度慢。
3.2 ADS开发环境 USB。 1.HOST操作系统: Windows
2.编译器 : armcc
3.IDE: ADS
4.适用CPU :ARM7/ARM9
5.HOST硬件接口:USB接口的J-Link
6.调试软件: AXD+J-LinK RDI
3.3arm-linux-gcc USB。 1.HOST操作系统: Linux
2.编译器 : arm-elf-gcc /arm-linux-gcc
3.IDE: 任何支持GCC的IDE(如Eclipse等)
4.适用CPU :ARM7/ARM9/ARM11
5.HOST硬件接口:USB接口的OpenJtag
6.调试软件: OpenOCD/gdb
注:有WINDOWS相应版本
3.4 RVDS USB
1.HOST操作系统: Windowsj/Linux
2.编译器 : armcc
3.IDE: RealView/Eclipse
4.适用CPU :ARM全系列
5.HOST硬件接口:USB接口的J-Link
6.调试软件: J-Link GDB
注:RVDS是RealView Developer Suite的缩写是,ARM开发的ADS的升级版,在Eclipse基础上改进。因此可以在多个操作系统运行。另外armcc可以直接在Makefile调用,不需要通IDE。这也是很多大型软件编译方法
四。Windows下ARM开发环境比较
-------------------------------------------------------------------
ADS是很长一段时间里ARM专门开发环境。比较小并且很多产商的测试程序是基于ADS的.
ADS的前身是SDT.现在很少人用了。
除了ARM的ADS和RDVS以外.还有不少开发人员喜欢其它的开发环境。其中Keil和MDK就是比较多使用的
Keil的开发环境几乎是单片机IDE开发的代名词.其实它还能做ARM开发。它的完整名称是Keil uVision
Keil后被ARM收购。作为ADS的升级MDK推出。
RVDS则是MDK的升级版,使用Eclipse作为IDE,界面操作与前面几个环境完全不一样。
SDT-->ADS
+-- RealView MDK -->RVDS
Keil/
还有一些工程同使用IAR for ARM
=========================================
JLINK与JTAG的区别
调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种。当仿真时,IAR、KEIL、ADS等都有一个公共的调试接口,RDI就是其中的一种, 那么我们如何完成RDI-->ARM调试协议(JTAG)的转换呢? 有以下两种做法:
1. 在电脑上写一个服务程序,把IAR、KEIL和ADS中的RDI命令解析成相关的JTAG协议,然后通后一个物理转换接口(注意,这个转换只是电气物理层上的转换,就像RS232那样的作用)发送你的的目标板。 H-JTAG就是这样的。 H-JTAG的硬件就仅是一个物理电平的转换接口,所以很简单。而电脑中装的h-JTAG软件就是前面说到的服务程序,负责协议转换的。
2. 做一个板,用此板直接接收来自IAR、KEIL和ADS等软件的调试命令,由此板做RDI->JTAG协议的转换。然后与目标板通信,这就是JLINK的工作原理。
由上可以看出 H-JTAG由于是软件作协议转换的,所以速度较慢,但是硬件简单。而第二种方法的JLINK一般带一个强劲的CPU,作硬件协议转换,把以硬件复杂,但速度快。
更多阅读
windowsxp下配置JDK环境变量 jdk环境变量配置win10
原文发表于2010-12-15 00:001.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:javajdk1.5.0_08;2.安装完成后,右击“我的电脑”,点击“属性”;3.选择“高级”选项卡,点击“环境变量”;4.在“系统变量”中,设置3项
转 centos6.4下vi的用法大全 centos 6.4 iso下载
【转】:http://blog.csdn.net/xst686/article/details/9833303vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,v
盘口语言大全(下 易语言命令大全下载
附:特殊尾盘处理:a.如果尾盘多方大力上攻,攻势太猛的状况下修正反弹,但临时又被空头故意打压,使大盘收于最低点,次以平开或低开方式开盘,仍是一个下跌走势;b.如果尾盘形成明显趋势,而且最后十分钟放量上涨,说明短线资金入市,次日应以高开方式开盘后
Ubuntu12.04系统下嵌入式linux环境的搭建 ubuntu 16.04 搭建vpn
行业资讯>通信/电信运营、增值服务2012-12-20 11:30发布
Win7下android开发环境搭建 win7安卓开发环境搭建
(Win7)所需软件安装包1、 JDK。文件名为jdk-6u22-windows-i586.exe。下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html2、 SDK安装包。文件名为android-sdk_r04-windows.zip下载地址:http: