`
izuoyan
  • 浏览: 9297493 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

总有一款合适你--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_name bin_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.3 arm-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。这也是很多大型软件编译方法

分享到:
评论

相关推荐

    ARM裸机上测试程序的开发-pdf

    #### 一、开发ARM裸机上测试程序的必要性 在嵌入式系统研发完成后,为了确保硬件成品在生产和使用过程中的正常运作,通常需要进行硬件测试。现代ARM嵌入式系统往往集成了复杂的嵌入式操作系统(如VxWorks、Linux或...

    gcc-arm-none-eabi-10-2020-q4-major-win32.zip

    总结,GCC-ARM-NONE-EABI是Windows环境下进行ARM裸机开发的重要工具,通过它,开发者可以在本地环境中编写、编译、调试代码,并最终生成可在ARM设备上运行的二进制文件。熟练掌握这一工具链的使用,有助于提升嵌入式...

    S3C6410-ARM11 IIC模块 裸机代码,完美运行

    S3C6410是一款基于ARM11架构的高性能微处理器,广泛应用于嵌入式系统设计,如智能手机、平板电脑以及工业控制等领域。在S3C6410中,IIC(Inter-Integrated Circuit)接口是一种常见的通信协议,它允许不同设备之间...

    ARM LCD界面 ADS环境下裸机程序

    总结来说,ARM9在ADS环境下的裸机程序开发涉及到处理器架构理解、开发工具的使用、裸机编程技巧以及LCD界面的实现。这个过程需要开发者具备扎实的硬件基础知识、熟练的编程技能,以及对嵌入式系统底层工作原理的深刻...

    gcc-arm-none-eabi-9-2020-q2-update-win32.zip

    总结,GCC for ARM None EABI是开发ARM架构嵌入式系统的重要工具,2020年第二季度的更新版本在性能、标准支持和错误处理等方面有显著提升,为开发者提供了更为高效和便捷的开发环境。无论是在Windows 10 32位系统上...

    ARM裸机eclipse调试

    Eclipse作为一个强大的集成开发环境(IDE),被许多开发者用来进行C/C++编程,包括对ARM裸机的开发与调试。本主题将详细讲解如何使用Eclipse来配置和调试ARM裸机程序。 首先,我们需要了解ARM裸机开发的基本概念。...

    ARM最新开发工具DS-5入门解析说明

    RVDS 是 ARM 公司推出的集成开发环境,提供了编译、调试、仿真等功能。ADS 是 RVDS 的前身,提供了基本的编译和调试功能。SDT 是最早期的 ARM 开发工具,提供了基本的编译和调试功能。DS-5 是 ARM 公司最新推出的...

    arm9裸机实现流水灯

    在裸机环境下,意味着我们不依赖任何操作系统,而是直接与硬件交互来完成特定任务。 一、ARM9处理器简介 ARM9是基于RISC(精简指令集计算机)架构的处理器,以其低功耗、高性能和灵活的特性而闻名。它包含一系列...

    基于ARM9裸机的一个电子相册程序

    本项目“基于ARM9裸机的一个电子相册程序”正是这样一个典型的实例,它展示了如何在没有操作系统支持的情况下,直接在硬件层面上开发应用。 首先,我们要理解“裸机”(Bare Metal)的概念。在计算机科学中,裸机是...

    TQ2440arm9裸机程序keil版

    【TQ2440arm9裸机程序keil版】是针对TQ2440开发板的一个基于ARM9处理器的裸机程序,使用了知名的嵌入式开发工具——Keil μVision。这个程序主要涉及到以下几个核心知识点: 1. **TQ2440开发板**:TQ2440是一款基于...

    MDK环境下的TQ2440裸机开发实例

    总的来说,MDK环境下的TQ2440裸机开发涉及了从工程创建、源码编写、编译调试到硬件驱动等多个环节。通过实践和学习,开发者可以掌握嵌入式系统的底层工作原理,提升系统级编程能力。这个过程中,对硬件手册的熟悉、...

    MINI6410平台下裸机程序开发指南.

    开发环境的搭建是裸机编程的第一步。通常,这涉及到选择一个合适的交叉编译工具链,如GCC,它能够在Linux环境下编译出适用于MINI6410的二进制代码。此外,还需要配置相应的调试工具,如OpenOCD或JTAG接口,以实现...

    ARM92440 裸机LCD

    标题中的“ARM92440 裸机LCD”指的是使用三星的S3C2440处理器在没有操作系统支持的环境下,直接通过硬件接口控制LCD显示器的技术。这种裸机编程方式通常用于嵌入式系统开发,因为它可以提供更高的性能和实时性。 在...

    嵌入式全套视频-1-(ARM系统开发基础)(硬件访问).rar

    3. **系统开发流程**:从裸机编程开始,逐步建立操作系统环境,包括引导加载程序、内核移植、驱动程序开发等。学习如何构建一个完整的嵌入式系统,理解从开机到运行用户应用程序的过程。 4. **嵌入式软件开发工具**...

    新唐ARM9 裸机库函数说明.rar

    在裸机开发环境下,开发者需要直接操作硬件资源,而不需要操作系统支持,因此对底层库函数的了解尤为重要。 这个压缩包中的“新唐ARM9 裸机库函数说明.chm”文档,很可能是新唐官方提供的开发手册,详细阐述了NUC...

    韦东山新一期ARM裸机编程使用指南.pdf

    本文内容涉及ARM裸机编程与Linux开发环境的建立、vi编辑器的使用技巧、Linux命令进阶知识、gcc编译器的详细应用、Makefile语法的学习、以及NOR Flash和NAND Flash的相关技术细节。 首先,ARM裸机编程,顾名思义,...

    KEIL ARM旗下各软件说明

    KEIL作为ARM旗下的一个品牌,原本是一家德国公司,专注于为微控制器提供基于uVision界面的开发环境,其中Keil C51是一款广泛使用的工具。ARM在2005年收购了KEIL公司,进一步强化了其在嵌入式系统开发工具领域的地位...

    mini2440 arm9 按键中断 裸机驱动 led

    在嵌入式系统开发中,`mini2440`是一款基于`Samsung S3C2440`处理器的开发板,广泛用于教学和实验。`S3C2440`是一个基于`ARM920T`内核的微处理器,具有高性能和低功耗的特点。`arm9`是指该处理器使用的`ARM`架构版本...

    DS-5 MDK uVision4 RVDS Realview C51等22个ARM开发工具软件概念全解析

    MDK-ARM是Keil公司基于ARM内核推出的开发工具,它提供了一个完整的软件开发环境,支持ARM处理器。2006年,ARM收购Keil后,将Keil的微控制器开发工具整合入ARM的开发工具链中,推出了MDK-ARM,目前MDK-ARM已成为主流...

    3C2440 ARM裸机 SDRAM 代码

    《3C2440 ARM裸机 SDRAM 代码详解》 在嵌入式系统开发领域,S3C2440是一款广泛应用的基于ARM920T内核的微处理器,它以其高性能、低功耗的特点,在各种嵌入式设备中占据了重要地位。在进行3C2440开发时,理解和掌握...

Global site tag (gtag.js) - Google Analytics