K60(Cortex-M4)开源开发探索(四)—— 交叉编译环境设计
来源:互联网 发布:无主之地2 mac繁体 编辑:程序博客网 时间:2024/05/01 15:12
一、开源开发简介
windows作为现在桌面系统的主流,在开源开发领域中却存在配置困难、软件支持少等缺点,而本身就是开源系统的linux在这一领域就显示了强大的性能。近几年来,开源软件依靠灵活的特性,已经主宰了嵌入式软件开发,成为了当今嵌入式市场竞争的主要推动因素。为了适应发展,具有更好的可扩展性,我也选用linux作为研究平台。基于linux 的操作系统有很多,现在应用比较广泛的应该是ubuntu,我使用的版本是ubuntu12.04。
二、交叉编译环境结构
在Linux下进行嵌入式开发已经非常成熟,网上的资料非常多,一般都是使用gcc+eclipse的结构。结合移动机器人的应用,我设计的交叉编译环境的总体结构如下:
(1)核心:arm交叉编译工具链。
嵌入式产品的资源往往十分有限,一般采用Host/Target的模式进行开发,既在PC上开发,然后在嵌入式系统中运行的方式。所以在PC上编译出ARM架构可执行文件的交叉编译器就是十分重要了。交叉编译器主要完成的工作如下:
(2)人机交互:Eclipse
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse的插件功能十分强大,可以把我们使用到的所有软件工具结合在GUI界面下。CodeWarrior也是基于Eclipse设计的。
(3)守护进程:OpenOCD
openocd是一个开源的JTAG上位机,可以将gdb命令转换成jtag使用的电平信号,并且实时监控连接状态。openocd也可以独立访问硬件设备,所以可以在烧写程序之前,通过openocd初始化好硬件。详细资料可以参见官网:http://openocd.sourceforge.net/
(4)调试器:OpenJTAG
与BDM和jtag相比,openjtag可以实现前者的所有功能,并且可以多系统通用。而且在官网上(http://www.openjtag.org/)可以下载到PCB等技术资料。
----------------------------------------------------------------
欢迎大家转载我的文章。
转载请注明:转自古-月
http://blog.csdn.net/hcx25909
欢迎继续关注我的博客
- K60(Cortex-M4)开源开发探索(四)—— 交叉编译环境设计
- K60(Cortex-M4)开源开发探索(五)—— 交叉编译环境构建
- K60(Cortex-M4)开源开发探索(一)—— K60简介
- K60(Cortex-M4)开源开发探索(二)—— 嵌入式软件开发需求分析
- K60(Cortex-M4)开源开发探索(三)—— 软件开发平台设计
- K60(Cortex-M4)开源开发探索(六)—— OpenOCD的配置
- K60(Cortex-M4)开源开发探索(七)—— kermit的安装与配置
- Cortex—M4 寄存器组
- 交叉编译环境配置(Cortex-A8)
- Linux 设备驱动开发 —— 基于自己的设备驱动开发环境设计驱动(一)
- Cortex-M4的启动过程分析从GCC开始-Kinetis K60为例
- 管道鸟cortex-M4(TM4C1294)
- Fedora下 DirectFB 开发手记(四) 交叉编译 GTK+
- MCU新趋势—Cortex M0/M3/M4 行业应用主题研讨会
- Cortex-M4 AD转换
- cortex-M3/M4比较
- Cortex-M4 处理器
- Cortex-M4 ARM 汇编语言
- 面向对象的js 树形组件 JSTree。
- Android之Sqlite
- 如何高效的使用搜索引擎进行学习
- PC/Uva 11015/10267 图形编辑器(Graphical Editor)
- 摘自盖茨THE ROAD AHEAD《未来之路》
- K60(Cortex-M4)开源开发探索(四)—— 交叉编译环境设计
- 捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
- 《世界是平的》(完整)
- Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)
- 内核编译之编译2.6.35
- Spoj694(Distinct Substrings)求字符串不相同的子串个数(后缀数组)
- Java的枚举类型
- 分治算法之 棋盘覆盖问题(完整代码实现)
- java.lang.NoSuchMethodError: antlr.collections.AST.getLine()解决方法