嵌入式开发中裸机的时代已经一去不复返了,今天我就写写开发环境的发展。
•何谓“裸机”?
–裸机是指无操作系统下的ARM系统开发
–其特点是所有硬件资源均开放
–可以把它理解为一个高级单片机的开发
•裸机开发的作用
–更能深入地从底层去理解ARM CPU的操作过程及系统设计
–为日后自行设计系统打下基础
–为bootloader的编写打好基础
开发环境的作用:
![](/Uploads/2014_05/article/2dfefa579d.jpg)
<!--[if ppt]-->•<!--[endif]-->
现在主要用到GUI开发环境,也就是Code Warrior。
![](/Uploads/2014_05/article/7963af6320.jpg)
•CodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面
•用户可以使用ADS的CodeWarrior IDE为ARM和Thumb处理器开发用C,C++,或ARM汇编语言的程序代码
•全面的项目管理功能
•CodeWarrior for ARM是一套完整的集成开发工具,充分发挥了ARM RISC 的优势
•在整个开发周期中,开发人员无需离开CodeWarrior开发环境,提高了效率
•可以在CodeWarrior IDE为ARM配置以上所介绍的各种命令工具,实现对工程代码的编译,汇编和链接
主要优势有:
•源代码编辑器
–集成在CodeWarrior IDE的浏览器中,能够根据语法格式,使用不同的颜色显示代码;
•源代码浏览器
–保存了在源码中定义的所有符号,能够使用户在源码中快速方便的跳转;
•查找和替换功能
–用户可以在多个文件中,利用字符串通配符,进行字符串的搜索和替换;
•文件比较功能
–可以使用户比较路径中的不同文本文件的内容
实用程序 有:
•fromELF
–这是ARM映像文件转换工具
–该命令将ELF格式的文件作为输入文件,将该格式转换为各种输出格式的文件,包括plain binary(BIN格式映像文件),Motorola 32-bit S-record format(Motorola 32位S格式映像文件),Intel Hex 32 format(Intel 32位格式映像文件),和 Verilog-like hex format(Verilog 16进制文件)
•armar
–ARM库函数生成器将一系列ELF格式的目标文件以库函数的形式集合在一起,用户可以把一个库传递给一个链接器以代替几个ELF文件。
•与调试相关工具链在该集成环境中没有实现
•但与ARM调试器(AXD)能进行无缝地连接调用
需要介绍一个重要概念就是-target
•在CodeWarrior IDE中所涉及到的target有两种不同的语义
–目标系统(Target system)
•特指代码要运行的环境,是基于ARM的硬件。比如,要为ARM开发板上编写要运行在它上面的程序,这个开发板就是目标系统。
–生成目标(Build target)
•指用于生成特定的目标文件的选项设置(包括汇编选项,编译选项,链接选项以及链接后的处理选项)和所用的文件的集合。
操作过程及实例
1建立工程
•在磁盘里新建一个目录“D:\arm”
•打开ADS软件
•点击工具栏“File”,下拉点击“New…”
![](/Uploads/2014_05/article/87c74ad892.jpg)
选择工程类型:
![](/Uploads/2014_05/article/339868d20f.jpg)
输入工程名称及其目录:
![](/Uploads/2014_05/article/2fc0137bd1.jpg)
Ledcircle工程建立:
![](/Uploads/2014_05/article/cca5ee517a.jpg)
新建工程后的目录:
![](/Uploads/2014_05/article/8c7f43e771.jpg)
新建文件:
![](/Uploads/2014_05/article/b51ada6372.jpg)
Init.s文件:
![](/Uploads/2014_05/article/1de84c04dc.jpg)
•Main.c
![](/Uploads/2014_05/article/63b8c491d9.jpg)
添加文件到工程:
![](http://www.61ic.com/Technology/UploadFiles_8326/201303/20130311232111847.png)
![](/Uploads/2014_05/article/a7d5a2eb7e.jpg)
添加到target:
•DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息;
•Debug:使用该目标为每一个源文件生成最完全的调试信息;
•Release:使用该目标不会生成任何调试信息。
![](/Uploads/2014_05/article/1d82c7afc0.jpg)
文件添加完毕:
![](/Uploads/2014_05/article/17dfa9843f.jpg)
编译连接:
![](/Uploads/2014_05/article/67669bddb0.jpg)
进入编译连接设置:
![](/Uploads/2014_05/article/586c4853f4.jpg)
设置窗口:
![](/Uploads/2014_05/article/95513f16aa.jpg)
目标设置:
![](/Uploads/2014_05/article/63c843d7b9.jpg)
ARMASM编译器设置:
![](/Uploads/2014_05/article/f54d655eb0.jpg)
ARMCC编译器设置:
![](/Uploads/2014_05/article/2b2f0a1709.jpg)
文件输出设置:
![](/Uploads/2014_05/article/99a1b304ac.jpg)
编译连接:
![](/Uploads/2014_05/article/c2aedaf73b.jpg)
文件输出:
![](/Uploads/2014_05/article/cf458fa01a.jpg)
呵呵,写的比较啰嗦,希望大家能喜欢,开学了!!!