欢迎来到天天文库
浏览记录
ID:11534515
大小:31.50 KB
页数:9页
时间:2018-07-12
《用gnu工具开发基于arm的嵌入式系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用GNU工具开发基于ARM的嵌入式系统摘要:介绍如何利用GNU的工具开发基于ARM的嵌入式系统,以及使用编译器、连接器和调试工具的具体方法,为广大嵌入式系统开发人员提供一种低成本的开发手段。关键词:ARMGNUMC928MX1gccgdbgdbserver当前,ARM公司的32位RISC处理器,以其内核耗电少、成本低、功能强、特有16/32位双指令集,已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准,市场占有率超过了7%。多家公司都推出了自己的基于ARM内核的处理器产品,越来越多的开发人员开始了针对ARM平台的开发。通常
2、开发人员需要购买芯片厂商或第三方提供的开发板,还需要购买开发软件,如C编译器或者集成了实时操作系统的开发环境。开发板的价格从数百到上千美元,而编译器、实时操作系统价格更是动辄数千到数万美元。这样,在开发初期,软硬件上的投资就需要上万美元,对于国内大多数开发人员来说,无疑是太贵了。庆幸的是,GNU所倡导的自由软件给开发者带来了福音。198年,旨在开发一个类似Unix的,并且是完全免费的完整操作系统和配套工具:GNU系统。GNU的操作系统和开发工具都是免费的,遵循GNU通用公共许可证(GPL)协议,任何人都可以从网上获取全部的源代码。关于GNU和
3、公共许可证协议的详细资料,读者可参看GNU网站的中文介绍: 除了大家熟知的Linux操作系统外,GNU的软件还包括编译器、二进制转换工具、调试工具和基于不同硬件平台的开发库。GNU开发工具的主要缺点是采用命令行方式,用户掌握和使用比较困难,不如基于Windows系统的开发工具好用。但是,GNU工具的复杂性是由于它更贴近编译器和操作系统的底层,并提供了更大的灵活性。一旦学习和掌握了相关工具,也就了解了系统设计的基础知识,为今后的开发工作打下基础。GNU的开发工具都是免费的,遵循GPL协议,任何人都可以从网上获取。笔者参与了一个基于ARM平台的
4、嵌入式Linux系统开发,采用的是摩托罗拉龙珠系列的MC928MX1。从测试代码、引导程序、嵌入式Linux移植、应用程序、图形界面都可以用GNU工具进行开发,不需要在开发工具上做额外的投入。本文所介绍的开发方法同样适用于其它公司的基于ARM的产品。1硬件平台MC928MX1是摩托罗拉公司基于ARM核心的第一款MCU,主要面向高端嵌入式应用。内部采用ARM920T内核,并集成了SDRAM/Flash、LCD、USB、蓝牙、多媒体闪存卡、CMOS摄像头等控制器。关于MX1的详细资料,感兴趣的读者可以参考作为应用开发的最小系统必须包括RAM、Fl
5、ash和串行接口。MX1提供了6个片选端,内置了SDRAM控制器,数据宽度32位。在笔者的系统中采用了2片8M×16位的SDRAM和2片4M×16位的同步Flash存储器,分别接入数据线的低16位和高16位,如图1所示。图1中SDRAM接片选端CS2,Flash接片选端CS3,其余为SDRAM/Flash的控制信号。最小系统还包括至少1个串行接口,可以采用MX1内置的UART控制器,图略。自举模式目前,许多嵌入式处理器都提供了自举模式,供用户写入引导代码。自举模式利用了固化在芯片内部的一段引导程序,当处理器复位时,如果在特定引脚上加信号,则处
6、理器将在复位后执行固化ROM中的程序。例如,MX1提供了4条复位引脚,复位时引脚不同的电平组合可以从不同的片选端启动系统。自举ROM中的程序完成串口的初始化,然后等待用户从串口写入用户代码。自举模式所能接受的是一种专门格式的文本文件,包括数据和要写入/读出的地址。关于自举模式的代码格式,可参考相关芯片的手册。在摩托罗拉的网站还提供了许多小工具,帮助开发者将其它格式的文件转换成为自举模式格式。通过自举模式下载的通常是一段和上位机软件通信的程序,完成接收数据并写入Flash的操作。写入的数据可以是用户自己的应用程序、数据或者操作系统的内核。通过自
7、举模式下载的引导程序同样可以用GNU工具开发。GNU的编译器和开发工具GNU提供的编译工具包括汇编器as、C编译器gcc、C++编译器g++、连接器ld和二进制转换工具objcopy。基于ARM平台的工具分别为arm-linux-as、arm-linux-gcc、arm-linux-g++、arm-linux-ld和arm-linux-objcopy。GNU的编译器功能非常强大,共有上百个操作选项,这也是这类工具让初学者头痛的原因。不过,实际开发中只需要用到有限的几个,大部分可以采用缺省选项。GNU工具的开发流程如下:编写C、C++语言或汇编
8、源程序,用gcc或g++生成目标文件,编写连接脚本文件,用连接器生成最终目标文件,用二进制转换工具生成可下载的二进制代码。GNU工具都运行在Linux下,开发者需要
此文档下载收益归作者所有